{ "version": 3, "sources": ["deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/Pool.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Ontology/Meta.ts", "deno:https://cdn.skypack.dev/-/vis-data@v7.1.2-Hmjz690asEJqy8TmOPRy/dist=es2019,mode=imports/optimized/vis-data.js", "deno:https://cdn.skypack.dev/-/vis-network@v9.1.0-n5DRoBWwbSxoNJKMnHhb/dist=es2019,mode=imports/optimized/vis-network.js", "deno:https://cdn.skypack.dev/-/debounce@v1.2.1-nsljQIXDuyHmm6xBMrgd/dist=es2019,mode=imports/optimized/debounce.js", "deno:https://cdn.skypack.dev/-/@popperjs/core@v2.11.2-7HHj50CzBHDvkIAwMPdO/dist=es2019,mode=imports/optimized/@popperjs/core.js", "deno:https://cdn.skypack.dev/-/tippy.js@v6.3.7-piHHitpxPTRlqEi6MbHp/dist=es2019,mode=imports/optimized/tippyjs.js", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/Debug.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/Alloc.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/Observable.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/Uuid.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Ontology/Entity/Component.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Gaia/GaiaNode.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Gaia/GaiaScene.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Ontology/Helpers.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Gaia/mod.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/Vector3.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/Quaternion.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/Note.ts", "deno:https://cdn.skypack.dev/three?dts", "deno:https://cdn.skypack.dev/-/three@v0.135.0-pjGUcRG9Xt70OdXl97VF/dist=es2019,mode=imports/optimized/three.js", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/ThreeJSComponent.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/ThreeJSHelper.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/Random.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/ThreeJSTransform.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Ontology/Entity.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Ontology/World.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Axon/Cupid/Constants.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Axon/Cupid/Helpers.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Axon/Cupid.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Axon/WebRTCPeer.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Axon/mod.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/OntologyAxon/mod.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/Extensions.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/XR.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/XRFollower.ts", "deno:https://cdn.skypack.dev/-/three@v0.136.0-4Px7Kx1INqCFBN0tXUQc/dist=es2019,mode=imports/optimized/three.js", "deno:https://cdn.skypack.dev/-/three@v0.136.0-4Px7Kx1INqCFBN0tXUQc/dist=es2019,mode=imports/unoptimized/examples/jsm/loaders/OBJLoader.js", "deno:https://cdn.skypack.dev/-/three@v0.136.0-4Px7Kx1INqCFBN0tXUQc/dist=es2019,mode=imports/unoptimized/examples/jsm/loaders/MTLLoader.js", "deno:https://cdn.skypack.dev/-/three@v0.136.0-4Px7Kx1INqCFBN0tXUQc/dist=es2019,mode=imports/unoptimized/examples/jsm/loaders/GLTFLoader.js", "deno:https://cdn.skypack.dev/-/three@v0.136.0-4Px7Kx1INqCFBN0tXUQc/dist=es2019,mode=imports/unoptimized/examples/jsm/loaders/DDSLoader.js", "deno:https://cdn.skypack.dev/-/three@v0.136.0-4Px7Kx1INqCFBN0tXUQc/dist=es2019,mode=imports/unoptimized/examples/jsm/controls/OrbitControls.js", "deno:https://cdn.esm.sh/v66/three@0.138.2/es2021/three.js", "deno:https://cdn.esm.sh/v66/three@0.138.2/es2021/examples/jsm/interactive/HTMLMesh.js", "deno:https://cdn.skypack.dev/-/three@v0.138.2-mAMNcGi9eJzMFQBfERhF/dist=es2019,mode=raw/examples/jsm/libs/stats.module.js", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/GLTFMesh.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/Empty.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/Stats3D.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/Input.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/PlayerHand.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Entities/Player.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/Camera.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/Light.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/CubeRenderer.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/CubeRenderer1k.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/AudioSource.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/AudioListener.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/Fox.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Entities/Simple.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/Wait.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/OrbitControls.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/Time.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/Spinner.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Entities/NestedCube.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Helpers/Math.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/PlayerControls.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/HypercubeRenderer.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/Follower.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Entities/Gun.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/Stats2D.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Components/RelativityGrid.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/AppMeta.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Animus/Scene/ThreeJSScene.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/Core/Aer/Aer.ts", "deno:file:///Users/me/Dropbox/everything/apps/web/cosm/src/App.ts"], "sourcesContent": ["// pool is open\n\nimport { Constructor } from \"./Types.ts\";\n\nexport interface IPoolObject {\n take(): T;\n release(): void;\n}\n\nexport interface IObjectPool {\n take(): T;\n release(instance: T): void;\n}\n\nexport interface ObjectPoolHelper {\n create: () => T;\n cleanup: (instance: T) => void;\n}\n\nexport class DefaultObjectPoolHelper implements ObjectPoolHelper {\n constructor(\n private _constructor: Constructor,\n private _constructorArgs: any[] = [],\n ) {}\n\n create() {\n return new this._constructor(...this._constructorArgs);\n }\n\n cleanup(_instance: T) {\n // do nothing\n }\n}\n\nexport class LazyObjectPool implements IObjectPool {\n private _pool: T[] = [];\n\n constructor(private _helper: ObjectPoolHelper) {\n }\n\n public take(): T {\n if (this._pool.length > 0) {\n const instance = this._pool.pop()!;\n // Note.info(\"meta\", \"reusing object from pool\", instance.constructor.name);\n return instance;\n }\n const instance = this._helper.create();\n // Note.info(\n // \"meta\",\n // `Created new instance of ${instance.constructor.name}`,\n // instance,\n // );\n return instance;\n }\n\n public release(instance: T): void {\n // Note.trace(\"meta\", \"releasing object to pool\", instance.constructor.name);\n this._helper.cleanup(instance);\n this._pool.push(instance);\n }\n}\n\nexport class EagerObjectPool implements IObjectPool {\n private _pool: T[] = [];\n\n constructor(private helper: ObjectPoolHelper, private size: number) {\n for (let i = 0; i < size; i++) {\n this._pool.push(helper.create());\n }\n }\n\n public take(): T {\n if (this._pool.length > 0) {\n return this._pool.pop()!;\n }\n return this.helper.create();\n }\n\n public release(instance: T): void {\n this.helper.cleanup(instance);\n this._pool.push(instance);\n }\n}\n", "import {\n DefaultObjectPoolHelper,\n IObjectPool,\n LazyObjectPool,\n} from \"../Helpers/Pool.ts\";\nimport { Constructor } from \"../Helpers/Types.ts\";\nimport { IMeta } from \"./API.ts\";\n\nclass Meta implements IMeta {\n classToString: Map, string> = new Map();\n stringToClass: Map> = new Map();\n\n classToPool: Map, IObjectPool> = new Map();\n\n registerClass = (\n cls: Constructor,\n objectPool: IObjectPool | undefined = undefined,\n ) => {\n const name = cls.name;\n this.classToString.set(cls, name);\n this.stringToClass.set(name, cls);\n\n this.classToPool.set(\n cls,\n objectPool ?? new LazyObjectPool(new DefaultObjectPoolHelper(cls)),\n );\n };\n\n getClass = (name: string): Constructor | undefined => {\n const cls = this.stringToClass.get(name);\n if (cls == null) {\n console.error(\n `Class ${name} not found!\\nMake sure to call meta.registerClass(${name}) earlier on.`,\n );\n }\n return cls;\n };\n\n getPool = (cls: Constructor): IObjectPool | undefined => {\n const pool = this.classToPool.get(cls);\n if (pool == null) {\n console.error(\n `Pool for class ${cls.name} not found!\\nMake sure to call meta.registerClass(${cls.name}) earlier on.`,\n );\n }\n return pool;\n };\n}\n\nconst meta = new Meta();\n// @ts-expect-error I want this\nwindow.meta = meta;\nexport { meta };\n", "var global$1 = typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {};\n/**\n * vis-data\n * http://visjs.org/\n *\n * Manage unstructured data using DataSet. Add, update, and remove data, and listen for changes in the data.\n *\n * @version 7.1.2\n * @date 2021-01-08T20:37:11.601Z\n *\n * @copyright (c) 2011-2017 Almende B.V, http://almende.com\n * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs\n *\n * @license\n * vis.js is dual licensed under both\n *\n * 1. The Apache 2.0 License\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * and\n *\n * 2. The MIT License\n * http://opensource.org/licenses/MIT\n *\n * vis.js may be distributed under either license.\n */\nvar commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global$1 !== \"undefined\" ? global$1 : typeof self !== \"undefined\" ? self : {};\nfunction createCommonjsModule(fn) {\n var module = {exports: {}};\n return fn(module, module.exports), module.exports;\n}\nvar check = function(it) {\n return it && it.Math == Math && it;\n};\nvar global$1$1 = check(typeof globalThis == \"object\" && globalThis) || check(typeof window == \"object\" && window) || check(typeof self == \"object\" && self) || check(typeof commonjsGlobal == \"object\" && commonjsGlobal) || function() {\n return this;\n}() || Function(\"return this\")();\nvar fails = function(exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\nvar descriptors = !fails(function() {\n return Object.defineProperty({}, 1, {\n get: function() {\n return 7;\n }\n })[1] != 7;\n});\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({\n 1: 2\n}, 1);\nvar f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\nvar objectPropertyIsEnumerable = {\n f\n};\nvar createPropertyDescriptor = function(bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value\n };\n};\nvar toString = {}.toString;\nvar classofRaw = function(it) {\n return toString.call(it).slice(8, -1);\n};\nvar split = \"\".split;\nvar indexedObject = fails(function() {\n return !Object(\"z\").propertyIsEnumerable(0);\n}) ? function(it) {\n return classofRaw(it) == \"String\" ? split.call(it, \"\") : Object(it);\n} : Object;\nvar requireObjectCoercible = function(it) {\n if (it == void 0)\n throw TypeError(\"Can't call method on \" + it);\n return it;\n};\nvar toIndexedObject = function(it) {\n return indexedObject(requireObjectCoercible(it));\n};\nvar isObject = function(it) {\n return typeof it === \"object\" ? it !== null : typeof it === \"function\";\n};\nvar toPrimitive = function(input, PREFERRED_STRING) {\n if (!isObject(input))\n return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == \"function\" && !isObject(val = fn.call(input)))\n return val;\n if (typeof (fn = input.valueOf) == \"function\" && !isObject(val = fn.call(input)))\n return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == \"function\" && !isObject(val = fn.call(input)))\n return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\nvar hasOwnProperty = {}.hasOwnProperty;\nvar has = function(it, key) {\n return hasOwnProperty.call(it, key);\n};\nvar document$1 = global$1$1.document;\nvar EXISTS = isObject(document$1) && isObject(document$1.createElement);\nvar documentCreateElement = function(it) {\n return EXISTS ? document$1.createElement(it) : {};\n};\nvar ie8DomDefine = !descriptors && !fails(function() {\n return Object.defineProperty(documentCreateElement(\"div\"), \"a\", {\n get: function() {\n return 7;\n }\n }).a != 7;\n});\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar f$1 = descriptors ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor2(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (ie8DomDefine)\n try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) {\n }\n if (has(O, P))\n return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]);\n};\nvar objectGetOwnPropertyDescriptor = {\n f: f$1\n};\nvar replacement = /#|\\.prototype\\./;\nvar isForced = function(feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == \"function\" ? fails(detection) : !!detection;\n};\nvar normalize = isForced.normalize = function(string) {\n return String(string).replace(replacement, \".\").toLowerCase();\n};\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = \"N\";\nvar POLYFILL = isForced.POLYFILL = \"P\";\nvar isForced_1 = isForced;\nvar path = {};\nvar aFunction = function(it) {\n if (typeof it != \"function\") {\n throw TypeError(String(it) + \" is not a function\");\n }\n return it;\n};\nvar functionBindContext = function(fn, that, length) {\n aFunction(fn);\n if (that === void 0)\n return fn;\n switch (length) {\n case 0:\n return function() {\n return fn.call(that);\n };\n case 1:\n return function(a) {\n return fn.call(that, a);\n };\n case 2:\n return function(a, b) {\n return fn.call(that, a, b);\n };\n case 3:\n return function(a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function() {\n return fn.apply(that, arguments);\n };\n};\nvar anObject = function(it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + \" is not an object\");\n }\n return it;\n};\nvar nativeDefineProperty = Object.defineProperty;\nvar f$2 = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (ie8DomDefine)\n try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) {\n }\n if (\"get\" in Attributes || \"set\" in Attributes)\n throw TypeError(\"Accessors not supported\");\n if (\"value\" in Attributes)\n O[P] = Attributes.value;\n return O;\n};\nvar objectDefineProperty = {\n f: f$2\n};\nvar createNonEnumerableProperty = descriptors ? function(object, key, value) {\n return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value));\n} : function(object, key, value) {\n object[key] = value;\n return object;\n};\nvar getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;\nvar wrapConstructor = function(NativeConstructor) {\n var Wrapper = function(a, b, c) {\n if (this instanceof NativeConstructor) {\n switch (arguments.length) {\n case 0:\n return new NativeConstructor();\n case 1:\n return new NativeConstructor(a);\n case 2:\n return new NativeConstructor(a, b);\n }\n return new NativeConstructor(a, b, c);\n }\n return NativeConstructor.apply(this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\nvar _export = function(options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n var nativeSource = GLOBAL ? global$1$1 : STATIC ? global$1$1[TARGET] : (global$1$1[TARGET] || {}).prototype;\n var target = GLOBAL ? path : path[TARGET] || (path[TARGET] = {});\n var targetPrototype = target.prototype;\n var FORCED2, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n for (key in source) {\n FORCED2 = isForced_1(GLOBAL ? key : TARGET + (STATIC ? \".\" : \"#\") + key, options.forced);\n USE_NATIVE = !FORCED2 && nativeSource && has(nativeSource, key);\n targetProperty = target[key];\n if (USE_NATIVE)\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor$1(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else\n nativeProperty = nativeSource[key];\n sourceProperty = USE_NATIVE && nativeProperty ? nativeProperty : source[key];\n if (USE_NATIVE && typeof targetProperty === typeof sourceProperty)\n continue;\n if (options.bind && USE_NATIVE)\n resultProperty = functionBindContext(sourceProperty, global$1$1);\n else if (options.wrap && USE_NATIVE)\n resultProperty = wrapConstructor(sourceProperty);\n else if (PROTO && typeof sourceProperty == \"function\")\n resultProperty = functionBindContext(Function.call, sourceProperty);\n else\n resultProperty = sourceProperty;\n if (options.sham || sourceProperty && sourceProperty.sham || targetProperty && targetProperty.sham) {\n createNonEnumerableProperty(resultProperty, \"sham\", true);\n }\n target[key] = resultProperty;\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + \"Prototype\";\n if (!has(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n path[VIRTUAL_PROTOTYPE][key] = sourceProperty;\n if (options.real && targetPrototype && !targetPrototype[key]) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\nvar isArray = Array.isArray || function isArray2(arg) {\n return classofRaw(arg) == \"Array\";\n};\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nvar toInteger = function(argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\nvar min = Math.min;\nvar toLength = function(argument) {\n return argument > 0 ? min(toInteger(argument), 9007199254740991) : 0;\n};\nvar flattenIntoArray = function(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? functionBindContext(mapper, thisArg, 3) : false;\n var element;\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 9007199254740991)\n throw TypeError(\"Exceed the acceptable array length\");\n target[targetIndex] = element;\n }\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\nvar flattenIntoArray_1 = flattenIntoArray;\nvar toObject = function(argument) {\n return Object(requireObjectCoercible(argument));\n};\nvar setGlobal = function(key, value) {\n try {\n createNonEnumerableProperty(global$1$1, key, value);\n } catch (error) {\n global$1$1[key] = value;\n }\n return value;\n};\nvar SHARED = \"__core-js_shared__\";\nvar store = global$1$1[SHARED] || setGlobal(SHARED, {});\nvar sharedStore = store;\nvar shared = createCommonjsModule(function(module) {\n (module.exports = function(key, value) {\n return sharedStore[key] || (sharedStore[key] = value !== void 0 ? value : {});\n })(\"versions\", []).push({\n version: \"3.7.0\",\n mode: \"pure\",\n copyright: \"\\xA9 2020 Denis Pushkarev (zloirock.ru)\"\n });\n});\nvar id = 0;\nvar postfix = Math.random();\nvar uid = function(key) {\n return \"Symbol(\" + String(key === void 0 ? \"\" : key) + \")_\" + (++id + postfix).toString(36);\n};\nvar nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function() {\n return !String(Symbol());\n});\nvar useSymbolAsUid = nativeSymbol && !Symbol.sham && typeof Symbol.iterator == \"symbol\";\nvar WellKnownSymbolsStore = shared(\"wks\");\nvar Symbol$1 = global$1$1.Symbol;\nvar createWellKnownSymbol = useSymbolAsUid ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid;\nvar wellKnownSymbol = function(name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (nativeSymbol && has(Symbol$1, name))\n WellKnownSymbolsStore[name] = Symbol$1[name];\n else\n WellKnownSymbolsStore[name] = createWellKnownSymbol(\"Symbol.\" + name);\n }\n return WellKnownSymbolsStore[name];\n};\nvar SPECIES = wellKnownSymbol(\"species\");\nvar arraySpeciesCreate = function(originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n if (typeof C == \"function\" && (C === Array || isArray(C.prototype)))\n C = void 0;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null)\n C = void 0;\n }\n }\n return new (C === void 0 ? Array : C)(length === 0 ? 0 : length);\n};\n_export({\n target: \"Array\",\n proto: true\n}, {\n flatMap: function flatMap(callbackfn) {\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A;\n aFunction(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray_1(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : void 0);\n return A;\n }\n});\nvar entryVirtual = function(CONSTRUCTOR) {\n return path[CONSTRUCTOR + \"Prototype\"];\n};\nvar flatMap2 = entryVirtual(\"Array\").flatMap;\nvar ArrayPrototype = Array.prototype;\nvar flatMap_1 = function(it) {\n var own = it.flatMap;\n return it === ArrayPrototype || it instanceof Array && own === ArrayPrototype.flatMap ? flatMap2 : own;\n};\nvar flatMap$1 = flatMap_1;\nvar flatMap$2 = flatMap$1;\nvar push = [].push;\nvar createMethod = function(TYPE) {\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 return function($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self2 = indexedObject(O);\n var boundFunction = functionBindContext(callbackfn, that, 3);\n var length = toLength(self2.length);\n var index = 0;\n var create5 = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create5($this, length) : IS_FILTER ? create5($this, 0) : void 0;\n var value, result;\n for (; length > index; index++)\n if (NO_HOLES || index in self2) {\n value = self2[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP)\n target[index] = result;\n else if (result)\n switch (TYPE) {\n case 3:\n return true;\n case 5:\n return value;\n case 6:\n return index;\n case 2:\n push.call(target, value);\n }\n else if (IS_EVERY)\n return false;\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\nvar arrayIteration = {\n forEach: createMethod(0),\n map: createMethod(1),\n filter: createMethod(2),\n some: createMethod(3),\n every: createMethod(4),\n find: createMethod(5),\n findIndex: createMethod(6)\n};\nvar aFunction$1 = function(variable) {\n return typeof variable == \"function\" ? variable : void 0;\n};\nvar getBuiltIn = function(namespace, method) {\n return arguments.length < 2 ? aFunction$1(path[namespace]) || aFunction$1(global$1$1[namespace]) : path[namespace] && path[namespace][method] || global$1$1[namespace] && global$1$1[namespace][method];\n};\nvar engineUserAgent = getBuiltIn(\"navigator\", \"userAgent\") || \"\";\nvar process = global$1$1.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\nif (v8) {\n match = v8.split(\".\");\n version = match[0] + match[1];\n} else if (engineUserAgent) {\n match = engineUserAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = engineUserAgent.match(/Chrome\\/(\\d+)/);\n if (match)\n version = match[1];\n }\n}\nvar engineV8Version = version && +version;\nvar SPECIES$1 = wellKnownSymbol(\"species\");\nvar arrayMethodHasSpeciesSupport = function(METHOD_NAME) {\n return engineV8Version >= 51 || !fails(function() {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES$1] = function() {\n return {\n foo: 1\n };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\nvar defineProperty2 = Object.defineProperty;\nvar cache = {};\nvar thrower = function(it) {\n throw it;\n};\nvar arrayMethodUsesToLength = function(METHOD_NAME, options) {\n if (has(cache, METHOD_NAME))\n return cache[METHOD_NAME];\n if (!options)\n options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, \"ACCESSORS\") ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : void 0;\n return cache[METHOD_NAME] = !!method && !fails(function() {\n if (ACCESSORS && !descriptors)\n return true;\n var O = {\n length: -1\n };\n if (ACCESSORS)\n defineProperty2(O, 1, {\n enumerable: true,\n get: thrower\n });\n else\n O[1] = 1;\n method.call(O, argument0, argument1);\n });\n};\nvar $map = arrayIteration.map;\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport(\"map\");\nvar USES_TO_LENGTH = arrayMethodUsesToLength(\"map\");\n_export({\n target: \"Array\",\n proto: true,\n forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH\n}, {\n map: function map(callbackfn) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar map2 = entryVirtual(\"Array\").map;\nvar ArrayPrototype$1 = Array.prototype;\nvar map_1 = function(it) {\n var own = it.map;\n return it === ArrayPrototype$1 || it instanceof Array && own === ArrayPrototype$1.map ? map2 : own;\n};\nvar map$1 = map_1;\nvar map$2 = map$1;\nvar $filter = arrayIteration.filter;\nvar HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport(\"filter\");\nvar USES_TO_LENGTH$1 = arrayMethodUsesToLength(\"filter\");\n_export({\n target: \"Array\",\n proto: true,\n forced: !HAS_SPECIES_SUPPORT$1 || !USES_TO_LENGTH$1\n}, {\n filter: function filter(callbackfn) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar filter2 = entryVirtual(\"Array\").filter;\nvar ArrayPrototype$2 = Array.prototype;\nvar filter_1 = function(it) {\n var own = it.filter;\n return it === ArrayPrototype$2 || it instanceof Array && own === ArrayPrototype$2.filter ? filter2 : own;\n};\nvar filter$1 = filter_1;\nvar filter$2 = filter$1;\nvar createMethod$1 = function(IS_RIGHT) {\n return function(that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self2 = indexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2)\n while (true) {\n if (index in self2) {\n memo = self2[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError(\"Reduce of empty array with no initial value\");\n }\n }\n for (; IS_RIGHT ? index >= 0 : length > index; index += i)\n if (index in self2) {\n memo = callbackfn(memo, self2[index], index, O);\n }\n return memo;\n };\n};\nvar arrayReduce = {\n left: createMethod$1(false),\n right: createMethod$1(true)\n};\nvar arrayMethodIsStrict = function(METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function() {\n method.call(null, argument || function() {\n throw 1;\n }, 1);\n });\n};\nvar engineIsNode = classofRaw(global$1$1.process) == \"process\";\nvar $reduce = arrayReduce.left;\nvar STRICT_METHOD = arrayMethodIsStrict(\"reduce\");\nvar USES_TO_LENGTH$2 = arrayMethodUsesToLength(\"reduce\", {\n 1: 0\n});\nvar CHROME_BUG = !engineIsNode && engineV8Version > 79 && engineV8Version < 83;\n_export({\n target: \"Array\",\n proto: true,\n forced: !STRICT_METHOD || !USES_TO_LENGTH$2 || CHROME_BUG\n}, {\n reduce: function reduce(callbackfn) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar reduce2 = entryVirtual(\"Array\").reduce;\nvar ArrayPrototype$3 = Array.prototype;\nvar reduce_1 = function(it) {\n var own = it.reduce;\n return it === ArrayPrototype$3 || it instanceof Array && own === ArrayPrototype$3.reduce ? reduce2 : own;\n};\nvar reduce$1 = reduce_1;\nvar reduce$2 = reduce$1;\nvar slice = [].slice;\nvar factories = {};\nvar construct = function(C, argsLength, args) {\n if (!(argsLength in factories)) {\n for (var list = [], i = 0; i < argsLength; i++)\n list[i] = \"a[\" + i + \"]\";\n factories[argsLength] = Function(\"C,a\", \"return new C(\" + list.join(\",\") + \")\");\n }\n return factories[argsLength](C, args);\n};\nvar functionBind = Function.bind || function bind(that) {\n var fn = aFunction(this);\n var partArgs = slice.call(arguments, 1);\n var boundFunction = function bound() {\n var args = partArgs.concat(slice.call(arguments));\n return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n };\n if (isObject(fn.prototype))\n boundFunction.prototype = fn.prototype;\n return boundFunction;\n};\n_export({\n target: \"Function\",\n proto: true\n}, {\n bind: functionBind\n});\nvar bind2 = entryVirtual(\"Function\").bind;\nvar FunctionPrototype = Function.prototype;\nvar bind_1 = function(it) {\n var own = it.bind;\n return it === FunctionPrototype || it instanceof Function && own === FunctionPrototype.bind ? bind2 : own;\n};\nvar bind$1 = bind_1;\nvar bind$2 = bind$1;\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nvar classCallCheck = _classCallCheck;\n_export({\n target: \"Object\",\n stat: true,\n forced: !descriptors,\n sham: !descriptors\n}, {\n defineProperty: objectDefineProperty.f\n});\nvar defineProperty_1 = createCommonjsModule(function(module) {\n var Object2 = path.Object;\n var defineProperty4 = module.exports = function defineProperty5(it, key, desc) {\n return Object2.defineProperty(it, key, desc);\n };\n if (Object2.defineProperty.sham)\n defineProperty4.sham = true;\n});\nvar defineProperty$1 = defineProperty_1;\nvar defineProperty$2 = defineProperty$1;\nfunction _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)\n descriptor.writable = true;\n defineProperty$2(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps)\n _defineProperties(Constructor.prototype, protoProps);\n if (staticProps)\n _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nvar createClass = _createClass;\nfunction createNewDataPipeFrom(from3) {\n return new DataPipeUnderConstruction(from3);\n}\nvar SimpleDataPipe = /* @__PURE__ */ function() {\n function SimpleDataPipe2(_source, _transformers, _target) {\n var _context, _context2, _context3;\n classCallCheck(this, SimpleDataPipe2);\n this._source = _source;\n this._transformers = _transformers;\n this._target = _target;\n this._listeners = {\n add: bind$2(_context = this._add).call(_context, this),\n remove: bind$2(_context2 = this._remove).call(_context2, this),\n update: bind$2(_context3 = this._update).call(_context3, this)\n };\n }\n createClass(SimpleDataPipe2, [{\n key: \"all\",\n value: function all() {\n this._target.update(this._transformItems(this._source.get()));\n return this;\n }\n }, {\n key: \"start\",\n value: function start() {\n this._source.on(\"add\", this._listeners.add);\n this._source.on(\"remove\", this._listeners.remove);\n this._source.on(\"update\", this._listeners.update);\n return this;\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this._source.off(\"add\", this._listeners.add);\n this._source.off(\"remove\", this._listeners.remove);\n this._source.off(\"update\", this._listeners.update);\n return this;\n }\n }, {\n key: \"_transformItems\",\n value: function _transformItems(items) {\n var _context4;\n return reduce$2(_context4 = this._transformers).call(_context4, function(items2, transform) {\n return transform(items2);\n }, items);\n }\n }, {\n key: \"_add\",\n value: function _add(_name, payload) {\n if (payload == null) {\n return;\n }\n this._target.add(this._transformItems(this._source.get(payload.items)));\n }\n }, {\n key: \"_update\",\n value: function _update(_name, payload) {\n if (payload == null) {\n return;\n }\n this._target.update(this._transformItems(this._source.get(payload.items)));\n }\n }, {\n key: \"_remove\",\n value: function _remove(_name, payload) {\n if (payload == null) {\n return;\n }\n this._target.remove(this._transformItems(payload.oldData));\n }\n }]);\n return SimpleDataPipe2;\n}();\nvar DataPipeUnderConstruction = /* @__PURE__ */ function() {\n function DataPipeUnderConstruction2(_source) {\n classCallCheck(this, DataPipeUnderConstruction2);\n this._source = _source;\n this._transformers = [];\n }\n createClass(DataPipeUnderConstruction2, [{\n key: \"filter\",\n value: function filter3(callback) {\n this._transformers.push(function(input) {\n return filter$2(input).call(input, callback);\n });\n return this;\n }\n }, {\n key: \"map\",\n value: function map3(callback) {\n this._transformers.push(function(input) {\n return map$2(input).call(input, callback);\n });\n return this;\n }\n }, {\n key: \"flatMap\",\n value: function flatMap3(callback) {\n this._transformers.push(function(input) {\n return flatMap$2(input).call(input, callback);\n });\n return this;\n }\n }, {\n key: \"to\",\n value: function to(target) {\n return new SimpleDataPipe(this._source, this._transformers, target);\n }\n }]);\n return DataPipeUnderConstruction2;\n}();\nvar defineProperty$3 = defineProperty_1;\nvar defineProperty$4 = defineProperty$3;\nvar max = Math.max;\nvar min$1 = Math.min;\nvar toAbsoluteIndex = function(index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min$1(integer, length);\n};\nvar createMethod$2 = function(IS_INCLUDES) {\n return function($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n if (IS_INCLUDES && el != el)\n while (length > index) {\n value = O[index++];\n if (value != value)\n return true;\n }\n else\n for (; length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el)\n return IS_INCLUDES || index || 0;\n }\n return !IS_INCLUDES && -1;\n };\n};\nvar arrayIncludes = {\n includes: createMethod$2(true),\n indexOf: createMethod$2(false)\n};\nvar hiddenKeys = {};\nvar indexOf = arrayIncludes.indexOf;\nvar objectKeysInternal = function(object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O)\n !has(hiddenKeys, key) && has(O, key) && result.push(key);\n while (names.length > i)\n if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\nvar enumBugKeys = [\"constructor\", \"hasOwnProperty\", \"isPrototypeOf\", \"propertyIsEnumerable\", \"toLocaleString\", \"toString\", \"valueOf\"];\nvar objectKeys = Object.keys || function keys(O) {\n return objectKeysInternal(O, enumBugKeys);\n};\nvar objectDefineProperties = descriptors ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys4 = objectKeys(Properties);\n var length = keys4.length;\n var index = 0;\n var key;\n while (length > index)\n objectDefineProperty.f(O, key = keys4[index++], Properties[key]);\n return O;\n};\n_export({\n target: \"Object\",\n stat: true,\n forced: !descriptors,\n sham: !descriptors\n}, {\n defineProperties: objectDefineProperties\n});\nvar defineProperties_1 = createCommonjsModule(function(module) {\n var Object2 = path.Object;\n var defineProperties4 = module.exports = function defineProperties5(T, D) {\n return Object2.defineProperties(T, D);\n };\n if (Object2.defineProperties.sham)\n defineProperties4.sham = true;\n});\nvar defineProperties2 = defineProperties_1;\nvar defineProperties$1 = defineProperties2;\nvar hiddenKeys$1 = enumBugKeys.concat(\"length\", \"prototype\");\nvar f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return objectKeysInternal(O, hiddenKeys$1);\n};\nvar objectGetOwnPropertyNames = {\n f: f$3\n};\nvar f$4 = Object.getOwnPropertySymbols;\nvar objectGetOwnPropertySymbols = {\n f: f$4\n};\nvar ownKeys = getBuiltIn(\"Reflect\", \"ownKeys\") || function ownKeys2(it) {\n var keys4 = objectGetOwnPropertyNames.f(anObject(it));\n var getOwnPropertySymbols4 = objectGetOwnPropertySymbols.f;\n return getOwnPropertySymbols4 ? keys4.concat(getOwnPropertySymbols4(it)) : keys4;\n};\nvar createProperty = function(object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object)\n objectDefineProperty.f(object, propertyKey, createPropertyDescriptor(0, value));\n else\n object[propertyKey] = value;\n};\n_export({\n target: \"Object\",\n stat: true,\n sham: !descriptors\n}, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor5 = objectGetOwnPropertyDescriptor.f;\n var keys4 = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys4.length > index) {\n descriptor = getOwnPropertyDescriptor5(O, key = keys4[index++]);\n if (descriptor !== void 0)\n createProperty(result, key, descriptor);\n }\n return result;\n }\n});\nvar getOwnPropertyDescriptors2 = path.Object.getOwnPropertyDescriptors;\nvar getOwnPropertyDescriptors$1 = getOwnPropertyDescriptors2;\nvar getOwnPropertyDescriptors$2 = getOwnPropertyDescriptors$1;\nvar nativeGetOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;\nvar FAILS_ON_PRIMITIVES = fails(function() {\n nativeGetOwnPropertyDescriptor$1(1);\n});\nvar FORCED = !descriptors || FAILS_ON_PRIMITIVES;\n_export({\n target: \"Object\",\n stat: true,\n forced: FORCED,\n sham: !descriptors\n}, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor3(it, key) {\n return nativeGetOwnPropertyDescriptor$1(toIndexedObject(it), key);\n }\n});\nvar getOwnPropertyDescriptor_1 = createCommonjsModule(function(module) {\n var Object2 = path.Object;\n var getOwnPropertyDescriptor5 = module.exports = function getOwnPropertyDescriptor6(it, key) {\n return Object2.getOwnPropertyDescriptor(it, key);\n };\n if (Object2.getOwnPropertyDescriptor.sham)\n getOwnPropertyDescriptor5.sham = true;\n});\nvar getOwnPropertyDescriptor$2 = getOwnPropertyDescriptor_1;\nvar getOwnPropertyDescriptor$3 = getOwnPropertyDescriptor$2;\nvar html = getBuiltIn(\"document\", \"documentElement\");\nvar keys2 = shared(\"keys\");\nvar sharedKey = function(key) {\n return keys2[key] || (keys2[key] = uid(key));\n};\nvar GT = \">\";\nvar LT = \"<\";\nvar PROTOTYPE = \"prototype\";\nvar SCRIPT = \"script\";\nvar IE_PROTO = sharedKey(\"IE_PROTO\");\nvar EmptyConstructor = function() {\n};\nvar scriptTag = function(content) {\n return LT + SCRIPT + GT + content + LT + \"/\" + SCRIPT + GT;\n};\nvar NullProtoObjectViaActiveX = function(activeXDocument2) {\n activeXDocument2.write(scriptTag(\"\"));\n activeXDocument2.close();\n var temp = activeXDocument2.parentWindow.Object;\n activeXDocument2 = null;\n return temp;\n};\nvar NullProtoObjectViaIFrame = function() {\n var iframe = documentCreateElement(\"iframe\");\n var JS = \"java\" + SCRIPT + \":\";\n var iframeDocument;\n iframe.style.display = \"none\";\n html.appendChild(iframe);\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag(\"document.F=Object\"));\n iframeDocument.close();\n return iframeDocument.F;\n};\nvar activeXDocument;\nvar NullProtoObject = function() {\n try {\n activeXDocument = document.domain && new ActiveXObject(\"htmlfile\");\n } catch (error) {\n }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--)\n delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\nhiddenKeys[IE_PROTO] = true;\nvar objectCreate = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n result[IE_PROTO] = O;\n } else\n result = NullProtoObject();\n return Properties === void 0 ? result : objectDefineProperties(result, Properties);\n};\nvar nativeGetOwnPropertyNames = objectGetOwnPropertyNames.f;\nvar toString$1 = {}.toString;\nvar windowNames = typeof window == \"object\" && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];\nvar getWindowNames = function(it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\nvar f$5 = function getOwnPropertyNames2(it) {\n return windowNames && toString$1.call(it) == \"[object Window]\" ? getWindowNames(it) : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\nvar objectGetOwnPropertyNamesExternal = {\n f: f$5\n};\nvar redefine = function(target, key, value, options) {\n if (options && options.enumerable)\n target[key] = value;\n else\n createNonEnumerableProperty(target, key, value);\n};\nvar f$6 = wellKnownSymbol;\nvar wellKnownSymbolWrapped = {\n f: f$6\n};\nvar defineProperty$5 = objectDefineProperty.f;\nvar defineWellKnownSymbol = function(NAME) {\n var Symbol2 = path.Symbol || (path.Symbol = {});\n if (!has(Symbol2, NAME))\n defineProperty$5(Symbol2, NAME, {\n value: wellKnownSymbolWrapped.f(NAME)\n });\n};\nvar TO_STRING_TAG = wellKnownSymbol(\"toStringTag\");\nvar test = {};\ntest[TO_STRING_TAG] = \"z\";\nvar toStringTagSupport = String(test) === \"[object z]\";\nvar TO_STRING_TAG$1 = wellKnownSymbol(\"toStringTag\");\nvar CORRECT_ARGUMENTS = classofRaw(function() {\n return arguments;\n}()) == \"Arguments\";\nvar tryGet = function(it, key) {\n try {\n return it[key];\n } catch (error) {\n }\n};\nvar classof = toStringTagSupport ? classofRaw : function(it) {\n var O, tag, result;\n return it === void 0 ? \"Undefined\" : it === null ? \"Null\" : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$1)) == \"string\" ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == \"Object\" && typeof O.callee == \"function\" ? \"Arguments\" : result;\n};\nvar objectToString = toStringTagSupport ? {}.toString : function toString2() {\n return \"[object \" + classof(this) + \"]\";\n};\nvar defineProperty$6 = objectDefineProperty.f;\nvar TO_STRING_TAG$2 = wellKnownSymbol(\"toStringTag\");\nvar setToStringTag = function(it, TAG, STATIC, SET_METHOD) {\n if (it) {\n var target = STATIC ? it : it.prototype;\n if (!has(target, TO_STRING_TAG$2)) {\n defineProperty$6(target, TO_STRING_TAG$2, {\n configurable: true,\n value: TAG\n });\n }\n if (SET_METHOD && !toStringTagSupport) {\n createNonEnumerableProperty(target, \"toString\", objectToString);\n }\n }\n};\nvar functionToString = Function.toString;\nif (typeof sharedStore.inspectSource != \"function\") {\n sharedStore.inspectSource = function(it) {\n return functionToString.call(it);\n };\n}\nvar inspectSource = sharedStore.inspectSource;\nvar WeakMap = global$1$1.WeakMap;\nvar nativeWeakMap = typeof WeakMap === \"function\" && /native code/.test(inspectSource(WeakMap));\nvar WeakMap$1 = global$1$1.WeakMap;\nvar set, get, has$1;\nvar enforce = function(it) {\n return has$1(it) ? get(it) : set(it, {});\n};\nvar getterFor = function(TYPE) {\n return function(it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError(\"Incompatible receiver, \" + TYPE + \" required\");\n }\n return state;\n };\n};\nif (nativeWeakMap) {\n var store$1 = sharedStore.state || (sharedStore.state = new WeakMap$1());\n var wmget = store$1.get;\n var wmhas = store$1.has;\n var wmset = store$1.set;\n set = function(it, metadata) {\n metadata.facade = it;\n wmset.call(store$1, it, metadata);\n return metadata;\n };\n get = function(it) {\n return wmget.call(store$1, it) || {};\n };\n has$1 = function(it) {\n return wmhas.call(store$1, it);\n };\n} else {\n var STATE = sharedKey(\"state\");\n hiddenKeys[STATE] = true;\n set = function(it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function(it) {\n return has(it, STATE) ? it[STATE] : {};\n };\n has$1 = function(it) {\n return has(it, STATE);\n };\n}\nvar internalState = {\n set,\n get,\n has: has$1,\n enforce,\n getterFor\n};\nvar $forEach = arrayIteration.forEach;\nvar HIDDEN = sharedKey(\"hidden\");\nvar SYMBOL = \"Symbol\";\nvar PROTOTYPE$1 = \"prototype\";\nvar TO_PRIMITIVE = wellKnownSymbol(\"toPrimitive\");\nvar setInternalState = internalState.set;\nvar getInternalState = internalState.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE$1];\nvar $Symbol = global$1$1.Symbol;\nvar $stringify = getBuiltIn(\"JSON\", \"stringify\");\nvar nativeGetOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f;\nvar nativeDefineProperty$1 = objectDefineProperty.f;\nvar nativeGetOwnPropertyNames$1 = objectGetOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable$1 = objectPropertyIsEnumerable.f;\nvar AllSymbols = shared(\"symbols\");\nvar ObjectPrototypeSymbols = shared(\"op-symbols\");\nvar StringToSymbolRegistry = shared(\"string-to-symbol-registry\");\nvar SymbolToStringRegistry = shared(\"symbol-to-string-registry\");\nvar WellKnownSymbolsStore$1 = shared(\"wks\");\nvar QObject = global$1$1.QObject;\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE$1] || !QObject[PROTOTYPE$1].findChild;\nvar setSymbolDescriptor = descriptors && fails(function() {\n return objectCreate(nativeDefineProperty$1({}, \"a\", {\n get: function() {\n return nativeDefineProperty$1(this, \"a\", {\n value: 7\n }).a;\n }\n })).a != 7;\n}) ? function(O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$2(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor)\n delete ObjectPrototype[P];\n nativeDefineProperty$1(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty$1(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty$1;\nvar wrap = function(tag, description) {\n var symbol2 = AllSymbols[tag] = objectCreate($Symbol[PROTOTYPE$1]);\n setInternalState(symbol2, {\n type: SYMBOL,\n tag,\n description\n });\n if (!descriptors)\n symbol2.description = description;\n return symbol2;\n};\nvar isSymbol = useSymbolAsUid ? function(it) {\n return typeof it == \"symbol\";\n} : function(it) {\n return Object(it) instanceof $Symbol;\n};\nvar $defineProperty = function defineProperty3(O, P, Attributes) {\n if (O === ObjectPrototype)\n $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN))\n nativeDefineProperty$1(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key])\n O[HIDDEN][key] = false;\n Attributes = objectCreate(Attributes, {\n enumerable: createPropertyDescriptor(0, false)\n });\n }\n return setSymbolDescriptor(O, key, Attributes);\n }\n return nativeDefineProperty$1(O, key, Attributes);\n};\nvar $defineProperties = function defineProperties3(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys4 = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys4, function(key) {\n if (!descriptors || $propertyIsEnumerable.call(properties, key))\n $defineProperty(O, key, properties[key]);\n });\n return O;\n};\nvar $create = function create2(O, Properties) {\n return Properties === void 0 ? objectCreate(O) : $defineProperties(objectCreate(O), Properties);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable2(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable$1.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P))\n return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor4(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key))\n return;\n var descriptor = nativeGetOwnPropertyDescriptor$2(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames3(O) {\n var names = nativeGetOwnPropertyNames$1(toIndexedObject(O));\n var result = [];\n $forEach(names, function(key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key))\n result.push(key);\n });\n return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames$1(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function(key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\nif (!nativeSymbol) {\n $Symbol = function Symbol2() {\n if (this instanceof $Symbol)\n throw TypeError(\"Symbol is not a constructor\");\n var description = !arguments.length || arguments[0] === void 0 ? void 0 : String(arguments[0]);\n var tag = uid(description);\n var setter = function(value) {\n if (this === ObjectPrototype)\n setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag))\n this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (descriptors && USE_SETTER)\n setSymbolDescriptor(ObjectPrototype, tag, {\n configurable: true,\n set: setter\n });\n return wrap(tag, description);\n };\n redefine($Symbol[PROTOTYPE$1], \"toString\", function toString3() {\n return getInternalState(this).tag;\n });\n redefine($Symbol, \"withoutSetter\", function(description) {\n return wrap(uid(description), description);\n });\n objectPropertyIsEnumerable.f = $propertyIsEnumerable;\n objectDefineProperty.f = $defineProperty;\n objectGetOwnPropertyDescriptor.f = $getOwnPropertyDescriptor;\n objectGetOwnPropertyNames.f = objectGetOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n objectGetOwnPropertySymbols.f = $getOwnPropertySymbols;\n wellKnownSymbolWrapped.f = function(name) {\n return wrap(wellKnownSymbol(name), name);\n };\n if (descriptors) {\n nativeDefineProperty$1($Symbol[PROTOTYPE$1], \"description\", {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n }\n}\n_export({\n global: true,\n wrap: true,\n forced: !nativeSymbol,\n sham: !nativeSymbol\n}, {\n Symbol: $Symbol\n});\n$forEach(objectKeys(WellKnownSymbolsStore$1), function(name) {\n defineWellKnownSymbol(name);\n});\n_export({\n target: SYMBOL,\n stat: true,\n forced: !nativeSymbol\n}, {\n for: function(key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string))\n return StringToSymbolRegistry[string];\n var symbol2 = $Symbol(string);\n StringToSymbolRegistry[string] = symbol2;\n SymbolToStringRegistry[symbol2] = string;\n return symbol2;\n },\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym))\n throw TypeError(sym + \" is not a symbol\");\n if (has(SymbolToStringRegistry, sym))\n return SymbolToStringRegistry[sym];\n },\n useSetter: function() {\n USE_SETTER = true;\n },\n useSimple: function() {\n USE_SETTER = false;\n }\n});\n_export({\n target: \"Object\",\n stat: true,\n forced: !nativeSymbol,\n sham: !descriptors\n}, {\n create: $create,\n defineProperty: $defineProperty,\n defineProperties: $defineProperties,\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n_export({\n target: \"Object\",\n stat: true,\n forced: !nativeSymbol\n}, {\n getOwnPropertyNames: $getOwnPropertyNames,\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n_export({\n target: \"Object\",\n stat: true,\n forced: fails(function() {\n objectGetOwnPropertySymbols.f(1);\n })\n}, {\n getOwnPropertySymbols: function getOwnPropertySymbols2(it) {\n return objectGetOwnPropertySymbols.f(toObject(it));\n }\n});\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !nativeSymbol || fails(function() {\n var symbol2 = $Symbol();\n return $stringify([symbol2]) != \"[null]\" || $stringify({\n a: symbol2\n }) != \"{}\" || $stringify(Object(symbol2)) != \"{}\";\n });\n _export({\n target: \"JSON\",\n stat: true,\n forced: FORCED_JSON_STRINGIFY\n }, {\n stringify: function stringify3(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index)\n args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === void 0 || isSymbol(it))\n return;\n if (!isArray(replacer))\n replacer = function(key, value) {\n if (typeof $replacer == \"function\")\n value = $replacer.call(this, key, value);\n if (!isSymbol(value))\n return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\nif (!$Symbol[PROTOTYPE$1][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE$1], TO_PRIMITIVE, $Symbol[PROTOTYPE$1].valueOf);\n}\nsetToStringTag($Symbol, SYMBOL);\nhiddenKeys[HIDDEN] = true;\nvar getOwnPropertySymbols3 = path.Object.getOwnPropertySymbols;\nvar getOwnPropertySymbols$1 = getOwnPropertySymbols3;\nvar getOwnPropertySymbols$2 = getOwnPropertySymbols$1;\nvar iterators = {};\nvar correctPrototypeGetter = !fails(function() {\n function F() {\n }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\nvar IE_PROTO$1 = sharedKey(\"IE_PROTO\");\nvar ObjectPrototype$1 = Object.prototype;\nvar objectGetPrototypeOf = correctPrototypeGetter ? Object.getPrototypeOf : function(O) {\n O = toObject(O);\n if (has(O, IE_PROTO$1))\n return O[IE_PROTO$1];\n if (typeof O.constructor == \"function\" && O instanceof O.constructor) {\n return O.constructor.prototype;\n }\n return O instanceof Object ? ObjectPrototype$1 : null;\n};\nvar ITERATOR = wellKnownSymbol(\"iterator\");\nvar BUGGY_SAFARI_ITERATORS = false;\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\nif ([].keys) {\n arrayIterator = [].keys();\n if (!(\"next\" in arrayIterator))\n BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = objectGetPrototypeOf(objectGetPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype)\n IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\nif (IteratorPrototype == void 0)\n IteratorPrototype = {};\nvar iteratorsCore = {\n IteratorPrototype,\n BUGGY_SAFARI_ITERATORS\n};\nvar IteratorPrototype$1 = iteratorsCore.IteratorPrototype;\nvar returnThis = function() {\n return this;\n};\nvar createIteratorConstructor = function(IteratorConstructor, NAME, next2) {\n var TO_STRING_TAG2 = NAME + \" Iterator\";\n IteratorConstructor.prototype = objectCreate(IteratorPrototype$1, {\n next: createPropertyDescriptor(1, next2)\n });\n setToStringTag(IteratorConstructor, TO_STRING_TAG2, false, true);\n iterators[TO_STRING_TAG2] = returnThis;\n return IteratorConstructor;\n};\nvar aPossiblePrototype = function(it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + \" as a prototype\");\n }\n return it;\n};\nvar objectSetPrototypeOf = Object.setPrototypeOf || (\"__proto__\" in {} ? function() {\n var CORRECT_SETTER = false;\n var test2 = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, \"__proto__\").set;\n setter.call(test2, []);\n CORRECT_SETTER = test2 instanceof Array;\n } catch (error) {\n }\n return function setPrototypeOf2(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER)\n setter.call(O, proto);\n else\n O.__proto__ = proto;\n return O;\n };\n}() : void 0);\nvar IteratorPrototype$2 = iteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS$1 = iteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR$1 = wellKnownSymbol(\"iterator\");\nvar KEYS = \"keys\";\nvar VALUES = \"values\";\nvar ENTRIES = \"entries\";\nvar returnThis$1 = function() {\n return this;\n};\nvar defineIterator = function(Iterable, NAME, IteratorConstructor, next2, DEFAULT, IS_SET, FORCED2) {\n createIteratorConstructor(IteratorConstructor, NAME, next2);\n var getIterationMethod = function(KIND) {\n if (KIND === DEFAULT && defaultIterator)\n return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS$1 && KIND in IterablePrototype)\n return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS:\n return function keys4() {\n return new IteratorConstructor(this, KIND);\n };\n case VALUES:\n return function values3() {\n return new IteratorConstructor(this, KIND);\n };\n case ENTRIES:\n return function entries2() {\n return new IteratorConstructor(this, KIND);\n };\n }\n return function() {\n return new IteratorConstructor(this);\n };\n };\n var TO_STRING_TAG2 = NAME + \" Iterator\";\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR$1] || IterablePrototype[\"@@iterator\"] || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS$1 && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == \"Array\" ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n if (anyNativeIterator) {\n CurrentIteratorPrototype = objectGetPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype$2 !== Object.prototype && CurrentIteratorPrototype.next) {\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG2, true, true);\n iterators[TO_STRING_TAG2] = returnThis$1;\n }\n }\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values3() {\n return nativeIterator.call(this);\n };\n }\n if (FORCED2 && IterablePrototype[ITERATOR$1] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR$1, defaultIterator);\n }\n iterators[NAME] = defaultIterator;\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED2)\n for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n }\n else\n _export({\n target: NAME,\n proto: true,\n forced: BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME\n }, methods);\n }\n return methods;\n};\nvar ARRAY_ITERATOR = \"Array Iterator\";\nvar setInternalState$1 = internalState.set;\nvar getInternalState$1 = internalState.getterFor(ARRAY_ITERATOR);\nvar es_array_iterator = defineIterator(Array, \"Array\", function(iterated, kind) {\n setInternalState$1(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated),\n index: 0,\n kind\n });\n}, function() {\n var state = getInternalState$1(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = void 0;\n return {\n value: void 0,\n done: true\n };\n }\n if (kind == \"keys\")\n return {\n value: index,\n done: false\n };\n if (kind == \"values\")\n return {\n value: target[index],\n done: false\n };\n return {\n value: [index, target[index]],\n done: false\n };\n}, \"values\");\niterators.Arguments = iterators.Array;\nvar domIterables = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\nvar TO_STRING_TAG$3 = wellKnownSymbol(\"toStringTag\");\nfor (var COLLECTION_NAME in domIterables) {\n var Collection = global$1$1[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG$3) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG$3, COLLECTION_NAME);\n }\n iterators[COLLECTION_NAME] = iterators.Array;\n}\nvar createMethod$3 = function(CONVERT_TO_STRING) {\n return function($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size)\n return CONVERT_TO_STRING ? \"\" : void 0;\n first = S.charCodeAt(position);\n return first < 55296 || first > 56319 || position + 1 === size || (second = S.charCodeAt(position + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 55296 << 10) + (second - 56320) + 65536;\n };\n};\nvar stringMultibyte = {\n codeAt: createMethod$3(false),\n charAt: createMethod$3(true)\n};\nvar charAt = stringMultibyte.charAt;\nvar STRING_ITERATOR = \"String Iterator\";\nvar setInternalState$2 = internalState.set;\nvar getInternalState$2 = internalState.getterFor(STRING_ITERATOR);\ndefineIterator(String, \"String\", function(iterated) {\n setInternalState$2(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n}, function next() {\n var state = getInternalState$2(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length)\n return {\n value: void 0,\n done: true\n };\n point = charAt(string, index);\n state.index += point.length;\n return {\n value: point,\n done: false\n };\n});\nvar ITERATOR$2 = wellKnownSymbol(\"iterator\");\nvar getIteratorMethod = function(it) {\n if (it != void 0)\n return it[ITERATOR$2] || it[\"@@iterator\"] || iterators[classof(it)];\n};\nvar getIterator = function(it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != \"function\") {\n throw TypeError(String(it) + \" is not iterable\");\n }\n return anObject(iteratorMethod.call(it));\n};\nvar getIterator_1 = getIterator;\nvar getIterator$1 = getIterator_1;\nvar getIteratorMethod_1 = getIteratorMethod;\nvar getIteratorMethod$1 = getIteratorMethod_1;\nvar iteratorClose = function(iterator2) {\n var returnMethod = iterator2[\"return\"];\n if (returnMethod !== void 0) {\n return anObject(returnMethod.call(iterator2)).value;\n }\n};\nvar callWithSafeIterationClosing = function(iterator2, fn, value, ENTRIES2) {\n try {\n return ENTRIES2 ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator2);\n throw error;\n }\n};\nvar ITERATOR$3 = wellKnownSymbol(\"iterator\");\nvar ArrayPrototype$4 = Array.prototype;\nvar isArrayIteratorMethod = function(it) {\n return it !== void 0 && (iterators.Array === it || ArrayPrototype$4[ITERATOR$3] === it);\n};\nvar arrayFrom = function from(arrayLike) {\n var O = toObject(arrayLike);\n var C = typeof this == \"function\" ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : void 0;\n var mapping = mapfn !== void 0;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator2, next2, value;\n if (mapping)\n mapfn = functionBindContext(mapfn, argumentsLength > 2 ? arguments[2] : void 0, 2);\n if (iteratorMethod != void 0 && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator2 = iteratorMethod.call(O);\n next2 = iterator2.next;\n result = new C();\n for (; !(step = next2.call(iterator2)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator2, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (; length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\nvar ITERATOR$4 = wellKnownSymbol(\"iterator\");\nvar SAFE_CLOSING = false;\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function() {\n return {\n done: !!called++\n };\n },\n return: function() {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR$4] = function() {\n return this;\n };\n Array.from(iteratorWithReturn, function() {\n throw 2;\n });\n} catch (error) {\n}\nvar checkCorrectnessOfIteration = function(exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING)\n return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR$4] = function() {\n return {\n next: function() {\n return {\n done: ITERATION_SUPPORT = true\n };\n }\n };\n };\n exec(object);\n } catch (error) {\n }\n return ITERATION_SUPPORT;\n};\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function(iterable) {\n Array.from(iterable);\n});\n_export({\n target: \"Array\",\n stat: true,\n forced: INCORRECT_ITERATION\n}, {\n from: arrayFrom\n});\nvar from2 = path.Array.from;\nvar from$1 = from2;\nvar from$2 = from$1;\nvar arrayFill = function fill(value) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : void 0, length);\n var end = argumentsLength > 2 ? arguments[2] : void 0;\n var endPos = end === void 0 ? length : toAbsoluteIndex(end, length);\n while (endPos > index)\n O[index++] = value;\n return O;\n};\n_export({\n target: \"Array\",\n proto: true\n}, {\n fill: arrayFill\n});\nvar fill2 = entryVirtual(\"Array\").fill;\nvar slice$1 = [].slice;\nvar MSIE = /MSIE .\\./.test(engineUserAgent);\nvar wrap$1 = function(scheduler) {\n return function(handler, timeout) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice$1.call(arguments, 2) : void 0;\n return scheduler(boundArgs ? function() {\n (typeof handler == \"function\" ? handler : Function(handler)).apply(this, args);\n } : handler, timeout);\n };\n};\n_export({\n global: true,\n bind: true,\n forced: MSIE\n}, {\n setTimeout: wrap$1(global$1$1.setTimeout),\n setInterval: wrap$1(global$1$1.setInterval)\n});\nvar setTimeout$1 = path.setTimeout;\nvar setTimeout$2 = setTimeout$1;\nvar $stringify$1 = getBuiltIn(\"JSON\", \"stringify\");\nvar re = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\nvar fix = function(match2, offset, string) {\n var prev = string.charAt(offset - 1);\n var next2 = string.charAt(offset + 1);\n if (low.test(match2) && !hi.test(next2) || hi.test(match2) && !low.test(prev)) {\n return \"\\\\u\" + match2.charCodeAt(0).toString(16);\n }\n return match2;\n};\nvar FORCED$1 = fails(function() {\n return $stringify$1(\"\\uDF06\\uD834\") !== '\"\\\\udf06\\\\ud834\"' || $stringify$1(\"\\uDEAD\") !== '\"\\\\udead\"';\n});\nif ($stringify$1) {\n _export({\n target: \"JSON\",\n stat: true,\n forced: FORCED$1\n }, {\n stringify: function stringify3(it, replacer, space) {\n var result = $stringify$1.apply(null, arguments);\n return typeof result == \"string\" ? result.replace(re, fix) : result;\n }\n });\n}\nif (!path.JSON)\n path.JSON = {\n stringify: JSON.stringify\n };\nvar stringify = function stringify2(it, replacer, space) {\n return path.JSON.stringify.apply(null, arguments);\n};\nvar stringify$1 = stringify;\nvar stringify$2 = stringify$1;\n_export({\n target: \"Object\",\n stat: true,\n sham: !descriptors\n}, {\n create: objectCreate\n});\nvar Object$1 = path.Object;\nvar create3 = function create4(P, D) {\n return Object$1.create(P, D);\n};\nvar create$1 = create3;\nvar create$2 = create$1;\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n defineProperty$2(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar defineProperty$7 = _defineProperty;\nvar whitespaces = \"\t\\n\\v\\f\\r \\xA0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF\";\nvar whitespace = \"[\" + whitespaces + \"]\";\nvar ltrim = RegExp(\"^\" + whitespace + whitespace + \"*\");\nvar rtrim = RegExp(whitespace + whitespace + \"*$\");\nvar createMethod$4 = function(TYPE) {\n return function($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1)\n string = string.replace(ltrim, \"\");\n if (TYPE & 2)\n string = string.replace(rtrim, \"\");\n return string;\n };\n};\nvar stringTrim = {\n start: createMethod$4(1),\n end: createMethod$4(2),\n trim: createMethod$4(3)\n};\nvar non = \"\\u200B\\x85\\u180E\";\nvar stringTrimForced = function(METHOD_NAME) {\n return fails(function() {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\nvar $trim = stringTrim.trim;\n_export({\n target: \"String\",\n proto: true,\n forced: stringTrimForced(\"trim\")\n}, {\n trim: function trim() {\n return $trim(this);\n }\n});\nvar trim2 = entryVirtual(\"String\").trim;\nvar $indexOf = arrayIncludes.indexOf;\nvar nativeIndexOf = [].indexOf;\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD$1 = arrayMethodIsStrict(\"indexOf\");\nvar USES_TO_LENGTH$3 = arrayMethodUsesToLength(\"indexOf\", {\n ACCESSORS: true,\n 1: 0\n});\n_export({\n target: \"Array\",\n proto: true,\n forced: NEGATIVE_ZERO || !STRICT_METHOD$1 || !USES_TO_LENGTH$3\n}, {\n indexOf: function indexOf2(searchElement) {\n return NEGATIVE_ZERO ? nativeIndexOf.apply(this, arguments) || 0 : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar indexOf$1 = entryVirtual(\"Array\").indexOf;\nvar trim$1 = stringTrim.trim;\nvar $parseInt = global$1$1.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED$2 = $parseInt(whitespaces + \"08\") !== 8 || $parseInt(whitespaces + \"0x16\") !== 22;\nvar numberParseInt = FORCED$2 ? function parseInt2(string, radix) {\n var S = trim$1(String(string));\n return $parseInt(S, radix >>> 0 || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n_export({\n global: true,\n forced: parseInt != numberParseInt\n}, {\n parseInt: numberParseInt\n});\nvar propertyIsEnumerable3 = objectPropertyIsEnumerable.f;\nvar createMethod$5 = function(TO_ENTRIES) {\n return function(it) {\n var O = toIndexedObject(it);\n var keys4 = objectKeys(O);\n var length = keys4.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys4[i++];\n if (!descriptors || propertyIsEnumerable3.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\nvar objectToArray = {\n entries: createMethod$5(true),\n values: createMethod$5(false)\n};\nvar $values = objectToArray.values;\n_export({\n target: \"Object\",\n stat: true\n}, {\n values: function values(O) {\n return $values(O);\n }\n});\nvar values2 = path.Object.values;\nvar FAILS_ON_PRIMITIVES$1 = fails(function() {\n objectGetPrototypeOf(1);\n});\n_export({\n target: \"Object\",\n stat: true,\n forced: FAILS_ON_PRIMITIVES$1,\n sham: !correctPrototypeGetter\n}, {\n getPrototypeOf: function getPrototypeOf(it) {\n return objectGetPrototypeOf(toObject(it));\n }\n});\nvar getPrototypeOf2 = path.Object.getPrototypeOf;\nvar $includes = arrayIncludes.includes;\nvar USES_TO_LENGTH$4 = arrayMethodUsesToLength(\"indexOf\", {\n ACCESSORS: true,\n 1: 0\n});\n_export({\n target: \"Array\",\n proto: true,\n forced: !USES_TO_LENGTH$4\n}, {\n includes: function includes(el) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar includes2 = entryVirtual(\"Array\").includes;\nvar MATCH = wellKnownSymbol(\"match\");\nvar isRegexp = function(it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== void 0 ? !!isRegExp : classofRaw(it) == \"RegExp\");\n};\nvar notARegexp = function(it) {\n if (isRegexp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n }\n return it;\n};\nvar MATCH$1 = wellKnownSymbol(\"match\");\nvar correctIsRegexpLogic = function(METHOD_NAME) {\n var regexp = /./;\n try {\n \"/./\"[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH$1] = false;\n return \"/./\"[METHOD_NAME](regexp);\n } catch (error2) {\n }\n }\n return false;\n};\n_export({\n target: \"String\",\n proto: true,\n forced: !correctIsRegexpLogic(\"includes\")\n}, {\n includes: function includes3(searchString) {\n return !!~String(requireObjectCoercible(this)).indexOf(notARegexp(searchString), arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar includes$1 = entryVirtual(\"String\").includes;\nvar nativeAssign = Object.assign;\nvar defineProperty$8 = Object.defineProperty;\nvar objectAssign = !nativeAssign || fails(function() {\n if (descriptors && nativeAssign({\n b: 1\n }, nativeAssign(defineProperty$8({}, \"a\", {\n enumerable: true,\n get: function() {\n defineProperty$8(this, \"b\", {\n value: 3,\n enumerable: false\n });\n }\n }), {\n b: 2\n })).b !== 1)\n return true;\n var A = {};\n var B = {};\n var symbol2 = Symbol();\n var alphabet = \"abcdefghijklmnopqrst\";\n A[symbol2] = 7;\n alphabet.split(\"\").forEach(function(chr) {\n B[chr] = chr;\n });\n return nativeAssign({}, A)[symbol2] != 7 || objectKeys(nativeAssign({}, B)).join(\"\") != alphabet;\n}) ? function assign(target, source) {\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols4 = objectGetOwnPropertySymbols.f;\n var propertyIsEnumerable4 = objectPropertyIsEnumerable.f;\n while (argumentsLength > index) {\n var S = indexedObject(arguments[index++]);\n var keys4 = getOwnPropertySymbols4 ? objectKeys(S).concat(getOwnPropertySymbols4(S)) : objectKeys(S);\n var length = keys4.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys4[j++];\n if (!descriptors || propertyIsEnumerable4.call(S, key))\n T[key] = S[key];\n }\n }\n return T;\n} : nativeAssign;\n_export({\n target: \"Object\",\n stat: true,\n forced: Object.assign !== objectAssign\n}, {\n assign: objectAssign\n});\nvar assign2 = path.Object.assign;\nvar assign$1 = assign2;\nvar assign$2 = assign$1;\nvar HAS_SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport(\"splice\");\nvar USES_TO_LENGTH$5 = arrayMethodUsesToLength(\"splice\", {\n ACCESSORS: true,\n 0: 0,\n 1: 2\n});\nvar max$1 = Math.max;\nvar min$2 = Math.min;\nvar MAX_SAFE_INTEGER = 9007199254740991;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = \"Maximum allowed length exceeded\";\n_export({\n target: \"Array\",\n proto: true,\n forced: !HAS_SPECIES_SUPPORT$2 || !USES_TO_LENGTH$5\n}, {\n splice: function splice(start, deleteCount) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from3, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min$2(max$1(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from3 = actualStart + k;\n if (from3 in O)\n createProperty(A, k, O[from3]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from3 = k + actualDeleteCount;\n to = k + insertCount;\n if (from3 in O)\n O[to] = O[from3];\n else\n delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--)\n delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from3 = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from3 in O)\n O[to] = O[from3];\n else\n delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\nvar splice2 = entryVirtual(\"Array\").splice;\nvar ArrayPrototype$5 = Array.prototype;\nvar splice_1 = function(it) {\n var own = it.splice;\n return it === ArrayPrototype$5 || it instanceof Array && own === ArrayPrototype$5.splice ? splice2 : own;\n};\nvar splice$1 = splice_1;\nvar splice$2 = splice$1;\nvar nativeReverse = [].reverse;\nvar test$1 = [1, 2];\n_export({\n target: \"Array\",\n proto: true,\n forced: String(test$1) === String(test$1.reverse())\n}, {\n reverse: function reverse() {\n if (isArray(this))\n this.length = this.length;\n return nativeReverse.call(this);\n }\n});\nvar reverse2 = entryVirtual(\"Array\").reverse;\nvar ArrayPrototype$6 = Array.prototype;\nvar reverse_1 = function(it) {\n var own = it.reverse;\n return it === ArrayPrototype$6 || it instanceof Array && own === ArrayPrototype$6.reverse ? reverse2 : own;\n};\nvar reverse$1 = reverse_1;\nvar reverse$2 = reverse$1;\nvar $forEach$1 = arrayIteration.forEach;\nvar STRICT_METHOD$2 = arrayMethodIsStrict(\"forEach\");\nvar USES_TO_LENGTH$6 = arrayMethodUsesToLength(\"forEach\");\nvar arrayForEach = !STRICT_METHOD$2 || !USES_TO_LENGTH$6 ? function forEach(callbackfn) {\n return $forEach$1(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);\n} : [].forEach;\n_export({\n target: \"Array\",\n proto: true,\n forced: [].forEach != arrayForEach\n}, {\n forEach: arrayForEach\n});\nvar forEach2 = entryVirtual(\"Array\").forEach;\nvar forEach$1 = forEach2;\nvar ArrayPrototype$7 = Array.prototype;\nvar DOMIterables = {\n DOMTokenList: true,\n NodeList: true\n};\nvar forEach_1 = function(it) {\n var own = it.forEach;\n return it === ArrayPrototype$7 || it instanceof Array && own === ArrayPrototype$7.forEach || DOMIterables.hasOwnProperty(classof(it)) ? forEach$1 : own;\n};\nvar forEach$2 = forEach_1;\n_export({\n target: \"Array\",\n stat: true\n}, {\n isArray\n});\nvar isArray$1 = path.Array.isArray;\nvar isArray$2 = isArray$1;\nvar isArray$3 = isArray$2;\nfunction _arrayWithHoles(arr) {\n if (isArray$3(arr))\n return arr;\n}\nvar arrayWithHoles = _arrayWithHoles;\nvar ITERATOR$5 = wellKnownSymbol(\"iterator\");\nvar isIterable = function(it) {\n var O = Object(it);\n return O[ITERATOR$5] !== void 0 || \"@@iterator\" in O || iterators.hasOwnProperty(classof(O));\n};\nvar isIterable_1 = isIterable;\nvar isIterable$1 = isIterable_1;\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol(\"isConcatSpreadable\");\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = \"Maximum allowed index exceeded\";\nvar IS_CONCAT_SPREADABLE_SUPPORT = engineV8Version >= 51 || !fails(function() {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport(\"concat\");\nvar isConcatSpreadable = function(O) {\n if (!isObject(O))\n return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== void 0 ? !!spreadable : isArray(O);\n};\nvar FORCED$3 = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n_export({\n target: \"Array\",\n proto: true,\n forced: FORCED$3\n}, {\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER$1)\n throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++)\n if (k in E)\n createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER$1)\n throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\ndefineWellKnownSymbol(\"asyncIterator\");\ndefineWellKnownSymbol(\"hasInstance\");\ndefineWellKnownSymbol(\"isConcatSpreadable\");\ndefineWellKnownSymbol(\"iterator\");\ndefineWellKnownSymbol(\"match\");\ndefineWellKnownSymbol(\"matchAll\");\ndefineWellKnownSymbol(\"replace\");\ndefineWellKnownSymbol(\"search\");\ndefineWellKnownSymbol(\"species\");\ndefineWellKnownSymbol(\"split\");\ndefineWellKnownSymbol(\"toPrimitive\");\ndefineWellKnownSymbol(\"toStringTag\");\ndefineWellKnownSymbol(\"unscopables\");\nsetToStringTag(global$1$1.JSON, \"JSON\", true);\nvar symbol = path.Symbol;\ndefineWellKnownSymbol(\"asyncDispose\");\ndefineWellKnownSymbol(\"dispose\");\ndefineWellKnownSymbol(\"observable\");\ndefineWellKnownSymbol(\"patternMatch\");\ndefineWellKnownSymbol(\"replaceAll\");\nvar symbol$1 = symbol;\nvar symbol$2 = symbol$1;\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof symbol$2 === \"undefined\" || !isIterable$1(Object(arr)))\n return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = void 0;\n try {\n for (var _i = getIterator$1(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i)\n break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null)\n _i[\"return\"]();\n } finally {\n if (_d)\n throw _e;\n }\n }\n return _arr;\n}\nvar iterableToArrayLimit = _iterableToArrayLimit;\nvar from$3 = from2;\nvar from$4 = from$3;\nvar HAS_SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport(\"slice\");\nvar USES_TO_LENGTH$7 = arrayMethodUsesToLength(\"slice\", {\n ACCESSORS: true,\n 0: 0,\n 1: 2\n});\nvar SPECIES$2 = wellKnownSymbol(\"species\");\nvar nativeSlice = [].slice;\nvar max$2 = Math.max;\n_export({\n target: \"Array\",\n proto: true,\n forced: !HAS_SPECIES_SUPPORT$3 || !USES_TO_LENGTH$7\n}, {\n slice: function slice2(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === void 0 ? length : end, length);\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n if (typeof Constructor == \"function\" && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = void 0;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES$2];\n if (Constructor === null)\n Constructor = void 0;\n }\n if (Constructor === Array || Constructor === void 0) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === void 0 ? Array : Constructor)(max$2(fin - k, 0));\n for (n = 0; k < fin; k++, n++)\n if (k in O)\n createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\nvar slice$2 = entryVirtual(\"Array\").slice;\nvar ArrayPrototype$8 = Array.prototype;\nvar slice_1 = function(it) {\n var own = it.slice;\n return it === ArrayPrototype$8 || it instanceof Array && own === ArrayPrototype$8.slice ? slice$2 : own;\n};\nvar slice$3 = slice_1;\nvar slice$4 = slice$3;\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nvar arrayLikeToArray = _arrayLikeToArray;\nfunction _unsupportedIterableToArray(o, minLen) {\n var _context;\n if (!o)\n return;\n if (typeof o === \"string\")\n return arrayLikeToArray(o, minLen);\n var n = slice$4(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return from$4(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return arrayLikeToArray(o, minLen);\n}\nvar unsupportedIterableToArray = _unsupportedIterableToArray;\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nvar nonIterableRest = _nonIterableRest;\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nvar slicedToArray = _slicedToArray;\n_export({\n target: \"Date\",\n stat: true\n}, {\n now: function now() {\n return new Date().getTime();\n }\n});\nvar now2 = path.Date.now;\nvar FAILS_ON_PRIMITIVES$2 = fails(function() {\n objectKeys(1);\n});\n_export({\n target: \"Object\",\n stat: true,\n forced: FAILS_ON_PRIMITIVES$2\n}, {\n keys: function keys3(it) {\n return objectKeys(toObject(it));\n }\n});\nvar keys$1 = path.Object.keys;\nvar keys$2 = keys$1;\nvar keys$3 = keys$2;\nvar isArray$4 = isArray$1;\nvar isArray$5 = isArray$4;\nvar iterator = wellKnownSymbolWrapped.f(\"iterator\");\nvar iterator$1 = iterator;\nvar iterator$2 = iterator$1;\nvar _typeof_1 = createCommonjsModule(function(module) {\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof symbol$2 === \"function\" && typeof iterator$2 === \"symbol\") {\n module.exports = _typeof = function _typeof2(obj2) {\n return typeof obj2;\n };\n } else {\n module.exports = _typeof = function _typeof2(obj2) {\n return obj2 && typeof symbol$2 === \"function\" && obj2.constructor === symbol$2 && obj2 !== symbol$2.prototype ? \"symbol\" : typeof obj2;\n };\n }\n return _typeof(obj);\n }\n module.exports = _typeof;\n});\n_export({\n target: \"Reflect\",\n stat: true\n}, {\n ownKeys\n});\nvar ownKeys$1 = path.Reflect.ownKeys;\nvar ownKeys$2 = ownKeys$1;\nvar ownKeys$3 = ownKeys$2;\nvar slice$5 = slice_1;\nvar slice$6 = slice$5;\nfunction _arrayWithoutHoles(arr) {\n if (isArray$3(arr))\n return arrayLikeToArray(arr);\n}\nvar arrayWithoutHoles = _arrayWithoutHoles;\nfunction _iterableToArray(iter) {\n if (typeof symbol$2 !== \"undefined\" && isIterable$1(Object(iter)))\n return from$4(iter);\n}\nvar iterableToArray = _iterableToArray;\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nvar nonIterableSpread = _nonIterableSpread;\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nvar toConsumableArray = _toConsumableArray;\nvar concat2 = entryVirtual(\"Array\").concat;\nvar ArrayPrototype$9 = Array.prototype;\nvar concat_1 = function(it) {\n var own = it.concat;\n return it === ArrayPrototype$9 || it instanceof Array && own === ArrayPrototype$9.concat ? concat2 : own;\n};\nvar concat$1 = concat_1;\nvar concat$2 = concat$1;\nvar symbol$3 = symbol;\nvar symbol$4 = symbol$3;\nvar componentEmitter = createCommonjsModule(function(module) {\n {\n module.exports = Emitter;\n }\n function Emitter(obj) {\n if (obj)\n return mixin(obj);\n }\n function mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n }\n Emitter.prototype.on = Emitter.prototype.addEventListener = function(event, fn) {\n this._callbacks = this._callbacks || {};\n (this._callbacks[\"$\" + event] = this._callbacks[\"$\" + event] || []).push(fn);\n return this;\n };\n Emitter.prototype.once = function(event, fn) {\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n on.fn = fn;\n this.on(event, on);\n return this;\n };\n Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function(event, fn) {\n this._callbacks = this._callbacks || {};\n if (arguments.length == 0) {\n this._callbacks = {};\n return this;\n }\n var callbacks = this._callbacks[\"$\" + event];\n if (!callbacks)\n return this;\n if (arguments.length == 1) {\n delete this._callbacks[\"$\" + event];\n return this;\n }\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n if (callbacks.length === 0) {\n delete this._callbacks[\"$\" + event];\n }\n return this;\n };\n Emitter.prototype.emit = function(event) {\n this._callbacks = this._callbacks || {};\n var args = new Array(arguments.length - 1), callbacks = this._callbacks[\"$\" + event];\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n return this;\n };\n Emitter.prototype.listeners = function(event) {\n this._callbacks = this._callbacks || {};\n return this._callbacks[\"$\" + event] || [];\n };\n Emitter.prototype.hasListeners = function(event) {\n return !!this.listeners(event).length;\n };\n});\n/*! Hammer.JS - v2.0.17-rc - 2019-12-16\n * http://naver.github.io/egjs\n *\n * Forked By Naver egjs\n * Copyright (c) hammerjs\n * Licensed under the MIT license */\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nfunction _assertThisInitialized(self2) {\n if (self2 === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self2;\n}\nvar assign$3;\nif (typeof Object.assign !== \"function\") {\n assign$3 = function assign3(target) {\n if (target === void 0 || target === null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== void 0 && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign$3 = Object.assign;\n}\nvar assign$1$1 = assign$3;\nvar VENDOR_PREFIXES = [\"\", \"webkit\", \"Moz\", \"MS\", \"ms\", \"o\"];\nvar TEST_ELEMENT = typeof document === \"undefined\" ? {\n style: {}\n} : document.createElement(\"div\");\nvar TYPE_FUNCTION = \"function\";\nvar round = Math.round, abs = Math.abs;\nvar now$1 = Date.now;\nfunction prefixed(obj, property) {\n var prefix;\n var prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = prefix ? prefix + camelProp : property;\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return void 0;\n}\nvar win;\nif (typeof window === \"undefined\") {\n win = {};\n} else {\n win = window;\n}\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, \"touchAction\");\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== void 0;\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = win.CSS && win.CSS.supports;\n [\"auto\", \"manipulation\", \"pan-y\", \"pan-x\", \"pan-x pan-y\", \"none\"].forEach(function(val) {\n return touchMap[val] = cssSupports ? win.CSS.supports(\"touch-action\", val) : true;\n });\n return touchMap;\n}\nvar TOUCH_ACTION_COMPUTE = \"compute\";\nvar TOUCH_ACTION_AUTO = \"auto\";\nvar TOUCH_ACTION_MANIPULATION = \"manipulation\";\nvar TOUCH_ACTION_NONE = \"none\";\nvar TOUCH_ACTION_PAN_X = \"pan-x\";\nvar TOUCH_ACTION_PAN_Y = \"pan-y\";\nvar TOUCH_ACTION_MAP = getTouchActionProps();\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\nvar SUPPORT_TOUCH = \"ontouchstart\" in win;\nvar SUPPORT_POINTER_EVENTS = prefixed(win, \"PointerEvent\") !== void 0;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\nvar INPUT_TYPE_TOUCH = \"touch\";\nvar INPUT_TYPE_PEN = \"pen\";\nvar INPUT_TYPE_MOUSE = \"mouse\";\nvar INPUT_TYPE_KINECT = \"kinect\";\nvar COMPUTE_INTERVAL = 25;\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\nvar PROPS_XY = [\"x\", \"y\"];\nvar PROPS_CLIENT_XY = [\"clientX\", \"clientY\"];\nfunction each(obj, iterator2, context) {\n var i;\n if (!obj) {\n return;\n }\n if (obj.forEach) {\n obj.forEach(iterator2, context);\n } else if (obj.length !== void 0) {\n i = 0;\n while (i < obj.length) {\n iterator2.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator2.call(context, obj[i], i, obj);\n }\n }\n}\nfunction boolOrFn(val, args) {\n if (typeof val === TYPE_FUNCTION) {\n return val.apply(args ? args[0] || void 0 : void 0, args);\n }\n return val;\n}\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\nfunction cleanTouchActions(actions) {\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n return TOUCH_ACTION_AUTO;\n}\nvar TouchAction = /* @__PURE__ */ function() {\n function TouchAction2(manager, value) {\n this.manager = manager;\n this.set(value);\n }\n var _proto = TouchAction2.prototype;\n _proto.set = function set2(value) {\n if (value === TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n };\n _proto.update = function update() {\n this.set(this.manager.options.touchAction);\n };\n _proto.compute = function compute() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(\" \"));\n };\n _proto.preventDefaults = function preventDefaults(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n if (hasNone) {\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n if (hasPanX && hasPanY) {\n return;\n }\n if (hasNone || hasPanY && direction & DIRECTION_HORIZONTAL || hasPanX && direction & DIRECTION_VERTICAL) {\n return this.preventSrc(srcEvent);\n }\n };\n _proto.preventSrc = function preventSrc(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n };\n return TouchAction2;\n}();\nfunction hasParent(node, parent) {\n while (node) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n var x = 0;\n var y = 0;\n var i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\nfunction simpleCloneInputData(input) {\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n return {\n timeStamp: now$1(),\n pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]];\n var y = p2[props[1]] - p1[props[1]];\n return Math.sqrt(x * x + y * y);\n}\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]];\n var y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input;\n var deltaTime = input.timeStamp - last.timeStamp;\n var velocity;\n var velocityX;\n var velocityY;\n var direction;\n if (input.eventType !== INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === void 0)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = abs(v.x) > abs(v.y) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n session.lastInterval = input;\n } else {\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n var firstInput = session.firstInput, firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n var center = input.center = getCenter(pointers);\n input.timeStamp = now$1();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = abs(overallVelocity.x) > abs(overallVelocity.y) ? overallVelocity.x : overallVelocity.y;\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n input.maxPointers = !session.prevInput ? input.pointers.length : input.pointers.length > session.prevInput.maxPointers ? input.pointers.length : session.prevInput.maxPointers;\n computeIntervalInputData(session, input);\n var target = manager.element;\n var srcEvent = input.srcEvent;\n var srcEventTarget;\n if (srcEvent.composedPath) {\n srcEventTarget = srcEvent.composedPath()[0];\n } else if (srcEvent.path) {\n srcEventTarget = srcEvent.path[0];\n } else {\n srcEventTarget = srcEvent.target;\n }\n if (hasParent(srcEventTarget, target)) {\n target = srcEventTarget;\n }\n input.target = target;\n}\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = eventType & INPUT_START && pointersLen - changedPointersLen === 0;\n var isFinal = eventType & (INPUT_END | INPUT_CANCEL) && pointersLen - changedPointersLen === 0;\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n if (isFirst) {\n manager.session = {};\n }\n input.eventType = eventType;\n computeInputData(manager, input);\n manager.emit(\"hammer.input\", input);\n manager.recognize(input);\n manager.session.prevInput = input;\n}\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return doc.defaultView || doc.parentWindow || window;\n}\nvar Input = /* @__PURE__ */ function() {\n function Input2(manager, callback) {\n var self2 = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self2.handler(ev);\n }\n };\n this.init();\n }\n var _proto = Input2.prototype;\n _proto.handler = function handler() {\n };\n _proto.init = function init() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n };\n _proto.destroy = function destroy() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n };\n return Input2;\n}();\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if (findByKey && src[i][findByKey] == find || !findByKey && src[i] === find) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT\n};\nvar POINTER_ELEMENT_EVENTS = \"pointerdown\";\nvar POINTER_WINDOW_EVENTS = \"pointermove pointerup pointercancel\";\nif (win.MSPointerEvent && !win.PointerEvent) {\n POINTER_ELEMENT_EVENTS = \"MSPointerDown\";\n POINTER_WINDOW_EVENTS = \"MSPointerMove MSPointerUp MSPointerCancel\";\n}\nvar PointerEventInput = /* @__PURE__ */ function(_Input) {\n _inheritsLoose(PointerEventInput2, _Input);\n function PointerEventInput2() {\n var _this;\n var proto = PointerEventInput2.prototype;\n proto.evEl = POINTER_ELEMENT_EVENTS;\n proto.evWin = POINTER_WINDOW_EVENTS;\n _this = _Input.apply(this, arguments) || this;\n _this.store = _this.manager.session.pointerEvents = [];\n return _this;\n }\n var _proto = PointerEventInput2.prototype;\n _proto.handler = function handler(ev) {\n var store2 = this.store;\n var removePointer = false;\n var eventTypeNormalized = ev.type.toLowerCase().replace(\"ms\", \"\");\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n var isTouch = pointerType === INPUT_TYPE_TOUCH;\n var storeIndex = inArray(store2, ev.pointerId, \"pointerId\");\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store2.push(ev);\n storeIndex = store2.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n if (storeIndex < 0) {\n return;\n }\n store2[storeIndex] = ev;\n this.callback(this.manager, eventType, {\n pointers: store2,\n changedPointers: [ev],\n pointerType,\n srcEvent: ev\n });\n if (removePointer) {\n store2.splice(storeIndex, 1);\n }\n };\n return PointerEventInput2;\n}(Input);\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\nfunction uniqueArray(src, key, sort3) {\n var results = [];\n var values3 = [];\n var i = 0;\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values3, val) < 0) {\n results.push(src[i]);\n }\n values3[i] = val;\n i++;\n }\n if (sort3) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function(a, b) {\n return a[key] > b[key];\n });\n }\n }\n return results;\n}\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\nvar TOUCH_TARGET_EVENTS = \"touchstart touchmove touchend touchcancel\";\nvar TouchInput = /* @__PURE__ */ function(_Input) {\n _inheritsLoose(TouchInput2, _Input);\n function TouchInput2() {\n var _this;\n TouchInput2.prototype.evTarget = TOUCH_TARGET_EVENTS;\n _this = _Input.apply(this, arguments) || this;\n _this.targetIds = {};\n return _this;\n }\n var _proto = TouchInput2.prototype;\n _proto.handler = function handler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n };\n return TouchInput2;\n}(Input);\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n var i;\n var targetTouches;\n var changedTouches = toArray(ev.changedTouches);\n var changedTargetTouches = [];\n var target = this.target;\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n if (!changedTargetTouches.length) {\n return;\n }\n return [\n uniqueArray(targetTouches.concat(changedTargetTouches), \"identifier\", true),\n changedTargetTouches\n ];\n}\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\nvar MOUSE_ELEMENT_EVENTS = \"mousedown\";\nvar MOUSE_WINDOW_EVENTS = \"mousemove mouseup\";\nvar MouseInput = /* @__PURE__ */ function(_Input) {\n _inheritsLoose(MouseInput2, _Input);\n function MouseInput2() {\n var _this;\n var proto = MouseInput2.prototype;\n proto.evEl = MOUSE_ELEMENT_EVENTS;\n proto.evWin = MOUSE_WINDOW_EVENTS;\n _this = _Input.apply(this, arguments) || this;\n _this.pressed = false;\n return _this;\n }\n var _proto = MouseInput2.prototype;\n _proto.handler = function handler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n if (!this.pressed) {\n return;\n }\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n };\n return MouseInput2;\n}(Input);\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\nfunction setLastTouch(eventData) {\n var _eventData$changedPoi = eventData.changedPointers, touch = _eventData$changedPoi[0];\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {\n x: touch.clientX,\n y: touch.clientY\n };\n var lts = this.lastTouches;\n this.lastTouches.push(lastTouch);\n var removeLastTouch = function removeLastTouch2() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX;\n var y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x);\n var dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\nvar TouchMouseInput = /* @__PURE__ */ function() {\n var TouchMouseInput2 = /* @__PURE__ */ function(_Input) {\n _inheritsLoose(TouchMouseInput3, _Input);\n function TouchMouseInput3(_manager, callback) {\n var _this;\n _this = _Input.call(this, _manager, callback) || this;\n _this.handler = function(manager, inputEvent, inputData) {\n var isTouch = inputData.pointerType === INPUT_TYPE_TOUCH;\n var isMouse = inputData.pointerType === INPUT_TYPE_MOUSE;\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n if (isTouch) {\n recordTouches.call(_assertThisInitialized(_assertThisInitialized(_this)), inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(_assertThisInitialized(_assertThisInitialized(_this)), inputData)) {\n return;\n }\n _this.callback(manager, inputEvent, inputData);\n };\n _this.touch = new TouchInput(_this.manager, _this.handler);\n _this.mouse = new MouseInput(_this.manager, _this.handler);\n _this.primaryTouch = null;\n _this.lastTouches = [];\n return _this;\n }\n var _proto = TouchMouseInput3.prototype;\n _proto.destroy = function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n };\n return TouchMouseInput3;\n }(Input);\n return TouchMouseInput2;\n}();\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new Type(manager, inputHandler);\n}\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return \"cancel\";\n } else if (state & STATE_ENDED) {\n return \"end\";\n } else if (state & STATE_CHANGED) {\n return \"move\";\n } else if (state & STATE_BEGAN) {\n return \"start\";\n }\n return \"\";\n}\nvar Recognizer = /* @__PURE__ */ function() {\n function Recognizer2(options) {\n if (options === void 0) {\n options = {};\n }\n this.options = _extends({\n enable: true\n }, options);\n this.id = uniqueId();\n this.manager = null;\n this.state = STATE_POSSIBLE;\n this.simultaneous = {};\n this.requireFail = [];\n }\n var _proto = Recognizer2.prototype;\n _proto.set = function set2(options) {\n assign$1$1(this.options, options);\n this.manager && this.manager.touchAction.update();\n return this;\n };\n _proto.recognizeWith = function recognizeWith(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, \"recognizeWith\", this)) {\n return this;\n }\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n };\n _proto.dropRecognizeWith = function dropRecognizeWith(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, \"dropRecognizeWith\", this)) {\n return this;\n }\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n };\n _proto.requireFailure = function requireFailure(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, \"requireFailure\", this)) {\n return this;\n }\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n };\n _proto.dropRequireFailure = function dropRequireFailure(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, \"dropRequireFailure\", this)) {\n return this;\n }\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n };\n _proto.hasRequireFailures = function hasRequireFailures() {\n return this.requireFail.length > 0;\n };\n _proto.canRecognizeWith = function canRecognizeWith(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n };\n _proto.emit = function emit(input) {\n var self2 = this;\n var state = this.state;\n function emit2(event) {\n self2.manager.emit(event, input);\n }\n if (state < STATE_ENDED) {\n emit2(self2.options.event + stateStr(state));\n }\n emit2(self2.options.event);\n if (input.additionalEvent) {\n emit2(input.additionalEvent);\n }\n if (state >= STATE_ENDED) {\n emit2(self2.options.event + stateStr(state));\n }\n };\n _proto.tryEmit = function tryEmit(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n this.state = STATE_FAILED;\n };\n _proto.canEmit = function canEmit() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n };\n _proto.recognize = function recognize(inputData) {\n var inputDataClone = assign$1$1({}, inputData);\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n this.state = this.process(inputDataClone);\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n };\n _proto.process = function process2(inputData) {\n };\n _proto.getTouchAction = function getTouchAction() {\n };\n _proto.reset = function reset() {\n };\n return Recognizer2;\n}();\nvar TapRecognizer = /* @__PURE__ */ function(_Recognizer) {\n _inheritsLoose(TapRecognizer2, _Recognizer);\n function TapRecognizer2(options) {\n var _this;\n if (options === void 0) {\n options = {};\n }\n _this = _Recognizer.call(this, _extends({\n event: \"tap\",\n pointers: 1,\n taps: 1,\n interval: 300,\n time: 250,\n threshold: 9,\n posThreshold: 10\n }, options)) || this;\n _this.pTime = false;\n _this.pCenter = false;\n _this._timer = null;\n _this._input = null;\n _this.count = 0;\n return _this;\n }\n var _proto = TapRecognizer2.prototype;\n _proto.getTouchAction = function getTouchAction() {\n return [TOUCH_ACTION_MANIPULATION];\n };\n _proto.process = function process2(input) {\n var _this2 = this;\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n this.reset();\n if (input.eventType & INPUT_START && this.count === 0) {\n return this.failTimeout();\n }\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType !== INPUT_END) {\n return this.failTimeout();\n }\n var validInterval = this.pTime ? input.timeStamp - this.pTime < options.interval : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n this._input = input;\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeout(function() {\n _this2.state = STATE_RECOGNIZED;\n _this2.tryEmit();\n }, options.interval);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n };\n _proto.failTimeout = function failTimeout() {\n var _this3 = this;\n this._timer = setTimeout(function() {\n _this3.state = STATE_FAILED;\n }, this.options.interval);\n return STATE_FAILED;\n };\n _proto.reset = function reset() {\n clearTimeout(this._timer);\n };\n _proto.emit = function emit() {\n if (this.state === STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n };\n return TapRecognizer2;\n}(Recognizer);\nvar AttrRecognizer = /* @__PURE__ */ function(_Recognizer) {\n _inheritsLoose(AttrRecognizer2, _Recognizer);\n function AttrRecognizer2(options) {\n if (options === void 0) {\n options = {};\n }\n return _Recognizer.call(this, _extends({\n pointers: 1\n }, options)) || this;\n }\n var _proto = AttrRecognizer2.prototype;\n _proto.attrTest = function attrTest(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n };\n _proto.process = function process2(input) {\n var state = this.state;\n var eventType = input.eventType;\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n };\n return AttrRecognizer2;\n}(Recognizer);\nfunction directionStr(direction) {\n if (direction === DIRECTION_DOWN) {\n return \"down\";\n } else if (direction === DIRECTION_UP) {\n return \"up\";\n } else if (direction === DIRECTION_LEFT) {\n return \"left\";\n } else if (direction === DIRECTION_RIGHT) {\n return \"right\";\n }\n return \"\";\n}\nvar PanRecognizer = /* @__PURE__ */ function(_AttrRecognizer) {\n _inheritsLoose(PanRecognizer2, _AttrRecognizer);\n function PanRecognizer2(options) {\n var _this;\n if (options === void 0) {\n options = {};\n }\n _this = _AttrRecognizer.call(this, _extends({\n event: \"pan\",\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n }, options)) || this;\n _this.pX = null;\n _this.pY = null;\n return _this;\n }\n var _proto = PanRecognizer2.prototype;\n _proto.getTouchAction = function getTouchAction() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n };\n _proto.directionTest = function directionTest(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = x === 0 ? DIRECTION_NONE : x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x !== this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = y === 0 ? DIRECTION_NONE : y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y !== this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n };\n _proto.attrTest = function attrTest(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) && (this.state & STATE_BEGAN || !(this.state & STATE_BEGAN) && this.directionTest(input));\n };\n _proto.emit = function emit(input) {\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n var direction = directionStr(input.direction);\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n _AttrRecognizer.prototype.emit.call(this, input);\n };\n return PanRecognizer2;\n}(AttrRecognizer);\nvar SwipeRecognizer = /* @__PURE__ */ function(_AttrRecognizer) {\n _inheritsLoose(SwipeRecognizer2, _AttrRecognizer);\n function SwipeRecognizer2(options) {\n if (options === void 0) {\n options = {};\n }\n return _AttrRecognizer.call(this, _extends({\n event: \"swipe\",\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n }, options)) || this;\n }\n var _proto = SwipeRecognizer2.prototype;\n _proto.getTouchAction = function getTouchAction() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n };\n _proto.attrTest = function attrTest(input) {\n var direction = this.options.direction;\n var velocity;\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n return _AttrRecognizer.prototype.attrTest.call(this, input) && direction & input.offsetDirection && input.distance > this.options.threshold && input.maxPointers === this.options.pointers && abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n };\n _proto.emit = function emit(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n this.manager.emit(this.options.event, input);\n };\n return SwipeRecognizer2;\n}(AttrRecognizer);\nvar PinchRecognizer = /* @__PURE__ */ function(_AttrRecognizer) {\n _inheritsLoose(PinchRecognizer2, _AttrRecognizer);\n function PinchRecognizer2(options) {\n if (options === void 0) {\n options = {};\n }\n return _AttrRecognizer.call(this, _extends({\n event: \"pinch\",\n threshold: 0,\n pointers: 2\n }, options)) || this;\n }\n var _proto = PinchRecognizer2.prototype;\n _proto.getTouchAction = function getTouchAction() {\n return [TOUCH_ACTION_NONE];\n };\n _proto.attrTest = function attrTest(input) {\n return _AttrRecognizer.prototype.attrTest.call(this, input) && (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n };\n _proto.emit = function emit(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? \"in\" : \"out\";\n input.additionalEvent = this.options.event + inOut;\n }\n _AttrRecognizer.prototype.emit.call(this, input);\n };\n return PinchRecognizer2;\n}(AttrRecognizer);\nvar RotateRecognizer = /* @__PURE__ */ function(_AttrRecognizer) {\n _inheritsLoose(RotateRecognizer2, _AttrRecognizer);\n function RotateRecognizer2(options) {\n if (options === void 0) {\n options = {};\n }\n return _AttrRecognizer.call(this, _extends({\n event: \"rotate\",\n threshold: 0,\n pointers: 2\n }, options)) || this;\n }\n var _proto = RotateRecognizer2.prototype;\n _proto.getTouchAction = function getTouchAction() {\n return [TOUCH_ACTION_NONE];\n };\n _proto.attrTest = function attrTest(input) {\n return _AttrRecognizer.prototype.attrTest.call(this, input) && (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n };\n return RotateRecognizer2;\n}(AttrRecognizer);\nvar PressRecognizer = /* @__PURE__ */ function(_Recognizer) {\n _inheritsLoose(PressRecognizer2, _Recognizer);\n function PressRecognizer2(options) {\n var _this;\n if (options === void 0) {\n options = {};\n }\n _this = _Recognizer.call(this, _extends({\n event: \"press\",\n pointers: 1,\n time: 251,\n threshold: 9\n }, options)) || this;\n _this._timer = null;\n _this._input = null;\n return _this;\n }\n var _proto = PressRecognizer2.prototype;\n _proto.getTouchAction = function getTouchAction() {\n return [TOUCH_ACTION_AUTO];\n };\n _proto.process = function process2(input) {\n var _this2 = this;\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n this._input = input;\n if (!validMovement || !validPointers || input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeout(function() {\n _this2.state = STATE_RECOGNIZED;\n _this2.tryEmit();\n }, options.time);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n };\n _proto.reset = function reset() {\n clearTimeout(this._timer);\n };\n _proto.emit = function emit(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n if (input && input.eventType & INPUT_END) {\n this.manager.emit(this.options.event + \"up\", input);\n } else {\n this._input.timeStamp = now$1();\n this.manager.emit(this.options.event, this._input);\n }\n };\n return PressRecognizer2;\n}(Recognizer);\nvar defaults = {\n domEvents: false,\n touchAction: TOUCH_ACTION_COMPUTE,\n enable: true,\n inputTarget: null,\n inputClass: null,\n cssProps: {\n userSelect: \"none\",\n touchSelect: \"none\",\n touchCallout: \"none\",\n contentZooming: \"none\",\n userDrag: \"none\",\n tapHighlightColor: \"rgba(0,0,0,0)\"\n }\n};\nvar preset = [[RotateRecognizer, {\n enable: false\n}], [PinchRecognizer, {\n enable: false\n}, [\"rotate\"]], [SwipeRecognizer, {\n direction: DIRECTION_HORIZONTAL\n}], [PanRecognizer, {\n direction: DIRECTION_HORIZONTAL\n}, [\"swipe\"]], [TapRecognizer], [TapRecognizer, {\n event: \"doubletap\",\n taps: 2\n}, [\"tap\"]], [PressRecognizer]];\nvar STOP = 1;\nvar FORCED_STOP = 2;\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || \"\";\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\nfunction triggerDomEvent(event, data2) {\n var gestureEvent = document.createEvent(\"Event\");\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data2;\n data2.target.dispatchEvent(gestureEvent);\n}\nvar Manager = /* @__PURE__ */ function() {\n function Manager2(element, options) {\n var _this = this;\n this.options = assign$1$1({}, defaults, options || {});\n this.options.inputTarget = this.options.inputTarget || element;\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n toggleCssProps(this, true);\n each(this.options.recognizers, function(item) {\n var recognizer = _this.add(new item[0](item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n }\n var _proto = Manager2.prototype;\n _proto.set = function set2(options) {\n assign$1$1(this.options, options);\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n };\n _proto.stop = function stop(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n };\n _proto.recognize = function recognize(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n this.touchAction.preventDefaults(inputData);\n var recognizer;\n var recognizers = this.recognizers;\n var curRecognizer = session.curRecognizer;\n if (!curRecognizer || curRecognizer && curRecognizer.state & STATE_RECOGNIZED) {\n session.curRecognizer = null;\n curRecognizer = null;\n }\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n if (session.stopped !== FORCED_STOP && (!curRecognizer || recognizer === curRecognizer || recognizer.canRecognizeWith(curRecognizer))) {\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n session.curRecognizer = recognizer;\n curRecognizer = recognizer;\n }\n i++;\n }\n };\n _proto.get = function get2(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event === recognizer) {\n return recognizers[i];\n }\n }\n return null;\n };\n _proto.add = function add(recognizer) {\n if (invokeArrayArg(recognizer, \"add\", this)) {\n return this;\n }\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n this.touchAction.update();\n return recognizer;\n };\n _proto.remove = function remove(recognizer) {\n if (invokeArrayArg(recognizer, \"remove\", this)) {\n return this;\n }\n var targetRecognizer = this.get(recognizer);\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, targetRecognizer);\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n return this;\n };\n _proto.on = function on(events, handler) {\n if (events === void 0 || handler === void 0) {\n return this;\n }\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n };\n _proto.off = function off(events, handler) {\n if (events === void 0) {\n return this;\n }\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n };\n _proto.emit = function emit(event, data2) {\n if (this.options.domEvents) {\n triggerDomEvent(event, data2);\n }\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n data2.type = event;\n data2.preventDefault = function() {\n data2.srcEvent.preventDefault();\n };\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data2);\n i++;\n }\n };\n _proto.destroy = function destroy() {\n this.element && toggleCssProps(this, false);\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n };\n return Manager2;\n}();\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\nvar SINGLE_TOUCH_TARGET_EVENTS = \"touchstart\";\nvar SINGLE_TOUCH_WINDOW_EVENTS = \"touchstart touchmove touchend touchcancel\";\nvar SingleTouchInput = /* @__PURE__ */ function(_Input) {\n _inheritsLoose(SingleTouchInput2, _Input);\n function SingleTouchInput2() {\n var _this;\n var proto = SingleTouchInput2.prototype;\n proto.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n proto.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n _this = _Input.apply(this, arguments) || this;\n _this.started = false;\n return _this;\n }\n var _proto = SingleTouchInput2.prototype;\n _proto.handler = function handler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n if (type === INPUT_START) {\n this.started = true;\n }\n if (!this.started) {\n return;\n }\n var touches = normalizeSingleTouches.call(this, ev, type);\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n };\n return SingleTouchInput2;\n}(Input);\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), \"identifier\", true);\n }\n return [all, changed];\n}\nfunction deprecate(method, name, message) {\n var deprecationMessage = \"DEPRECATED METHOD: \" + name + \"\\n\" + message + \" AT \\n\";\n return function() {\n var e = new Error(\"get-stack-trace\");\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, \"\").replace(/^\\s+at\\s+/gm, \"\").replace(/^Object.\\s*\\(/gm, \"{anonymous}()@\") : \"Unknown Stack Trace\";\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\nvar extend = deprecate(function(dest, src, merge2) {\n var keys4 = Object.keys(src);\n var i = 0;\n while (i < keys4.length) {\n if (!merge2 || merge2 && dest[keys4[i]] === void 0) {\n dest[keys4[i]] = src[keys4[i]];\n }\n i++;\n }\n return dest;\n}, \"extend\", \"Use `assign`.\");\nvar merge = deprecate(function(dest, src) {\n return extend(dest, src, true);\n}, \"merge\", \"Use `assign`.\");\nfunction inherit(child, base, properties) {\n var baseP = base.prototype;\n var childP;\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n if (properties) {\n assign$1$1(childP, properties);\n }\n}\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\nvar Hammer = /* @__PURE__ */ function() {\n var Hammer2 = function Hammer3(element, options) {\n if (options === void 0) {\n options = {};\n }\n return new Manager(element, _extends({\n recognizers: preset.concat()\n }, options));\n };\n Hammer2.VERSION = \"2.0.17-rc\";\n Hammer2.DIRECTION_ALL = DIRECTION_ALL;\n Hammer2.DIRECTION_DOWN = DIRECTION_DOWN;\n Hammer2.DIRECTION_LEFT = DIRECTION_LEFT;\n Hammer2.DIRECTION_RIGHT = DIRECTION_RIGHT;\n Hammer2.DIRECTION_UP = DIRECTION_UP;\n Hammer2.DIRECTION_HORIZONTAL = DIRECTION_HORIZONTAL;\n Hammer2.DIRECTION_VERTICAL = DIRECTION_VERTICAL;\n Hammer2.DIRECTION_NONE = DIRECTION_NONE;\n Hammer2.DIRECTION_DOWN = DIRECTION_DOWN;\n Hammer2.INPUT_START = INPUT_START;\n Hammer2.INPUT_MOVE = INPUT_MOVE;\n Hammer2.INPUT_END = INPUT_END;\n Hammer2.INPUT_CANCEL = INPUT_CANCEL;\n Hammer2.STATE_POSSIBLE = STATE_POSSIBLE;\n Hammer2.STATE_BEGAN = STATE_BEGAN;\n Hammer2.STATE_CHANGED = STATE_CHANGED;\n Hammer2.STATE_ENDED = STATE_ENDED;\n Hammer2.STATE_RECOGNIZED = STATE_RECOGNIZED;\n Hammer2.STATE_CANCELLED = STATE_CANCELLED;\n Hammer2.STATE_FAILED = STATE_FAILED;\n Hammer2.Manager = Manager;\n Hammer2.Input = Input;\n Hammer2.TouchAction = TouchAction;\n Hammer2.TouchInput = TouchInput;\n Hammer2.MouseInput = MouseInput;\n Hammer2.PointerEventInput = PointerEventInput;\n Hammer2.TouchMouseInput = TouchMouseInput;\n Hammer2.SingleTouchInput = SingleTouchInput;\n Hammer2.Recognizer = Recognizer;\n Hammer2.AttrRecognizer = AttrRecognizer;\n Hammer2.Tap = TapRecognizer;\n Hammer2.Pan = PanRecognizer;\n Hammer2.Swipe = SwipeRecognizer;\n Hammer2.Pinch = PinchRecognizer;\n Hammer2.Rotate = RotateRecognizer;\n Hammer2.Press = PressRecognizer;\n Hammer2.on = addEventListeners;\n Hammer2.off = removeEventListeners;\n Hammer2.each = each;\n Hammer2.merge = merge;\n Hammer2.extend = extend;\n Hammer2.bindFn = bindFn;\n Hammer2.assign = assign$1$1;\n Hammer2.inherit = inherit;\n Hammer2.bindFn = bindFn;\n Hammer2.prefixed = prefixed;\n Hammer2.toArray = toArray;\n Hammer2.inArray = inArray;\n Hammer2.uniqueArray = uniqueArray;\n Hammer2.splitStr = splitStr;\n Hammer2.boolOrFn = boolOrFn;\n Hammer2.hasParent = hasParent;\n Hammer2.addEventListeners = addEventListeners;\n Hammer2.removeEventListeners = removeEventListeners;\n Hammer2.defaults = assign$1$1({}, defaults, {\n preset\n });\n return Hammer2;\n}();\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n if (typeof symbol$4 === \"undefined\" || getIteratorMethod$1(o) == null) {\n if (isArray$5(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it)\n o = it;\n var i = 0;\n var F = function F2() {\n };\n return {s: F, n: function n() {\n if (i >= o.length)\n return {done: true};\n return {done: false, value: o[i++]};\n }, e: function e(_e) {\n throw _e;\n }, f: F};\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true, didErr = false, err;\n return {s: function s() {\n it = getIterator$1(o);\n }, n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n }, e: function e(_e2) {\n didErr = true;\n err = _e2;\n }, f: function f2() {\n try {\n if (!normalCompletion && it.return != null)\n it.return();\n } finally {\n if (didErr)\n throw err;\n }\n }};\n}\nfunction _unsupportedIterableToArray$1(o, minLen) {\n var _context21;\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray$1(o, minLen);\n var n = slice$6(_context21 = Object.prototype.toString.call(o)).call(_context21, 8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return from$2(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray$1(o, minLen);\n}\nfunction _arrayLikeToArray$1(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nvar DELETE = symbol$4(\"DELETE\");\nfunction pureDeepObjectAssign(base) {\n var _context;\n for (var _len = arguments.length, updates = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n updates[_key - 1] = arguments[_key];\n }\n return deepObjectAssign.apply(void 0, concat$2(_context = [{}, base]).call(_context, updates));\n}\nfunction deepObjectAssign() {\n var merged = deepObjectAssignNonentry.apply(void 0, arguments);\n stripDelete(merged);\n return merged;\n}\nfunction deepObjectAssignNonentry() {\n for (var _len2 = arguments.length, values3 = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n values3[_key2] = arguments[_key2];\n }\n if (values3.length < 2) {\n return values3[0];\n } else if (values3.length > 2) {\n var _context2;\n return deepObjectAssignNonentry.apply(void 0, concat$2(_context2 = [deepObjectAssign(values3[0], values3[1])]).call(_context2, toConsumableArray(slice$6(values3).call(values3, 2))));\n }\n var a = values3[0];\n var b = values3[1];\n var _iterator = _createForOfIteratorHelper(ownKeys$3(b)), _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done; ) {\n var prop = _step.value;\n if (!Object.prototype.propertyIsEnumerable.call(b, prop))\n ;\n else if (b[prop] === DELETE) {\n delete a[prop];\n } else if (a[prop] !== null && b[prop] !== null && _typeof_1(a[prop]) === \"object\" && _typeof_1(b[prop]) === \"object\" && !isArray$5(a[prop]) && !isArray$5(b[prop])) {\n a[prop] = deepObjectAssignNonentry(a[prop], b[prop]);\n } else {\n a[prop] = clone(b[prop]);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return a;\n}\nfunction clone(a) {\n if (isArray$5(a)) {\n return map$2(a).call(a, function(value) {\n return clone(value);\n });\n } else if (_typeof_1(a) === \"object\" && a !== null) {\n return deepObjectAssignNonentry({}, a);\n } else {\n return a;\n }\n}\nfunction stripDelete(a) {\n for (var _i = 0, _Object$keys = keys$3(a); _i < _Object$keys.length; _i++) {\n var prop = _Object$keys[_i];\n if (a[prop] === DELETE) {\n delete a[prop];\n } else if (_typeof_1(a[prop]) === \"object\" && a[prop] !== null) {\n stripDelete(a[prop]);\n }\n }\n}\nfunction hammerMock() {\n var noop = function noop2() {\n };\n return {\n on: noop,\n off: noop,\n destroy: noop,\n emit: noop,\n get: function get2() {\n return {\n set: noop\n };\n }\n };\n}\nvar Hammer$1 = typeof window !== \"undefined\" ? window.Hammer || Hammer : function() {\n return hammerMock();\n};\nfunction Activator(container) {\n var _this = this, _context3;\n this._cleanupQueue = [];\n this.active = false;\n this._dom = {\n container,\n overlay: document.createElement(\"div\")\n };\n this._dom.overlay.classList.add(\"vis-overlay\");\n this._dom.container.appendChild(this._dom.overlay);\n this._cleanupQueue.push(function() {\n _this._dom.overlay.parentNode.removeChild(_this._dom.overlay);\n });\n var hammer = Hammer$1(this._dom.overlay);\n hammer.on(\"tap\", bind$2(_context3 = this._onTapOverlay).call(_context3, this));\n this._cleanupQueue.push(function() {\n hammer.destroy();\n });\n var events = [\"tap\", \"doubletap\", \"press\", \"pinch\", \"pan\", \"panstart\", \"panmove\", \"panend\"];\n forEach$2(events).call(events, function(event) {\n hammer.on(event, function(event2) {\n event2.srcEvent.stopPropagation();\n });\n });\n if (document && document.body) {\n this._onClick = function(event) {\n if (!_hasParent(event.target, container)) {\n _this.deactivate();\n }\n };\n document.body.addEventListener(\"click\", this._onClick);\n this._cleanupQueue.push(function() {\n document.body.removeEventListener(\"click\", _this._onClick);\n });\n }\n this._escListener = function(event) {\n if (\"key\" in event ? event.key === \"Escape\" : event.keyCode === 27) {\n _this.deactivate();\n }\n };\n}\ncomponentEmitter(Activator.prototype);\nActivator.current = null;\nActivator.prototype.destroy = function() {\n var _context4, _context5;\n this.deactivate();\n var _iterator2 = _createForOfIteratorHelper(reverse$2(_context4 = splice$2(_context5 = this._cleanupQueue).call(_context5, 0)).call(_context4)), _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) {\n var callback = _step2.value;\n callback();\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n};\nActivator.prototype.activate = function() {\n if (Activator.current) {\n Activator.current.deactivate();\n }\n Activator.current = this;\n this.active = true;\n this._dom.overlay.style.display = \"none\";\n this._dom.container.classList.add(\"vis-active\");\n this.emit(\"change\");\n this.emit(\"activate\");\n document.body.addEventListener(\"keydown\", this._escListener);\n};\nActivator.prototype.deactivate = function() {\n this.active = false;\n this._dom.overlay.style.display = \"block\";\n this._dom.container.classList.remove(\"vis-active\");\n document.body.removeEventListener(\"keydown\", this._escListener);\n this.emit(\"change\");\n this.emit(\"deactivate\");\n};\nActivator.prototype._onTapOverlay = function(event) {\n this.activate();\n event.srcEvent.stopPropagation();\n};\nfunction _hasParent(element, parent) {\n while (element) {\n if (element === parent) {\n return true;\n }\n element = element.parentNode;\n }\n return false;\n}\nvar nativeConstruct = getBuiltIn(\"Reflect\", \"construct\");\nvar NEW_TARGET_BUG = fails(function() {\n function F() {\n }\n return !(nativeConstruct(function() {\n }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function() {\n nativeConstruct(function() {\n });\n});\nvar FORCED$4 = NEW_TARGET_BUG || ARGS_BUG;\n_export({\n target: \"Reflect\",\n stat: true,\n forced: FORCED$4,\n sham: FORCED$4\n}, {\n construct: function construct2(Target, args) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG)\n return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n switch (args.length) {\n case 0:\n return new Target();\n case 1:\n return new Target(args[0]);\n case 2:\n return new Target(args[0], args[1]);\n case 3:\n return new Target(args[0], args[1], args[2]);\n case 4:\n return new Target(args[0], args[1], args[2], args[3]);\n }\n var $args = [null];\n $args.push.apply($args, args);\n return new (functionBind.apply(Target, $args))();\n }\n var proto = newTarget.prototype;\n var instance = objectCreate(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\nvar construct$1 = path.Reflect.construct;\nvar construct$2 = construct$1;\nvar construct$3 = construct$2;\nvar entries = entryVirtual(\"Array\").entries;\nvar entries$1 = entries;\nvar ArrayPrototype$a = Array.prototype;\nvar DOMIterables$1 = {\n DOMTokenList: true,\n NodeList: true\n};\nvar entries_1 = function(it) {\n var own = it.entries;\n return it === ArrayPrototype$a || it instanceof Array && own === ArrayPrototype$a.entries || DOMIterables$1.hasOwnProperty(classof(it)) ? entries$1 : own;\n};\nvar entries$2 = entries_1;\nvar runtime_1 = createCommonjsModule(function(module) {\n var runtime = function(exports) {\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined$1;\n var $Symbol2 = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol2.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol2.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol2.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap2(innerFn, outerFn, self2, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n generator._invoke = makeInvokeMethod(innerFn, self2, context);\n return generator;\n }\n exports.wrap = wrap2;\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n var ContinueSentinel = {};\n function Generator() {\n }\n function GeneratorFunction() {\n }\n function GeneratorFunctionPrototype() {\n }\n var IteratorPrototype2 = {};\n IteratorPrototype2[iteratorSymbol] = function() {\n return this;\n };\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values3([])));\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n IteratorPrototype2 = NativeIteratorPrototype;\n }\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype2);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\");\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n };\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n exports.awrap = function(arg) {\n return {\n __await: arg\n };\n };\n function AsyncIterator(generator, PromiseImpl) {\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 && typeof value === \"object\" && hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value2) {\n invoke(\"next\", value2, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n var previousPromise;\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n this._invoke = enqueue;\n }\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function() {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n exports.async = function(innerFn, outerFn, self2, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0)\n PromiseImpl = Promise;\n var iter = new AsyncIterator(wrap2(innerFn, outerFn, self2, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n function makeInvokeMethod(innerFn, self2, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n return doneResult();\n }\n context.method = method;\n context.arg = arg;\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel)\n continue;\n return delegateResult;\n }\n }\n if (context.method === \"next\") {\n context.sent = context._sent = context.arg;\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n context.dispatchException(context.arg);\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self2, context);\n if (record.type === \"normal\") {\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n if (record.arg === ContinueSentinel) {\n continue;\n }\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined$1) {\n context.delegate = null;\n if (context.method === \"throw\") {\n if (delegate.iterator[\"return\"]) {\n context.method = \"return\";\n context.arg = undefined$1;\n maybeInvokeDelegate(delegate, context);\n if (context.method === \"throw\") {\n return ContinueSentinel;\n }\n }\n context.method = \"throw\";\n context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n return ContinueSentinel;\n }\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n var info = record.arg;\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 if (info.done) {\n context[delegate.resultName] = info.value;\n context.next = delegate.nextLoc;\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined$1;\n }\n } else {\n return info;\n }\n context.delegate = null;\n return ContinueSentinel;\n }\n defineIteratorMethods(Gp);\n define(Gp, toStringTagSymbol, \"Generator\");\n Gp[iteratorSymbol] = function() {\n return this;\n };\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n exports.keys = function(object) {\n var keys4 = [];\n for (var key in object) {\n keys4.push(key);\n }\n keys4.reverse();\n return function next2() {\n while (keys4.length) {\n var key2 = keys4.pop();\n if (key2 in object) {\n next2.value = key2;\n next2.done = false;\n return next2;\n }\n }\n next2.done = true;\n return next2;\n };\n };\n function values3(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n if (!isNaN(iterable.length)) {\n var i = -1, next2 = function next3() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next3.value = iterable[i];\n next3.done = false;\n return next3;\n }\n }\n next3.value = undefined$1;\n next3.done = true;\n return next3;\n };\n return next2.next = next2;\n }\n }\n return {\n next: doneResult\n };\n }\n exports.values = values3;\n function doneResult() {\n return {\n value: undefined$1,\n done: true\n };\n }\n Context.prototype = {\n constructor: Context,\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n this.sent = this._sent = undefined$1;\n this.done = false;\n this.delegate = null;\n this.method = \"next\";\n this.arg = undefined$1;\n this.tryEntries.forEach(resetTryEntry);\n if (!skipTempReset) {\n for (var name in this) {\n if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined$1;\n }\n }\n }\n },\n stop: function() {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n return this.rval;\n },\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n if (caught) {\n context.method = \"next\";\n context.arg = undefined$1;\n }\n return !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n if (entry.tryLoc === \"root\") {\n return handle(\"end\");\n }\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\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 } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error(\"try statement without catch or finally\");\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 && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n finallyEntry = null;\n }\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n return this.complete(record);\n },\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n if (record.type === \"break\" || 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 return ContinueSentinel;\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 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 throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values3(iterable),\n resultName,\n nextLoc\n };\n if (this.method === \"next\") {\n this.arg = undefined$1;\n }\n return ContinueSentinel;\n }\n };\n return exports;\n }(module.exports);\n try {\n regeneratorRuntime = runtime;\n } catch (accidentalStrictMode) {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n});\nvar regenerator = runtime_1;\nvar iterator$3 = iterator;\nvar iterator$4 = iterator$3;\nvar values$1 = entryVirtual(\"Array\").values;\nvar values$2 = values$1;\nvar ArrayPrototype$b = Array.prototype;\nvar DOMIterables$2 = {\n DOMTokenList: true,\n NodeList: true\n};\nvar values_1 = function(it) {\n var own = it.values;\n return it === ArrayPrototype$b || it instanceof Array && own === ArrayPrototype$b.values || DOMIterables$2.hasOwnProperty(classof(it)) ? values$2 : own;\n};\nvar values$3 = values_1;\nvar test$2 = [];\nvar nativeSort = test$2.sort;\nvar FAILS_ON_UNDEFINED = fails(function() {\n test$2.sort(void 0);\n});\nvar FAILS_ON_NULL = fails(function() {\n test$2.sort(null);\n});\nvar STRICT_METHOD$3 = arrayMethodIsStrict(\"sort\");\nvar FORCED$5 = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD$3;\n_export({\n target: \"Array\",\n proto: true,\n forced: FORCED$5\n}, {\n sort: function sort(comparefn) {\n return comparefn === void 0 ? nativeSort.call(toObject(this)) : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\nvar sort2 = entryVirtual(\"Array\").sort;\nvar ArrayPrototype$c = Array.prototype;\nvar sort_1 = function(it) {\n var own = it.sort;\n return it === ArrayPrototype$c || it instanceof Array && own === ArrayPrototype$c.sort ? sort2 : own;\n};\nvar sort$1 = sort_1;\nvar sort$2 = sort$1;\nvar keys$4 = entryVirtual(\"Array\").keys;\nvar keys$5 = keys$4;\nvar ArrayPrototype$d = Array.prototype;\nvar DOMIterables$3 = {\n DOMTokenList: true,\n NodeList: true\n};\nvar keys_1 = function(it) {\n var own = it.keys;\n return it === ArrayPrototype$d || it instanceof Array && own === ArrayPrototype$d.keys || DOMIterables$3.hasOwnProperty(classof(it)) ? keys$5 : own;\n};\nvar keys$6 = keys_1;\nvar $some = arrayIteration.some;\nvar STRICT_METHOD$4 = arrayMethodIsStrict(\"some\");\nvar USES_TO_LENGTH$8 = arrayMethodUsesToLength(\"some\");\n_export({\n target: \"Array\",\n proto: true,\n forced: !STRICT_METHOD$4 || !USES_TO_LENGTH$8\n}, {\n some: function some(callbackfn) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar some2 = entryVirtual(\"Array\").some;\nvar ArrayPrototype$e = Array.prototype;\nvar some_1 = function(it) {\n var own = it.some;\n return it === ArrayPrototype$e || it instanceof Array && own === ArrayPrototype$e.some ? some2 : own;\n};\nvar some$1 = some_1;\nvar some$2 = some$1;\nvar freezing = !fails(function() {\n return Object.isExtensible(Object.preventExtensions({}));\n});\nvar internalMetadata = createCommonjsModule(function(module) {\n var defineProperty4 = objectDefineProperty.f;\n var METADATA = uid(\"meta\");\n var id2 = 0;\n var isExtensible = Object.isExtensible || function() {\n return true;\n };\n var setMetadata = function(it) {\n defineProperty4(it, METADATA, {\n value: {\n objectID: \"O\" + ++id2,\n weakData: {}\n }\n });\n };\n var fastKey2 = function(it, create5) {\n if (!isObject(it))\n return typeof it == \"symbol\" ? it : (typeof it == \"string\" ? \"S\" : \"P\") + it;\n if (!has(it, METADATA)) {\n if (!isExtensible(it))\n return \"F\";\n if (!create5)\n return \"E\";\n setMetadata(it);\n }\n return it[METADATA].objectID;\n };\n var getWeakData = function(it, create5) {\n if (!has(it, METADATA)) {\n if (!isExtensible(it))\n return true;\n if (!create5)\n return false;\n setMetadata(it);\n }\n return it[METADATA].weakData;\n };\n var onFreeze = function(it) {\n if (freezing && meta.REQUIRED && isExtensible(it) && !has(it, METADATA))\n setMetadata(it);\n return it;\n };\n var meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey2,\n getWeakData,\n onFreeze\n };\n hiddenKeys[METADATA] = true;\n});\nvar Result = function(stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\nvar iterate = function(iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = functionBindContext(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator2, iterFn, index, length, result, next2, step;\n var stop = function(condition) {\n if (iterator2)\n iteratorClose(iterator2);\n return new Result(true, condition);\n };\n var callFn = function(value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n }\n return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n if (IS_ITERATOR) {\n iterator2 = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != \"function\")\n throw TypeError(\"Target is not iterable\");\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result)\n return result;\n }\n return new Result(false);\n }\n iterator2 = iterFn.call(iterable);\n }\n next2 = iterator2.next;\n while (!(step = next2.call(iterator2)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator2);\n throw error;\n }\n if (typeof result == \"object\" && result && result instanceof Result)\n return result;\n }\n return new Result(false);\n};\nvar anInstance = function(it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError(\"Incorrect \" + (name ? name + \" \" : \"\") + \"invocation\");\n }\n return it;\n};\nvar defineProperty$9 = objectDefineProperty.f;\nvar forEach$3 = arrayIteration.forEach;\nvar setInternalState$3 = internalState.set;\nvar internalStateGetterFor = internalState.getterFor;\nvar collection = function(CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf(\"Map\") !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf(\"Weak\") !== -1;\n var ADDER = IS_MAP ? \"set\" : \"add\";\n var NativeConstructor = global$1$1[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var exported = {};\n var Constructor;\n if (!descriptors || typeof NativeConstructor != \"function\" || !(IS_WEAK || NativePrototype.forEach && !fails(function() {\n new NativeConstructor().entries().next();\n }))) {\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n internalMetadata.REQUIRED = true;\n } else {\n Constructor = wrapper(function(target, iterable) {\n setInternalState$3(anInstance(target, Constructor, CONSTRUCTOR_NAME), {\n type: CONSTRUCTOR_NAME,\n collection: new NativeConstructor()\n });\n if (iterable != void 0)\n iterate(iterable, target[ADDER], {\n that: target,\n AS_ENTRIES: IS_MAP\n });\n });\n var getInternalState2 = internalStateGetterFor(CONSTRUCTOR_NAME);\n forEach$3([\"add\", \"clear\", \"delete\", \"forEach\", \"get\", \"has\", \"set\", \"keys\", \"values\", \"entries\"], function(KEY) {\n var IS_ADDER = KEY == \"add\" || KEY == \"set\";\n if (KEY in NativePrototype && !(IS_WEAK && KEY == \"clear\")) {\n createNonEnumerableProperty(Constructor.prototype, KEY, function(a, b) {\n var collection2 = getInternalState2(this).collection;\n if (!IS_ADDER && IS_WEAK && !isObject(a))\n return KEY == \"get\" ? void 0 : false;\n var result = collection2[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n }\n });\n IS_WEAK || defineProperty$9(Constructor.prototype, \"size\", {\n configurable: true,\n get: function() {\n return getInternalState2(this).collection.size;\n }\n });\n }\n setToStringTag(Constructor, CONSTRUCTOR_NAME, false, true);\n exported[CONSTRUCTOR_NAME] = Constructor;\n _export({\n global: true,\n forced: true\n }, exported);\n if (!IS_WEAK)\n common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n return Constructor;\n};\nvar redefineAll = function(target, src, options) {\n for (var key in src) {\n if (options && options.unsafe && target[key])\n target[key] = src[key];\n else\n redefine(target, key, src[key], options);\n }\n return target;\n};\nvar SPECIES$3 = wellKnownSymbol(\"species\");\nvar setSpecies = function(CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty4 = objectDefineProperty.f;\n if (descriptors && Constructor && !Constructor[SPECIES$3]) {\n defineProperty4(Constructor, SPECIES$3, {\n configurable: true,\n get: function() {\n return this;\n }\n });\n }\n};\nvar defineProperty$a = objectDefineProperty.f;\nvar fastKey = internalMetadata.fastKey;\nvar setInternalState$4 = internalState.set;\nvar internalStateGetterFor$1 = internalState.getterFor;\nvar collectionStrong = {\n getConstructor: function(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function(that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState$4(that, {\n type: CONSTRUCTOR_NAME,\n index: objectCreate(null),\n first: void 0,\n last: void 0,\n size: 0\n });\n if (!descriptors)\n that.size = 0;\n if (iterable != void 0)\n iterate(iterable, that[ADDER], {\n that,\n AS_ENTRIES: IS_MAP\n });\n });\n var getInternalState2 = internalStateGetterFor$1(CONSTRUCTOR_NAME);\n var define = function(that, key, value) {\n var state = getInternalState2(that);\n var entry = getEntry(that, key);\n var previous, index;\n if (entry) {\n entry.value = value;\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key,\n value,\n previous: previous = state.last,\n next: void 0,\n removed: false\n };\n if (!state.first)\n state.first = entry;\n if (previous)\n previous.next = entry;\n if (descriptors)\n state.size++;\n else\n that.size++;\n if (index !== \"F\")\n state.index[index] = entry;\n }\n return that;\n };\n var getEntry = function(that, key) {\n var state = getInternalState2(that);\n var index = fastKey(key);\n var entry;\n if (index !== \"F\")\n return state.index[index];\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key)\n return entry;\n }\n };\n redefineAll(C.prototype, {\n clear: function clear() {\n var that = this;\n var state = getInternalState2(that);\n var data2 = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous)\n entry.previous = entry.previous.next = void 0;\n delete data2[entry.index];\n entry = entry.next;\n }\n state.first = state.last = void 0;\n if (descriptors)\n state.size = 0;\n else\n that.size = 0;\n },\n delete: function(key) {\n var that = this;\n var state = getInternalState2(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next2 = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev)\n prev.next = next2;\n if (next2)\n next2.previous = prev;\n if (state.first == entry)\n state.first = next2;\n if (state.last == entry)\n state.last = prev;\n if (descriptors)\n state.size--;\n else\n that.size--;\n }\n return !!entry;\n },\n forEach: function forEach3(callbackfn) {\n var state = getInternalState2(this);\n var boundFunction = functionBindContext(callbackfn, arguments.length > 1 ? arguments[1] : void 0, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n while (entry && entry.removed)\n entry = entry.previous;\n }\n },\n has: function has2(key) {\n return !!getEntry(this, key);\n }\n });\n redefineAll(C.prototype, IS_MAP ? {\n get: function get2(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n set: function set2(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (descriptors)\n defineProperty$a(C.prototype, \"size\", {\n get: function() {\n return getInternalState2(this).size;\n }\n });\n return C;\n },\n setStrong: function(C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + \" Iterator\";\n var getInternalCollectionState = internalStateGetterFor$1(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor$1(ITERATOR_NAME);\n defineIterator(C, CONSTRUCTOR_NAME, function(iterated, kind) {\n setInternalState$4(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind,\n last: void 0\n });\n }, function() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n while (entry && entry.removed)\n entry = entry.previous;\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n state.target = void 0;\n return {\n value: void 0,\n done: true\n };\n }\n if (kind == \"keys\")\n return {\n value: entry.key,\n done: false\n };\n if (kind == \"values\")\n return {\n value: entry.value,\n done: false\n };\n return {\n value: [entry.key, entry.value],\n done: false\n };\n }, IS_MAP ? \"entries\" : \"values\", !IS_MAP, true);\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\nvar es_map = collection(\"Map\", function(init) {\n return function Map() {\n return init(this, arguments.length ? arguments[0] : void 0);\n };\n}, collectionStrong);\nvar map$3 = path.Map;\nvar map$4 = map$3;\nvar map$5 = map$4;\nvar create$3 = create3;\nvar create$4 = create$3;\n_export({\n target: \"Object\",\n stat: true\n}, {\n setPrototypeOf: objectSetPrototypeOf\n});\nvar setPrototypeOf = path.Object.setPrototypeOf;\nvar setPrototypeOf$1 = setPrototypeOf;\nvar setPrototypeOf$2 = setPrototypeOf$1;\nvar setPrototypeOf$3 = createCommonjsModule(function(module) {\n function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = setPrototypeOf$2 || function _setPrototypeOf2(o2, p2) {\n o2.__proto__ = p2;\n return o2;\n };\n return _setPrototypeOf(o, p);\n }\n module.exports = _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 subClass.prototype = create$4(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass)\n setPrototypeOf$3(subClass, superClass);\n}\nvar inherits = _inherits;\nfunction _assertThisInitialized$1(self2) {\n if (self2 === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self2;\n}\nvar assertThisInitialized = _assertThisInitialized$1;\nfunction _possibleConstructorReturn(self2, call) {\n if (call && (_typeof_1(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return assertThisInitialized(self2);\n}\nvar possibleConstructorReturn = _possibleConstructorReturn;\nvar getPrototypeOf$1 = getPrototypeOf2;\nvar getPrototypeOf$2 = getPrototypeOf$1;\nvar getPrototypeOf$3 = createCommonjsModule(function(module) {\n function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = setPrototypeOf$2 ? getPrototypeOf$2 : function _getPrototypeOf2(o2) {\n return o2.__proto__ || getPrototypeOf$2(o2);\n };\n return _getPrototypeOf(o);\n }\n module.exports = _getPrototypeOf;\n});\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nfunction rng() {\n if (!getRandomValues) {\n getRandomValues = typeof crypto !== \"undefined\" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== \"undefined\" && typeof msCrypto.getRandomValues === \"function\" && msCrypto.getRandomValues.bind(msCrypto);\n if (!getRandomValues) {\n throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");\n }\n }\n return getRandomValues(rnds8);\n}\nvar REGEX = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nfunction validate(uuid) {\n return typeof uuid === \"string\" && REGEX.test(uuid);\n}\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 256).toString(16).substr(1));\n}\nfunction stringify$3(arr) {\n var offset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + \"-\" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + \"-\" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + \"-\" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + \"-\" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n if (!validate(uuid)) {\n throw TypeError(\"Stringified UUID is invalid\");\n }\n return uuid;\n}\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)();\n rnds[6] = rnds[6] & 15 | 64;\n rnds[8] = rnds[8] & 63 | 128;\n if (buf) {\n offset = offset || 0;\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return stringify$3(rnds);\n}\nfunction isId(value) {\n return typeof value === \"string\" || typeof value === \"number\";\n}\nvar Queue = /* @__PURE__ */ function() {\n function Queue2(options) {\n classCallCheck(this, Queue2);\n this._queue = [];\n this._timeout = null;\n this._extended = null;\n this.delay = null;\n this.max = Infinity;\n this.setOptions(options);\n }\n createClass(Queue2, [{\n key: \"setOptions\",\n value: function setOptions(options) {\n if (options && typeof options.delay !== \"undefined\") {\n this.delay = options.delay;\n }\n if (options && typeof options.max !== \"undefined\") {\n this.max = options.max;\n }\n this._flushIfNeeded();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.flush();\n if (this._extended) {\n var object = this._extended.object;\n var methods = this._extended.methods;\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n if (method.original) {\n object[method.name] = method.original;\n } else {\n delete object[method.name];\n }\n }\n this._extended = null;\n }\n }\n }, {\n key: \"replace\",\n value: function replace(object, method) {\n var me = this;\n var original = object[method];\n if (!original) {\n throw new Error(\"Method \" + method + \" undefined\");\n }\n object[method] = function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n me.queue({\n args,\n fn: original,\n context: this\n });\n };\n }\n }, {\n key: \"queue\",\n value: function queue(entry) {\n if (typeof entry === \"function\") {\n this._queue.push({\n fn: entry\n });\n } else {\n this._queue.push(entry);\n }\n this._flushIfNeeded();\n }\n }, {\n key: \"_flushIfNeeded\",\n value: function _flushIfNeeded() {\n var _this = this;\n if (this._queue.length > this.max) {\n this.flush();\n }\n if (this._timeout != null) {\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n if (this.queue.length > 0 && typeof this.delay === \"number\") {\n this._timeout = setTimeout$2(function() {\n _this.flush();\n }, this.delay);\n }\n }\n }, {\n key: \"flush\",\n value: function flush() {\n var _context, _context2;\n forEach$2(_context = splice$2(_context2 = this._queue).call(_context2, 0)).call(_context, function(entry) {\n entry.fn.apply(entry.context || entry.fn, entry.args || []);\n });\n }\n }], [{\n key: \"extend\",\n value: function extend2(object, options) {\n var queue = new Queue2(options);\n if (object.flush !== void 0) {\n throw new Error(\"Target object already has a property flush\");\n }\n object.flush = function() {\n queue.flush();\n };\n var methods = [{\n name: \"flush\",\n original: void 0\n }];\n if (options && options.replace) {\n for (var i = 0; i < options.replace.length; i++) {\n var name = options.replace[i];\n methods.push({\n name,\n original: object[name]\n });\n queue.replace(object, name);\n }\n }\n queue._extended = {\n object,\n methods\n };\n return queue;\n }\n }]);\n return Queue2;\n}();\nvar DataSetPart = /* @__PURE__ */ function() {\n function DataSetPart2() {\n classCallCheck(this, DataSetPart2);\n this._subscribers = {\n \"*\": [],\n add: [],\n remove: [],\n update: []\n };\n this.subscribe = DataSetPart2.prototype.on;\n this.unsubscribe = DataSetPart2.prototype.off;\n }\n createClass(DataSetPart2, [{\n key: \"_trigger\",\n value: function _trigger(event, payload, senderId) {\n var _context, _context2;\n if (event === \"*\") {\n throw new Error(\"Cannot trigger event *\");\n }\n forEach$2(_context = concat$2(_context2 = []).call(_context2, toConsumableArray(this._subscribers[event]), toConsumableArray(this._subscribers[\"*\"]))).call(_context, function(subscriber) {\n subscriber(event, payload, senderId != null ? senderId : null);\n });\n }\n }, {\n key: \"on\",\n value: function on(event, callback) {\n if (typeof callback === \"function\") {\n this._subscribers[event].push(callback);\n }\n }\n }, {\n key: \"off\",\n value: function off(event, callback) {\n var _context3;\n this._subscribers[event] = filter$2(_context3 = this._subscribers[event]).call(_context3, function(subscriber) {\n return subscriber !== callback;\n });\n }\n }]);\n return DataSetPart2;\n}();\nvar es_set = collection(\"Set\", function(init) {\n return function Set() {\n return init(this, arguments.length ? arguments[0] : void 0);\n };\n}, collectionStrong);\nvar set$1 = path.Set;\nvar set$2 = set$1;\nvar set$3 = set$2;\nfunction _createForOfIteratorHelper$1(o, allowArrayLike) {\n var it;\n if (typeof symbol$4 === \"undefined\" || getIteratorMethod$1(o) == null) {\n if (isArray$5(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it)\n o = it;\n var i = 0;\n var F = function F2() {\n };\n return {s: F, n: function n() {\n if (i >= o.length)\n return {done: true};\n return {done: false, value: o[i++]};\n }, e: function e(_e) {\n throw _e;\n }, f: F};\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true, didErr = false, err;\n return {s: function s() {\n it = getIterator$1(o);\n }, n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n }, e: function e(_e2) {\n didErr = true;\n err = _e2;\n }, f: function f2() {\n try {\n if (!normalCompletion && it.return != null)\n it.return();\n } finally {\n if (didErr)\n throw err;\n }\n }};\n}\nfunction _unsupportedIterableToArray$2(o, minLen) {\n var _context10;\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray$2(o, minLen);\n var n = slice$6(_context10 = Object.prototype.toString.call(o)).call(_context10, 8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return from$2(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray$2(o, minLen);\n}\nfunction _arrayLikeToArray$2(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nvar DataStream = /* @__PURE__ */ function() {\n function DataStream2(pairs) {\n classCallCheck(this, DataStream2);\n this._pairs = pairs;\n }\n createClass(DataStream2, [{\n key: iterator$4,\n value: /* @__PURE__ */ regenerator.mark(function value() {\n var _iterator, _step, _step$value, id2, item;\n return regenerator.wrap(function value$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _iterator = _createForOfIteratorHelper$1(this._pairs);\n _context.prev = 1;\n _iterator.s();\n case 3:\n if ((_step = _iterator.n()).done) {\n _context.next = 9;\n break;\n }\n _step$value = slicedToArray(_step.value, 2), id2 = _step$value[0], item = _step$value[1];\n _context.next = 7;\n return [id2, item];\n case 7:\n _context.next = 3;\n break;\n case 9:\n _context.next = 14;\n break;\n case 11:\n _context.prev = 11;\n _context.t0 = _context[\"catch\"](1);\n _iterator.e(_context.t0);\n case 14:\n _context.prev = 14;\n _iterator.f();\n return _context.finish(14);\n case 17:\n case \"end\":\n return _context.stop();\n }\n }\n }, value, this, [[1, 11, 14, 17]]);\n })\n }, {\n key: \"entries\",\n value: /* @__PURE__ */ regenerator.mark(function entries2() {\n var _iterator2, _step2, _step2$value, id2, item;\n return regenerator.wrap(function entries$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _iterator2 = _createForOfIteratorHelper$1(this._pairs);\n _context2.prev = 1;\n _iterator2.s();\n case 3:\n if ((_step2 = _iterator2.n()).done) {\n _context2.next = 9;\n break;\n }\n _step2$value = slicedToArray(_step2.value, 2), id2 = _step2$value[0], item = _step2$value[1];\n _context2.next = 7;\n return [id2, item];\n case 7:\n _context2.next = 3;\n break;\n case 9:\n _context2.next = 14;\n break;\n case 11:\n _context2.prev = 11;\n _context2.t0 = _context2[\"catch\"](1);\n _iterator2.e(_context2.t0);\n case 14:\n _context2.prev = 14;\n _iterator2.f();\n return _context2.finish(14);\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }\n }, entries2, this, [[1, 11, 14, 17]]);\n })\n }, {\n key: \"keys\",\n value: /* @__PURE__ */ regenerator.mark(function keys4() {\n var _iterator3, _step3, _step3$value, id2;\n return regenerator.wrap(function keys$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _iterator3 = _createForOfIteratorHelper$1(this._pairs);\n _context3.prev = 1;\n _iterator3.s();\n case 3:\n if ((_step3 = _iterator3.n()).done) {\n _context3.next = 9;\n break;\n }\n _step3$value = slicedToArray(_step3.value, 1), id2 = _step3$value[0];\n _context3.next = 7;\n return id2;\n case 7:\n _context3.next = 3;\n break;\n case 9:\n _context3.next = 14;\n break;\n case 11:\n _context3.prev = 11;\n _context3.t0 = _context3[\"catch\"](1);\n _iterator3.e(_context3.t0);\n case 14:\n _context3.prev = 14;\n _iterator3.f();\n return _context3.finish(14);\n case 17:\n case \"end\":\n return _context3.stop();\n }\n }\n }, keys4, this, [[1, 11, 14, 17]]);\n })\n }, {\n key: \"values\",\n value: /* @__PURE__ */ regenerator.mark(function values3() {\n var _iterator4, _step4, _step4$value, item;\n return regenerator.wrap(function values$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _iterator4 = _createForOfIteratorHelper$1(this._pairs);\n _context4.prev = 1;\n _iterator4.s();\n case 3:\n if ((_step4 = _iterator4.n()).done) {\n _context4.next = 9;\n break;\n }\n _step4$value = slicedToArray(_step4.value, 2), item = _step4$value[1];\n _context4.next = 7;\n return item;\n case 7:\n _context4.next = 3;\n break;\n case 9:\n _context4.next = 14;\n break;\n case 11:\n _context4.prev = 11;\n _context4.t0 = _context4[\"catch\"](1);\n _iterator4.e(_context4.t0);\n case 14:\n _context4.prev = 14;\n _iterator4.f();\n return _context4.finish(14);\n case 17:\n case \"end\":\n return _context4.stop();\n }\n }\n }, values3, this, [[1, 11, 14, 17]]);\n })\n }, {\n key: \"toIdArray\",\n value: function toIdArray() {\n var _context5;\n return map$2(_context5 = toConsumableArray(this._pairs)).call(_context5, function(pair) {\n return pair[0];\n });\n }\n }, {\n key: \"toItemArray\",\n value: function toItemArray() {\n var _context6;\n return map$2(_context6 = toConsumableArray(this._pairs)).call(_context6, function(pair) {\n return pair[1];\n });\n }\n }, {\n key: \"toEntryArray\",\n value: function toEntryArray() {\n return toConsumableArray(this._pairs);\n }\n }, {\n key: \"toObjectMap\",\n value: function toObjectMap() {\n var map3 = create$2(null);\n var _iterator5 = _createForOfIteratorHelper$1(this._pairs), _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done; ) {\n var _step5$value = slicedToArray(_step5.value, 2), id2 = _step5$value[0], item = _step5$value[1];\n map3[id2] = item;\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n return map3;\n }\n }, {\n key: \"toMap\",\n value: function toMap() {\n return new map$5(this._pairs);\n }\n }, {\n key: \"toIdSet\",\n value: function toIdSet() {\n return new set$3(this.toIdArray());\n }\n }, {\n key: \"toItemSet\",\n value: function toItemSet() {\n return new set$3(this.toItemArray());\n }\n }, {\n key: \"cache\",\n value: function cache2() {\n return new DataStream2(toConsumableArray(this._pairs));\n }\n }, {\n key: \"distinct\",\n value: function distinct(callback) {\n var set2 = new set$3();\n var _iterator6 = _createForOfIteratorHelper$1(this._pairs), _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done; ) {\n var _step6$value = slicedToArray(_step6.value, 2), id2 = _step6$value[0], item = _step6$value[1];\n set2.add(callback(item, id2));\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n return set2;\n }\n }, {\n key: \"filter\",\n value: function filter3(callback) {\n var pairs = this._pairs;\n return new DataStream2(defineProperty$7({}, iterator$4, /* @__PURE__ */ regenerator.mark(function _callee() {\n var _iterator7, _step7, _step7$value, id2, item;\n return regenerator.wrap(function _callee$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _iterator7 = _createForOfIteratorHelper$1(pairs);\n _context7.prev = 1;\n _iterator7.s();\n case 3:\n if ((_step7 = _iterator7.n()).done) {\n _context7.next = 10;\n break;\n }\n _step7$value = slicedToArray(_step7.value, 2), id2 = _step7$value[0], item = _step7$value[1];\n if (!callback(item, id2)) {\n _context7.next = 8;\n break;\n }\n _context7.next = 8;\n return [id2, item];\n case 8:\n _context7.next = 3;\n break;\n case 10:\n _context7.next = 15;\n break;\n case 12:\n _context7.prev = 12;\n _context7.t0 = _context7[\"catch\"](1);\n _iterator7.e(_context7.t0);\n case 15:\n _context7.prev = 15;\n _iterator7.f();\n return _context7.finish(15);\n case 18:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee, null, [[1, 12, 15, 18]]);\n })));\n }\n }, {\n key: \"forEach\",\n value: function forEach3(callback) {\n var _iterator8 = _createForOfIteratorHelper$1(this._pairs), _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done; ) {\n var _step8$value = slicedToArray(_step8.value, 2), id2 = _step8$value[0], item = _step8$value[1];\n callback(item, id2);\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n }, {\n key: \"map\",\n value: function map3(callback) {\n var pairs = this._pairs;\n return new DataStream2(defineProperty$7({}, iterator$4, /* @__PURE__ */ regenerator.mark(function _callee2() {\n var _iterator9, _step9, _step9$value, id2, item;\n return regenerator.wrap(function _callee2$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _iterator9 = _createForOfIteratorHelper$1(pairs);\n _context8.prev = 1;\n _iterator9.s();\n case 3:\n if ((_step9 = _iterator9.n()).done) {\n _context8.next = 9;\n break;\n }\n _step9$value = slicedToArray(_step9.value, 2), id2 = _step9$value[0], item = _step9$value[1];\n _context8.next = 7;\n return [id2, callback(item, id2)];\n case 7:\n _context8.next = 3;\n break;\n case 9:\n _context8.next = 14;\n break;\n case 11:\n _context8.prev = 11;\n _context8.t0 = _context8[\"catch\"](1);\n _iterator9.e(_context8.t0);\n case 14:\n _context8.prev = 14;\n _iterator9.f();\n return _context8.finish(14);\n case 17:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee2, null, [[1, 11, 14, 17]]);\n })));\n }\n }, {\n key: \"max\",\n value: function max2(callback) {\n var iter = getIterator$1(this._pairs);\n var curr = iter.next();\n if (curr.done) {\n return null;\n }\n var maxItem = curr.value[1];\n var maxValue = callback(curr.value[1], curr.value[0]);\n while (!(curr = iter.next()).done) {\n var _curr$value = slicedToArray(curr.value, 2), id2 = _curr$value[0], item = _curr$value[1];\n var _value = callback(item, id2);\n if (_value > maxValue) {\n maxValue = _value;\n maxItem = item;\n }\n }\n return maxItem;\n }\n }, {\n key: \"min\",\n value: function min2(callback) {\n var iter = getIterator$1(this._pairs);\n var curr = iter.next();\n if (curr.done) {\n return null;\n }\n var minItem = curr.value[1];\n var minValue = callback(curr.value[1], curr.value[0]);\n while (!(curr = iter.next()).done) {\n var _curr$value2 = slicedToArray(curr.value, 2), id2 = _curr$value2[0], item = _curr$value2[1];\n var _value2 = callback(item, id2);\n if (_value2 < minValue) {\n minValue = _value2;\n minItem = item;\n }\n }\n return minItem;\n }\n }, {\n key: \"reduce\",\n value: function reduce3(callback, accumulator) {\n var _iterator10 = _createForOfIteratorHelper$1(this._pairs), _step10;\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done; ) {\n var _step10$value = slicedToArray(_step10.value, 2), id2 = _step10$value[0], item = _step10$value[1];\n accumulator = callback(accumulator, item, id2);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n return accumulator;\n }\n }, {\n key: \"sort\",\n value: function sort3(callback) {\n var _this = this;\n return new DataStream2(defineProperty$7({}, iterator$4, function() {\n var _context9;\n return getIterator$1(sort$2(_context9 = toConsumableArray(_this._pairs)).call(_context9, function(_ref, _ref2) {\n var _ref3 = slicedToArray(_ref, 2), idA = _ref3[0], itemA = _ref3[1];\n var _ref4 = slicedToArray(_ref2, 2), idB = _ref4[0], itemB = _ref4[1];\n return callback(itemA, itemB, idA, idB);\n }));\n }));\n }\n }]);\n return DataStream2;\n}();\nfunction ownKeys$4(object, enumerableOnly) {\n var keys4 = keys$3(object);\n if (getOwnPropertySymbols$2) {\n var symbols = getOwnPropertySymbols$2(object);\n if (enumerableOnly)\n symbols = filter$2(symbols).call(symbols, function(sym) {\n return getOwnPropertyDescriptor$3(object, sym).enumerable;\n });\n keys4.push.apply(keys4, symbols);\n }\n return keys4;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n var _context10;\n forEach$2(_context10 = ownKeys$4(Object(source), true)).call(_context10, function(key) {\n defineProperty$7(target, key, source[key]);\n });\n } else if (getOwnPropertyDescriptors$2) {\n defineProperties$1(target, getOwnPropertyDescriptors$2(source));\n } else {\n var _context11;\n forEach$2(_context11 = ownKeys$4(Object(source))).call(_context11, function(key) {\n defineProperty$4(target, key, getOwnPropertyDescriptor$3(source, key));\n });\n }\n }\n return target;\n}\nfunction _createForOfIteratorHelper$2(o, allowArrayLike) {\n var it;\n if (typeof symbol$4 === \"undefined\" || getIteratorMethod$1(o) == null) {\n if (isArray$5(o) || (it = _unsupportedIterableToArray$3(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it)\n o = it;\n var i = 0;\n var F = function F2() {\n };\n return {s: F, n: function n() {\n if (i >= o.length)\n return {done: true};\n return {done: false, value: o[i++]};\n }, e: function e(_e) {\n throw _e;\n }, f: F};\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true, didErr = false, err;\n return {s: function s() {\n it = getIterator$1(o);\n }, n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n }, e: function e(_e2) {\n didErr = true;\n err = _e2;\n }, f: function f2() {\n try {\n if (!normalCompletion && it.return != null)\n it.return();\n } finally {\n if (didErr)\n throw err;\n }\n }};\n}\nfunction _unsupportedIterableToArray$3(o, minLen) {\n var _context9;\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray$3(o, minLen);\n var n = slice$6(_context9 = Object.prototype.toString.call(o)).call(_context9, 8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return from$2(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray$3(o, minLen);\n}\nfunction _arrayLikeToArray$3(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf$3(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf$3(this).constructor;\n result = construct$3(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !construct$3)\n return false;\n if (construct$3.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Date.prototype.toString.call(construct$3(Date, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction ensureFullItem(item, idProp) {\n if (item[idProp] == null) {\n item[idProp] = v4();\n }\n return item;\n}\nvar DataSet = /* @__PURE__ */ function(_DataSetPart) {\n inherits(DataSet2, _DataSetPart);\n var _super = _createSuper(DataSet2);\n function DataSet2(data2, options) {\n var _this;\n classCallCheck(this, DataSet2);\n _this = _super.call(this);\n _this._queue = null;\n if (data2 && !isArray$5(data2)) {\n options = data2;\n data2 = [];\n }\n _this._options = options || {};\n _this._data = new map$5();\n _this.length = 0;\n _this._idProp = _this._options.fieldId || \"id\";\n if (data2 && data2.length) {\n _this.add(data2);\n }\n _this.setOptions(options);\n return _this;\n }\n createClass(DataSet2, [{\n key: \"setOptions\",\n value: function setOptions(options) {\n if (options && options.queue !== void 0) {\n if (options.queue === false) {\n if (this._queue) {\n this._queue.destroy();\n this._queue = null;\n }\n } else {\n if (!this._queue) {\n this._queue = Queue.extend(this, {\n replace: [\"add\", \"update\", \"remove\"]\n });\n }\n if (options.queue && _typeof_1(options.queue) === \"object\") {\n this._queue.setOptions(options.queue);\n }\n }\n }\n }\n }, {\n key: \"add\",\n value: function add(data2, senderId) {\n var _this2 = this;\n var addedIds = [];\n var id2;\n if (isArray$5(data2)) {\n var idsToAdd = map$2(data2).call(data2, function(d) {\n return d[_this2._idProp];\n });\n if (some$2(idsToAdd).call(idsToAdd, function(id3) {\n return _this2._data.has(id3);\n })) {\n throw new Error(\"A duplicate id was found in the parameter array.\");\n }\n for (var i = 0, len = data2.length; i < len; i++) {\n id2 = this._addItem(data2[i]);\n addedIds.push(id2);\n }\n } else if (data2 && _typeof_1(data2) === \"object\") {\n id2 = this._addItem(data2);\n addedIds.push(id2);\n } else {\n throw new Error(\"Unknown dataType\");\n }\n if (addedIds.length) {\n this._trigger(\"add\", {\n items: addedIds\n }, senderId);\n }\n return addedIds;\n }\n }, {\n key: \"update\",\n value: function update(data2, senderId) {\n var _this3 = this;\n var addedIds = [];\n var updatedIds = [];\n var oldData = [];\n var updatedData = [];\n var idProp = this._idProp;\n var addOrUpdate = function addOrUpdate2(item) {\n var origId = item[idProp];\n if (origId != null && _this3._data.has(origId)) {\n var fullItem = item;\n var oldItem = assign$2({}, _this3._data.get(origId));\n var id2 = _this3._updateItem(fullItem);\n updatedIds.push(id2);\n updatedData.push(fullItem);\n oldData.push(oldItem);\n } else {\n var _id = _this3._addItem(item);\n addedIds.push(_id);\n }\n };\n if (isArray$5(data2)) {\n for (var i = 0, len = data2.length; i < len; i++) {\n if (data2[i] && _typeof_1(data2[i]) === \"object\") {\n addOrUpdate(data2[i]);\n } else {\n console.warn(\"Ignoring input item, which is not an object at index \" + i);\n }\n }\n } else if (data2 && _typeof_1(data2) === \"object\") {\n addOrUpdate(data2);\n } else {\n throw new Error(\"Unknown dataType\");\n }\n if (addedIds.length) {\n this._trigger(\"add\", {\n items: addedIds\n }, senderId);\n }\n if (updatedIds.length) {\n var props = {\n items: updatedIds,\n oldData,\n data: updatedData\n };\n this._trigger(\"update\", props, senderId);\n }\n return concat$2(addedIds).call(addedIds, updatedIds);\n }\n }, {\n key: \"updateOnly\",\n value: function updateOnly(data2, senderId) {\n var _context, _this4 = this;\n if (!isArray$5(data2)) {\n data2 = [data2];\n }\n var updateEventData = map$2(_context = map$2(data2).call(data2, function(update) {\n var oldData = _this4._data.get(update[_this4._idProp]);\n if (oldData == null) {\n throw new Error(\"Updating non-existent items is not allowed.\");\n }\n return {\n oldData,\n update\n };\n })).call(_context, function(_ref) {\n var oldData = _ref.oldData, update = _ref.update;\n var id2 = oldData[_this4._idProp];\n var updatedData = pureDeepObjectAssign(oldData, update);\n _this4._data.set(id2, updatedData);\n return {\n id: id2,\n oldData,\n updatedData\n };\n });\n if (updateEventData.length) {\n var props = {\n items: map$2(updateEventData).call(updateEventData, function(value) {\n return value.id;\n }),\n oldData: map$2(updateEventData).call(updateEventData, function(value) {\n return value.oldData;\n }),\n data: map$2(updateEventData).call(updateEventData, function(value) {\n return value.updatedData;\n })\n };\n this._trigger(\"update\", props, senderId);\n return props.items;\n } else {\n return [];\n }\n }\n }, {\n key: \"get\",\n value: function get2(first, second) {\n var id2 = void 0;\n var ids = void 0;\n var options = void 0;\n if (isId(first)) {\n id2 = first;\n options = second;\n } else if (isArray$5(first)) {\n ids = first;\n options = second;\n } else {\n options = first;\n }\n var returnType = options && options.returnType === \"Object\" ? \"Object\" : \"Array\";\n var filter3 = options && filter$2(options);\n var items = [];\n var item = void 0;\n var itemIds = void 0;\n var itemId = void 0;\n if (id2 != null) {\n item = this._data.get(id2);\n if (item && filter3 && !filter3(item)) {\n item = void 0;\n }\n } else if (ids != null) {\n for (var i = 0, len = ids.length; i < len; i++) {\n item = this._data.get(ids[i]);\n if (item != null && (!filter3 || filter3(item))) {\n items.push(item);\n }\n }\n } else {\n var _context2;\n itemIds = toConsumableArray(keys$6(_context2 = this._data).call(_context2));\n for (var _i = 0, _len = itemIds.length; _i < _len; _i++) {\n itemId = itemIds[_i];\n item = this._data.get(itemId);\n if (item != null && (!filter3 || filter3(item))) {\n items.push(item);\n }\n }\n }\n if (options && options.order && id2 == void 0) {\n this._sort(items, options.order);\n }\n if (options && options.fields) {\n var fields = options.fields;\n if (id2 != void 0 && item != null) {\n item = this._filterFields(item, fields);\n } else {\n for (var _i2 = 0, _len2 = items.length; _i2 < _len2; _i2++) {\n items[_i2] = this._filterFields(items[_i2], fields);\n }\n }\n }\n if (returnType == \"Object\") {\n var result = {};\n for (var _i3 = 0, _len3 = items.length; _i3 < _len3; _i3++) {\n var resultant = items[_i3];\n var _id2 = resultant[this._idProp];\n result[_id2] = resultant;\n }\n return result;\n } else {\n if (id2 != null) {\n var _item;\n return (_item = item) !== null && _item !== void 0 ? _item : null;\n } else {\n return items;\n }\n }\n }\n }, {\n key: \"getIds\",\n value: function getIds(options) {\n var data2 = this._data;\n var filter3 = options && filter$2(options);\n var order = options && options.order;\n var itemIds = toConsumableArray(keys$6(data2).call(data2));\n var ids = [];\n if (filter3) {\n if (order) {\n var items = [];\n for (var i = 0, len = itemIds.length; i < len; i++) {\n var id2 = itemIds[i];\n var item = this._data.get(id2);\n if (item != null && filter3(item)) {\n items.push(item);\n }\n }\n this._sort(items, order);\n for (var _i4 = 0, _len4 = items.length; _i4 < _len4; _i4++) {\n ids.push(items[_i4][this._idProp]);\n }\n } else {\n for (var _i5 = 0, _len5 = itemIds.length; _i5 < _len5; _i5++) {\n var _id3 = itemIds[_i5];\n var _item2 = this._data.get(_id3);\n if (_item2 != null && filter3(_item2)) {\n ids.push(_item2[this._idProp]);\n }\n }\n }\n } else {\n if (order) {\n var _items = [];\n for (var _i6 = 0, _len6 = itemIds.length; _i6 < _len6; _i6++) {\n var _id4 = itemIds[_i6];\n _items.push(data2.get(_id4));\n }\n this._sort(_items, order);\n for (var _i7 = 0, _len7 = _items.length; _i7 < _len7; _i7++) {\n ids.push(_items[_i7][this._idProp]);\n }\n } else {\n for (var _i8 = 0, _len8 = itemIds.length; _i8 < _len8; _i8++) {\n var _id5 = itemIds[_i8];\n var _item3 = data2.get(_id5);\n if (_item3 != null) {\n ids.push(_item3[this._idProp]);\n }\n }\n }\n }\n return ids;\n }\n }, {\n key: \"getDataSet\",\n value: function getDataSet() {\n return this;\n }\n }, {\n key: \"forEach\",\n value: function forEach3(callback, options) {\n var filter3 = options && filter$2(options);\n var data2 = this._data;\n var itemIds = toConsumableArray(keys$6(data2).call(data2));\n if (options && options.order) {\n var items = this.get(options);\n for (var i = 0, len = items.length; i < len; i++) {\n var item = items[i];\n var id2 = item[this._idProp];\n callback(item, id2);\n }\n } else {\n for (var _i9 = 0, _len9 = itemIds.length; _i9 < _len9; _i9++) {\n var _id6 = itemIds[_i9];\n var _item4 = this._data.get(_id6);\n if (_item4 != null && (!filter3 || filter3(_item4))) {\n callback(_item4, _id6);\n }\n }\n }\n }\n }, {\n key: \"map\",\n value: function map3(callback, options) {\n var filter3 = options && filter$2(options);\n var mappedItems = [];\n var data2 = this._data;\n var itemIds = toConsumableArray(keys$6(data2).call(data2));\n for (var i = 0, len = itemIds.length; i < len; i++) {\n var id2 = itemIds[i];\n var item = this._data.get(id2);\n if (item != null && (!filter3 || filter3(item))) {\n mappedItems.push(callback(item, id2));\n }\n }\n if (options && options.order) {\n this._sort(mappedItems, options.order);\n }\n return mappedItems;\n }\n }, {\n key: \"_filterFields\",\n value: function _filterFields(item, fields) {\n var _context3;\n if (!item) {\n return item;\n }\n return reduce$2(_context3 = isArray$5(fields) ? fields : keys$3(fields)).call(_context3, function(filteredItem, field) {\n filteredItem[field] = item[field];\n return filteredItem;\n }, {});\n }\n }, {\n key: \"_sort\",\n value: function _sort(items, order) {\n if (typeof order === \"string\") {\n var name = order;\n sort$2(items).call(items, function(a, b) {\n var av = a[name];\n var bv = b[name];\n return av > bv ? 1 : av < bv ? -1 : 0;\n });\n } else if (typeof order === \"function\") {\n sort$2(items).call(items, order);\n } else {\n throw new TypeError(\"Order must be a function or a string\");\n }\n }\n }, {\n key: \"remove\",\n value: function remove(id2, senderId) {\n var removedIds = [];\n var removedItems = [];\n var ids = isArray$5(id2) ? id2 : [id2];\n for (var i = 0, len = ids.length; i < len; i++) {\n var item = this._remove(ids[i]);\n if (item) {\n var itemId = item[this._idProp];\n if (itemId != null) {\n removedIds.push(itemId);\n removedItems.push(item);\n }\n }\n }\n if (removedIds.length) {\n this._trigger(\"remove\", {\n items: removedIds,\n oldData: removedItems\n }, senderId);\n }\n return removedIds;\n }\n }, {\n key: \"_remove\",\n value: function _remove(id2) {\n var ident;\n if (isId(id2)) {\n ident = id2;\n } else if (id2 && _typeof_1(id2) === \"object\") {\n ident = id2[this._idProp];\n }\n if (ident != null && this._data.has(ident)) {\n var item = this._data.get(ident) || null;\n this._data.delete(ident);\n --this.length;\n return item;\n }\n return null;\n }\n }, {\n key: \"clear\",\n value: function clear(senderId) {\n var _context4;\n var ids = toConsumableArray(keys$6(_context4 = this._data).call(_context4));\n var items = [];\n for (var i = 0, len = ids.length; i < len; i++) {\n items.push(this._data.get(ids[i]));\n }\n this._data.clear();\n this.length = 0;\n this._trigger(\"remove\", {\n items: ids,\n oldData: items\n }, senderId);\n return ids;\n }\n }, {\n key: \"max\",\n value: function max2(field) {\n var _context5;\n var max3 = null;\n var maxField = null;\n var _iterator = _createForOfIteratorHelper$2(values$3(_context5 = this._data).call(_context5)), _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done; ) {\n var item = _step.value;\n var itemField = item[field];\n if (typeof itemField === \"number\" && (maxField == null || itemField > maxField)) {\n max3 = item;\n maxField = itemField;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return max3 || null;\n }\n }, {\n key: \"min\",\n value: function min2(field) {\n var _context6;\n var min3 = null;\n var minField = null;\n var _iterator2 = _createForOfIteratorHelper$2(values$3(_context6 = this._data).call(_context6)), _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) {\n var item = _step2.value;\n var itemField = item[field];\n if (typeof itemField === \"number\" && (minField == null || itemField < minField)) {\n min3 = item;\n minField = itemField;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return min3 || null;\n }\n }, {\n key: \"distinct\",\n value: function distinct(prop) {\n var data2 = this._data;\n var itemIds = toConsumableArray(keys$6(data2).call(data2));\n var values3 = [];\n var count = 0;\n for (var i = 0, len = itemIds.length; i < len; i++) {\n var id2 = itemIds[i];\n var item = data2.get(id2);\n var value = item[prop];\n var exists = false;\n for (var j = 0; j < count; j++) {\n if (values3[j] == value) {\n exists = true;\n break;\n }\n }\n if (!exists && value !== void 0) {\n values3[count] = value;\n count++;\n }\n }\n return values3;\n }\n }, {\n key: \"_addItem\",\n value: function _addItem(item) {\n var fullItem = ensureFullItem(item, this._idProp);\n var id2 = fullItem[this._idProp];\n if (this._data.has(id2)) {\n throw new Error(\"Cannot add item: item with id \" + id2 + \" already exists\");\n }\n this._data.set(id2, fullItem);\n ++this.length;\n return id2;\n }\n }, {\n key: \"_updateItem\",\n value: function _updateItem(update) {\n var id2 = update[this._idProp];\n if (id2 == null) {\n throw new Error(\"Cannot update item: item has no id (item: \" + stringify$2(update) + \")\");\n }\n var item = this._data.get(id2);\n if (!item) {\n throw new Error(\"Cannot update item: no item with id \" + id2 + \" found\");\n }\n this._data.set(id2, _objectSpread(_objectSpread({}, item), update));\n return id2;\n }\n }, {\n key: \"stream\",\n value: function stream(ids) {\n if (ids) {\n var data2 = this._data;\n return new DataStream(defineProperty$7({}, iterator$4, /* @__PURE__ */ regenerator.mark(function _callee() {\n var _iterator3, _step3, id2, item;\n return regenerator.wrap(function _callee$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _iterator3 = _createForOfIteratorHelper$2(ids);\n _context7.prev = 1;\n _iterator3.s();\n case 3:\n if ((_step3 = _iterator3.n()).done) {\n _context7.next = 11;\n break;\n }\n id2 = _step3.value;\n item = data2.get(id2);\n if (!(item != null)) {\n _context7.next = 9;\n break;\n }\n _context7.next = 9;\n return [id2, item];\n case 9:\n _context7.next = 3;\n break;\n case 11:\n _context7.next = 16;\n break;\n case 13:\n _context7.prev = 13;\n _context7.t0 = _context7[\"catch\"](1);\n _iterator3.e(_context7.t0);\n case 16:\n _context7.prev = 16;\n _iterator3.f();\n return _context7.finish(16);\n case 19:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee, null, [[1, 13, 16, 19]]);\n })));\n } else {\n var _context8;\n return new DataStream(defineProperty$7({}, iterator$4, bind$2(_context8 = entries$2(this._data)).call(_context8, this._data)));\n }\n }\n }, {\n key: \"idProp\",\n get: function get2() {\n return this._idProp;\n }\n }]);\n return DataSet2;\n}(DataSetPart);\nfunction _createForOfIteratorHelper$3(o, allowArrayLike) {\n var it;\n if (typeof symbol$4 === \"undefined\" || getIteratorMethod$1(o) == null) {\n if (isArray$5(o) || (it = _unsupportedIterableToArray$4(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it)\n o = it;\n var i = 0;\n var F = function F2() {\n };\n return {s: F, n: function n() {\n if (i >= o.length)\n return {done: true};\n return {done: false, value: o[i++]};\n }, e: function e(_e) {\n throw _e;\n }, f: F};\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true, didErr = false, err;\n return {s: function s() {\n it = getIterator$1(o);\n }, n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n }, e: function e(_e2) {\n didErr = true;\n err = _e2;\n }, f: function f2() {\n try {\n if (!normalCompletion && it.return != null)\n it.return();\n } finally {\n if (didErr)\n throw err;\n }\n }};\n}\nfunction _unsupportedIterableToArray$4(o, minLen) {\n var _context5;\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray$4(o, minLen);\n var n = slice$6(_context5 = Object.prototype.toString.call(o)).call(_context5, 8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return from$2(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray$4(o, minLen);\n}\nfunction _arrayLikeToArray$4(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _createSuper$1(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$1();\n return function _createSuperInternal() {\n var Super = getPrototypeOf$3(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf$3(this).constructor;\n result = construct$3(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$1() {\n if (typeof Reflect === \"undefined\" || !construct$3)\n return false;\n if (construct$3.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Date.prototype.toString.call(construct$3(Date, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar DataView = /* @__PURE__ */ function(_DataSetPart) {\n inherits(DataView2, _DataSetPart);\n var _super = _createSuper$1(DataView2);\n function DataView2(data2, options) {\n var _context;\n var _this;\n classCallCheck(this, DataView2);\n _this = _super.call(this);\n _this.length = 0;\n _this._ids = new set$3();\n _this._options = options || {};\n _this._listener = bind$2(_context = _this._onEvent).call(_context, assertThisInitialized(_this));\n _this.setData(data2);\n return _this;\n }\n createClass(DataView2, [{\n key: \"setData\",\n value: function setData(data2) {\n if (this._data) {\n if (this._data.off) {\n this._data.off(\"*\", this._listener);\n }\n var ids = this._data.getIds({\n filter: filter$2(this._options)\n });\n var items = this._data.get(ids);\n this._ids.clear();\n this.length = 0;\n this._trigger(\"remove\", {\n items: ids,\n oldData: items\n });\n }\n if (data2 != null) {\n this._data = data2;\n var _ids = this._data.getIds({\n filter: filter$2(this._options)\n });\n for (var i = 0, len = _ids.length; i < len; i++) {\n var id2 = _ids[i];\n this._ids.add(id2);\n }\n this.length = _ids.length;\n this._trigger(\"add\", {\n items: _ids\n });\n } else {\n this._data = new DataSet();\n }\n if (this._data.on) {\n this._data.on(\"*\", this._listener);\n }\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n var ids = this._data.getIds({\n filter: filter$2(this._options)\n });\n var oldIds = toConsumableArray(this._ids);\n var newIds = {};\n var addedIds = [];\n var removedIds = [];\n var removedItems = [];\n for (var i = 0, len = ids.length; i < len; i++) {\n var id2 = ids[i];\n newIds[id2] = true;\n if (!this._ids.has(id2)) {\n addedIds.push(id2);\n this._ids.add(id2);\n }\n }\n for (var _i = 0, _len = oldIds.length; _i < _len; _i++) {\n var _id = oldIds[_i];\n var item = this._data.get(_id);\n if (item == null) {\n console.error(\"If you see this, report it please.\");\n } else if (!newIds[_id]) {\n removedIds.push(_id);\n removedItems.push(item);\n this._ids.delete(_id);\n }\n }\n this.length += addedIds.length - removedIds.length;\n if (addedIds.length) {\n this._trigger(\"add\", {\n items: addedIds\n });\n }\n if (removedIds.length) {\n this._trigger(\"remove\", {\n items: removedIds,\n oldData: removedItems\n });\n }\n }\n }, {\n key: \"get\",\n value: function get2(first, second) {\n if (this._data == null) {\n return null;\n }\n var ids = null;\n var options;\n if (isId(first) || isArray$5(first)) {\n ids = first;\n options = second;\n } else {\n options = first;\n }\n var viewOptions = assign$2({}, this._options, options);\n var thisFilter = filter$2(this._options);\n var optionsFilter = options && filter$2(options);\n if (thisFilter && optionsFilter) {\n viewOptions.filter = function(item) {\n return thisFilter(item) && optionsFilter(item);\n };\n }\n if (ids == null) {\n return this._data.get(viewOptions);\n } else {\n return this._data.get(ids, viewOptions);\n }\n }\n }, {\n key: \"getIds\",\n value: function getIds(options) {\n if (this._data.length) {\n var defaultFilter = filter$2(this._options);\n var optionsFilter = options != null ? filter$2(options) : null;\n var filter3;\n if (optionsFilter) {\n if (defaultFilter) {\n filter3 = function filter4(item) {\n return defaultFilter(item) && optionsFilter(item);\n };\n } else {\n filter3 = optionsFilter;\n }\n } else {\n filter3 = defaultFilter;\n }\n return this._data.getIds({\n filter: filter3,\n order: options && options.order\n });\n } else {\n return [];\n }\n }\n }, {\n key: \"forEach\",\n value: function forEach3(callback, options) {\n if (this._data) {\n var _context2;\n var defaultFilter = filter$2(this._options);\n var optionsFilter = options && filter$2(options);\n var filter3;\n if (optionsFilter) {\n if (defaultFilter) {\n filter3 = function filter4(item) {\n return defaultFilter(item) && optionsFilter(item);\n };\n } else {\n filter3 = optionsFilter;\n }\n } else {\n filter3 = defaultFilter;\n }\n forEach$2(_context2 = this._data).call(_context2, callback, {\n filter: filter3,\n order: options && options.order\n });\n }\n }\n }, {\n key: \"map\",\n value: function map3(callback, options) {\n if (this._data) {\n var _context3;\n var defaultFilter = filter$2(this._options);\n var optionsFilter = options && filter$2(options);\n var filter3;\n if (optionsFilter) {\n if (defaultFilter) {\n filter3 = function filter4(item) {\n return defaultFilter(item) && optionsFilter(item);\n };\n } else {\n filter3 = optionsFilter;\n }\n } else {\n filter3 = defaultFilter;\n }\n return map$2(_context3 = this._data).call(_context3, callback, {\n filter: filter3,\n order: options && options.order\n });\n } else {\n return [];\n }\n }\n }, {\n key: \"getDataSet\",\n value: function getDataSet() {\n return this._data.getDataSet();\n }\n }, {\n key: \"stream\",\n value: function stream(ids) {\n var _context4;\n return this._data.stream(ids || defineProperty$7({}, iterator$4, bind$2(_context4 = keys$6(this._ids)).call(_context4, this._ids)));\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n var _this$_data;\n if ((_this$_data = this._data) !== null && _this$_data !== void 0 && _this$_data.off) {\n this._data.off(\"*\", this._listener);\n }\n var message = \"This data view has already been disposed of.\";\n var replacement2 = {\n get: function get2() {\n throw new Error(message);\n },\n set: function set2() {\n throw new Error(message);\n },\n configurable: false\n };\n var _iterator = _createForOfIteratorHelper$3(ownKeys$3(DataView2.prototype)), _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done; ) {\n var key = _step.value;\n defineProperty$4(this, key, replacement2);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"_onEvent\",\n value: function _onEvent(event, params, senderId) {\n if (!params || !params.items || !this._data) {\n return;\n }\n var ids = params.items;\n var addedIds = [];\n var updatedIds = [];\n var removedIds = [];\n var oldItems = [];\n var updatedItems = [];\n var removedItems = [];\n switch (event) {\n case \"add\":\n for (var i = 0, len = ids.length; i < len; i++) {\n var id2 = ids[i];\n var item = this.get(id2);\n if (item) {\n this._ids.add(id2);\n addedIds.push(id2);\n }\n }\n break;\n case \"update\":\n for (var _i2 = 0, _len2 = ids.length; _i2 < _len2; _i2++) {\n var _id2 = ids[_i2];\n var _item = this.get(_id2);\n if (_item) {\n if (this._ids.has(_id2)) {\n updatedIds.push(_id2);\n updatedItems.push(params.data[_i2]);\n oldItems.push(params.oldData[_i2]);\n } else {\n this._ids.add(_id2);\n addedIds.push(_id2);\n }\n } else {\n if (this._ids.has(_id2)) {\n this._ids.delete(_id2);\n removedIds.push(_id2);\n removedItems.push(params.oldData[_i2]);\n }\n }\n }\n break;\n case \"remove\":\n for (var _i3 = 0, _len3 = ids.length; _i3 < _len3; _i3++) {\n var _id3 = ids[_i3];\n if (this._ids.has(_id3)) {\n this._ids.delete(_id3);\n removedIds.push(_id3);\n removedItems.push(params.oldData[_i3]);\n }\n }\n break;\n }\n this.length += addedIds.length - removedIds.length;\n if (addedIds.length) {\n this._trigger(\"add\", {\n items: addedIds\n }, senderId);\n }\n if (updatedIds.length) {\n this._trigger(\"update\", {\n items: updatedIds,\n oldData: oldItems,\n data: updatedItems\n }, senderId);\n }\n if (removedIds.length) {\n this._trigger(\"remove\", {\n items: removedIds,\n oldData: removedItems\n }, senderId);\n }\n }\n }, {\n key: \"idProp\",\n get: function get2() {\n return this.getDataSet().idProp;\n }\n }]);\n return DataView2;\n}(DataSetPart);\nfunction isDataSetLike(idProp, v) {\n return _typeof_1(v) === \"object\" && v !== null && idProp === v.idProp && typeof v.add === \"function\" && typeof v.clear === \"function\" && typeof v.distinct === \"function\" && typeof forEach$2(v) === \"function\" && typeof v.get === \"function\" && typeof v.getDataSet === \"function\" && typeof v.getIds === \"function\" && typeof v.length === \"number\" && typeof map$2(v) === \"function\" && typeof v.max === \"function\" && typeof v.min === \"function\" && typeof v.off === \"function\" && typeof v.on === \"function\" && typeof v.remove === \"function\" && typeof v.setOptions === \"function\" && typeof v.stream === \"function\" && typeof v.update === \"function\" && typeof v.updateOnly === \"function\";\n}\nfunction isDataViewLike(idProp, v) {\n return _typeof_1(v) === \"object\" && v !== null && idProp === v.idProp && typeof forEach$2(v) === \"function\" && typeof v.get === \"function\" && typeof v.getDataSet === \"function\" && typeof v.getIds === \"function\" && typeof v.length === \"number\" && typeof map$2(v) === \"function\" && typeof v.off === \"function\" && typeof v.on === \"function\" && typeof v.stream === \"function\" && isDataSetLike(idProp, v.getDataSet());\n}\nexport {DELETE, DataSet, DataStream, DataView, Queue, createNewDataPipeFrom, isDataSetLike, isDataViewLike};\nexport default null;\n", "import {isDataViewLike, DataSet} from \"/-/vis-data@v7.1.2-Hmjz690asEJqy8TmOPRy/dist=es2019,mode=imports/optimized/vis-data.js\";\nvar global$1 = typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {};\nvar commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global$1 !== \"undefined\" ? global$1 : typeof self !== \"undefined\" ? self : {};\nvar check = function(it2) {\n return it2 && it2.Math == Math && it2;\n};\nvar global$k = check(typeof globalThis == \"object\" && globalThis) || check(typeof window == \"object\" && window) || check(typeof self == \"object\" && self) || check(typeof commonjsGlobal == \"object\" && commonjsGlobal) || function() {\n return this;\n}() || Function(\"return this\")();\nvar objectGetOwnPropertyDescriptor = {};\nvar fails$m = function(exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\nvar fails$l = fails$m;\nvar descriptors = !fails$l(function() {\n return Object.defineProperty({}, 1, {\n get: function() {\n return 7;\n }\n })[1] != 7;\n});\nvar objectPropertyIsEnumerable = {};\nvar $propertyIsEnumerable$1 = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor$7 = Object.getOwnPropertyDescriptor;\nvar NASHORN_BUG = getOwnPropertyDescriptor$7 && !$propertyIsEnumerable$1.call({\n 1: 2\n}, 1);\nobjectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor$7(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable$1;\nvar createPropertyDescriptor$5 = function(bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value\n };\n};\nvar toString$a = {}.toString;\nvar classofRaw$1 = function(it2) {\n return toString$a.call(it2).slice(8, -1);\n};\nvar fails$k = fails$m;\nvar classof$9 = classofRaw$1;\nvar split = \"\".split;\nvar indexedObject = fails$k(function() {\n return !Object(\"z\").propertyIsEnumerable(0);\n}) ? function(it2) {\n return classof$9(it2) == \"String\" ? split.call(it2, \"\") : Object(it2);\n} : Object;\nvar requireObjectCoercible$5 = function(it2) {\n if (it2 == void 0)\n throw TypeError(\"Can't call method on \" + it2);\n return it2;\n};\nvar IndexedObject$3 = indexedObject;\nvar requireObjectCoercible$4 = requireObjectCoercible$5;\nvar toIndexedObject$a = function(it2) {\n return IndexedObject$3(requireObjectCoercible$4(it2));\n};\nvar isObject$j = function(it2) {\n return typeof it2 === \"object\" ? it2 !== null : typeof it2 === \"function\";\n};\nvar path$x = {};\nvar path$w = path$x;\nvar global$j = global$k;\nvar aFunction$6 = function(variable) {\n return typeof variable == \"function\" ? variable : void 0;\n};\nvar getBuiltIn$8 = function(namespace, method) {\n return arguments.length < 2 ? aFunction$6(path$w[namespace]) || aFunction$6(global$j[namespace]) : path$w[namespace] && path$w[namespace][method] || global$j[namespace] && global$j[namespace][method];\n};\nvar getBuiltIn$7 = getBuiltIn$8;\nvar engineUserAgent = getBuiltIn$7(\"navigator\", \"userAgent\") || \"\";\nvar global$i = global$k;\nvar userAgent$3 = engineUserAgent;\nvar process = global$i.process;\nvar Deno = global$i.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\nif (v8) {\n match = v8.split(\".\");\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent$3) {\n match = userAgent$3.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent$3.match(/Chrome\\/(\\d+)/);\n if (match)\n version = match[1];\n }\n}\nvar engineV8Version = version && +version;\nvar V8_VERSION$2 = engineV8Version;\nvar fails$j = fails$m;\nvar nativeSymbol = !!Object.getOwnPropertySymbols && !fails$j(function() {\n var symbol2 = Symbol();\n return !String(symbol2) || !(Object(symbol2) instanceof Symbol) || !Symbol.sham && V8_VERSION$2 && V8_VERSION$2 < 41;\n});\nvar NATIVE_SYMBOL$2 = nativeSymbol;\nvar useSymbolAsUid = NATIVE_SYMBOL$2 && !Symbol.sham && typeof Symbol.iterator == \"symbol\";\nvar getBuiltIn$6 = getBuiltIn$8;\nvar USE_SYMBOL_AS_UID$1 = useSymbolAsUid;\nvar isSymbol$4 = USE_SYMBOL_AS_UID$1 ? function(it2) {\n return typeof it2 == \"symbol\";\n} : function(it2) {\n var $Symbol2 = getBuiltIn$6(\"Symbol\");\n return typeof $Symbol2 == \"function\" && Object(it2) instanceof $Symbol2;\n};\nvar isObject$i = isObject$j;\nvar ordinaryToPrimitive$1 = function(input, pref) {\n var fn, val;\n if (pref === \"string\" && typeof (fn = input.toString) == \"function\" && !isObject$i(val = fn.call(input)))\n return val;\n if (typeof (fn = input.valueOf) == \"function\" && !isObject$i(val = fn.call(input)))\n return val;\n if (pref !== \"string\" && typeof (fn = input.toString) == \"function\" && !isObject$i(val = fn.call(input)))\n return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\nvar shared$4 = {exports: {}};\nvar global$h = global$k;\nvar setGlobal$1 = function(key, value) {\n try {\n Object.defineProperty(global$h, key, {\n value,\n configurable: true,\n writable: true\n });\n } catch (error) {\n global$h[key] = value;\n }\n return value;\n};\nvar global$g = global$k;\nvar setGlobal = setGlobal$1;\nvar SHARED = \"__core-js_shared__\";\nvar store$3 = global$g[SHARED] || setGlobal(SHARED, {});\nvar sharedStore = store$3;\nvar store$2 = sharedStore;\n(shared$4.exports = function(key, value) {\n return store$2[key] || (store$2[key] = value !== void 0 ? value : {});\n})(\"versions\", []).push({\n version: \"3.16.1\",\n mode: \"pure\",\n copyright: \"\\xA9 2021 Denis Pushkarev (zloirock.ru)\"\n});\nvar requireObjectCoercible$3 = requireObjectCoercible$5;\nvar toObject$d = function(argument) {\n return Object(requireObjectCoercible$3(argument));\n};\nvar toObject$c = toObject$d;\nvar hasOwnProperty = {}.hasOwnProperty;\nvar has$c = Object.hasOwn || function hasOwn(it2, key) {\n return hasOwnProperty.call(toObject$c(it2), key);\n};\nvar id$2 = 0;\nvar postfix = Math.random();\nvar uid$4 = function(key) {\n return \"Symbol(\" + String(key === void 0 ? \"\" : key) + \")_\" + (++id$2 + postfix).toString(36);\n};\nvar global$f = global$k;\nvar shared$3 = shared$4.exports;\nvar has$b = has$c;\nvar uid$3 = uid$4;\nvar NATIVE_SYMBOL$1 = nativeSymbol;\nvar USE_SYMBOL_AS_UID = useSymbolAsUid;\nvar WellKnownSymbolsStore$1 = shared$3(\"wks\");\nvar Symbol$1 = global$f.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid$3;\nvar wellKnownSymbol$j = function(name) {\n if (!has$b(WellKnownSymbolsStore$1, name) || !(NATIVE_SYMBOL$1 || typeof WellKnownSymbolsStore$1[name] == \"string\")) {\n if (NATIVE_SYMBOL$1 && has$b(Symbol$1, name)) {\n WellKnownSymbolsStore$1[name] = Symbol$1[name];\n } else {\n WellKnownSymbolsStore$1[name] = createWellKnownSymbol(\"Symbol.\" + name);\n }\n }\n return WellKnownSymbolsStore$1[name];\n};\nvar isObject$h = isObject$j;\nvar isSymbol$3 = isSymbol$4;\nvar ordinaryToPrimitive = ordinaryToPrimitive$1;\nvar wellKnownSymbol$i = wellKnownSymbol$j;\nvar TO_PRIMITIVE$1 = wellKnownSymbol$i(\"toPrimitive\");\nvar toPrimitive$1 = function(input, pref) {\n if (!isObject$h(input) || isSymbol$3(input))\n return input;\n var exoticToPrim = input[TO_PRIMITIVE$1];\n var result;\n if (exoticToPrim !== void 0) {\n if (pref === void 0)\n pref = \"default\";\n result = exoticToPrim.call(input, pref);\n if (!isObject$h(result) || isSymbol$3(result))\n return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === void 0)\n pref = \"number\";\n return ordinaryToPrimitive(input, pref);\n};\nvar toPrimitive = toPrimitive$1;\nvar isSymbol$2 = isSymbol$4;\nvar toPropertyKey$4 = function(argument) {\n var key = toPrimitive(argument, \"string\");\n return isSymbol$2(key) ? key : String(key);\n};\nvar global$e = global$k;\nvar isObject$g = isObject$j;\nvar document$1 = global$e.document;\nvar EXISTS = isObject$g(document$1) && isObject$g(document$1.createElement);\nvar documentCreateElement$1 = function(it2) {\n return EXISTS ? document$1.createElement(it2) : {};\n};\nvar DESCRIPTORS$f = descriptors;\nvar fails$i = fails$m;\nvar createElement = documentCreateElement$1;\nvar ie8DomDefine = !DESCRIPTORS$f && !fails$i(function() {\n return Object.defineProperty(createElement(\"div\"), \"a\", {\n get: function() {\n return 7;\n }\n }).a != 7;\n});\nvar DESCRIPTORS$e = descriptors;\nvar propertyIsEnumerableModule$2 = objectPropertyIsEnumerable;\nvar createPropertyDescriptor$4 = createPropertyDescriptor$5;\nvar toIndexedObject$9 = toIndexedObject$a;\nvar toPropertyKey$3 = toPropertyKey$4;\nvar has$a = has$c;\nvar IE8_DOM_DEFINE$1 = ie8DomDefine;\nvar $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor;\nobjectGetOwnPropertyDescriptor.f = DESCRIPTORS$e ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject$9(O);\n P = toPropertyKey$3(P);\n if (IE8_DOM_DEFINE$1)\n try {\n return $getOwnPropertyDescriptor$1(O, P);\n } catch (error) {\n }\n if (has$a(O, P))\n return createPropertyDescriptor$4(!propertyIsEnumerableModule$2.f.call(O, P), O[P]);\n};\nvar fails$h = fails$m;\nvar replacement = /#|\\.prototype\\./;\nvar isForced$1 = function(feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == \"function\" ? fails$h(detection) : !!detection;\n};\nvar normalize = isForced$1.normalize = function(string2) {\n return String(string2).replace(replacement, \".\").toLowerCase();\n};\nvar data = isForced$1.data = {};\nvar NATIVE = isForced$1.NATIVE = \"N\";\nvar POLYFILL = isForced$1.POLYFILL = \"P\";\nvar isForced_1 = isForced$1;\nvar aFunction$5 = function(it2) {\n if (typeof it2 != \"function\") {\n throw TypeError(String(it2) + \" is not a function\");\n }\n return it2;\n};\nvar aFunction$4 = aFunction$5;\nvar functionBindContext = function(fn, that, length2) {\n aFunction$4(fn);\n if (that === void 0)\n return fn;\n switch (length2) {\n case 0:\n return function() {\n return fn.call(that);\n };\n case 1:\n return function(a) {\n return fn.call(that, a);\n };\n case 2:\n return function(a, b) {\n return fn.call(that, a, b);\n };\n case 3:\n return function(a, b, c2) {\n return fn.call(that, a, b, c2);\n };\n }\n return function() {\n return fn.apply(that, arguments);\n };\n};\nvar objectDefineProperty = {};\nvar isObject$f = isObject$j;\nvar anObject$c = function(it2) {\n if (!isObject$f(it2)) {\n throw TypeError(String(it2) + \" is not an object\");\n }\n return it2;\n};\nvar DESCRIPTORS$d = descriptors;\nvar IE8_DOM_DEFINE = ie8DomDefine;\nvar anObject$b = anObject$c;\nvar toPropertyKey$2 = toPropertyKey$4;\nvar $defineProperty$1 = Object.defineProperty;\nobjectDefineProperty.f = DESCRIPTORS$d ? $defineProperty$1 : function defineProperty(O, P, Attributes) {\n anObject$b(O);\n P = toPropertyKey$2(P);\n anObject$b(Attributes);\n if (IE8_DOM_DEFINE)\n try {\n return $defineProperty$1(O, P, Attributes);\n } catch (error) {\n }\n if (\"get\" in Attributes || \"set\" in Attributes)\n throw TypeError(\"Accessors not supported\");\n if (\"value\" in Attributes)\n O[P] = Attributes.value;\n return O;\n};\nvar DESCRIPTORS$c = descriptors;\nvar definePropertyModule$4 = objectDefineProperty;\nvar createPropertyDescriptor$3 = createPropertyDescriptor$5;\nvar createNonEnumerableProperty$9 = DESCRIPTORS$c ? function(object2, key, value) {\n return definePropertyModule$4.f(object2, key, createPropertyDescriptor$3(1, value));\n} : function(object2, key, value) {\n object2[key] = value;\n return object2;\n};\nvar global$d = global$k;\nvar getOwnPropertyDescriptor$6 = objectGetOwnPropertyDescriptor.f;\nvar isForced = isForced_1;\nvar path$v = path$x;\nvar bind$a = functionBindContext;\nvar createNonEnumerableProperty$8 = createNonEnumerableProperty$9;\nvar has$9 = has$c;\nvar wrapConstructor = function(NativeConstructor) {\n var Wrapper = function(a, b, c2) {\n if (this instanceof NativeConstructor) {\n switch (arguments.length) {\n case 0:\n return new NativeConstructor();\n case 1:\n return new NativeConstructor(a);\n case 2:\n return new NativeConstructor(a, b);\n }\n return new NativeConstructor(a, b, c2);\n }\n return NativeConstructor.apply(this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\nvar _export = function(options2, source) {\n var TARGET = options2.target;\n var GLOBAL = options2.global;\n var STATIC = options2.stat;\n var PROTO = options2.proto;\n var nativeSource = GLOBAL ? global$d : STATIC ? global$d[TARGET] : (global$d[TARGET] || {}).prototype;\n var target = GLOBAL ? path$v : path$v[TARGET] || (path$v[TARGET] = {});\n var targetPrototype = target.prototype;\n var FORCED2, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n for (key in source) {\n FORCED2 = isForced(GLOBAL ? key : TARGET + (STATIC ? \".\" : \"#\") + key, options2.forced);\n USE_NATIVE = !FORCED2 && nativeSource && has$9(nativeSource, key);\n targetProperty = target[key];\n if (USE_NATIVE)\n if (options2.noTargetGet) {\n descriptor = getOwnPropertyDescriptor$6(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else\n nativeProperty = nativeSource[key];\n sourceProperty = USE_NATIVE && nativeProperty ? nativeProperty : source[key];\n if (USE_NATIVE && typeof targetProperty === typeof sourceProperty)\n continue;\n if (options2.bind && USE_NATIVE)\n resultProperty = bind$a(sourceProperty, global$d);\n else if (options2.wrap && USE_NATIVE)\n resultProperty = wrapConstructor(sourceProperty);\n else if (PROTO && typeof sourceProperty == \"function\")\n resultProperty = bind$a(Function.call, sourceProperty);\n else\n resultProperty = sourceProperty;\n if (options2.sham || sourceProperty && sourceProperty.sham || targetProperty && targetProperty.sham) {\n createNonEnumerableProperty$8(resultProperty, \"sham\", true);\n }\n target[key] = resultProperty;\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + \"Prototype\";\n if (!has$9(path$v, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty$8(path$v, VIRTUAL_PROTOTYPE, {});\n }\n path$v[VIRTUAL_PROTOTYPE][key] = sourceProperty;\n if (options2.real && targetPrototype && !targetPrototype[key]) {\n createNonEnumerableProperty$8(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\nvar ceil = Math.ceil;\nvar floor$1 = Math.floor;\nvar toInteger$4 = function(argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor$1 : ceil)(argument);\n};\nvar toInteger$3 = toInteger$4;\nvar min$2 = Math.min;\nvar toLength$a = function(argument) {\n return argument > 0 ? min$2(toInteger$3(argument), 9007199254740991) : 0;\n};\nvar toInteger$2 = toInteger$4;\nvar max$2 = Math.max;\nvar min$1 = Math.min;\nvar toAbsoluteIndex$4 = function(index2, length2) {\n var integer = toInteger$2(index2);\n return integer < 0 ? max$2(integer + length2, 0) : min$1(integer, length2);\n};\nvar toIndexedObject$8 = toIndexedObject$a;\nvar toLength$9 = toLength$a;\nvar toAbsoluteIndex$3 = toAbsoluteIndex$4;\nvar createMethod$5 = function(IS_INCLUDES) {\n return function($this, el, fromIndex) {\n var O = toIndexedObject$8($this);\n var length2 = toLength$9(O.length);\n var index2 = toAbsoluteIndex$3(fromIndex, length2);\n var value;\n if (IS_INCLUDES && el != el)\n while (length2 > index2) {\n value = O[index2++];\n if (value != value)\n return true;\n }\n else\n for (; length2 > index2; index2++) {\n if ((IS_INCLUDES || index2 in O) && O[index2] === el)\n return IS_INCLUDES || index2 || 0;\n }\n return !IS_INCLUDES && -1;\n };\n};\nvar arrayIncludes$1 = {\n includes: createMethod$5(true),\n indexOf: createMethod$5(false)\n};\nvar hiddenKeys$6 = {};\nvar has$8 = has$c;\nvar toIndexedObject$7 = toIndexedObject$a;\nvar indexOf$4 = arrayIncludes$1.indexOf;\nvar hiddenKeys$5 = hiddenKeys$6;\nvar objectKeysInternal = function(object2, names) {\n var O = toIndexedObject$7(object2);\n var i = 0;\n var result = [];\n var key;\n for (key in O)\n !has$8(hiddenKeys$5, key) && has$8(O, key) && result.push(key);\n while (names.length > i)\n if (has$8(O, key = names[i++])) {\n ~indexOf$4(result, key) || result.push(key);\n }\n return result;\n};\nvar enumBugKeys$3 = [\"constructor\", \"hasOwnProperty\", \"isPrototypeOf\", \"propertyIsEnumerable\", \"toLocaleString\", \"toString\", \"valueOf\"];\nvar internalObjectKeys$1 = objectKeysInternal;\nvar enumBugKeys$2 = enumBugKeys$3;\nvar objectKeys$4 = Object.keys || function keys(O) {\n return internalObjectKeys$1(O, enumBugKeys$2);\n};\nvar objectGetOwnPropertySymbols = {};\nobjectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols;\nvar DESCRIPTORS$b = descriptors;\nvar fails$g = fails$m;\nvar objectKeys$3 = objectKeys$4;\nvar getOwnPropertySymbolsModule$2 = objectGetOwnPropertySymbols;\nvar propertyIsEnumerableModule$1 = objectPropertyIsEnumerable;\nvar toObject$b = toObject$d;\nvar IndexedObject$2 = indexedObject;\nvar $assign = Object.assign;\nvar defineProperty$b = Object.defineProperty;\nvar objectAssign = !$assign || fails$g(function() {\n if (DESCRIPTORS$b && $assign({\n b: 1\n }, $assign(defineProperty$b({}, \"a\", {\n enumerable: true,\n get: function() {\n defineProperty$b(this, \"b\", {\n value: 3,\n enumerable: false\n });\n }\n }), {\n b: 2\n })).b !== 1)\n return true;\n var A = {};\n var B = {};\n var symbol2 = Symbol();\n var alphabet = \"abcdefghijklmnopqrst\";\n A[symbol2] = 7;\n alphabet.split(\"\").forEach(function(chr) {\n B[chr] = chr;\n });\n return $assign({}, A)[symbol2] != 7 || objectKeys$3($assign({}, B)).join(\"\") != alphabet;\n}) ? function assign(target, source) {\n var T = toObject$b(target);\n var argumentsLength = arguments.length;\n var index2 = 1;\n var getOwnPropertySymbols4 = getOwnPropertySymbolsModule$2.f;\n var propertyIsEnumerable4 = propertyIsEnumerableModule$1.f;\n while (argumentsLength > index2) {\n var S = IndexedObject$2(arguments[index2++]);\n var keys4 = getOwnPropertySymbols4 ? objectKeys$3(S).concat(getOwnPropertySymbols4(S)) : objectKeys$3(S);\n var length2 = keys4.length;\n var j = 0;\n var key;\n while (length2 > j) {\n key = keys4[j++];\n if (!DESCRIPTORS$b || propertyIsEnumerable4.call(S, key))\n T[key] = S[key];\n }\n }\n return T;\n} : $assign;\nvar $$I = _export;\nvar assign$5 = objectAssign;\n$$I({\n target: \"Object\",\n stat: true,\n forced: Object.assign !== assign$5\n}, {\n assign: assign$5\n});\nvar path$u = path$x;\nvar assign$4 = path$u.Object.assign;\nvar parent$T = assign$4;\nvar assign$3 = parent$T;\nvar assign$2 = assign$3;\nvar aFunction$3 = aFunction$5;\nvar isObject$e = isObject$j;\nvar slice$7 = [].slice;\nvar factories = {};\nvar construct$3 = function(C, argsLength, args) {\n if (!(argsLength in factories)) {\n for (var list = [], i = 0; i < argsLength; i++)\n list[i] = \"a[\" + i + \"]\";\n factories[argsLength] = Function(\"C,a\", \"return new C(\" + list.join(\",\") + \")\");\n }\n return factories[argsLength](C, args);\n};\nvar functionBind = Function.bind || function bind(that) {\n var fn = aFunction$3(this);\n var partArgs = slice$7.call(arguments, 1);\n var boundFunction = function bound() {\n var args = partArgs.concat(slice$7.call(arguments));\n return this instanceof boundFunction ? construct$3(fn, args.length, args) : fn.apply(that, args);\n };\n if (isObject$e(fn.prototype))\n boundFunction.prototype = fn.prototype;\n return boundFunction;\n};\nvar $$H = _export;\nvar bind$9 = functionBind;\n$$H({\n target: \"Function\",\n proto: true\n}, {\n bind: bind$9\n});\nvar path$t = path$x;\nvar entryVirtual$i = function(CONSTRUCTOR) {\n return path$t[CONSTRUCTOR + \"Prototype\"];\n};\nvar entryVirtual$h = entryVirtual$i;\nvar bind$8 = entryVirtual$h(\"Function\").bind;\nvar bind$7 = bind$8;\nvar FunctionPrototype = Function.prototype;\nvar bind_1 = function(it2) {\n var own = it2.bind;\n return it2 === FunctionPrototype || it2 instanceof Function && own === FunctionPrototype.bind ? bind$7 : own;\n};\nvar parent$S = bind_1;\nvar bind$6 = parent$S;\nvar bind$5 = bind$6;\nfunction drawCircle(ctx, x, y, r) {\n ctx.beginPath();\n ctx.arc(x, y, r, 0, 2 * Math.PI, false);\n ctx.closePath();\n}\nfunction drawSquare(ctx, x, y, r) {\n ctx.beginPath();\n ctx.rect(x - r, y - r, r * 2, r * 2);\n ctx.closePath();\n}\nfunction drawTriangle(ctx, x, y, r) {\n ctx.beginPath();\n r *= 1.15;\n y += 0.275 * r;\n var s = r * 2;\n var s2 = s / 2;\n var ir = Math.sqrt(3) / 6 * s;\n var h = Math.sqrt(s * s - s2 * s2);\n ctx.moveTo(x, y - (h - ir));\n ctx.lineTo(x + s2, y + ir);\n ctx.lineTo(x - s2, y + ir);\n ctx.lineTo(x, y - (h - ir));\n ctx.closePath();\n}\nfunction drawTriangleDown(ctx, x, y, r) {\n ctx.beginPath();\n r *= 1.15;\n y -= 0.275 * r;\n var s = r * 2;\n var s2 = s / 2;\n var ir = Math.sqrt(3) / 6 * s;\n var h = Math.sqrt(s * s - s2 * s2);\n ctx.moveTo(x, y + (h - ir));\n ctx.lineTo(x + s2, y - ir);\n ctx.lineTo(x - s2, y - ir);\n ctx.lineTo(x, y + (h - ir));\n ctx.closePath();\n}\nfunction drawStar(ctx, x, y, r) {\n ctx.beginPath();\n r *= 0.82;\n y += 0.1 * r;\n for (var n = 0; n < 10; n++) {\n var radius = n % 2 === 0 ? r * 1.3 : r * 0.5;\n ctx.lineTo(x + radius * Math.sin(n * 2 * Math.PI / 10), y - radius * Math.cos(n * 2 * Math.PI / 10));\n }\n ctx.closePath();\n}\nfunction drawDiamond(ctx, x, y, r) {\n ctx.beginPath();\n ctx.lineTo(x, y + r);\n ctx.lineTo(x + r, y);\n ctx.lineTo(x, y - r);\n ctx.lineTo(x - r, y);\n ctx.closePath();\n}\nfunction drawRoundRect(ctx, x, y, w, h, r) {\n var r2d = Math.PI / 180;\n if (w - 2 * r < 0) {\n r = w / 2;\n }\n if (h - 2 * r < 0) {\n r = h / 2;\n }\n ctx.beginPath();\n ctx.moveTo(x + r, y);\n ctx.lineTo(x + w - r, y);\n ctx.arc(x + w - r, y + r, r, r2d * 270, r2d * 360, false);\n ctx.lineTo(x + w, y + h - r);\n ctx.arc(x + w - r, y + h - r, r, 0, r2d * 90, false);\n ctx.lineTo(x + r, y + h);\n ctx.arc(x + r, y + h - r, r, r2d * 90, r2d * 180, false);\n ctx.lineTo(x, y + r);\n ctx.arc(x + r, y + r, r, r2d * 180, r2d * 270, false);\n ctx.closePath();\n}\nfunction drawEllipse(ctx, x, y, w, h) {\n var kappa = 0.5522848, ox = w / 2 * kappa, oy = h / 2 * kappa, xe = x + w, ye = y + h, xm = x + w / 2, ym = y + h / 2;\n ctx.beginPath();\n ctx.moveTo(x, ym);\n ctx.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);\n ctx.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);\n ctx.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);\n ctx.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);\n ctx.closePath();\n}\nfunction drawDatabase(ctx, x, y, w, h) {\n var f = 1 / 3;\n var wEllipse = w;\n var hEllipse = h * f;\n var kappa = 0.5522848, ox = wEllipse / 2 * kappa, oy = hEllipse / 2 * kappa, xe = x + wEllipse, ye = y + hEllipse, xm = x + wEllipse / 2, ym = y + hEllipse / 2, ymb = y + (h - hEllipse / 2), yeb = y + h;\n ctx.beginPath();\n ctx.moveTo(xe, ym);\n ctx.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);\n ctx.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);\n ctx.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);\n ctx.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);\n ctx.lineTo(xe, ymb);\n ctx.bezierCurveTo(xe, ymb + oy, xm + ox, yeb, xm, yeb);\n ctx.bezierCurveTo(xm - ox, yeb, x, ymb + oy, x, ymb);\n ctx.lineTo(x, ym);\n}\nfunction drawDashedLine(ctx, x, y, x2, y2, pattern) {\n ctx.beginPath();\n ctx.moveTo(x, y);\n var patternLength = pattern.length;\n var dx = x2 - x;\n var dy = y2 - y;\n var slope = dy / dx;\n var distRemaining = Math.sqrt(dx * dx + dy * dy);\n var patternIndex = 0;\n var draw = true;\n var xStep = 0;\n var dashLength = +pattern[0];\n while (distRemaining >= 0.1) {\n dashLength = +pattern[patternIndex++ % patternLength];\n if (dashLength > distRemaining) {\n dashLength = distRemaining;\n }\n xStep = Math.sqrt(dashLength * dashLength / (1 + slope * slope));\n xStep = dx < 0 ? -xStep : xStep;\n x += xStep;\n y += slope * xStep;\n if (draw === true) {\n ctx.lineTo(x, y);\n } else {\n ctx.moveTo(x, y);\n }\n distRemaining -= dashLength;\n draw = !draw;\n }\n}\nfunction drawHexagon(ctx, x, y, r) {\n ctx.beginPath();\n var sides = 6;\n var a = Math.PI * 2 / sides;\n ctx.moveTo(x + r, y);\n for (var i = 1; i < sides; i++) {\n ctx.lineTo(x + r * Math.cos(a * i), y + r * Math.sin(a * i));\n }\n ctx.closePath();\n}\nvar shapeMap = {\n circle: drawCircle,\n dashedLine: drawDashedLine,\n database: drawDatabase,\n diamond: drawDiamond,\n ellipse: drawEllipse,\n ellipse_vis: drawEllipse,\n hexagon: drawHexagon,\n roundRect: drawRoundRect,\n square: drawSquare,\n star: drawStar,\n triangle: drawTriangle,\n triangleDown: drawTriangleDown\n};\nfunction getShape(name) {\n if (Object.prototype.hasOwnProperty.call(shapeMap, name)) {\n return shapeMap[name];\n } else {\n return function(ctx) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n CanvasRenderingContext2D.prototype[name].call(ctx, args);\n };\n }\n}\nvar componentEmitter = {exports: {}};\n(function(module) {\n {\n module.exports = Emitter2;\n }\n function Emitter2(obj) {\n if (obj)\n return mixin(obj);\n }\n function mixin(obj) {\n for (var key in Emitter2.prototype) {\n obj[key] = Emitter2.prototype[key];\n }\n return obj;\n }\n Emitter2.prototype.on = Emitter2.prototype.addEventListener = function(event, fn) {\n this._callbacks = this._callbacks || {};\n (this._callbacks[\"$\" + event] = this._callbacks[\"$\" + event] || []).push(fn);\n return this;\n };\n Emitter2.prototype.once = function(event, fn) {\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n on.fn = fn;\n this.on(event, on);\n return this;\n };\n Emitter2.prototype.off = Emitter2.prototype.removeListener = Emitter2.prototype.removeAllListeners = Emitter2.prototype.removeEventListener = function(event, fn) {\n this._callbacks = this._callbacks || {};\n if (arguments.length == 0) {\n this._callbacks = {};\n return this;\n }\n var callbacks = this._callbacks[\"$\" + event];\n if (!callbacks)\n return this;\n if (arguments.length == 1) {\n delete this._callbacks[\"$\" + event];\n return this;\n }\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n if (callbacks.length === 0) {\n delete this._callbacks[\"$\" + event];\n }\n return this;\n };\n Emitter2.prototype.emit = function(event) {\n this._callbacks = this._callbacks || {};\n var args = new Array(arguments.length - 1), callbacks = this._callbacks[\"$\" + event];\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n return this;\n };\n Emitter2.prototype.listeners = function(event) {\n this._callbacks = this._callbacks || {};\n return this._callbacks[\"$\" + event] || [];\n };\n Emitter2.prototype.hasListeners = function(event) {\n return !!this.listeners(event).length;\n };\n})(componentEmitter);\nvar Emitter = componentEmitter.exports;\nvar isSymbol$1 = isSymbol$4;\nvar toString$9 = function(argument) {\n if (isSymbol$1(argument))\n throw TypeError(\"Cannot convert a Symbol value to a string\");\n return String(argument);\n};\nvar toInteger$1 = toInteger$4;\nvar toString$8 = toString$9;\nvar requireObjectCoercible$2 = requireObjectCoercible$5;\nvar createMethod$4 = function(CONVERT_TO_STRING) {\n return function($this, pos) {\n var S = toString$8(requireObjectCoercible$2($this));\n var position = toInteger$1(pos);\n var size = S.length;\n var first2, second;\n if (position < 0 || position >= size)\n return CONVERT_TO_STRING ? \"\" : void 0;\n first2 = S.charCodeAt(position);\n return first2 < 55296 || first2 > 56319 || position + 1 === size || (second = S.charCodeAt(position + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? S.charAt(position) : first2 : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first2 - 55296 << 10) + (second - 56320) + 65536;\n };\n};\nvar stringMultibyte = {\n codeAt: createMethod$4(false),\n charAt: createMethod$4(true)\n};\nvar store$1 = sharedStore;\nvar functionToString = Function.toString;\nif (typeof store$1.inspectSource != \"function\") {\n store$1.inspectSource = function(it2) {\n return functionToString.call(it2);\n };\n}\nvar inspectSource$1 = store$1.inspectSource;\nvar global$c = global$k;\nvar inspectSource = inspectSource$1;\nvar WeakMap$1 = global$c.WeakMap;\nvar nativeWeakMap = typeof WeakMap$1 === \"function\" && /native code/.test(inspectSource(WeakMap$1));\nvar shared$2 = shared$4.exports;\nvar uid$2 = uid$4;\nvar keys$3 = shared$2(\"keys\");\nvar sharedKey$4 = function(key) {\n return keys$3[key] || (keys$3[key] = uid$2(key));\n};\nvar NATIVE_WEAK_MAP$1 = nativeWeakMap;\nvar global$b = global$k;\nvar isObject$d = isObject$j;\nvar createNonEnumerableProperty$7 = createNonEnumerableProperty$9;\nvar objectHas = has$c;\nvar shared$1 = sharedStore;\nvar sharedKey$3 = sharedKey$4;\nvar hiddenKeys$4 = hiddenKeys$6;\nvar OBJECT_ALREADY_INITIALIZED = \"Object already initialized\";\nvar WeakMap = global$b.WeakMap;\nvar set$3, get$5, has$7;\nvar enforce = function(it2) {\n return has$7(it2) ? get$5(it2) : set$3(it2, {});\n};\nvar getterFor = function(TYPE) {\n return function(it2) {\n var state;\n if (!isObject$d(it2) || (state = get$5(it2)).type !== TYPE) {\n throw TypeError(\"Incompatible receiver, \" + TYPE + \" required\");\n }\n return state;\n };\n};\nif (NATIVE_WEAK_MAP$1 || shared$1.state) {\n var store = shared$1.state || (shared$1.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set$3 = function(it2, metadata) {\n if (wmhas.call(store, it2))\n throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it2;\n wmset.call(store, it2, metadata);\n return metadata;\n };\n get$5 = function(it2) {\n return wmget.call(store, it2) || {};\n };\n has$7 = function(it2) {\n return wmhas.call(store, it2);\n };\n} else {\n var STATE = sharedKey$3(\"state\");\n hiddenKeys$4[STATE] = true;\n set$3 = function(it2, metadata) {\n if (objectHas(it2, STATE))\n throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it2;\n createNonEnumerableProperty$7(it2, STATE, metadata);\n return metadata;\n };\n get$5 = function(it2) {\n return objectHas(it2, STATE) ? it2[STATE] : {};\n };\n has$7 = function(it2) {\n return objectHas(it2, STATE);\n };\n}\nvar internalState = {\n set: set$3,\n get: get$5,\n has: has$7,\n enforce,\n getterFor\n};\nvar fails$f = fails$m;\nvar correctPrototypeGetter = !fails$f(function() {\n function F() {\n }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\nvar has$6 = has$c;\nvar toObject$a = toObject$d;\nvar sharedKey$2 = sharedKey$4;\nvar CORRECT_PROTOTYPE_GETTER$1 = correctPrototypeGetter;\nvar IE_PROTO$1 = sharedKey$2(\"IE_PROTO\");\nvar ObjectPrototype$1 = Object.prototype;\nvar objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER$1 ? Object.getPrototypeOf : function(O) {\n O = toObject$a(O);\n if (has$6(O, IE_PROTO$1))\n return O[IE_PROTO$1];\n if (typeof O.constructor == \"function\" && O instanceof O.constructor) {\n return O.constructor.prototype;\n }\n return O instanceof Object ? ObjectPrototype$1 : null;\n};\nvar fails$e = fails$m;\nvar getPrototypeOf$7 = objectGetPrototypeOf;\nvar createNonEnumerableProperty$6 = createNonEnumerableProperty$9;\nvar has$5 = has$c;\nvar wellKnownSymbol$h = wellKnownSymbol$j;\nvar ITERATOR$4 = wellKnownSymbol$h(\"iterator\");\nvar BUGGY_SAFARI_ITERATORS$1 = false;\nvar returnThis$2 = function() {\n return this;\n};\nvar IteratorPrototype$2, PrototypeOfArrayIteratorPrototype, arrayIterator;\nif ([].keys) {\n arrayIterator = [].keys();\n if (!(\"next\" in arrayIterator))\n BUGGY_SAFARI_ITERATORS$1 = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf$7(getPrototypeOf$7(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype)\n IteratorPrototype$2 = PrototypeOfArrayIteratorPrototype;\n }\n}\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype$2 == void 0 || fails$e(function() {\n var test2 = {};\n return IteratorPrototype$2[ITERATOR$4].call(test2) !== test2;\n});\nif (NEW_ITERATOR_PROTOTYPE)\n IteratorPrototype$2 = {};\nif (NEW_ITERATOR_PROTOTYPE && !has$5(IteratorPrototype$2, ITERATOR$4)) {\n createNonEnumerableProperty$6(IteratorPrototype$2, ITERATOR$4, returnThis$2);\n}\nvar iteratorsCore = {\n IteratorPrototype: IteratorPrototype$2,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS$1\n};\nvar DESCRIPTORS$a = descriptors;\nvar definePropertyModule$3 = objectDefineProperty;\nvar anObject$a = anObject$c;\nvar objectKeys$2 = objectKeys$4;\nvar objectDefineProperties = DESCRIPTORS$a ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject$a(O);\n var keys4 = objectKeys$2(Properties);\n var length2 = keys4.length;\n var index2 = 0;\n var key;\n while (length2 > index2)\n definePropertyModule$3.f(O, key = keys4[index2++], Properties[key]);\n return O;\n};\nvar getBuiltIn$5 = getBuiltIn$8;\nvar html$1 = getBuiltIn$5(\"document\", \"documentElement\");\nvar anObject$9 = anObject$c;\nvar defineProperties$5 = objectDefineProperties;\nvar enumBugKeys$1 = enumBugKeys$3;\nvar hiddenKeys$3 = hiddenKeys$6;\nvar html = html$1;\nvar documentCreateElement = documentCreateElement$1;\nvar sharedKey$1 = sharedKey$4;\nvar GT = \">\";\nvar LT = \"<\";\nvar PROTOTYPE$1 = \"prototype\";\nvar SCRIPT = \"script\";\nvar IE_PROTO = sharedKey$1(\"IE_PROTO\");\nvar EmptyConstructor = function() {\n};\nvar scriptTag = function(content) {\n return LT + SCRIPT + GT + content + LT + \"/\" + SCRIPT + GT;\n};\nvar NullProtoObjectViaActiveX = function(activeXDocument2) {\n activeXDocument2.write(scriptTag(\"\"));\n activeXDocument2.close();\n var temp = activeXDocument2.parentWindow.Object;\n activeXDocument2 = null;\n return temp;\n};\nvar NullProtoObjectViaIFrame = function() {\n var iframe = documentCreateElement(\"iframe\");\n var JS = \"java\" + SCRIPT + \":\";\n var iframeDocument;\n if (iframe.style) {\n iframe.style.display = \"none\";\n html.appendChild(iframe);\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag(\"document.F=Object\"));\n iframeDocument.close();\n return iframeDocument.F;\n }\n};\nvar activeXDocument;\nvar NullProtoObject = function() {\n try {\n activeXDocument = new ActiveXObject(\"htmlfile\");\n } catch (error) {\n }\n NullProtoObject = document.domain && activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame() || NullProtoObjectViaActiveX(activeXDocument);\n var length2 = enumBugKeys$1.length;\n while (length2--)\n delete NullProtoObject[PROTOTYPE$1][enumBugKeys$1[length2]];\n return NullProtoObject();\n};\nhiddenKeys$3[IE_PROTO] = true;\nvar objectCreate = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE$1] = anObject$9(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE$1] = null;\n result[IE_PROTO] = O;\n } else\n result = NullProtoObject();\n return Properties === void 0 ? result : defineProperties$5(result, Properties);\n};\nvar wellKnownSymbol$g = wellKnownSymbol$j;\nvar TO_STRING_TAG$3 = wellKnownSymbol$g(\"toStringTag\");\nvar test$2 = {};\ntest$2[TO_STRING_TAG$3] = \"z\";\nvar toStringTagSupport = String(test$2) === \"[object z]\";\nvar TO_STRING_TAG_SUPPORT$2 = toStringTagSupport;\nvar classofRaw = classofRaw$1;\nvar wellKnownSymbol$f = wellKnownSymbol$j;\nvar TO_STRING_TAG$2 = wellKnownSymbol$f(\"toStringTag\");\nvar CORRECT_ARGUMENTS = classofRaw(function() {\n return arguments;\n}()) == \"Arguments\";\nvar tryGet = function(it2, key) {\n try {\n return it2[key];\n } catch (error) {\n }\n};\nvar classof$8 = TO_STRING_TAG_SUPPORT$2 ? classofRaw : function(it2) {\n var O, tag, result;\n return it2 === void 0 ? \"Undefined\" : it2 === null ? \"Null\" : typeof (tag = tryGet(O = Object(it2), TO_STRING_TAG$2)) == \"string\" ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == \"Object\" && typeof O.callee == \"function\" ? \"Arguments\" : result;\n};\nvar TO_STRING_TAG_SUPPORT$1 = toStringTagSupport;\nvar classof$7 = classof$8;\nvar objectToString = TO_STRING_TAG_SUPPORT$1 ? {}.toString : function toString() {\n return \"[object \" + classof$7(this) + \"]\";\n};\nvar TO_STRING_TAG_SUPPORT = toStringTagSupport;\nvar defineProperty$a = objectDefineProperty.f;\nvar createNonEnumerableProperty$5 = createNonEnumerableProperty$9;\nvar has$4 = has$c;\nvar toString$7 = objectToString;\nvar wellKnownSymbol$e = wellKnownSymbol$j;\nvar TO_STRING_TAG$1 = wellKnownSymbol$e(\"toStringTag\");\nvar setToStringTag$5 = function(it2, TAG, STATIC, SET_METHOD) {\n if (it2) {\n var target = STATIC ? it2 : it2.prototype;\n if (!has$4(target, TO_STRING_TAG$1)) {\n defineProperty$a(target, TO_STRING_TAG$1, {\n configurable: true,\n value: TAG\n });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty$5(target, \"toString\", toString$7);\n }\n }\n};\nvar iterators = {};\nvar IteratorPrototype$1 = iteratorsCore.IteratorPrototype;\nvar create$8 = objectCreate;\nvar createPropertyDescriptor$2 = createPropertyDescriptor$5;\nvar setToStringTag$4 = setToStringTag$5;\nvar Iterators$5 = iterators;\nvar returnThis$1 = function() {\n return this;\n};\nvar createIteratorConstructor$1 = function(IteratorConstructor, NAME, next3) {\n var TO_STRING_TAG2 = NAME + \" Iterator\";\n IteratorConstructor.prototype = create$8(IteratorPrototype$1, {\n next: createPropertyDescriptor$2(1, next3)\n });\n setToStringTag$4(IteratorConstructor, TO_STRING_TAG2, false, true);\n Iterators$5[TO_STRING_TAG2] = returnThis$1;\n return IteratorConstructor;\n};\nvar isObject$c = isObject$j;\nvar aPossiblePrototype$1 = function(it2) {\n if (!isObject$c(it2) && it2 !== null) {\n throw TypeError(\"Can't set \" + String(it2) + \" as a prototype\");\n }\n return it2;\n};\nvar anObject$8 = anObject$c;\nvar aPossiblePrototype = aPossiblePrototype$1;\nvar objectSetPrototypeOf = Object.setPrototypeOf || (\"__proto__\" in {} ? function() {\n var CORRECT_SETTER = false;\n var test2 = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, \"__proto__\").set;\n setter.call(test2, []);\n CORRECT_SETTER = test2 instanceof Array;\n } catch (error) {\n }\n return function setPrototypeOf2(O, proto) {\n anObject$8(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER)\n setter.call(O, proto);\n else\n O.__proto__ = proto;\n return O;\n };\n}() : void 0);\nvar createNonEnumerableProperty$4 = createNonEnumerableProperty$9;\nvar redefine$3 = function(target, key, value, options2) {\n if (options2 && options2.enumerable)\n target[key] = value;\n else\n createNonEnumerableProperty$4(target, key, value);\n};\nvar $$G = _export;\nvar createIteratorConstructor = createIteratorConstructor$1;\nvar getPrototypeOf$6 = objectGetPrototypeOf;\nvar setToStringTag$3 = setToStringTag$5;\nvar createNonEnumerableProperty$3 = createNonEnumerableProperty$9;\nvar redefine$2 = redefine$3;\nvar wellKnownSymbol$d = wellKnownSymbol$j;\nvar Iterators$4 = iterators;\nvar IteratorsCore = iteratorsCore;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR$3 = wellKnownSymbol$d(\"iterator\");\nvar KEYS = \"keys\";\nvar VALUES = \"values\";\nvar ENTRIES = \"entries\";\nvar returnThis = function() {\n return this;\n};\nvar defineIterator$3 = function(Iterable, NAME, IteratorConstructor, next3, DEFAULT, IS_SET, FORCED2) {\n createIteratorConstructor(IteratorConstructor, NAME, next3);\n var getIterationMethod = function(KIND) {\n if (KIND === DEFAULT && defaultIterator)\n return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype)\n return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS:\n return function keys4() {\n return new IteratorConstructor(this, KIND);\n };\n case VALUES:\n return function values3() {\n return new IteratorConstructor(this, KIND);\n };\n case ENTRIES:\n return function entries() {\n return new IteratorConstructor(this, KIND);\n };\n }\n return function() {\n return new IteratorConstructor(this);\n };\n };\n var TO_STRING_TAG2 = NAME + \" Iterator\";\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR$3] || IterablePrototype[\"@@iterator\"] || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == \"Array\" ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf$6(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n setToStringTag$3(CurrentIteratorPrototype, TO_STRING_TAG2, true, true);\n Iterators$4[TO_STRING_TAG2] = returnThis;\n }\n }\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values3() {\n return nativeIterator.call(this);\n };\n }\n if (FORCED2 && IterablePrototype[ITERATOR$3] !== defaultIterator) {\n createNonEnumerableProperty$3(IterablePrototype, ITERATOR$3, defaultIterator);\n }\n Iterators$4[NAME] = defaultIterator;\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED2)\n for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine$2(IterablePrototype, KEY, methods[KEY]);\n }\n }\n else\n $$G({\n target: NAME,\n proto: true,\n forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME\n }, methods);\n }\n return methods;\n};\nvar charAt = stringMultibyte.charAt;\nvar toString$6 = toString$9;\nvar InternalStateModule$5 = internalState;\nvar defineIterator$2 = defineIterator$3;\nvar STRING_ITERATOR = \"String Iterator\";\nvar setInternalState$5 = InternalStateModule$5.set;\nvar getInternalState$2 = InternalStateModule$5.getterFor(STRING_ITERATOR);\ndefineIterator$2(String, \"String\", function(iterated) {\n setInternalState$5(this, {\n type: STRING_ITERATOR,\n string: toString$6(iterated),\n index: 0\n });\n}, function next() {\n var state = getInternalState$2(this);\n var string2 = state.string;\n var index2 = state.index;\n var point;\n if (index2 >= string2.length)\n return {\n value: void 0,\n done: true\n };\n point = charAt(string2, index2);\n state.index += point.length;\n return {\n value: point,\n done: false\n };\n});\nvar anObject$7 = anObject$c;\nvar iteratorClose$2 = function(iterator2) {\n var returnMethod = iterator2[\"return\"];\n if (returnMethod !== void 0) {\n return anObject$7(returnMethod.call(iterator2)).value;\n }\n};\nvar anObject$6 = anObject$c;\nvar iteratorClose$1 = iteratorClose$2;\nvar callWithSafeIterationClosing$1 = function(iterator2, fn, value, ENTRIES2) {\n try {\n return ENTRIES2 ? fn(anObject$6(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose$1(iterator2);\n throw error;\n }\n};\nvar wellKnownSymbol$c = wellKnownSymbol$j;\nvar Iterators$3 = iterators;\nvar ITERATOR$2 = wellKnownSymbol$c(\"iterator\");\nvar ArrayPrototype$f = Array.prototype;\nvar isArrayIteratorMethod$2 = function(it2) {\n return it2 !== void 0 && (Iterators$3.Array === it2 || ArrayPrototype$f[ITERATOR$2] === it2);\n};\nvar toPropertyKey$1 = toPropertyKey$4;\nvar definePropertyModule$2 = objectDefineProperty;\nvar createPropertyDescriptor$1 = createPropertyDescriptor$5;\nvar createProperty$5 = function(object2, key, value) {\n var propertyKey = toPropertyKey$1(key);\n if (propertyKey in object2)\n definePropertyModule$2.f(object2, propertyKey, createPropertyDescriptor$1(0, value));\n else\n object2[propertyKey] = value;\n};\nvar classof$6 = classof$8;\nvar Iterators$2 = iterators;\nvar wellKnownSymbol$b = wellKnownSymbol$j;\nvar ITERATOR$1 = wellKnownSymbol$b(\"iterator\");\nvar getIteratorMethod$6 = function(it2) {\n if (it2 != void 0)\n return it2[ITERATOR$1] || it2[\"@@iterator\"] || Iterators$2[classof$6(it2)];\n};\nvar bind$4 = functionBindContext;\nvar toObject$9 = toObject$d;\nvar callWithSafeIterationClosing = callWithSafeIterationClosing$1;\nvar isArrayIteratorMethod$1 = isArrayIteratorMethod$2;\nvar toLength$8 = toLength$a;\nvar createProperty$4 = createProperty$5;\nvar getIteratorMethod$5 = getIteratorMethod$6;\nvar arrayFrom = function from(arrayLike) {\n var O = toObject$9(arrayLike);\n var C = typeof this == \"function\" ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : void 0;\n var mapping = mapfn !== void 0;\n var iteratorMethod = getIteratorMethod$5(O);\n var index2 = 0;\n var length2, result, step, iterator2, next3, value;\n if (mapping)\n mapfn = bind$4(mapfn, argumentsLength > 2 ? arguments[2] : void 0, 2);\n if (iteratorMethod != void 0 && !(C == Array && isArrayIteratorMethod$1(iteratorMethod))) {\n iterator2 = iteratorMethod.call(O);\n next3 = iterator2.next;\n result = new C();\n for (; !(step = next3.call(iterator2)).done; index2++) {\n value = mapping ? callWithSafeIterationClosing(iterator2, mapfn, [step.value, index2], true) : step.value;\n createProperty$4(result, index2, value);\n }\n } else {\n length2 = toLength$8(O.length);\n result = new C(length2);\n for (; length2 > index2; index2++) {\n value = mapping ? mapfn(O[index2], index2) : O[index2];\n createProperty$4(result, index2, value);\n }\n }\n result.length = index2;\n return result;\n};\nvar wellKnownSymbol$a = wellKnownSymbol$j;\nvar ITERATOR = wellKnownSymbol$a(\"iterator\");\nvar SAFE_CLOSING = false;\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function() {\n return {\n done: !!called++\n };\n },\n return: function() {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function() {\n return this;\n };\n Array.from(iteratorWithReturn, function() {\n throw 2;\n });\n} catch (error) {\n}\nvar checkCorrectnessOfIteration$1 = function(exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING)\n return false;\n var ITERATION_SUPPORT = false;\n try {\n var object2 = {};\n object2[ITERATOR] = function() {\n return {\n next: function() {\n return {\n done: ITERATION_SUPPORT = true\n };\n }\n };\n };\n exec(object2);\n } catch (error) {\n }\n return ITERATION_SUPPORT;\n};\nvar $$F = _export;\nvar from$5 = arrayFrom;\nvar checkCorrectnessOfIteration = checkCorrectnessOfIteration$1;\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function(iterable) {\n Array.from(iterable);\n});\n$$F({\n target: \"Array\",\n stat: true,\n forced: INCORRECT_ITERATION\n}, {\n from: from$5\n});\nvar path$s = path$x;\nvar from$4 = path$s.Array.from;\nvar parent$R = from$4;\nvar from$3 = parent$R;\nvar from$2 = from$3;\nvar toIndexedObject$6 = toIndexedObject$a;\nvar Iterators$1 = iterators;\nvar InternalStateModule$4 = internalState;\nvar defineIterator$1 = defineIterator$3;\nvar ARRAY_ITERATOR = \"Array Iterator\";\nvar setInternalState$4 = InternalStateModule$4.set;\nvar getInternalState$1 = InternalStateModule$4.getterFor(ARRAY_ITERATOR);\ndefineIterator$1(Array, \"Array\", function(iterated, kind) {\n setInternalState$4(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject$6(iterated),\n index: 0,\n kind\n });\n}, function() {\n var state = getInternalState$1(this);\n var target = state.target;\n var kind = state.kind;\n var index2 = state.index++;\n if (!target || index2 >= target.length) {\n state.target = void 0;\n return {\n value: void 0,\n done: true\n };\n }\n if (kind == \"keys\")\n return {\n value: index2,\n done: false\n };\n if (kind == \"values\")\n return {\n value: target[index2],\n done: false\n };\n return {\n value: [index2, target[index2]],\n done: false\n };\n}, \"values\");\nIterators$1.Arguments = Iterators$1.Array;\nvar getIteratorMethod$4 = getIteratorMethod$6;\nvar getIteratorMethod_1 = getIteratorMethod$4;\nvar domIterables = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\nvar DOMIterables$2 = domIterables;\nvar global$a = global$k;\nvar classof$5 = classof$8;\nvar createNonEnumerableProperty$2 = createNonEnumerableProperty$9;\nvar Iterators = iterators;\nvar wellKnownSymbol$9 = wellKnownSymbol$j;\nvar TO_STRING_TAG = wellKnownSymbol$9(\"toStringTag\");\nfor (var COLLECTION_NAME in DOMIterables$2) {\n var Collection = global$a[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype && classof$5(CollectionPrototype) !== TO_STRING_TAG) {\n createNonEnumerableProperty$2(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n Iterators[COLLECTION_NAME] = Iterators.Array;\n}\nvar parent$Q = getIteratorMethod_1;\nvar getIteratorMethod$3 = parent$Q;\nvar parent$P = getIteratorMethod$3;\nvar getIteratorMethod$2 = parent$P;\nvar getIteratorMethod$1 = getIteratorMethod$2;\nvar classof$4 = classofRaw$1;\nvar isArray$b = Array.isArray || function isArray(arg) {\n return classof$4(arg) == \"Array\";\n};\nvar objectGetOwnPropertyNames = {};\nvar internalObjectKeys = objectKeysInternal;\nvar enumBugKeys = enumBugKeys$3;\nvar hiddenKeys$2 = enumBugKeys.concat(\"length\", \"prototype\");\nobjectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys$2);\n};\nvar objectGetOwnPropertyNamesExternal = {};\nvar toIndexedObject$5 = toIndexedObject$a;\nvar $getOwnPropertyNames$1 = objectGetOwnPropertyNames.f;\nvar toString$5 = {}.toString;\nvar windowNames = typeof window == \"object\" && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];\nvar getWindowNames = function(it2) {\n try {\n return $getOwnPropertyNames$1(it2);\n } catch (error) {\n return windowNames.slice();\n }\n};\nobjectGetOwnPropertyNamesExternal.f = function getOwnPropertyNames2(it2) {\n return windowNames && toString$5.call(it2) == \"[object Window]\" ? getWindowNames(it2) : $getOwnPropertyNames$1(toIndexedObject$5(it2));\n};\nvar wellKnownSymbolWrapped = {};\nvar wellKnownSymbol$8 = wellKnownSymbol$j;\nwellKnownSymbolWrapped.f = wellKnownSymbol$8;\nvar path$r = path$x;\nvar has$3 = has$c;\nvar wrappedWellKnownSymbolModule$1 = wellKnownSymbolWrapped;\nvar defineProperty$9 = objectDefineProperty.f;\nvar defineWellKnownSymbol$l = function(NAME) {\n var Symbol2 = path$r.Symbol || (path$r.Symbol = {});\n if (!has$3(Symbol2, NAME))\n defineProperty$9(Symbol2, NAME, {\n value: wrappedWellKnownSymbolModule$1.f(NAME)\n });\n};\nvar isObject$b = isObject$j;\nvar isArray$a = isArray$b;\nvar wellKnownSymbol$7 = wellKnownSymbol$j;\nvar SPECIES$3 = wellKnownSymbol$7(\"species\");\nvar arraySpeciesConstructor$1 = function(originalArray) {\n var C;\n if (isArray$a(originalArray)) {\n C = originalArray.constructor;\n if (typeof C == \"function\" && (C === Array || isArray$a(C.prototype)))\n C = void 0;\n else if (isObject$b(C)) {\n C = C[SPECIES$3];\n if (C === null)\n C = void 0;\n }\n }\n return C === void 0 ? Array : C;\n};\nvar arraySpeciesConstructor = arraySpeciesConstructor$1;\nvar arraySpeciesCreate$3 = function(originalArray, length2) {\n return new (arraySpeciesConstructor(originalArray))(length2 === 0 ? 0 : length2);\n};\nvar bind$3 = functionBindContext;\nvar IndexedObject$1 = indexedObject;\nvar toObject$8 = toObject$d;\nvar toLength$7 = toLength$a;\nvar arraySpeciesCreate$2 = arraySpeciesCreate$3;\nvar push = [].push;\nvar createMethod$3 = function(TYPE) {\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 IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function($this, callbackfn, that, specificCreate) {\n var O = toObject$8($this);\n var self2 = IndexedObject$1(O);\n var boundFunction = bind$3(callbackfn, that, 3);\n var length2 = toLength$7(self2.length);\n var index2 = 0;\n var create5 = specificCreate || arraySpeciesCreate$2;\n var target = IS_MAP ? create5($this, length2) : IS_FILTER || IS_FILTER_REJECT ? create5($this, 0) : void 0;\n var value, result;\n for (; length2 > index2; index2++)\n if (NO_HOLES || index2 in self2) {\n value = self2[index2];\n result = boundFunction(value, index2, O);\n if (TYPE) {\n if (IS_MAP)\n target[index2] = result;\n else if (result)\n switch (TYPE) {\n case 3:\n return true;\n case 5:\n return value;\n case 6:\n return index2;\n case 2:\n push.call(target, value);\n }\n else\n switch (TYPE) {\n case 4:\n return false;\n case 7:\n push.call(target, value);\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\nvar arrayIteration = {\n forEach: createMethod$3(0),\n map: createMethod$3(1),\n filter: createMethod$3(2),\n some: createMethod$3(3),\n every: createMethod$3(4),\n find: createMethod$3(5),\n findIndex: createMethod$3(6),\n filterReject: createMethod$3(7)\n};\nvar $$E = _export;\nvar global$9 = global$k;\nvar getBuiltIn$4 = getBuiltIn$8;\nvar DESCRIPTORS$9 = descriptors;\nvar NATIVE_SYMBOL = nativeSymbol;\nvar fails$d = fails$m;\nvar has$2 = has$c;\nvar isArray$9 = isArray$b;\nvar isObject$a = isObject$j;\nvar isSymbol = isSymbol$4;\nvar anObject$5 = anObject$c;\nvar toObject$7 = toObject$d;\nvar toIndexedObject$4 = toIndexedObject$a;\nvar toPropertyKey = toPropertyKey$4;\nvar $toString = toString$9;\nvar createPropertyDescriptor = createPropertyDescriptor$5;\nvar nativeObjectCreate = objectCreate;\nvar objectKeys$1 = objectKeys$4;\nvar getOwnPropertyNamesModule$2 = objectGetOwnPropertyNames;\nvar getOwnPropertyNamesExternal = objectGetOwnPropertyNamesExternal;\nvar getOwnPropertySymbolsModule$1 = objectGetOwnPropertySymbols;\nvar getOwnPropertyDescriptorModule$2 = objectGetOwnPropertyDescriptor;\nvar definePropertyModule$1 = objectDefineProperty;\nvar propertyIsEnumerableModule = objectPropertyIsEnumerable;\nvar createNonEnumerableProperty$1 = createNonEnumerableProperty$9;\nvar redefine$1 = redefine$3;\nvar shared = shared$4.exports;\nvar sharedKey = sharedKey$4;\nvar hiddenKeys$1 = hiddenKeys$6;\nvar uid$1 = uid$4;\nvar wellKnownSymbol$6 = wellKnownSymbol$j;\nvar wrappedWellKnownSymbolModule = wellKnownSymbolWrapped;\nvar defineWellKnownSymbol$k = defineWellKnownSymbol$l;\nvar setToStringTag$2 = setToStringTag$5;\nvar InternalStateModule$3 = internalState;\nvar $forEach$1 = arrayIteration.forEach;\nvar HIDDEN = sharedKey(\"hidden\");\nvar SYMBOL = \"Symbol\";\nvar PROTOTYPE = \"prototype\";\nvar TO_PRIMITIVE = wellKnownSymbol$6(\"toPrimitive\");\nvar setInternalState$3 = InternalStateModule$3.set;\nvar getInternalState = InternalStateModule$3.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global$9.Symbol;\nvar $stringify$1 = getBuiltIn$4(\"JSON\", \"stringify\");\nvar nativeGetOwnPropertyDescriptor$1 = getOwnPropertyDescriptorModule$2.f;\nvar nativeDefineProperty = definePropertyModule$1.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared(\"symbols\");\nvar ObjectPrototypeSymbols = shared(\"op-symbols\");\nvar StringToSymbolRegistry = shared(\"string-to-symbol-registry\");\nvar SymbolToStringRegistry = shared(\"symbol-to-string-registry\");\nvar WellKnownSymbolsStore = shared(\"wks\");\nvar QObject = global$9.QObject;\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\nvar setSymbolDescriptor = DESCRIPTORS$9 && fails$d(function() {\n return nativeObjectCreate(nativeDefineProperty({}, \"a\", {\n get: function() {\n return nativeDefineProperty(this, \"a\", {\n value: 7\n }).a;\n }\n })).a != 7;\n}) ? function(O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$1(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor)\n delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\nvar wrap$1 = function(tag, description) {\n var symbol2 = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState$3(symbol2, {\n type: SYMBOL,\n tag,\n description\n });\n if (!DESCRIPTORS$9)\n symbol2.description = description;\n return symbol2;\n};\nvar $defineProperty = function defineProperty2(O, P, Attributes) {\n if (O === ObjectPrototype)\n $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject$5(O);\n var key = toPropertyKey(P);\n anObject$5(Attributes);\n if (has$2(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has$2(O, HIDDEN))\n nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has$2(O, HIDDEN) && O[HIDDEN][key])\n O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, {\n enumerable: createPropertyDescriptor(0, false)\n });\n }\n return setSymbolDescriptor(O, key, Attributes);\n }\n return nativeDefineProperty(O, key, Attributes);\n};\nvar $defineProperties = function defineProperties2(O, Properties) {\n anObject$5(O);\n var properties = toIndexedObject$4(Properties);\n var keys4 = objectKeys$1(properties).concat($getOwnPropertySymbols(properties));\n $forEach$1(keys4, function(key) {\n if (!DESCRIPTORS$9 || $propertyIsEnumerable.call(properties, key))\n $defineProperty(O, key, properties[key]);\n });\n return O;\n};\nvar $create = function create2(O, Properties) {\n return Properties === void 0 ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable2(V) {\n var P = toPropertyKey(V);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has$2(AllSymbols, P) && !has$2(ObjectPrototypeSymbols, P))\n return false;\n return enumerable || !has$2(this, P) || !has$2(AllSymbols, P) || has$2(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor2(O, P) {\n var it2 = toIndexedObject$4(O);\n var key = toPropertyKey(P);\n if (it2 === ObjectPrototype && has$2(AllSymbols, key) && !has$2(ObjectPrototypeSymbols, key))\n return;\n var descriptor = nativeGetOwnPropertyDescriptor$1(it2, key);\n if (descriptor && has$2(AllSymbols, key) && !(has$2(it2, HIDDEN) && it2[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames3(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject$4(O));\n var result = [];\n $forEach$1(names, function(key) {\n if (!has$2(AllSymbols, key) && !has$2(hiddenKeys$1, key))\n result.push(key);\n });\n return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject$4(O));\n var result = [];\n $forEach$1(names, function(key) {\n if (has$2(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has$2(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol2() {\n if (this instanceof $Symbol)\n throw TypeError(\"Symbol is not a constructor\");\n var description = !arguments.length || arguments[0] === void 0 ? void 0 : $toString(arguments[0]);\n var tag = uid$1(description);\n var setter = function(value) {\n if (this === ObjectPrototype)\n setter.call(ObjectPrototypeSymbols, value);\n if (has$2(this, HIDDEN) && has$2(this[HIDDEN], tag))\n this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS$9 && USE_SETTER)\n setSymbolDescriptor(ObjectPrototype, tag, {\n configurable: true,\n set: setter\n });\n return wrap$1(tag, description);\n };\n redefine$1($Symbol[PROTOTYPE], \"toString\", function toString3() {\n return getInternalState(this).tag;\n });\n redefine$1($Symbol, \"withoutSetter\", function(description) {\n return wrap$1(uid$1(description), description);\n });\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule$1.f = $defineProperty;\n getOwnPropertyDescriptorModule$2.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule$2.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule$1.f = $getOwnPropertySymbols;\n wrappedWellKnownSymbolModule.f = function(name) {\n return wrap$1(wellKnownSymbol$6(name), name);\n };\n if (DESCRIPTORS$9) {\n nativeDefineProperty($Symbol[PROTOTYPE], \"description\", {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n }\n}\n$$E({\n global: true,\n wrap: true,\n forced: !NATIVE_SYMBOL,\n sham: !NATIVE_SYMBOL\n}, {\n Symbol: $Symbol\n});\n$forEach$1(objectKeys$1(WellKnownSymbolsStore), function(name) {\n defineWellKnownSymbol$k(name);\n});\n$$E({\n target: SYMBOL,\n stat: true,\n forced: !NATIVE_SYMBOL\n}, {\n for: function(key) {\n var string2 = $toString(key);\n if (has$2(StringToSymbolRegistry, string2))\n return StringToSymbolRegistry[string2];\n var symbol2 = $Symbol(string2);\n StringToSymbolRegistry[string2] = symbol2;\n SymbolToStringRegistry[symbol2] = string2;\n return symbol2;\n },\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym))\n throw TypeError(sym + \" is not a symbol\");\n if (has$2(SymbolToStringRegistry, sym))\n return SymbolToStringRegistry[sym];\n },\n useSetter: function() {\n USE_SETTER = true;\n },\n useSimple: function() {\n USE_SETTER = false;\n }\n});\n$$E({\n target: \"Object\",\n stat: true,\n forced: !NATIVE_SYMBOL,\n sham: !DESCRIPTORS$9\n}, {\n create: $create,\n defineProperty: $defineProperty,\n defineProperties: $defineProperties,\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n$$E({\n target: \"Object\",\n stat: true,\n forced: !NATIVE_SYMBOL\n}, {\n getOwnPropertyNames: $getOwnPropertyNames,\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n$$E({\n target: \"Object\",\n stat: true,\n forced: fails$d(function() {\n getOwnPropertySymbolsModule$1.f(1);\n })\n}, {\n getOwnPropertySymbols: function getOwnPropertySymbols2(it2) {\n return getOwnPropertySymbolsModule$1.f(toObject$7(it2));\n }\n});\nif ($stringify$1) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails$d(function() {\n var symbol2 = $Symbol();\n return $stringify$1([symbol2]) != \"[null]\" || $stringify$1({\n a: symbol2\n }) != \"{}\" || $stringify$1(Object(symbol2)) != \"{}\";\n });\n $$E({\n target: \"JSON\",\n stat: true,\n forced: FORCED_JSON_STRINGIFY\n }, {\n stringify: function stringify3(it2, replacer, space) {\n var args = [it2];\n var index2 = 1;\n var $replacer;\n while (arguments.length > index2)\n args.push(arguments[index2++]);\n $replacer = replacer;\n if (!isObject$a(replacer) && it2 === void 0 || isSymbol(it2))\n return;\n if (!isArray$9(replacer))\n replacer = function(key, value) {\n if (typeof $replacer == \"function\")\n value = $replacer.call(this, key, value);\n if (!isSymbol(value))\n return value;\n };\n args[1] = replacer;\n return $stringify$1.apply(null, args);\n }\n });\n}\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty$1($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\nsetToStringTag$2($Symbol, SYMBOL);\nhiddenKeys$1[HIDDEN] = true;\nvar path$q = path$x;\nvar getOwnPropertySymbols$2 = path$q.Object.getOwnPropertySymbols;\nvar parent$O = getOwnPropertySymbols$2;\nvar getOwnPropertySymbols$1 = parent$O;\nvar getOwnPropertySymbols3 = getOwnPropertySymbols$1;\nvar getOwnPropertyDescriptor$5 = {exports: {}};\nvar $$D = _export;\nvar fails$c = fails$m;\nvar toIndexedObject$3 = toIndexedObject$a;\nvar nativeGetOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;\nvar DESCRIPTORS$8 = descriptors;\nvar FAILS_ON_PRIMITIVES$3 = fails$c(function() {\n nativeGetOwnPropertyDescriptor(1);\n});\nvar FORCED$6 = !DESCRIPTORS$8 || FAILS_ON_PRIMITIVES$3;\n$$D({\n target: \"Object\",\n stat: true,\n forced: FORCED$6,\n sham: !DESCRIPTORS$8\n}, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor3(it2, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject$3(it2), key);\n }\n});\nvar path$p = path$x;\nvar Object$5 = path$p.Object;\nvar getOwnPropertyDescriptor$4 = getOwnPropertyDescriptor$5.exports = function getOwnPropertyDescriptor4(it2, key) {\n return Object$5.getOwnPropertyDescriptor(it2, key);\n};\nif (Object$5.getOwnPropertyDescriptor.sham)\n getOwnPropertyDescriptor$4.sham = true;\nvar parent$N = getOwnPropertyDescriptor$5.exports;\nvar getOwnPropertyDescriptor$3 = parent$N;\nvar getOwnPropertyDescriptor$2 = getOwnPropertyDescriptor$3;\nvar getBuiltIn$3 = getBuiltIn$8;\nvar getOwnPropertyNamesModule$1 = objectGetOwnPropertyNames;\nvar getOwnPropertySymbolsModule = objectGetOwnPropertySymbols;\nvar anObject$4 = anObject$c;\nvar ownKeys$6 = getBuiltIn$3(\"Reflect\", \"ownKeys\") || function ownKeys(it2) {\n var keys4 = getOwnPropertyNamesModule$1.f(anObject$4(it2));\n var getOwnPropertySymbols4 = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols4 ? keys4.concat(getOwnPropertySymbols4(it2)) : keys4;\n};\nvar $$C = _export;\nvar DESCRIPTORS$7 = descriptors;\nvar ownKeys$5 = ownKeys$6;\nvar toIndexedObject$2 = toIndexedObject$a;\nvar getOwnPropertyDescriptorModule$1 = objectGetOwnPropertyDescriptor;\nvar createProperty$3 = createProperty$5;\n$$C({\n target: \"Object\",\n stat: true,\n sham: !DESCRIPTORS$7\n}, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object2) {\n var O = toIndexedObject$2(object2);\n var getOwnPropertyDescriptor6 = getOwnPropertyDescriptorModule$1.f;\n var keys4 = ownKeys$5(O);\n var result = {};\n var index2 = 0;\n var key, descriptor;\n while (keys4.length > index2) {\n descriptor = getOwnPropertyDescriptor6(O, key = keys4[index2++]);\n if (descriptor !== void 0)\n createProperty$3(result, key, descriptor);\n }\n return result;\n }\n});\nvar path$o = path$x;\nvar getOwnPropertyDescriptors$2 = path$o.Object.getOwnPropertyDescriptors;\nvar parent$M = getOwnPropertyDescriptors$2;\nvar getOwnPropertyDescriptors$1 = parent$M;\nvar getOwnPropertyDescriptors2 = getOwnPropertyDescriptors$1;\nvar defineProperties$4 = {exports: {}};\nvar $$B = _export;\nvar DESCRIPTORS$6 = descriptors;\nvar defineProperties$3 = objectDefineProperties;\n$$B({\n target: \"Object\",\n stat: true,\n forced: !DESCRIPTORS$6,\n sham: !DESCRIPTORS$6\n}, {\n defineProperties: defineProperties$3\n});\nvar path$n = path$x;\nvar Object$4 = path$n.Object;\nvar defineProperties$2 = defineProperties$4.exports = function defineProperties3(T, D) {\n return Object$4.defineProperties(T, D);\n};\nif (Object$4.defineProperties.sham)\n defineProperties$2.sham = true;\nvar parent$L = defineProperties$4.exports;\nvar defineProperties$1 = parent$L;\nvar defineProperties4 = defineProperties$1;\nvar defineProperty$8 = {exports: {}};\nvar $$A = _export;\nvar DESCRIPTORS$5 = descriptors;\nvar objectDefinePropertyModile = objectDefineProperty;\n$$A({\n target: \"Object\",\n stat: true,\n forced: !DESCRIPTORS$5,\n sham: !DESCRIPTORS$5\n}, {\n defineProperty: objectDefinePropertyModile.f\n});\nvar path$m = path$x;\nvar Object$3 = path$m.Object;\nvar defineProperty$7 = defineProperty$8.exports = function defineProperty3(it2, key, desc) {\n return Object$3.defineProperty(it2, key, desc);\n};\nif (Object$3.defineProperty.sham)\n defineProperty$7.sham = true;\nvar parent$K = defineProperty$8.exports;\nvar defineProperty$6 = parent$K;\nvar defineProperty$5 = defineProperty$6;\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nvar parent$J = defineProperty$6;\nvar defineProperty$4 = parent$J;\nvar defineProperty$3 = defineProperty$4;\nfunction _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)\n descriptor.writable = true;\n defineProperty$3(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps)\n _defineProperties(Constructor.prototype, protoProps);\n if (staticProps)\n _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n defineProperty$3(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar $$z = _export;\nvar isArray$8 = isArray$b;\n$$z({\n target: \"Array\",\n stat: true\n}, {\n isArray: isArray$8\n});\nvar path$l = path$x;\nvar isArray$7 = path$l.Array.isArray;\nvar parent$I = isArray$7;\nvar isArray$6 = parent$I;\nvar parent$H = isArray$6;\nvar isArray$5 = parent$H;\nvar isArray$4 = isArray$5;\nfunction _arrayWithHoles(arr) {\n if (isArray$4(arr))\n return arr;\n}\nvar fails$b = fails$m;\nvar wellKnownSymbol$5 = wellKnownSymbol$j;\nvar V8_VERSION$1 = engineV8Version;\nvar SPECIES$2 = wellKnownSymbol$5(\"species\");\nvar arrayMethodHasSpeciesSupport$5 = function(METHOD_NAME) {\n return V8_VERSION$1 >= 51 || !fails$b(function() {\n var array2 = [];\n var constructor = array2.constructor = {};\n constructor[SPECIES$2] = function() {\n return {\n foo: 1\n };\n };\n return array2[METHOD_NAME](Boolean).foo !== 1;\n });\n};\nvar $$y = _export;\nvar fails$a = fails$m;\nvar isArray$3 = isArray$b;\nvar isObject$9 = isObject$j;\nvar toObject$6 = toObject$d;\nvar toLength$6 = toLength$a;\nvar createProperty$2 = createProperty$5;\nvar arraySpeciesCreate$1 = arraySpeciesCreate$3;\nvar arrayMethodHasSpeciesSupport$4 = arrayMethodHasSpeciesSupport$5;\nvar wellKnownSymbol$4 = wellKnownSymbol$j;\nvar V8_VERSION = engineV8Version;\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol$4(\"isConcatSpreadable\");\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = \"Maximum allowed index exceeded\";\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails$a(function() {\n var array2 = [];\n array2[IS_CONCAT_SPREADABLE] = false;\n return array2.concat()[0] !== array2;\n});\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport$4(\"concat\");\nvar isConcatSpreadable = function(O) {\n if (!isObject$9(O))\n return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== void 0 ? !!spreadable : isArray$3(O);\n};\nvar FORCED$5 = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n$$y({\n target: \"Array\",\n proto: true,\n forced: FORCED$5\n}, {\n concat: function concat(arg) {\n var O = toObject$6(this);\n var A = arraySpeciesCreate$1(O, 0);\n var n = 0;\n var i, k, length2, len, E;\n for (i = -1, length2 = arguments.length; i < length2; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength$6(E.length);\n if (n + len > MAX_SAFE_INTEGER$1)\n throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++)\n if (k in E)\n createProperty$2(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER$1)\n throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty$2(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\nvar defineWellKnownSymbol$j = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$j(\"asyncIterator\");\nvar defineWellKnownSymbol$i = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$i(\"hasInstance\");\nvar defineWellKnownSymbol$h = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$h(\"isConcatSpreadable\");\nvar defineWellKnownSymbol$g = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$g(\"iterator\");\nvar defineWellKnownSymbol$f = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$f(\"match\");\nvar defineWellKnownSymbol$e = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$e(\"matchAll\");\nvar defineWellKnownSymbol$d = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$d(\"replace\");\nvar defineWellKnownSymbol$c = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$c(\"search\");\nvar defineWellKnownSymbol$b = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$b(\"species\");\nvar defineWellKnownSymbol$a = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$a(\"split\");\nvar defineWellKnownSymbol$9 = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$9(\"toPrimitive\");\nvar defineWellKnownSymbol$8 = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$8(\"toStringTag\");\nvar defineWellKnownSymbol$7 = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$7(\"unscopables\");\nvar global$8 = global$k;\nvar setToStringTag$1 = setToStringTag$5;\nsetToStringTag$1(global$8.JSON, \"JSON\", true);\nvar path$k = path$x;\nvar symbol$4 = path$k.Symbol;\nvar parent$G = symbol$4;\nvar symbol$3 = parent$G;\nvar defineWellKnownSymbol$6 = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$6(\"asyncDispose\");\nvar defineWellKnownSymbol$5 = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$5(\"dispose\");\nvar defineWellKnownSymbol$4 = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$4(\"matcher\");\nvar defineWellKnownSymbol$3 = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$3(\"metadata\");\nvar defineWellKnownSymbol$2 = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$2(\"observable\");\nvar defineWellKnownSymbol$1 = defineWellKnownSymbol$l;\ndefineWellKnownSymbol$1(\"patternMatch\");\nvar defineWellKnownSymbol = defineWellKnownSymbol$l;\ndefineWellKnownSymbol(\"replaceAll\");\nvar parent$F = symbol$3;\nvar symbol$2 = parent$F;\nvar symbol$1 = symbol$2;\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof symbol$1 !== \"undefined\" && getIteratorMethod$1(arr) || arr[\"@@iterator\"];\n if (_i == null)\n return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i)\n break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null)\n _i[\"return\"]();\n } finally {\n if (_d)\n throw _e;\n }\n }\n return _arr;\n}\nvar $$x = _export;\nvar isObject$8 = isObject$j;\nvar isArray$2 = isArray$b;\nvar toAbsoluteIndex$2 = toAbsoluteIndex$4;\nvar toLength$5 = toLength$a;\nvar toIndexedObject$1 = toIndexedObject$a;\nvar createProperty$1 = createProperty$5;\nvar wellKnownSymbol$3 = wellKnownSymbol$j;\nvar arrayMethodHasSpeciesSupport$3 = arrayMethodHasSpeciesSupport$5;\nvar HAS_SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport$3(\"slice\");\nvar SPECIES$1 = wellKnownSymbol$3(\"species\");\nvar nativeSlice = [].slice;\nvar max$1 = Math.max;\n$$x({\n target: \"Array\",\n proto: true,\n forced: !HAS_SPECIES_SUPPORT$3\n}, {\n slice: function slice(start, end) {\n var O = toIndexedObject$1(this);\n var length2 = toLength$5(O.length);\n var k = toAbsoluteIndex$2(start, length2);\n var fin = toAbsoluteIndex$2(end === void 0 ? length2 : end, length2);\n var Constructor, result, n;\n if (isArray$2(O)) {\n Constructor = O.constructor;\n if (typeof Constructor == \"function\" && (Constructor === Array || isArray$2(Constructor.prototype))) {\n Constructor = void 0;\n } else if (isObject$8(Constructor)) {\n Constructor = Constructor[SPECIES$1];\n if (Constructor === null)\n Constructor = void 0;\n }\n if (Constructor === Array || Constructor === void 0) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === void 0 ? Array : Constructor)(max$1(fin - k, 0));\n for (n = 0; k < fin; k++, n++)\n if (k in O)\n createProperty$1(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\nvar entryVirtual$g = entryVirtual$i;\nvar slice$6 = entryVirtual$g(\"Array\").slice;\nvar slice$5 = slice$6;\nvar ArrayPrototype$e = Array.prototype;\nvar slice_1 = function(it2) {\n var own = it2.slice;\n return it2 === ArrayPrototype$e || it2 instanceof Array && own === ArrayPrototype$e.slice ? slice$5 : own;\n};\nvar parent$E = slice_1;\nvar slice$4 = parent$E;\nvar parent$D = slice$4;\nvar slice$3 = parent$D;\nvar slice$2 = slice$3;\nvar parent$C = from$3;\nvar from$1 = parent$C;\nvar from2 = from$1;\nfunction _arrayLikeToArray$8(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _unsupportedIterableToArray$8(o, minLen) {\n var _context;\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray$8(o, minLen);\n var n = slice$2(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return from2(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray$8(o, minLen);\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray$8(arr, i) || _nonIterableRest();\n}\nvar WrappedWellKnownSymbolModule = wellKnownSymbolWrapped;\nvar iterator$3 = WrappedWellKnownSymbolModule.f(\"iterator\");\nvar parent$B = iterator$3;\nvar iterator$2 = parent$B;\nvar parent$A = iterator$2;\nvar iterator$1 = parent$A;\nvar iterator = iterator$1;\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof symbol$1 === \"function\" && typeof iterator === \"symbol\") {\n _typeof = function _typeof2(obj2) {\n return typeof obj2;\n };\n } else {\n _typeof = function _typeof2(obj2) {\n return obj2 && typeof symbol$1 === \"function\" && obj2.constructor === symbol$1 && obj2 !== symbol$1.prototype ? \"symbol\" : typeof obj2;\n };\n }\n return _typeof(obj);\n}\nfunction _arrayWithoutHoles(arr) {\n if (isArray$4(arr))\n return _arrayLikeToArray$8(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof symbol$1 !== \"undefined\" && getIteratorMethod$1(iter) != null || iter[\"@@iterator\"] != null)\n return from2(iter);\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$8(arr) || _nonIterableSpread();\n}\nvar symbol = symbol$3;\nvar entryVirtual$f = entryVirtual$i;\nvar concat$3 = entryVirtual$f(\"Array\").concat;\nvar concat$2 = concat$3;\nvar ArrayPrototype$d = Array.prototype;\nvar concat_1 = function(it2) {\n var own = it2.concat;\n return it2 === ArrayPrototype$d || it2 instanceof Array && own === ArrayPrototype$d.concat ? concat$2 : own;\n};\nvar parent$z = concat_1;\nvar concat$1 = parent$z;\nvar concat2 = concat$1;\nvar slice$1 = slice$4;\nvar $$w = _export;\nvar ownKeys$4 = ownKeys$6;\n$$w({\n target: \"Reflect\",\n stat: true\n}, {\n ownKeys: ownKeys$4\n});\nvar path$j = path$x;\npath$j.Reflect.ownKeys;\nvar isArray$1 = isArray$6;\nvar $$v = _export;\nvar $map = arrayIteration.map;\nvar arrayMethodHasSpeciesSupport$2 = arrayMethodHasSpeciesSupport$5;\nvar HAS_SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport$2(\"map\");\n$$v({\n target: \"Array\",\n proto: true,\n forced: !HAS_SPECIES_SUPPORT$2\n}, {\n map: function map(callbackfn) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar entryVirtual$e = entryVirtual$i;\nvar map$6 = entryVirtual$e(\"Array\").map;\nvar map$5 = map$6;\nvar ArrayPrototype$c = Array.prototype;\nvar map_1 = function(it2) {\n var own = it2.map;\n return it2 === ArrayPrototype$c || it2 instanceof Array && own === ArrayPrototype$c.map ? map$5 : own;\n};\nvar parent$y = map_1;\nvar map$4 = parent$y;\nvar map$3 = map$4;\nvar $$u = _export;\nvar toObject$5 = toObject$d;\nvar nativeKeys = objectKeys$4;\nvar fails$9 = fails$m;\nvar FAILS_ON_PRIMITIVES$2 = fails$9(function() {\n nativeKeys(1);\n});\n$$u({\n target: \"Object\",\n stat: true,\n forced: FAILS_ON_PRIMITIVES$2\n}, {\n keys: function keys2(it2) {\n return nativeKeys(toObject$5(it2));\n }\n});\nvar path$i = path$x;\nvar keys$2 = path$i.Object.keys;\nvar parent$x = keys$2;\nvar keys$1 = parent$x;\nvar keys3 = keys$1;\nvar $$t = _export;\n$$t({\n target: \"Date\",\n stat: true\n}, {\n now: function now() {\n return new Date().getTime();\n }\n});\nvar path$h = path$x;\nvar now$3 = path$h.Date.now;\nvar parent$w = now$3;\nvar now$2 = parent$w;\nvar now$1 = now$2;\nvar fails$8 = fails$m;\nvar arrayMethodIsStrict$6 = function(METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails$8(function() {\n method.call(null, argument || function() {\n throw 1;\n }, 1);\n });\n};\nvar $forEach = arrayIteration.forEach;\nvar arrayMethodIsStrict$5 = arrayMethodIsStrict$6;\nvar STRICT_METHOD$5 = arrayMethodIsStrict$5(\"forEach\");\nvar arrayForEach = !STRICT_METHOD$5 ? function forEach(callbackfn) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);\n} : [].forEach;\nvar $$s = _export;\nvar forEach$6 = arrayForEach;\n$$s({\n target: \"Array\",\n proto: true,\n forced: [].forEach != forEach$6\n}, {\n forEach: forEach$6\n});\nvar entryVirtual$d = entryVirtual$i;\nvar forEach$5 = entryVirtual$d(\"Array\").forEach;\nvar parent$v = forEach$5;\nvar forEach$4 = parent$v;\nvar forEach$3 = forEach$4;\nvar classof$3 = classof$8;\nvar ArrayPrototype$b = Array.prototype;\nvar DOMIterables$1 = {\n DOMTokenList: true,\n NodeList: true\n};\nvar forEach_1 = function(it2) {\n var own = it2.forEach;\n return it2 === ArrayPrototype$b || it2 instanceof Array && own === ArrayPrototype$b.forEach || DOMIterables$1.hasOwnProperty(classof$3(it2)) ? forEach$3 : own;\n};\nvar forEach$2 = forEach_1;\nvar $$r = _export;\nvar isArray2 = isArray$b;\nvar nativeReverse = [].reverse;\nvar test$1 = [1, 2];\n$$r({\n target: \"Array\",\n proto: true,\n forced: String(test$1) === String(test$1.reverse())\n}, {\n reverse: function reverse() {\n if (isArray2(this))\n this.length = this.length;\n return nativeReverse.call(this);\n }\n});\nvar entryVirtual$c = entryVirtual$i;\nvar reverse$3 = entryVirtual$c(\"Array\").reverse;\nvar reverse$2 = reverse$3;\nvar ArrayPrototype$a = Array.prototype;\nvar reverse_1 = function(it2) {\n var own = it2.reverse;\n return it2 === ArrayPrototype$a || it2 instanceof Array && own === ArrayPrototype$a.reverse ? reverse$2 : own;\n};\nvar parent$u = reverse_1;\nvar reverse$1 = parent$u;\nvar reverse2 = reverse$1;\nvar $$q = _export;\nvar toAbsoluteIndex$1 = toAbsoluteIndex$4;\nvar toInteger = toInteger$4;\nvar toLength$4 = toLength$a;\nvar toObject$4 = toObject$d;\nvar arraySpeciesCreate = arraySpeciesCreate$3;\nvar createProperty = createProperty$5;\nvar arrayMethodHasSpeciesSupport$1 = arrayMethodHasSpeciesSupport$5;\nvar HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport$1(\"splice\");\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 9007199254740991;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = \"Maximum allowed length exceeded\";\n$$q({\n target: \"Array\",\n proto: true,\n forced: !HAS_SPECIES_SUPPORT$1\n}, {\n splice: function splice(start, deleteCount) {\n var O = toObject$4(this);\n var len = toLength$4(O.length);\n var actualStart = toAbsoluteIndex$1(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from3, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from3 = actualStart + k;\n if (from3 in O)\n createProperty(A, k, O[from3]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from3 = k + actualDeleteCount;\n to = k + insertCount;\n if (from3 in O)\n O[to] = O[from3];\n else\n delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--)\n delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from3 = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from3 in O)\n O[to] = O[from3];\n else\n delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\nvar entryVirtual$b = entryVirtual$i;\nvar splice$3 = entryVirtual$b(\"Array\").splice;\nvar splice$2 = splice$3;\nvar ArrayPrototype$9 = Array.prototype;\nvar splice_1 = function(it2) {\n var own = it2.splice;\n return it2 === ArrayPrototype$9 || it2 instanceof Array && own === ArrayPrototype$9.splice ? splice$2 : own;\n};\nvar parent$t = splice_1;\nvar splice$1 = parent$t;\nvar splice2 = splice$1;\nvar $$p = _export;\nvar $includes = arrayIncludes$1.includes;\n$$p({\n target: \"Array\",\n proto: true\n}, {\n includes: function includes(el) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar entryVirtual$a = entryVirtual$i;\nvar includes$4 = entryVirtual$a(\"Array\").includes;\nvar isObject$7 = isObject$j;\nvar classof$2 = classofRaw$1;\nvar wellKnownSymbol$2 = wellKnownSymbol$j;\nvar MATCH$1 = wellKnownSymbol$2(\"match\");\nvar isRegexp = function(it2) {\n var isRegExp2;\n return isObject$7(it2) && ((isRegExp2 = it2[MATCH$1]) !== void 0 ? !!isRegExp2 : classof$2(it2) == \"RegExp\");\n};\nvar isRegExp = isRegexp;\nvar notARegexp = function(it2) {\n if (isRegExp(it2)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n }\n return it2;\n};\nvar wellKnownSymbol$1 = wellKnownSymbol$j;\nvar MATCH = wellKnownSymbol$1(\"match\");\nvar correctIsRegexpLogic = function(METHOD_NAME) {\n var regexp = /./;\n try {\n \"/./\"[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return \"/./\"[METHOD_NAME](regexp);\n } catch (error2) {\n }\n }\n return false;\n};\nvar $$o = _export;\nvar notARegExp = notARegexp;\nvar requireObjectCoercible$1 = requireObjectCoercible$5;\nvar toString$4 = toString$9;\nvar correctIsRegExpLogic = correctIsRegexpLogic;\n$$o({\n target: \"String\",\n proto: true,\n forced: !correctIsRegExpLogic(\"includes\")\n}, {\n includes: function includes2(searchString) {\n return !!~toString$4(requireObjectCoercible$1(this)).indexOf(toString$4(notARegExp(searchString)), arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar entryVirtual$9 = entryVirtual$i;\nvar includes$3 = entryVirtual$9(\"String\").includes;\nvar arrayIncludes = includes$4;\nvar stringIncludes = includes$3;\nvar ArrayPrototype$8 = Array.prototype;\nvar StringPrototype = String.prototype;\nvar includes$2 = function(it2) {\n var own = it2.includes;\n if (it2 === ArrayPrototype$8 || it2 instanceof Array && own === ArrayPrototype$8.includes)\n return arrayIncludes;\n if (typeof it2 === \"string\" || it2 === StringPrototype || it2 instanceof String && own === StringPrototype.includes) {\n return stringIncludes;\n }\n return own;\n};\nvar parent$s = includes$2;\nvar includes$1 = parent$s;\nvar includes3 = includes$1;\nvar $$n = _export;\nvar fails$7 = fails$m;\nvar toObject$3 = toObject$d;\nvar nativeGetPrototypeOf = objectGetPrototypeOf;\nvar CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter;\nvar FAILS_ON_PRIMITIVES$1 = fails$7(function() {\n nativeGetPrototypeOf(1);\n});\n$$n({\n target: \"Object\",\n stat: true,\n forced: FAILS_ON_PRIMITIVES$1,\n sham: !CORRECT_PROTOTYPE_GETTER\n}, {\n getPrototypeOf: function getPrototypeOf(it2) {\n return nativeGetPrototypeOf(toObject$3(it2));\n }\n});\nvar path$g = path$x;\nvar getPrototypeOf$5 = path$g.Object.getPrototypeOf;\nvar parent$r = getPrototypeOf$5;\nvar getPrototypeOf$4 = parent$r;\nvar getPrototypeOf$3 = getPrototypeOf$4;\nvar $$m = _export;\nvar $filter = arrayIteration.filter;\nvar arrayMethodHasSpeciesSupport = arrayMethodHasSpeciesSupport$5;\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport(\"filter\");\n$$m({\n target: \"Array\",\n proto: true,\n forced: !HAS_SPECIES_SUPPORT\n}, {\n filter: function filter(callbackfn) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar entryVirtual$8 = entryVirtual$i;\nvar filter$3 = entryVirtual$8(\"Array\").filter;\nvar filter$2 = filter$3;\nvar ArrayPrototype$7 = Array.prototype;\nvar filter_1 = function(it2) {\n var own = it2.filter;\n return it2 === ArrayPrototype$7 || it2 instanceof Array && own === ArrayPrototype$7.filter ? filter$2 : own;\n};\nvar parent$q = filter_1;\nvar filter$1 = parent$q;\nvar filter2 = filter$1;\nvar DESCRIPTORS$4 = descriptors;\nvar objectKeys = objectKeys$4;\nvar toIndexedObject = toIndexedObject$a;\nvar propertyIsEnumerable3 = objectPropertyIsEnumerable.f;\nvar createMethod$2 = function(TO_ENTRIES) {\n return function(it2) {\n var O = toIndexedObject(it2);\n var keys4 = objectKeys(O);\n var length2 = keys4.length;\n var i = 0;\n var result = [];\n var key;\n while (length2 > i) {\n key = keys4[i++];\n if (!DESCRIPTORS$4 || propertyIsEnumerable3.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\nvar objectToArray = {\n entries: createMethod$2(true),\n values: createMethod$2(false)\n};\nvar $$l = _export;\nvar $values = objectToArray.values;\n$$l({\n target: \"Object\",\n stat: true\n}, {\n values: function values(O) {\n return $values(O);\n }\n});\nvar path$f = path$x;\npath$f.Object.values;\nvar whitespaces$4 = \"\t\\n\\v\\f\\r \\xA0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF\";\nvar requireObjectCoercible = requireObjectCoercible$5;\nvar toString$3 = toString$9;\nvar whitespaces$3 = whitespaces$4;\nvar whitespace = \"[\" + whitespaces$3 + \"]\";\nvar ltrim = RegExp(\"^\" + whitespace + whitespace + \"*\");\nvar rtrim = RegExp(whitespace + whitespace + \"*$\");\nvar createMethod$1 = function(TYPE) {\n return function($this) {\n var string2 = toString$3(requireObjectCoercible($this));\n if (TYPE & 1)\n string2 = string2.replace(ltrim, \"\");\n if (TYPE & 2)\n string2 = string2.replace(rtrim, \"\");\n return string2;\n };\n};\nvar stringTrim = {\n start: createMethod$1(1),\n end: createMethod$1(2),\n trim: createMethod$1(3)\n};\nvar global$7 = global$k;\nvar toString$2 = toString$9;\nvar trim$1 = stringTrim.trim;\nvar whitespaces$2 = whitespaces$4;\nvar $parseInt = global$7.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED$4 = $parseInt(whitespaces$2 + \"08\") !== 8 || $parseInt(whitespaces$2 + \"0x16\") !== 22;\nvar numberParseInt = FORCED$4 ? function parseInt2(string2, radix) {\n var S = trim$1(toString$2(string2));\n return $parseInt(S, radix >>> 0 || (hex.test(S) ? 16 : 10));\n} : $parseInt;\nvar $$k = _export;\nvar parseIntImplementation = numberParseInt;\n$$k({\n global: true,\n forced: parseInt != parseIntImplementation\n}, {\n parseInt: parseIntImplementation\n});\nvar path$e = path$x;\nvar _parseInt$2 = path$e.parseInt;\nvar parent$p = _parseInt$2;\nvar _parseInt$1 = parent$p;\nvar _parseInt = _parseInt$1;\nvar $$j = _export;\nvar $indexOf = arrayIncludes$1.indexOf;\nvar arrayMethodIsStrict$4 = arrayMethodIsStrict$6;\nvar nativeIndexOf = [].indexOf;\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD$4 = arrayMethodIsStrict$4(\"indexOf\");\n$$j({\n target: \"Array\",\n proto: true,\n forced: NEGATIVE_ZERO || !STRICT_METHOD$4\n}, {\n indexOf: function indexOf(searchElement) {\n return NEGATIVE_ZERO ? nativeIndexOf.apply(this, arguments) || 0 : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar entryVirtual$7 = entryVirtual$i;\nvar indexOf$3 = entryVirtual$7(\"Array\").indexOf;\nvar indexOf$2 = indexOf$3;\nvar ArrayPrototype$6 = Array.prototype;\nvar indexOf_1 = function(it2) {\n var own = it2.indexOf;\n return it2 === ArrayPrototype$6 || it2 instanceof Array && own === ArrayPrototype$6.indexOf ? indexOf$2 : own;\n};\nvar parent$o = indexOf_1;\nvar indexOf$1 = parent$o;\nvar indexOf2 = indexOf$1;\nvar fails$6 = fails$m;\nvar whitespaces$1 = whitespaces$4;\nvar non = \"\\u200B\\x85\\u180E\";\nvar stringTrimForced = function(METHOD_NAME) {\n return fails$6(function() {\n return !!whitespaces$1[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces$1[METHOD_NAME].name !== METHOD_NAME;\n });\n};\nvar $$i = _export;\nvar $trim = stringTrim.trim;\nvar forcedStringTrimMethod = stringTrimForced;\n$$i({\n target: \"String\",\n proto: true,\n forced: forcedStringTrimMethod(\"trim\")\n}, {\n trim: function trim() {\n return $trim(this);\n }\n});\nvar entryVirtual$6 = entryVirtual$i;\nentryVirtual$6(\"String\").trim;\nvar $$h = _export;\nvar DESCRIPTORS$3 = descriptors;\nvar create$7 = objectCreate;\n$$h({\n target: \"Object\",\n stat: true,\n sham: !DESCRIPTORS$3\n}, {\n create: create$7\n});\nvar path$d = path$x;\nvar Object$2 = path$d.Object;\nvar create$6 = function create3(P, D) {\n return Object$2.create(P, D);\n};\nvar parent$n = create$6;\nvar create$5 = parent$n;\nvar create$4 = create$5;\nvar $$g = _export;\nvar getBuiltIn$2 = getBuiltIn$8;\nvar fails$5 = fails$m;\nvar $stringify = getBuiltIn$2(\"JSON\", \"stringify\");\nvar re = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\nvar fix = function(match2, offset, string2) {\n var prev = string2.charAt(offset - 1);\n var next3 = string2.charAt(offset + 1);\n if (low.test(match2) && !hi.test(next3) || hi.test(match2) && !low.test(prev)) {\n return \"\\\\u\" + match2.charCodeAt(0).toString(16);\n }\n return match2;\n};\nvar FORCED$3 = fails$5(function() {\n return $stringify(\"\\uDF06\\uD834\") !== '\"\\\\udf06\\\\ud834\"' || $stringify(\"\\uDEAD\") !== '\"\\\\udead\"';\n});\nif ($stringify) {\n $$g({\n target: \"JSON\",\n stat: true,\n forced: FORCED$3\n }, {\n stringify: function stringify3(it2, replacer, space) {\n var result = $stringify.apply(null, arguments);\n return typeof result == \"string\" ? result.replace(re, fix) : result;\n }\n });\n}\nvar core = path$x;\nif (!core.JSON)\n core.JSON = {\n stringify: JSON.stringify\n };\nvar stringify$3 = function stringify(it2, replacer, space) {\n return core.JSON.stringify.apply(null, arguments);\n};\nvar parent$m = stringify$3;\nvar stringify$2 = parent$m;\nvar stringify$1 = stringify$2;\nvar $$f = _export;\nvar global$6 = global$k;\nvar userAgent$2 = engineUserAgent;\nvar slice2 = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent$2);\nvar wrap = function(scheduler) {\n return function(handler, timeout) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice2.call(arguments, 2) : void 0;\n return scheduler(boundArgs ? function() {\n (typeof handler == \"function\" ? handler : Function(handler)).apply(this, args);\n } : handler, timeout);\n };\n};\n$$f({\n global: true,\n bind: true,\n forced: MSIE\n}, {\n setTimeout: wrap(global$6.setTimeout),\n setInterval: wrap(global$6.setInterval)\n});\nvar path$c = path$x;\nvar setTimeout$2 = path$c.setTimeout;\nvar setTimeout$1 = setTimeout$2;\nvar toObject$2 = toObject$d;\nvar toAbsoluteIndex = toAbsoluteIndex$4;\nvar toLength$3 = toLength$a;\nvar arrayFill = function fill(value) {\n var O = toObject$2(this);\n var length2 = toLength$3(O.length);\n var argumentsLength = arguments.length;\n var index2 = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : void 0, length2);\n var end = argumentsLength > 2 ? arguments[2] : void 0;\n var endPos = end === void 0 ? length2 : toAbsoluteIndex(end, length2);\n while (endPos > index2)\n O[index2++] = value;\n return O;\n};\nvar $$e = _export;\nvar fill$4 = arrayFill;\n$$e({\n target: \"Array\",\n proto: true\n}, {\n fill: fill$4\n});\nvar entryVirtual$5 = entryVirtual$i;\nvar fill$3 = entryVirtual$5(\"Array\").fill;\nvar fill$2 = fill$3;\nvar ArrayPrototype$5 = Array.prototype;\nvar fill_1 = function(it2) {\n var own = it2.fill;\n return it2 === ArrayPrototype$5 || it2 instanceof Array && own === ArrayPrototype$5.fill ? fill$2 : own;\n};\nvar parent$l = fill_1;\nvar fill$1 = parent$l;\nvar fill2 = fill$1;\n/*! Hammer.JS - v2.0.17-rc - 2019-12-16\n * http://naver.github.io/egjs\n *\n * Forked By Naver egjs\n * Copyright (c) hammerjs\n * Licensed under the MIT license */\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nfunction _assertThisInitialized$1(self2) {\n if (self2 === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self2;\n}\nvar assign2;\nif (typeof Object.assign !== \"function\") {\n assign2 = function assign3(target) {\n if (target === void 0 || target === null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n var output = Object(target);\n for (var index2 = 1; index2 < arguments.length; index2++) {\n var source = arguments[index2];\n if (source !== void 0 && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign2 = Object.assign;\n}\nvar assign$1 = assign2;\nvar VENDOR_PREFIXES = [\"\", \"webkit\", \"Moz\", \"MS\", \"ms\", \"o\"];\nvar TEST_ELEMENT = typeof document === \"undefined\" ? {\n style: {}\n} : document.createElement(\"div\");\nvar TYPE_FUNCTION = \"function\";\nvar round = Math.round, abs$1 = Math.abs;\nvar now2 = Date.now;\nfunction prefixed(obj, property) {\n var prefix;\n var prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = prefix ? prefix + camelProp : property;\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return void 0;\n}\nvar win;\nif (typeof window === \"undefined\") {\n win = {};\n} else {\n win = window;\n}\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, \"touchAction\");\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== void 0;\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = win.CSS && win.CSS.supports;\n [\"auto\", \"manipulation\", \"pan-y\", \"pan-x\", \"pan-x pan-y\", \"none\"].forEach(function(val) {\n return touchMap[val] = cssSupports ? win.CSS.supports(\"touch-action\", val) : true;\n });\n return touchMap;\n}\nvar TOUCH_ACTION_COMPUTE = \"compute\";\nvar TOUCH_ACTION_AUTO = \"auto\";\nvar TOUCH_ACTION_MANIPULATION = \"manipulation\";\nvar TOUCH_ACTION_NONE = \"none\";\nvar TOUCH_ACTION_PAN_X = \"pan-x\";\nvar TOUCH_ACTION_PAN_Y = \"pan-y\";\nvar TOUCH_ACTION_MAP = getTouchActionProps();\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\nvar SUPPORT_TOUCH = \"ontouchstart\" in win;\nvar SUPPORT_POINTER_EVENTS = prefixed(win, \"PointerEvent\") !== void 0;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\nvar INPUT_TYPE_TOUCH = \"touch\";\nvar INPUT_TYPE_PEN = \"pen\";\nvar INPUT_TYPE_MOUSE = \"mouse\";\nvar INPUT_TYPE_KINECT = \"kinect\";\nvar COMPUTE_INTERVAL = 25;\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\nvar PROPS_XY = [\"x\", \"y\"];\nvar PROPS_CLIENT_XY = [\"clientX\", \"clientY\"];\nfunction each(obj, iterator2, context) {\n var i;\n if (!obj) {\n return;\n }\n if (obj.forEach) {\n obj.forEach(iterator2, context);\n } else if (obj.length !== void 0) {\n i = 0;\n while (i < obj.length) {\n iterator2.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator2.call(context, obj[i], i, obj);\n }\n }\n}\nfunction boolOrFn(val, args) {\n if (typeof val === TYPE_FUNCTION) {\n return val.apply(args ? args[0] || void 0 : void 0, args);\n }\n return val;\n}\nfunction inStr(str, find2) {\n return str.indexOf(find2) > -1;\n}\nfunction cleanTouchActions(actions) {\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n return TOUCH_ACTION_AUTO;\n}\nvar TouchAction = /* @__PURE__ */ function() {\n function TouchAction2(manager, value) {\n this.manager = manager;\n this.set(value);\n }\n var _proto = TouchAction2.prototype;\n _proto.set = function set2(value) {\n if (value === TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n };\n _proto.update = function update() {\n this.set(this.manager.options.touchAction);\n };\n _proto.compute = function compute() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(\" \"));\n };\n _proto.preventDefaults = function preventDefaults(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n if (hasNone) {\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n if (hasPanX && hasPanY) {\n return;\n }\n if (hasNone || hasPanY && direction & DIRECTION_HORIZONTAL || hasPanX && direction & DIRECTION_VERTICAL) {\n return this.preventSrc(srcEvent);\n }\n };\n _proto.preventSrc = function preventSrc(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n };\n return TouchAction2;\n}();\nfunction hasParent(node, parent2) {\n while (node) {\n if (node === parent2) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n var x = 0;\n var y = 0;\n var i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\nfunction simpleCloneInputData(input) {\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n return {\n timeStamp: now2(),\n pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]];\n var y = p2[props[1]] - p1[props[1]];\n return Math.sqrt(x * x + y * y);\n}\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]];\n var y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n if (abs$1(x) >= abs$1(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input;\n var deltaTime = input.timeStamp - last.timeStamp;\n var velocity;\n var velocityX;\n var velocityY;\n var direction;\n if (input.eventType !== INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === void 0)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = abs$1(v.x) > abs$1(v.y) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n session.lastInterval = input;\n } else {\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n var firstInput = session.firstInput, firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n var center = input.center = getCenter(pointers);\n input.timeStamp = now2();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = abs$1(overallVelocity.x) > abs$1(overallVelocity.y) ? overallVelocity.x : overallVelocity.y;\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n input.maxPointers = !session.prevInput ? input.pointers.length : input.pointers.length > session.prevInput.maxPointers ? input.pointers.length : session.prevInput.maxPointers;\n computeIntervalInputData(session, input);\n var target = manager.element;\n var srcEvent = input.srcEvent;\n var srcEventTarget;\n if (srcEvent.composedPath) {\n srcEventTarget = srcEvent.composedPath()[0];\n } else if (srcEvent.path) {\n srcEventTarget = srcEvent.path[0];\n } else {\n srcEventTarget = srcEvent.target;\n }\n if (hasParent(srcEventTarget, target)) {\n target = srcEventTarget;\n }\n input.target = target;\n}\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = eventType & INPUT_START && pointersLen - changedPointersLen === 0;\n var isFinal = eventType & (INPUT_END | INPUT_CANCEL) && pointersLen - changedPointersLen === 0;\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n if (isFirst) {\n manager.session = {};\n }\n input.eventType = eventType;\n computeInputData(manager, input);\n manager.emit(\"hammer.input\", input);\n manager.recognize(input);\n manager.session.prevInput = input;\n}\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return doc.defaultView || doc.parentWindow || window;\n}\nvar Input = /* @__PURE__ */ function() {\n function Input2(manager, callback) {\n var self2 = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self2.handler(ev);\n }\n };\n this.init();\n }\n var _proto = Input2.prototype;\n _proto.handler = function handler() {\n };\n _proto.init = function init() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n };\n _proto.destroy = function destroy() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n };\n return Input2;\n}();\nfunction inArray(src, find2, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find2);\n } else {\n var i = 0;\n while (i < src.length) {\n if (findByKey && src[i][findByKey] == find2 || !findByKey && src[i] === find2) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT\n};\nvar POINTER_ELEMENT_EVENTS = \"pointerdown\";\nvar POINTER_WINDOW_EVENTS = \"pointermove pointerup pointercancel\";\nif (win.MSPointerEvent && !win.PointerEvent) {\n POINTER_ELEMENT_EVENTS = \"MSPointerDown\";\n POINTER_WINDOW_EVENTS = \"MSPointerMove MSPointerUp MSPointerCancel\";\n}\nvar PointerEventInput = /* @__PURE__ */ function(_Input) {\n _inheritsLoose(PointerEventInput2, _Input);\n function PointerEventInput2() {\n var _this;\n var proto = PointerEventInput2.prototype;\n proto.evEl = POINTER_ELEMENT_EVENTS;\n proto.evWin = POINTER_WINDOW_EVENTS;\n _this = _Input.apply(this, arguments) || this;\n _this.store = _this.manager.session.pointerEvents = [];\n return _this;\n }\n var _proto = PointerEventInput2.prototype;\n _proto.handler = function handler(ev) {\n var store = this.store;\n var removePointer = false;\n var eventTypeNormalized = ev.type.toLowerCase().replace(\"ms\", \"\");\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n var isTouch = pointerType === INPUT_TYPE_TOUCH;\n var storeIndex = inArray(store, ev.pointerId, \"pointerId\");\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n if (storeIndex < 0) {\n return;\n }\n store[storeIndex] = ev;\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType,\n srcEvent: ev\n });\n if (removePointer) {\n store.splice(storeIndex, 1);\n }\n };\n return PointerEventInput2;\n}(Input);\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\nfunction uniqueArray(src, key, sort3) {\n var results = [];\n var values3 = [];\n var i = 0;\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values3, val) < 0) {\n results.push(src[i]);\n }\n values3[i] = val;\n i++;\n }\n if (sort3) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function(a, b) {\n return a[key] > b[key];\n });\n }\n }\n return results;\n}\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\nvar TOUCH_TARGET_EVENTS = \"touchstart touchmove touchend touchcancel\";\nvar TouchInput = /* @__PURE__ */ function(_Input) {\n _inheritsLoose(TouchInput2, _Input);\n function TouchInput2() {\n var _this;\n TouchInput2.prototype.evTarget = TOUCH_TARGET_EVENTS;\n _this = _Input.apply(this, arguments) || this;\n _this.targetIds = {};\n return _this;\n }\n var _proto = TouchInput2.prototype;\n _proto.handler = function handler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n };\n return TouchInput2;\n}(Input);\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n var i;\n var targetTouches;\n var changedTouches = toArray(ev.changedTouches);\n var changedTargetTouches = [];\n var target = this.target;\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n if (!changedTargetTouches.length) {\n return;\n }\n return [\n uniqueArray(targetTouches.concat(changedTargetTouches), \"identifier\", true),\n changedTargetTouches\n ];\n}\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\nvar MOUSE_ELEMENT_EVENTS = \"mousedown\";\nvar MOUSE_WINDOW_EVENTS = \"mousemove mouseup\";\nvar MouseInput = /* @__PURE__ */ function(_Input) {\n _inheritsLoose(MouseInput2, _Input);\n function MouseInput2() {\n var _this;\n var proto = MouseInput2.prototype;\n proto.evEl = MOUSE_ELEMENT_EVENTS;\n proto.evWin = MOUSE_WINDOW_EVENTS;\n _this = _Input.apply(this, arguments) || this;\n _this.pressed = false;\n return _this;\n }\n var _proto = MouseInput2.prototype;\n _proto.handler = function handler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n if (!this.pressed) {\n return;\n }\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n };\n return MouseInput2;\n}(Input);\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\nfunction setLastTouch(eventData) {\n var _eventData$changedPoi = eventData.changedPointers, touch = _eventData$changedPoi[0];\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {\n x: touch.clientX,\n y: touch.clientY\n };\n var lts = this.lastTouches;\n this.lastTouches.push(lastTouch);\n var removeLastTouch = function removeLastTouch2() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX;\n var y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x);\n var dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\nvar TouchMouseInput = /* @__PURE__ */ function() {\n var TouchMouseInput2 = /* @__PURE__ */ function(_Input) {\n _inheritsLoose(TouchMouseInput3, _Input);\n function TouchMouseInput3(_manager, callback) {\n var _this;\n _this = _Input.call(this, _manager, callback) || this;\n _this.handler = function(manager, inputEvent, inputData) {\n var isTouch = inputData.pointerType === INPUT_TYPE_TOUCH;\n var isMouse = inputData.pointerType === INPUT_TYPE_MOUSE;\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n if (isTouch) {\n recordTouches.call(_assertThisInitialized$1(_assertThisInitialized$1(_this)), inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(_assertThisInitialized$1(_assertThisInitialized$1(_this)), inputData)) {\n return;\n }\n _this.callback(manager, inputEvent, inputData);\n };\n _this.touch = new TouchInput(_this.manager, _this.handler);\n _this.mouse = new MouseInput(_this.manager, _this.handler);\n _this.primaryTouch = null;\n _this.lastTouches = [];\n return _this;\n }\n var _proto = TouchMouseInput3.prototype;\n _proto.destroy = function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n };\n return TouchMouseInput3;\n }(Input);\n return TouchMouseInput2;\n}();\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new Type(manager, inputHandler);\n}\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return \"cancel\";\n } else if (state & STATE_ENDED) {\n return \"end\";\n } else if (state & STATE_CHANGED) {\n return \"move\";\n } else if (state & STATE_BEGAN) {\n return \"start\";\n }\n return \"\";\n}\nvar Recognizer = /* @__PURE__ */ function() {\n function Recognizer2(options2) {\n if (options2 === void 0) {\n options2 = {};\n }\n this.options = _extends({\n enable: true\n }, options2);\n this.id = uniqueId();\n this.manager = null;\n this.state = STATE_POSSIBLE;\n this.simultaneous = {};\n this.requireFail = [];\n }\n var _proto = Recognizer2.prototype;\n _proto.set = function set2(options2) {\n assign$1(this.options, options2);\n this.manager && this.manager.touchAction.update();\n return this;\n };\n _proto.recognizeWith = function recognizeWith(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, \"recognizeWith\", this)) {\n return this;\n }\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n };\n _proto.dropRecognizeWith = function dropRecognizeWith(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, \"dropRecognizeWith\", this)) {\n return this;\n }\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n };\n _proto.requireFailure = function requireFailure(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, \"requireFailure\", this)) {\n return this;\n }\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n };\n _proto.dropRequireFailure = function dropRequireFailure(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, \"dropRequireFailure\", this)) {\n return this;\n }\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index2 = inArray(this.requireFail, otherRecognizer);\n if (index2 > -1) {\n this.requireFail.splice(index2, 1);\n }\n return this;\n };\n _proto.hasRequireFailures = function hasRequireFailures() {\n return this.requireFail.length > 0;\n };\n _proto.canRecognizeWith = function canRecognizeWith(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n };\n _proto.emit = function emit(input) {\n var self2 = this;\n var state = this.state;\n function emit2(event) {\n self2.manager.emit(event, input);\n }\n if (state < STATE_ENDED) {\n emit2(self2.options.event + stateStr(state));\n }\n emit2(self2.options.event);\n if (input.additionalEvent) {\n emit2(input.additionalEvent);\n }\n if (state >= STATE_ENDED) {\n emit2(self2.options.event + stateStr(state));\n }\n };\n _proto.tryEmit = function tryEmit(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n this.state = STATE_FAILED;\n };\n _proto.canEmit = function canEmit() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n };\n _proto.recognize = function recognize(inputData) {\n var inputDataClone = assign$1({}, inputData);\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n this.state = this.process(inputDataClone);\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n };\n _proto.process = function process2(inputData) {\n };\n _proto.getTouchAction = function getTouchAction() {\n };\n _proto.reset = function reset() {\n };\n return Recognizer2;\n}();\nvar TapRecognizer = /* @__PURE__ */ function(_Recognizer) {\n _inheritsLoose(TapRecognizer2, _Recognizer);\n function TapRecognizer2(options2) {\n var _this;\n if (options2 === void 0) {\n options2 = {};\n }\n _this = _Recognizer.call(this, _extends({\n event: \"tap\",\n pointers: 1,\n taps: 1,\n interval: 300,\n time: 250,\n threshold: 9,\n posThreshold: 10\n }, options2)) || this;\n _this.pTime = false;\n _this.pCenter = false;\n _this._timer = null;\n _this._input = null;\n _this.count = 0;\n return _this;\n }\n var _proto = TapRecognizer2.prototype;\n _proto.getTouchAction = function getTouchAction() {\n return [TOUCH_ACTION_MANIPULATION];\n };\n _proto.process = function process2(input) {\n var _this2 = this;\n var options2 = this.options;\n var validPointers = input.pointers.length === options2.pointers;\n var validMovement = input.distance < options2.threshold;\n var validTouchTime = input.deltaTime < options2.time;\n this.reset();\n if (input.eventType & INPUT_START && this.count === 0) {\n return this.failTimeout();\n }\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType !== INPUT_END) {\n return this.failTimeout();\n }\n var validInterval = this.pTime ? input.timeStamp - this.pTime < options2.interval : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options2.posThreshold;\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n this._input = input;\n var tapCount = this.count % options2.taps;\n if (tapCount === 0) {\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeout(function() {\n _this2.state = STATE_RECOGNIZED;\n _this2.tryEmit();\n }, options2.interval);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n };\n _proto.failTimeout = function failTimeout() {\n var _this3 = this;\n this._timer = setTimeout(function() {\n _this3.state = STATE_FAILED;\n }, this.options.interval);\n return STATE_FAILED;\n };\n _proto.reset = function reset() {\n clearTimeout(this._timer);\n };\n _proto.emit = function emit() {\n if (this.state === STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n };\n return TapRecognizer2;\n}(Recognizer);\nvar AttrRecognizer = /* @__PURE__ */ function(_Recognizer) {\n _inheritsLoose(AttrRecognizer2, _Recognizer);\n function AttrRecognizer2(options2) {\n if (options2 === void 0) {\n options2 = {};\n }\n return _Recognizer.call(this, _extends({\n pointers: 1\n }, options2)) || this;\n }\n var _proto = AttrRecognizer2.prototype;\n _proto.attrTest = function attrTest(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n };\n _proto.process = function process2(input) {\n var state = this.state;\n var eventType = input.eventType;\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n };\n return AttrRecognizer2;\n}(Recognizer);\nfunction directionStr(direction) {\n if (direction === DIRECTION_DOWN) {\n return \"down\";\n } else if (direction === DIRECTION_UP) {\n return \"up\";\n } else if (direction === DIRECTION_LEFT) {\n return \"left\";\n } else if (direction === DIRECTION_RIGHT) {\n return \"right\";\n }\n return \"\";\n}\nvar PanRecognizer = /* @__PURE__ */ function(_AttrRecognizer) {\n _inheritsLoose(PanRecognizer2, _AttrRecognizer);\n function PanRecognizer2(options2) {\n var _this;\n if (options2 === void 0) {\n options2 = {};\n }\n _this = _AttrRecognizer.call(this, _extends({\n event: \"pan\",\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n }, options2)) || this;\n _this.pX = null;\n _this.pY = null;\n return _this;\n }\n var _proto = PanRecognizer2.prototype;\n _proto.getTouchAction = function getTouchAction() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n };\n _proto.directionTest = function directionTest(input) {\n var options2 = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n if (!(direction & options2.direction)) {\n if (options2.direction & DIRECTION_HORIZONTAL) {\n direction = x === 0 ? DIRECTION_NONE : x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x !== this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = y === 0 ? DIRECTION_NONE : y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y !== this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options2.threshold && direction & options2.direction;\n };\n _proto.attrTest = function attrTest(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) && (this.state & STATE_BEGAN || !(this.state & STATE_BEGAN) && this.directionTest(input));\n };\n _proto.emit = function emit(input) {\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n var direction = directionStr(input.direction);\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n _AttrRecognizer.prototype.emit.call(this, input);\n };\n return PanRecognizer2;\n}(AttrRecognizer);\nvar SwipeRecognizer = /* @__PURE__ */ function(_AttrRecognizer) {\n _inheritsLoose(SwipeRecognizer2, _AttrRecognizer);\n function SwipeRecognizer2(options2) {\n if (options2 === void 0) {\n options2 = {};\n }\n return _AttrRecognizer.call(this, _extends({\n event: \"swipe\",\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n }, options2)) || this;\n }\n var _proto = SwipeRecognizer2.prototype;\n _proto.getTouchAction = function getTouchAction() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n };\n _proto.attrTest = function attrTest(input) {\n var direction = this.options.direction;\n var velocity;\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n return _AttrRecognizer.prototype.attrTest.call(this, input) && direction & input.offsetDirection && input.distance > this.options.threshold && input.maxPointers === this.options.pointers && abs$1(velocity) > this.options.velocity && input.eventType & INPUT_END;\n };\n _proto.emit = function emit(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n this.manager.emit(this.options.event, input);\n };\n return SwipeRecognizer2;\n}(AttrRecognizer);\nvar PinchRecognizer = /* @__PURE__ */ function(_AttrRecognizer) {\n _inheritsLoose(PinchRecognizer2, _AttrRecognizer);\n function PinchRecognizer2(options2) {\n if (options2 === void 0) {\n options2 = {};\n }\n return _AttrRecognizer.call(this, _extends({\n event: \"pinch\",\n threshold: 0,\n pointers: 2\n }, options2)) || this;\n }\n var _proto = PinchRecognizer2.prototype;\n _proto.getTouchAction = function getTouchAction() {\n return [TOUCH_ACTION_NONE];\n };\n _proto.attrTest = function attrTest(input) {\n return _AttrRecognizer.prototype.attrTest.call(this, input) && (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n };\n _proto.emit = function emit(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? \"in\" : \"out\";\n input.additionalEvent = this.options.event + inOut;\n }\n _AttrRecognizer.prototype.emit.call(this, input);\n };\n return PinchRecognizer2;\n}(AttrRecognizer);\nvar RotateRecognizer = /* @__PURE__ */ function(_AttrRecognizer) {\n _inheritsLoose(RotateRecognizer2, _AttrRecognizer);\n function RotateRecognizer2(options2) {\n if (options2 === void 0) {\n options2 = {};\n }\n return _AttrRecognizer.call(this, _extends({\n event: \"rotate\",\n threshold: 0,\n pointers: 2\n }, options2)) || this;\n }\n var _proto = RotateRecognizer2.prototype;\n _proto.getTouchAction = function getTouchAction() {\n return [TOUCH_ACTION_NONE];\n };\n _proto.attrTest = function attrTest(input) {\n return _AttrRecognizer.prototype.attrTest.call(this, input) && (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n };\n return RotateRecognizer2;\n}(AttrRecognizer);\nvar PressRecognizer = /* @__PURE__ */ function(_Recognizer) {\n _inheritsLoose(PressRecognizer2, _Recognizer);\n function PressRecognizer2(options2) {\n var _this;\n if (options2 === void 0) {\n options2 = {};\n }\n _this = _Recognizer.call(this, _extends({\n event: \"press\",\n pointers: 1,\n time: 251,\n threshold: 9\n }, options2)) || this;\n _this._timer = null;\n _this._input = null;\n return _this;\n }\n var _proto = PressRecognizer2.prototype;\n _proto.getTouchAction = function getTouchAction() {\n return [TOUCH_ACTION_AUTO];\n };\n _proto.process = function process2(input) {\n var _this2 = this;\n var options2 = this.options;\n var validPointers = input.pointers.length === options2.pointers;\n var validMovement = input.distance < options2.threshold;\n var validTime = input.deltaTime > options2.time;\n this._input = input;\n if (!validMovement || !validPointers || input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeout(function() {\n _this2.state = STATE_RECOGNIZED;\n _this2.tryEmit();\n }, options2.time);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n };\n _proto.reset = function reset() {\n clearTimeout(this._timer);\n };\n _proto.emit = function emit(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n if (input && input.eventType & INPUT_END) {\n this.manager.emit(this.options.event + \"up\", input);\n } else {\n this._input.timeStamp = now2();\n this.manager.emit(this.options.event, this._input);\n }\n };\n return PressRecognizer2;\n}(Recognizer);\nvar defaults = {\n domEvents: false,\n touchAction: TOUCH_ACTION_COMPUTE,\n enable: true,\n inputTarget: null,\n inputClass: null,\n cssProps: {\n userSelect: \"none\",\n touchSelect: \"none\",\n touchCallout: \"none\",\n contentZooming: \"none\",\n userDrag: \"none\",\n tapHighlightColor: \"rgba(0,0,0,0)\"\n }\n};\nvar preset = [[RotateRecognizer, {\n enable: false\n}], [PinchRecognizer, {\n enable: false\n}, [\"rotate\"]], [SwipeRecognizer, {\n direction: DIRECTION_HORIZONTAL\n}], [PanRecognizer, {\n direction: DIRECTION_HORIZONTAL\n}, [\"swipe\"]], [TapRecognizer], [TapRecognizer, {\n event: \"doubletap\",\n taps: 2\n}, [\"tap\"]], [PressRecognizer]];\nvar STOP = 1;\nvar FORCED_STOP = 2;\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || \"\";\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\nfunction triggerDomEvent(event, data2) {\n var gestureEvent = document.createEvent(\"Event\");\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data2;\n data2.target.dispatchEvent(gestureEvent);\n}\nvar Manager = /* @__PURE__ */ function() {\n function Manager2(element, options2) {\n var _this = this;\n this.options = assign$1({}, defaults, options2 || {});\n this.options.inputTarget = this.options.inputTarget || element;\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n toggleCssProps(this, true);\n each(this.options.recognizers, function(item) {\n var recognizer = _this.add(new item[0](item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n }\n var _proto = Manager2.prototype;\n _proto.set = function set2(options2) {\n assign$1(this.options, options2);\n if (options2.touchAction) {\n this.touchAction.update();\n }\n if (options2.inputTarget) {\n this.input.destroy();\n this.input.target = options2.inputTarget;\n this.input.init();\n }\n return this;\n };\n _proto.stop = function stop(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n };\n _proto.recognize = function recognize(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n this.touchAction.preventDefaults(inputData);\n var recognizer;\n var recognizers = this.recognizers;\n var curRecognizer = session.curRecognizer;\n if (!curRecognizer || curRecognizer && curRecognizer.state & STATE_RECOGNIZED) {\n session.curRecognizer = null;\n curRecognizer = null;\n }\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n if (session.stopped !== FORCED_STOP && (!curRecognizer || recognizer === curRecognizer || recognizer.canRecognizeWith(curRecognizer))) {\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n session.curRecognizer = recognizer;\n curRecognizer = recognizer;\n }\n i++;\n }\n };\n _proto.get = function get2(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event === recognizer) {\n return recognizers[i];\n }\n }\n return null;\n };\n _proto.add = function add(recognizer) {\n if (invokeArrayArg(recognizer, \"add\", this)) {\n return this;\n }\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n this.touchAction.update();\n return recognizer;\n };\n _proto.remove = function remove(recognizer) {\n if (invokeArrayArg(recognizer, \"remove\", this)) {\n return this;\n }\n var targetRecognizer = this.get(recognizer);\n if (recognizer) {\n var recognizers = this.recognizers;\n var index2 = inArray(recognizers, targetRecognizer);\n if (index2 !== -1) {\n recognizers.splice(index2, 1);\n this.touchAction.update();\n }\n }\n return this;\n };\n _proto.on = function on(events, handler) {\n if (events === void 0 || handler === void 0) {\n return this;\n }\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n };\n _proto.off = function off(events, handler) {\n if (events === void 0) {\n return this;\n }\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n };\n _proto.emit = function emit(event, data2) {\n if (this.options.domEvents) {\n triggerDomEvent(event, data2);\n }\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n data2.type = event;\n data2.preventDefault = function() {\n data2.srcEvent.preventDefault();\n };\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data2);\n i++;\n }\n };\n _proto.destroy = function destroy() {\n this.element && toggleCssProps(this, false);\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n };\n return Manager2;\n}();\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\nvar SINGLE_TOUCH_TARGET_EVENTS = \"touchstart\";\nvar SINGLE_TOUCH_WINDOW_EVENTS = \"touchstart touchmove touchend touchcancel\";\nvar SingleTouchInput = /* @__PURE__ */ function(_Input) {\n _inheritsLoose(SingleTouchInput2, _Input);\n function SingleTouchInput2() {\n var _this;\n var proto = SingleTouchInput2.prototype;\n proto.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n proto.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n _this = _Input.apply(this, arguments) || this;\n _this.started = false;\n return _this;\n }\n var _proto = SingleTouchInput2.prototype;\n _proto.handler = function handler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n if (type === INPUT_START) {\n this.started = true;\n }\n if (!this.started) {\n return;\n }\n var touches = normalizeSingleTouches.call(this, ev, type);\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n };\n return SingleTouchInput2;\n}(Input);\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), \"identifier\", true);\n }\n return [all, changed];\n}\nfunction deprecate(method, name, message) {\n var deprecationMessage = \"DEPRECATED METHOD: \" + name + \"\\n\" + message + \" AT \\n\";\n return function() {\n var e = new Error(\"get-stack-trace\");\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, \"\").replace(/^\\s+at\\s+/gm, \"\").replace(/^Object.\\s*\\(/gm, \"{anonymous}()@\") : \"Unknown Stack Trace\";\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\nvar extend = deprecate(function(dest, src, merge2) {\n var keys4 = Object.keys(src);\n var i = 0;\n while (i < keys4.length) {\n if (!merge2 || merge2 && dest[keys4[i]] === void 0) {\n dest[keys4[i]] = src[keys4[i]];\n }\n i++;\n }\n return dest;\n}, \"extend\", \"Use `assign`.\");\nvar merge$2 = deprecate(function(dest, src) {\n return extend(dest, src, true);\n}, \"merge\", \"Use `assign`.\");\nfunction inherit(child, base, properties) {\n var baseP = base.prototype;\n var childP;\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n if (properties) {\n assign$1(childP, properties);\n }\n}\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\nvar Hammer$2 = /* @__PURE__ */ function() {\n var Hammer2 = function Hammer3(element, options2) {\n if (options2 === void 0) {\n options2 = {};\n }\n return new Manager(element, _extends({\n recognizers: preset.concat()\n }, options2));\n };\n Hammer2.VERSION = \"2.0.17-rc\";\n Hammer2.DIRECTION_ALL = DIRECTION_ALL;\n Hammer2.DIRECTION_DOWN = DIRECTION_DOWN;\n Hammer2.DIRECTION_LEFT = DIRECTION_LEFT;\n Hammer2.DIRECTION_RIGHT = DIRECTION_RIGHT;\n Hammer2.DIRECTION_UP = DIRECTION_UP;\n Hammer2.DIRECTION_HORIZONTAL = DIRECTION_HORIZONTAL;\n Hammer2.DIRECTION_VERTICAL = DIRECTION_VERTICAL;\n Hammer2.DIRECTION_NONE = DIRECTION_NONE;\n Hammer2.DIRECTION_DOWN = DIRECTION_DOWN;\n Hammer2.INPUT_START = INPUT_START;\n Hammer2.INPUT_MOVE = INPUT_MOVE;\n Hammer2.INPUT_END = INPUT_END;\n Hammer2.INPUT_CANCEL = INPUT_CANCEL;\n Hammer2.STATE_POSSIBLE = STATE_POSSIBLE;\n Hammer2.STATE_BEGAN = STATE_BEGAN;\n Hammer2.STATE_CHANGED = STATE_CHANGED;\n Hammer2.STATE_ENDED = STATE_ENDED;\n Hammer2.STATE_RECOGNIZED = STATE_RECOGNIZED;\n Hammer2.STATE_CANCELLED = STATE_CANCELLED;\n Hammer2.STATE_FAILED = STATE_FAILED;\n Hammer2.Manager = Manager;\n Hammer2.Input = Input;\n Hammer2.TouchAction = TouchAction;\n Hammer2.TouchInput = TouchInput;\n Hammer2.MouseInput = MouseInput;\n Hammer2.PointerEventInput = PointerEventInput;\n Hammer2.TouchMouseInput = TouchMouseInput;\n Hammer2.SingleTouchInput = SingleTouchInput;\n Hammer2.Recognizer = Recognizer;\n Hammer2.AttrRecognizer = AttrRecognizer;\n Hammer2.Tap = TapRecognizer;\n Hammer2.Pan = PanRecognizer;\n Hammer2.Swipe = SwipeRecognizer;\n Hammer2.Pinch = PinchRecognizer;\n Hammer2.Rotate = RotateRecognizer;\n Hammer2.Press = PressRecognizer;\n Hammer2.on = addEventListeners;\n Hammer2.off = removeEventListeners;\n Hammer2.each = each;\n Hammer2.merge = merge$2;\n Hammer2.extend = extend;\n Hammer2.bindFn = bindFn;\n Hammer2.assign = assign$1;\n Hammer2.inherit = inherit;\n Hammer2.bindFn = bindFn;\n Hammer2.prefixed = prefixed;\n Hammer2.toArray = toArray;\n Hammer2.inArray = inArray;\n Hammer2.uniqueArray = uniqueArray;\n Hammer2.splitStr = splitStr;\n Hammer2.boolOrFn = boolOrFn;\n Hammer2.hasParent = hasParent;\n Hammer2.addEventListeners = addEventListeners;\n Hammer2.removeEventListeners = removeEventListeners;\n Hammer2.defaults = assign$1({}, defaults, {\n preset\n });\n return Hammer2;\n}();\nvar RealHammer = Hammer$2;\nfunction _createForOfIteratorHelper$7(o, allowArrayLike) {\n var it2 = typeof symbol !== \"undefined\" && getIteratorMethod$1(o) || o[\"@@iterator\"];\n if (!it2) {\n if (isArray$1(o) || (it2 = _unsupportedIterableToArray$7(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it2)\n o = it2;\n var i = 0;\n var F = function F2() {\n };\n return {s: F, n: function n() {\n if (i >= o.length)\n return {done: true};\n return {done: false, value: o[i++]};\n }, e: function e(_e) {\n throw _e;\n }, f: F};\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true, didErr = false, err;\n return {s: function s() {\n it2 = it2.call(o);\n }, n: function n() {\n var step = it2.next();\n normalCompletion = step.done;\n return step;\n }, e: function e(_e2) {\n didErr = true;\n err = _e2;\n }, f: function f() {\n try {\n if (!normalCompletion && it2.return != null)\n it2.return();\n } finally {\n if (didErr)\n throw err;\n }\n }};\n}\nfunction _unsupportedIterableToArray$7(o, minLen) {\n var _context21;\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray$7(o, minLen);\n var n = slice$1(_context21 = Object.prototype.toString.call(o)).call(_context21, 8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return from$2(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray$7(o, minLen);\n}\nfunction _arrayLikeToArray$7(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nsymbol(\"DELETE\");\nfunction Alea() {\n for (var _len3 = arguments.length, seed = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n seed[_key3] = arguments[_key3];\n }\n return AleaImplementation(seed.length ? seed : [now$1()]);\n}\nfunction AleaImplementation(seed) {\n var _mashSeed = mashSeed(seed), _mashSeed2 = _slicedToArray(_mashSeed, 3), s0 = _mashSeed2[0], s1 = _mashSeed2[1], s2 = _mashSeed2[2];\n var c2 = 1;\n var random = function random2() {\n var t = 2091639 * s0 + c2 * 23283064365386963e-26;\n s0 = s1;\n s1 = s2;\n return s2 = t - (c2 = t | 0);\n };\n random.uint32 = function() {\n return random() * 4294967296;\n };\n random.fract53 = function() {\n return random() + (random() * 2097152 | 0) * 11102230246251565e-32;\n };\n random.algorithm = \"Alea\";\n random.seed = seed;\n random.version = \"0.9\";\n return random;\n}\nfunction mashSeed() {\n var mash = Mash();\n var s0 = mash(\" \");\n var s1 = mash(\" \");\n var s2 = mash(\" \");\n for (var i = 0; i < arguments.length; i++) {\n s0 -= mash(i < 0 || arguments.length <= i ? void 0 : arguments[i]);\n if (s0 < 0) {\n s0 += 1;\n }\n s1 -= mash(i < 0 || arguments.length <= i ? void 0 : arguments[i]);\n if (s1 < 0) {\n s1 += 1;\n }\n s2 -= mash(i < 0 || arguments.length <= i ? void 0 : arguments[i]);\n if (s2 < 0) {\n s2 += 1;\n }\n }\n return [s0, s1, s2];\n}\nfunction Mash() {\n var n = 4022871197;\n return function(data2) {\n var string2 = data2.toString();\n for (var i = 0; i < string2.length; i++) {\n n += string2.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 4294967296;\n }\n return (n >>> 0) * 23283064365386963e-26;\n };\n}\nfunction hammerMock() {\n var noop = function noop2() {\n };\n return {\n on: noop,\n off: noop,\n destroy: noop,\n emit: noop,\n get: function get2() {\n return {\n set: noop\n };\n }\n };\n}\nvar Hammer = typeof window !== \"undefined\" ? window.Hammer || RealHammer : function() {\n return hammerMock();\n};\nfunction Activator(container) {\n var _this = this, _context3;\n this._cleanupQueue = [];\n this.active = false;\n this._dom = {\n container,\n overlay: document.createElement(\"div\")\n };\n this._dom.overlay.classList.add(\"vis-overlay\");\n this._dom.container.appendChild(this._dom.overlay);\n this._cleanupQueue.push(function() {\n _this._dom.overlay.parentNode.removeChild(_this._dom.overlay);\n });\n var hammer = Hammer(this._dom.overlay);\n hammer.on(\"tap\", bind$5(_context3 = this._onTapOverlay).call(_context3, this));\n this._cleanupQueue.push(function() {\n hammer.destroy();\n });\n var events = [\"tap\", \"doubletap\", \"press\", \"pinch\", \"pan\", \"panstart\", \"panmove\", \"panend\"];\n forEach$2(events).call(events, function(event) {\n hammer.on(event, function(event2) {\n event2.srcEvent.stopPropagation();\n });\n });\n if (document && document.body) {\n this._onClick = function(event) {\n if (!_hasParent(event.target, container)) {\n _this.deactivate();\n }\n };\n document.body.addEventListener(\"click\", this._onClick);\n this._cleanupQueue.push(function() {\n document.body.removeEventListener(\"click\", _this._onClick);\n });\n }\n this._escListener = function(event) {\n if (\"key\" in event ? event.key === \"Escape\" : event.keyCode === 27) {\n _this.deactivate();\n }\n };\n}\nEmitter(Activator.prototype);\nActivator.current = null;\nActivator.prototype.destroy = function() {\n var _context4, _context5;\n this.deactivate();\n var _iterator2 = _createForOfIteratorHelper$7(reverse2(_context4 = splice2(_context5 = this._cleanupQueue).call(_context5, 0)).call(_context4)), _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) {\n var callback = _step2.value;\n callback();\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n};\nActivator.prototype.activate = function() {\n if (Activator.current) {\n Activator.current.deactivate();\n }\n Activator.current = this;\n this.active = true;\n this._dom.overlay.style.display = \"none\";\n this._dom.container.classList.add(\"vis-active\");\n this.emit(\"change\");\n this.emit(\"activate\");\n document.body.addEventListener(\"keydown\", this._escListener);\n};\nActivator.prototype.deactivate = function() {\n this.active = false;\n this._dom.overlay.style.display = \"block\";\n this._dom.container.classList.remove(\"vis-active\");\n document.body.removeEventListener(\"keydown\", this._escListener);\n this.emit(\"change\");\n this.emit(\"deactivate\");\n};\nActivator.prototype._onTapOverlay = function(event) {\n this.activate();\n event.srcEvent.stopPropagation();\n};\nfunction _hasParent(element, parent2) {\n while (element) {\n if (element === parent2) {\n return true;\n }\n element = element.parentNode;\n }\n return false;\n}\nvar fullHexRE = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;\nvar shortHexRE = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\nvar rgbRE = /^rgb\\( *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *\\)$/i;\nvar rgbaRE = /^rgba\\( *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *([01]|0?\\.\\d+) *\\)$/i;\nfunction recursiveDOMDelete(DOMobject) {\n if (DOMobject) {\n while (DOMobject.hasChildNodes() === true) {\n var child = DOMobject.firstChild;\n if (child) {\n recursiveDOMDelete(child);\n DOMobject.removeChild(child);\n }\n }\n }\n}\nfunction isString(value) {\n return value instanceof String || typeof value === \"string\";\n}\nfunction isObject$6(value) {\n return _typeof(value) === \"object\" && value !== null;\n}\nfunction copyOrDelete(a, b, prop, allowDeletion) {\n var doDeletion = false;\n if (allowDeletion === true) {\n doDeletion = b[prop] === null && a[prop] !== void 0;\n }\n if (doDeletion) {\n delete a[prop];\n } else {\n a[prop] = b[prop];\n }\n}\nfunction fillIfDefined(a, b) {\n var allowDeletion = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n for (var prop in a) {\n if (b[prop] !== void 0) {\n if (b[prop] === null || _typeof(b[prop]) !== \"object\") {\n copyOrDelete(a, b, prop, allowDeletion);\n } else {\n var aProp = a[prop];\n var bProp = b[prop];\n if (isObject$6(aProp) && isObject$6(bProp)) {\n fillIfDefined(aProp, bProp, allowDeletion);\n }\n }\n }\n }\n}\nfunction selectiveDeepExtend(props, a, b) {\n var allowDeletion = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;\n if (isArray$1(b)) {\n throw new TypeError(\"Arrays are not supported by deepExtend\");\n }\n for (var p = 0; p < props.length; p++) {\n var prop = props[p];\n if (Object.prototype.hasOwnProperty.call(b, prop)) {\n if (b[prop] && b[prop].constructor === Object) {\n if (a[prop] === void 0) {\n a[prop] = {};\n }\n if (a[prop].constructor === Object) {\n deepExtend(a[prop], b[prop], false, allowDeletion);\n } else {\n copyOrDelete(a, b, prop, allowDeletion);\n }\n } else if (isArray$1(b[prop])) {\n throw new TypeError(\"Arrays are not supported by deepExtend\");\n } else {\n copyOrDelete(a, b, prop, allowDeletion);\n }\n }\n }\n return a;\n}\nfunction selectiveNotDeepExtend(propsToExclude, a, b) {\n var allowDeletion = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;\n if (isArray$1(b)) {\n throw new TypeError(\"Arrays are not supported by deepExtend\");\n }\n for (var prop in b) {\n if (!Object.prototype.hasOwnProperty.call(b, prop)) {\n continue;\n }\n if (includes3(propsToExclude).call(propsToExclude, prop)) {\n continue;\n }\n if (b[prop] && b[prop].constructor === Object) {\n if (a[prop] === void 0) {\n a[prop] = {};\n }\n if (a[prop].constructor === Object) {\n deepExtend(a[prop], b[prop]);\n } else {\n copyOrDelete(a, b, prop, allowDeletion);\n }\n } else if (isArray$1(b[prop])) {\n a[prop] = [];\n for (var i = 0; i < b[prop].length; i++) {\n a[prop].push(b[prop][i]);\n }\n } else {\n copyOrDelete(a, b, prop, allowDeletion);\n }\n }\n return a;\n}\nfunction deepExtend(a, b) {\n var protoExtend = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n var allowDeletion = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;\n for (var prop in b) {\n if (Object.prototype.hasOwnProperty.call(b, prop) || protoExtend === true) {\n if (_typeof(b[prop]) === \"object\" && b[prop] !== null && getPrototypeOf$3(b[prop]) === Object.prototype) {\n if (a[prop] === void 0) {\n a[prop] = deepExtend({}, b[prop], protoExtend);\n } else if (_typeof(a[prop]) === \"object\" && a[prop] !== null && getPrototypeOf$3(a[prop]) === Object.prototype) {\n deepExtend(a[prop], b[prop], protoExtend);\n } else {\n copyOrDelete(a, b, prop, allowDeletion);\n }\n } else if (isArray$1(b[prop])) {\n var _context6;\n a[prop] = slice$1(_context6 = b[prop]).call(_context6);\n } else {\n copyOrDelete(a, b, prop, allowDeletion);\n }\n }\n }\n return a;\n}\nfunction copyAndExtendArray(arr, newValue) {\n var _context7;\n return concat2(_context7 = []).call(_context7, _toConsumableArray(arr), [newValue]);\n}\nfunction copyArray(arr) {\n return slice$1(arr).call(arr);\n}\nfunction getAbsoluteLeft(elem) {\n return elem.getBoundingClientRect().left;\n}\nfunction getAbsoluteTop(elem) {\n return elem.getBoundingClientRect().top;\n}\nfunction forEach$1(object2, callback) {\n if (isArray$1(object2)) {\n var len = object2.length;\n for (var i = 0; i < len; i++) {\n callback(object2[i], i, object2);\n }\n } else {\n for (var key in object2) {\n if (Object.prototype.hasOwnProperty.call(object2, key)) {\n callback(object2[key], key, object2);\n }\n }\n }\n}\nfunction addEventListener(element, action, listener, useCapture) {\n if (element.addEventListener) {\n var _context8;\n if (useCapture === void 0) {\n useCapture = false;\n }\n if (action === \"mousewheel\" && includes3(_context8 = navigator.userAgent).call(_context8, \"Firefox\")) {\n action = \"DOMMouseScroll\";\n }\n element.addEventListener(action, listener, useCapture);\n } else {\n element.attachEvent(\"on\" + action, listener);\n }\n}\nfunction removeEventListener(element, action, listener, useCapture) {\n if (element.removeEventListener) {\n var _context9;\n if (useCapture === void 0) {\n useCapture = false;\n }\n if (action === \"mousewheel\" && includes3(_context9 = navigator.userAgent).call(_context9, \"Firefox\")) {\n action = \"DOMMouseScroll\";\n }\n element.removeEventListener(action, listener, useCapture);\n } else {\n element.detachEvent(\"on\" + action, listener);\n }\n}\nfunction hexToRGB(hex2) {\n var result;\n switch (hex2.length) {\n case 3:\n case 4:\n result = shortHexRE.exec(hex2);\n return result ? {\n r: _parseInt(result[1] + result[1], 16),\n g: _parseInt(result[2] + result[2], 16),\n b: _parseInt(result[3] + result[3], 16)\n } : null;\n case 6:\n case 7:\n result = fullHexRE.exec(hex2);\n return result ? {\n r: _parseInt(result[1], 16),\n g: _parseInt(result[2], 16),\n b: _parseInt(result[3], 16)\n } : null;\n default:\n return null;\n }\n}\nfunction overrideOpacity(color, opacity) {\n if (includes3(color).call(color, \"rgba\")) {\n return color;\n } else if (includes3(color).call(color, \"rgb\")) {\n var rgb = color.substr(indexOf2(color).call(color, \"(\") + 1).replace(\")\", \"\").split(\",\");\n return \"rgba(\" + rgb[0] + \",\" + rgb[1] + \",\" + rgb[2] + \",\" + opacity + \")\";\n } else {\n var _rgb = hexToRGB(color);\n if (_rgb == null) {\n return color;\n } else {\n return \"rgba(\" + _rgb.r + \",\" + _rgb.g + \",\" + _rgb.b + \",\" + opacity + \")\";\n }\n }\n}\nfunction RGBToHex(red, green, blue) {\n var _context10;\n return \"#\" + slice$1(_context10 = ((1 << 24) + (red << 16) + (green << 8) + blue).toString(16)).call(_context10, 1);\n}\nfunction parseColor(inputColor, defaultColor) {\n if (isString(inputColor)) {\n var colorStr = inputColor;\n if (isValidRGB(colorStr)) {\n var _context11;\n var rgb = map$3(_context11 = colorStr.substr(4).substr(0, colorStr.length - 5).split(\",\")).call(_context11, function(value) {\n return _parseInt(value);\n });\n colorStr = RGBToHex(rgb[0], rgb[1], rgb[2]);\n }\n if (isValidHex(colorStr) === true) {\n var hsv = hexToHSV(colorStr);\n var lighterColorHSV = {\n h: hsv.h,\n s: hsv.s * 0.8,\n v: Math.min(1, hsv.v * 1.02)\n };\n var darkerColorHSV = {\n h: hsv.h,\n s: Math.min(1, hsv.s * 1.25),\n v: hsv.v * 0.8\n };\n var darkerColorHex = HSVToHex(darkerColorHSV.h, darkerColorHSV.s, darkerColorHSV.v);\n var lighterColorHex = HSVToHex(lighterColorHSV.h, lighterColorHSV.s, lighterColorHSV.v);\n return {\n background: colorStr,\n border: darkerColorHex,\n highlight: {\n background: lighterColorHex,\n border: darkerColorHex\n },\n hover: {\n background: lighterColorHex,\n border: darkerColorHex\n }\n };\n } else {\n return {\n background: colorStr,\n border: colorStr,\n highlight: {\n background: colorStr,\n border: colorStr\n },\n hover: {\n background: colorStr,\n border: colorStr\n }\n };\n }\n } else {\n if (defaultColor) {\n var color = {\n background: inputColor.background || defaultColor.background,\n border: inputColor.border || defaultColor.border,\n highlight: isString(inputColor.highlight) ? {\n border: inputColor.highlight,\n background: inputColor.highlight\n } : {\n background: inputColor.highlight && inputColor.highlight.background || defaultColor.highlight.background,\n border: inputColor.highlight && inputColor.highlight.border || defaultColor.highlight.border\n },\n hover: isString(inputColor.hover) ? {\n border: inputColor.hover,\n background: inputColor.hover\n } : {\n border: inputColor.hover && inputColor.hover.border || defaultColor.hover.border,\n background: inputColor.hover && inputColor.hover.background || defaultColor.hover.background\n }\n };\n return color;\n } else {\n var _color = {\n background: inputColor.background || void 0,\n border: inputColor.border || void 0,\n highlight: isString(inputColor.highlight) ? {\n border: inputColor.highlight,\n background: inputColor.highlight\n } : {\n background: inputColor.highlight && inputColor.highlight.background || void 0,\n border: inputColor.highlight && inputColor.highlight.border || void 0\n },\n hover: isString(inputColor.hover) ? {\n border: inputColor.hover,\n background: inputColor.hover\n } : {\n border: inputColor.hover && inputColor.hover.border || void 0,\n background: inputColor.hover && inputColor.hover.background || void 0\n }\n };\n return _color;\n }\n }\n}\nfunction RGBToHSV(red, green, blue) {\n red = red / 255;\n green = green / 255;\n blue = blue / 255;\n var minRGB = Math.min(red, Math.min(green, blue));\n var maxRGB = Math.max(red, Math.max(green, blue));\n if (minRGB === maxRGB) {\n return {\n h: 0,\n s: 0,\n v: minRGB\n };\n }\n var d = red === minRGB ? green - blue : blue === minRGB ? red - green : blue - red;\n var h = red === minRGB ? 3 : blue === minRGB ? 1 : 5;\n var hue = 60 * (h - d / (maxRGB - minRGB)) / 360;\n var saturation = (maxRGB - minRGB) / maxRGB;\n var value = maxRGB;\n return {\n h: hue,\n s: saturation,\n v: value\n };\n}\nfunction HSVToRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i = Math.floor(h * 6);\n var f = h * 6 - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n switch (i % 6) {\n case 0:\n r = v, g = t, b = p;\n break;\n case 1:\n r = q, g = v, b = p;\n break;\n case 2:\n r = p, g = v, b = t;\n break;\n case 3:\n r = p, g = q, b = v;\n break;\n case 4:\n r = t, g = p, b = v;\n break;\n case 5:\n r = v, g = p, b = q;\n break;\n }\n return {\n r: Math.floor(r * 255),\n g: Math.floor(g * 255),\n b: Math.floor(b * 255)\n };\n}\nfunction HSVToHex(h, s, v) {\n var rgb = HSVToRGB(h, s, v);\n return RGBToHex(rgb.r, rgb.g, rgb.b);\n}\nfunction hexToHSV(hex2) {\n var rgb = hexToRGB(hex2);\n if (!rgb) {\n throw new TypeError(\"'\".concat(hex2, \"' is not a valid color.\"));\n }\n return RGBToHSV(rgb.r, rgb.g, rgb.b);\n}\nfunction isValidHex(hex2) {\n var isOk = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex2);\n return isOk;\n}\nfunction isValidRGB(rgb) {\n return rgbRE.test(rgb);\n}\nfunction isValidRGBA(rgba) {\n return rgbaRE.test(rgba);\n}\nfunction bridgeObject(referenceObject) {\n if (referenceObject === null || _typeof(referenceObject) !== \"object\") {\n return null;\n }\n if (referenceObject instanceof Element) {\n return referenceObject;\n }\n var objectTo = create$4(referenceObject);\n for (var i in referenceObject) {\n if (Object.prototype.hasOwnProperty.call(referenceObject, i)) {\n if (_typeof(referenceObject[i]) == \"object\") {\n objectTo[i] = bridgeObject(referenceObject[i]);\n }\n }\n }\n return objectTo;\n}\nfunction mergeOptions(mergeTarget, options2, option) {\n var globalOptions = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};\n var isPresent = function isPresent2(obj) {\n return obj !== null && obj !== void 0;\n };\n var isObject2 = function isObject3(obj) {\n return obj !== null && _typeof(obj) === \"object\";\n };\n var isEmpty = function isEmpty2(obj) {\n for (var x in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, x)) {\n return false;\n }\n }\n return true;\n };\n if (!isObject2(mergeTarget)) {\n throw new Error(\"Parameter mergeTarget must be an object\");\n }\n if (!isObject2(options2)) {\n throw new Error(\"Parameter options must be an object\");\n }\n if (!isPresent(option)) {\n throw new Error(\"Parameter option must have a value\");\n }\n if (!isObject2(globalOptions)) {\n throw new Error(\"Parameter globalOptions must be an object\");\n }\n var doMerge = function doMerge2(target, options3, option2) {\n if (!isObject2(target[option2])) {\n target[option2] = {};\n }\n var src = options3[option2];\n var dst = target[option2];\n for (var prop in src) {\n if (Object.prototype.hasOwnProperty.call(src, prop)) {\n dst[prop] = src[prop];\n }\n }\n };\n var srcOption = options2[option];\n var globalPassed = isObject2(globalOptions) && !isEmpty(globalOptions);\n var globalOption = globalPassed ? globalOptions[option] : void 0;\n var globalEnabled = globalOption ? globalOption.enabled : void 0;\n if (srcOption === void 0) {\n return;\n }\n if (typeof srcOption === \"boolean\") {\n if (!isObject2(mergeTarget[option])) {\n mergeTarget[option] = {};\n }\n mergeTarget[option].enabled = srcOption;\n return;\n }\n if (srcOption === null && !isObject2(mergeTarget[option])) {\n if (isPresent(globalOption)) {\n mergeTarget[option] = create$4(globalOption);\n } else {\n return;\n }\n }\n if (!isObject2(srcOption)) {\n return;\n }\n var enabled = true;\n if (srcOption.enabled !== void 0) {\n enabled = srcOption.enabled;\n } else {\n if (globalEnabled !== void 0) {\n enabled = globalOption.enabled;\n }\n }\n doMerge(mergeTarget, options2, option);\n mergeTarget[option].enabled = enabled;\n}\nvar easingFunctions = {\n linear: function linear(t) {\n return t;\n },\n easeInQuad: function easeInQuad(t) {\n return t * t;\n },\n easeOutQuad: function easeOutQuad(t) {\n return t * (2 - t);\n },\n easeInOutQuad: function easeInOutQuad(t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n },\n easeInCubic: function easeInCubic(t) {\n return t * t * t;\n },\n easeOutCubic: function easeOutCubic(t) {\n return --t * t * t + 1;\n },\n easeInOutCubic: function easeInOutCubic(t) {\n return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n },\n easeInQuart: function easeInQuart(t) {\n return t * t * t * t;\n },\n easeOutQuart: function easeOutQuart(t) {\n return 1 - --t * t * t * t;\n },\n easeInOutQuart: function easeInOutQuart(t) {\n return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;\n },\n easeInQuint: function easeInQuint(t) {\n return t * t * t * t * t;\n },\n easeOutQuint: function easeOutQuint(t) {\n return 1 + --t * t * t * t * t;\n },\n easeInOutQuint: function easeInOutQuint(t) {\n return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;\n }\n};\nfunction topMost(pile, accessors) {\n var candidate;\n if (!isArray$1(accessors)) {\n accessors = [accessors];\n }\n var _iterator3 = _createForOfIteratorHelper$7(pile), _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done; ) {\n var member = _step3.value;\n if (member) {\n candidate = member[accessors[0]];\n for (var i = 1; i < accessors.length; i++) {\n if (candidate) {\n candidate = candidate[accessors[i]];\n }\n }\n if (typeof candidate !== \"undefined\") {\n break;\n }\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return candidate;\n}\nvar htmlColors = {\n black: \"#000000\",\n navy: \"#000080\",\n darkblue: \"#00008B\",\n mediumblue: \"#0000CD\",\n blue: \"#0000FF\",\n darkgreen: \"#006400\",\n green: \"#008000\",\n teal: \"#008080\",\n darkcyan: \"#008B8B\",\n deepskyblue: \"#00BFFF\",\n darkturquoise: \"#00CED1\",\n mediumspringgreen: \"#00FA9A\",\n lime: \"#00FF00\",\n springgreen: \"#00FF7F\",\n aqua: \"#00FFFF\",\n cyan: \"#00FFFF\",\n midnightblue: \"#191970\",\n dodgerblue: \"#1E90FF\",\n lightseagreen: \"#20B2AA\",\n forestgreen: \"#228B22\",\n seagreen: \"#2E8B57\",\n darkslategray: \"#2F4F4F\",\n limegreen: \"#32CD32\",\n mediumseagreen: \"#3CB371\",\n turquoise: \"#40E0D0\",\n royalblue: \"#4169E1\",\n steelblue: \"#4682B4\",\n darkslateblue: \"#483D8B\",\n mediumturquoise: \"#48D1CC\",\n indigo: \"#4B0082\",\n darkolivegreen: \"#556B2F\",\n cadetblue: \"#5F9EA0\",\n cornflowerblue: \"#6495ED\",\n mediumaquamarine: \"#66CDAA\",\n dimgray: \"#696969\",\n slateblue: \"#6A5ACD\",\n olivedrab: \"#6B8E23\",\n slategray: \"#708090\",\n lightslategray: \"#778899\",\n mediumslateblue: \"#7B68EE\",\n lawngreen: \"#7CFC00\",\n chartreuse: \"#7FFF00\",\n aquamarine: \"#7FFFD4\",\n maroon: \"#800000\",\n purple: \"#800080\",\n olive: \"#808000\",\n gray: \"#808080\",\n skyblue: \"#87CEEB\",\n lightskyblue: \"#87CEFA\",\n blueviolet: \"#8A2BE2\",\n darkred: \"#8B0000\",\n darkmagenta: \"#8B008B\",\n saddlebrown: \"#8B4513\",\n darkseagreen: \"#8FBC8F\",\n lightgreen: \"#90EE90\",\n mediumpurple: \"#9370D8\",\n darkviolet: \"#9400D3\",\n palegreen: \"#98FB98\",\n darkorchid: \"#9932CC\",\n yellowgreen: \"#9ACD32\",\n sienna: \"#A0522D\",\n brown: \"#A52A2A\",\n darkgray: \"#A9A9A9\",\n lightblue: \"#ADD8E6\",\n greenyellow: \"#ADFF2F\",\n paleturquoise: \"#AFEEEE\",\n lightsteelblue: \"#B0C4DE\",\n powderblue: \"#B0E0E6\",\n firebrick: \"#B22222\",\n darkgoldenrod: \"#B8860B\",\n mediumorchid: \"#BA55D3\",\n rosybrown: \"#BC8F8F\",\n darkkhaki: \"#BDB76B\",\n silver: \"#C0C0C0\",\n mediumvioletred: \"#C71585\",\n indianred: \"#CD5C5C\",\n peru: \"#CD853F\",\n chocolate: \"#D2691E\",\n tan: \"#D2B48C\",\n lightgrey: \"#D3D3D3\",\n palevioletred: \"#D87093\",\n thistle: \"#D8BFD8\",\n orchid: \"#DA70D6\",\n goldenrod: \"#DAA520\",\n crimson: \"#DC143C\",\n gainsboro: \"#DCDCDC\",\n plum: \"#DDA0DD\",\n burlywood: \"#DEB887\",\n lightcyan: \"#E0FFFF\",\n lavender: \"#E6E6FA\",\n darksalmon: \"#E9967A\",\n violet: \"#EE82EE\",\n palegoldenrod: \"#EEE8AA\",\n lightcoral: \"#F08080\",\n khaki: \"#F0E68C\",\n aliceblue: \"#F0F8FF\",\n honeydew: \"#F0FFF0\",\n azure: \"#F0FFFF\",\n sandybrown: \"#F4A460\",\n wheat: \"#F5DEB3\",\n beige: \"#F5F5DC\",\n whitesmoke: \"#F5F5F5\",\n mintcream: \"#F5FFFA\",\n ghostwhite: \"#F8F8FF\",\n salmon: \"#FA8072\",\n antiquewhite: \"#FAEBD7\",\n linen: \"#FAF0E6\",\n lightgoldenrodyellow: \"#FAFAD2\",\n oldlace: \"#FDF5E6\",\n red: \"#FF0000\",\n fuchsia: \"#FF00FF\",\n magenta: \"#FF00FF\",\n deeppink: \"#FF1493\",\n orangered: \"#FF4500\",\n tomato: \"#FF6347\",\n hotpink: \"#FF69B4\",\n coral: \"#FF7F50\",\n darkorange: \"#FF8C00\",\n lightsalmon: \"#FFA07A\",\n orange: \"#FFA500\",\n lightpink: \"#FFB6C1\",\n pink: \"#FFC0CB\",\n gold: \"#FFD700\",\n peachpuff: \"#FFDAB9\",\n navajowhite: \"#FFDEAD\",\n moccasin: \"#FFE4B5\",\n bisque: \"#FFE4C4\",\n mistyrose: \"#FFE4E1\",\n blanchedalmond: \"#FFEBCD\",\n papayawhip: \"#FFEFD5\",\n lavenderblush: \"#FFF0F5\",\n seashell: \"#FFF5EE\",\n cornsilk: \"#FFF8DC\",\n lemonchiffon: \"#FFFACD\",\n floralwhite: \"#FFFAF0\",\n snow: \"#FFFAFA\",\n yellow: \"#FFFF00\",\n lightyellow: \"#FFFFE0\",\n ivory: \"#FFFFF0\",\n white: \"#FFFFFF\"\n};\nvar ColorPicker = /* @__PURE__ */ function() {\n function ColorPicker2() {\n var pixelRatio = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 1;\n _classCallCheck(this, ColorPicker2);\n this.pixelRatio = pixelRatio;\n this.generated = false;\n this.centerCoordinates = {\n x: 289 / 2,\n y: 289 / 2\n };\n this.r = 289 * 0.49;\n this.color = {\n r: 255,\n g: 255,\n b: 255,\n a: 1\n };\n this.hueCircle = void 0;\n this.initialColor = {\n r: 255,\n g: 255,\n b: 255,\n a: 1\n };\n this.previousColor = void 0;\n this.applied = false;\n this.updateCallback = function() {\n };\n this.closeCallback = function() {\n };\n this._create();\n }\n _createClass(ColorPicker2, [{\n key: \"insertTo\",\n value: function insertTo(container) {\n if (this.hammer !== void 0) {\n this.hammer.destroy();\n this.hammer = void 0;\n }\n this.container = container;\n this.container.appendChild(this.frame);\n this._bindHammer();\n this._setSize();\n }\n }, {\n key: \"setUpdateCallback\",\n value: function setUpdateCallback(callback) {\n if (typeof callback === \"function\") {\n this.updateCallback = callback;\n } else {\n throw new Error(\"Function attempted to set as colorPicker update callback is not a function.\");\n }\n }\n }, {\n key: \"setCloseCallback\",\n value: function setCloseCallback(callback) {\n if (typeof callback === \"function\") {\n this.closeCallback = callback;\n } else {\n throw new Error(\"Function attempted to set as colorPicker closing callback is not a function.\");\n }\n }\n }, {\n key: \"_isColorString\",\n value: function _isColorString(color) {\n if (typeof color === \"string\") {\n return htmlColors[color];\n }\n }\n }, {\n key: \"setColor\",\n value: function setColor(color) {\n var setInitial = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n if (color === \"none\") {\n return;\n }\n var rgba;\n var htmlColor = this._isColorString(color);\n if (htmlColor !== void 0) {\n color = htmlColor;\n }\n if (isString(color) === true) {\n if (isValidRGB(color) === true) {\n var rgbaArray = color.substr(4).substr(0, color.length - 5).split(\",\");\n rgba = {\n r: rgbaArray[0],\n g: rgbaArray[1],\n b: rgbaArray[2],\n a: 1\n };\n } else if (isValidRGBA(color) === true) {\n var _rgbaArray = color.substr(5).substr(0, color.length - 6).split(\",\");\n rgba = {\n r: _rgbaArray[0],\n g: _rgbaArray[1],\n b: _rgbaArray[2],\n a: _rgbaArray[3]\n };\n } else if (isValidHex(color) === true) {\n var rgbObj = hexToRGB(color);\n rgba = {\n r: rgbObj.r,\n g: rgbObj.g,\n b: rgbObj.b,\n a: 1\n };\n }\n } else {\n if (color instanceof Object) {\n if (color.r !== void 0 && color.g !== void 0 && color.b !== void 0) {\n var alpha = color.a !== void 0 ? color.a : \"1.0\";\n rgba = {\n r: color.r,\n g: color.g,\n b: color.b,\n a: alpha\n };\n }\n }\n }\n if (rgba === void 0) {\n throw new Error(\"Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: \" + stringify$1(color));\n } else {\n this._setColor(rgba, setInitial);\n }\n }\n }, {\n key: \"show\",\n value: function show() {\n if (this.closeCallback !== void 0) {\n this.closeCallback();\n this.closeCallback = void 0;\n }\n this.applied = false;\n this.frame.style.display = \"block\";\n this._generateHueCircle();\n }\n }, {\n key: \"_hide\",\n value: function _hide() {\n var _this2 = this;\n var storePrevious = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;\n if (storePrevious === true) {\n this.previousColor = assign$2({}, this.color);\n }\n if (this.applied === true) {\n this.updateCallback(this.initialColor);\n }\n this.frame.style.display = \"none\";\n setTimeout$1(function() {\n if (_this2.closeCallback !== void 0) {\n _this2.closeCallback();\n _this2.closeCallback = void 0;\n }\n }, 0);\n }\n }, {\n key: \"_save\",\n value: function _save() {\n this.updateCallback(this.color);\n this.applied = false;\n this._hide();\n }\n }, {\n key: \"_apply\",\n value: function _apply() {\n this.applied = true;\n this.updateCallback(this.color);\n this._updatePicker(this.color);\n }\n }, {\n key: \"_loadLast\",\n value: function _loadLast() {\n if (this.previousColor !== void 0) {\n this.setColor(this.previousColor, false);\n } else {\n alert(\"There is no last color to load...\");\n }\n }\n }, {\n key: \"_setColor\",\n value: function _setColor(rgba) {\n var setInitial = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n if (setInitial === true) {\n this.initialColor = assign$2({}, rgba);\n }\n this.color = rgba;\n var hsv = RGBToHSV(rgba.r, rgba.g, rgba.b);\n var angleConvert = 2 * Math.PI;\n var radius = this.r * hsv.s;\n var x = this.centerCoordinates.x + radius * Math.sin(angleConvert * hsv.h);\n var y = this.centerCoordinates.y + radius * Math.cos(angleConvert * hsv.h);\n this.colorPickerSelector.style.left = x - 0.5 * this.colorPickerSelector.clientWidth + \"px\";\n this.colorPickerSelector.style.top = y - 0.5 * this.colorPickerSelector.clientHeight + \"px\";\n this._updatePicker(rgba);\n }\n }, {\n key: \"_setOpacity\",\n value: function _setOpacity(value) {\n this.color.a = value / 100;\n this._updatePicker(this.color);\n }\n }, {\n key: \"_setBrightness\",\n value: function _setBrightness(value) {\n var hsv = RGBToHSV(this.color.r, this.color.g, this.color.b);\n hsv.v = value / 100;\n var rgba = HSVToRGB(hsv.h, hsv.s, hsv.v);\n rgba[\"a\"] = this.color.a;\n this.color = rgba;\n this._updatePicker();\n }\n }, {\n key: \"_updatePicker\",\n value: function _updatePicker() {\n var rgba = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.color;\n var hsv = RGBToHSV(rgba.r, rgba.g, rgba.b);\n var ctx = this.colorPickerCanvas.getContext(\"2d\");\n if (this.pixelRation === void 0) {\n this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1);\n }\n ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n var w = this.colorPickerCanvas.clientWidth;\n var h = this.colorPickerCanvas.clientHeight;\n ctx.clearRect(0, 0, w, h);\n ctx.putImageData(this.hueCircle, 0, 0);\n ctx.fillStyle = \"rgba(0,0,0,\" + (1 - hsv.v) + \")\";\n ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r);\n fill2(ctx).call(ctx);\n this.brightnessRange.value = 100 * hsv.v;\n this.opacityRange.value = 100 * rgba.a;\n this.initialColorDiv.style.backgroundColor = \"rgba(\" + this.initialColor.r + \",\" + this.initialColor.g + \",\" + this.initialColor.b + \",\" + this.initialColor.a + \")\";\n this.newColorDiv.style.backgroundColor = \"rgba(\" + this.color.r + \",\" + this.color.g + \",\" + this.color.b + \",\" + this.color.a + \")\";\n }\n }, {\n key: \"_setSize\",\n value: function _setSize() {\n this.colorPickerCanvas.style.width = \"100%\";\n this.colorPickerCanvas.style.height = \"100%\";\n this.colorPickerCanvas.width = 289 * this.pixelRatio;\n this.colorPickerCanvas.height = 289 * this.pixelRatio;\n }\n }, {\n key: \"_create\",\n value: function _create() {\n var _context16, _context17, _context18, _context19;\n this.frame = document.createElement(\"div\");\n this.frame.className = \"vis-color-picker\";\n this.colorPickerDiv = document.createElement(\"div\");\n this.colorPickerSelector = document.createElement(\"div\");\n this.colorPickerSelector.className = \"vis-selector\";\n this.colorPickerDiv.appendChild(this.colorPickerSelector);\n this.colorPickerCanvas = document.createElement(\"canvas\");\n this.colorPickerDiv.appendChild(this.colorPickerCanvas);\n if (!this.colorPickerCanvas.getContext) {\n var noCanvas = document.createElement(\"DIV\");\n noCanvas.style.color = \"red\";\n noCanvas.style.fontWeight = \"bold\";\n noCanvas.style.padding = \"10px\";\n noCanvas.innerText = \"Error: your browser does not support HTML canvas\";\n this.colorPickerCanvas.appendChild(noCanvas);\n } else {\n var ctx = this.colorPickerCanvas.getContext(\"2d\");\n this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1);\n this.colorPickerCanvas.getContext(\"2d\").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n }\n this.colorPickerDiv.className = \"vis-color\";\n this.opacityDiv = document.createElement(\"div\");\n this.opacityDiv.className = \"vis-opacity\";\n this.brightnessDiv = document.createElement(\"div\");\n this.brightnessDiv.className = \"vis-brightness\";\n this.arrowDiv = document.createElement(\"div\");\n this.arrowDiv.className = \"vis-arrow\";\n this.opacityRange = document.createElement(\"input\");\n try {\n this.opacityRange.type = \"range\";\n this.opacityRange.min = \"0\";\n this.opacityRange.max = \"100\";\n } catch (err) {\n }\n this.opacityRange.value = \"100\";\n this.opacityRange.className = \"vis-range\";\n this.brightnessRange = document.createElement(\"input\");\n try {\n this.brightnessRange.type = \"range\";\n this.brightnessRange.min = \"0\";\n this.brightnessRange.max = \"100\";\n } catch (err) {\n }\n this.brightnessRange.value = \"100\";\n this.brightnessRange.className = \"vis-range\";\n this.opacityDiv.appendChild(this.opacityRange);\n this.brightnessDiv.appendChild(this.brightnessRange);\n var me = this;\n this.opacityRange.onchange = function() {\n me._setOpacity(this.value);\n };\n this.opacityRange.oninput = function() {\n me._setOpacity(this.value);\n };\n this.brightnessRange.onchange = function() {\n me._setBrightness(this.value);\n };\n this.brightnessRange.oninput = function() {\n me._setBrightness(this.value);\n };\n this.brightnessLabel = document.createElement(\"div\");\n this.brightnessLabel.className = \"vis-label vis-brightness\";\n this.brightnessLabel.innerText = \"brightness:\";\n this.opacityLabel = document.createElement(\"div\");\n this.opacityLabel.className = \"vis-label vis-opacity\";\n this.opacityLabel.innerText = \"opacity:\";\n this.newColorDiv = document.createElement(\"div\");\n this.newColorDiv.className = \"vis-new-color\";\n this.newColorDiv.innerText = \"new\";\n this.initialColorDiv = document.createElement(\"div\");\n this.initialColorDiv.className = \"vis-initial-color\";\n this.initialColorDiv.innerText = \"initial\";\n this.cancelButton = document.createElement(\"div\");\n this.cancelButton.className = \"vis-button vis-cancel\";\n this.cancelButton.innerText = \"cancel\";\n this.cancelButton.onclick = bind$5(_context16 = this._hide).call(_context16, this, false);\n this.applyButton = document.createElement(\"div\");\n this.applyButton.className = \"vis-button vis-apply\";\n this.applyButton.innerText = \"apply\";\n this.applyButton.onclick = bind$5(_context17 = this._apply).call(_context17, this);\n this.saveButton = document.createElement(\"div\");\n this.saveButton.className = \"vis-button vis-save\";\n this.saveButton.innerText = \"save\";\n this.saveButton.onclick = bind$5(_context18 = this._save).call(_context18, this);\n this.loadButton = document.createElement(\"div\");\n this.loadButton.className = \"vis-button vis-load\";\n this.loadButton.innerText = \"load last\";\n this.loadButton.onclick = bind$5(_context19 = this._loadLast).call(_context19, this);\n this.frame.appendChild(this.colorPickerDiv);\n this.frame.appendChild(this.arrowDiv);\n this.frame.appendChild(this.brightnessLabel);\n this.frame.appendChild(this.brightnessDiv);\n this.frame.appendChild(this.opacityLabel);\n this.frame.appendChild(this.opacityDiv);\n this.frame.appendChild(this.newColorDiv);\n this.frame.appendChild(this.initialColorDiv);\n this.frame.appendChild(this.cancelButton);\n this.frame.appendChild(this.applyButton);\n this.frame.appendChild(this.saveButton);\n this.frame.appendChild(this.loadButton);\n }\n }, {\n key: \"_bindHammer\",\n value: function _bindHammer() {\n var _this3 = this;\n this.drag = {};\n this.pinch = {};\n this.hammer = new Hammer(this.colorPickerCanvas);\n this.hammer.get(\"pinch\").set({\n enable: true\n });\n this.hammer.on(\"hammer.input\", function(event) {\n if (event.isFirst) {\n _this3._moveSelector(event);\n }\n });\n this.hammer.on(\"tap\", function(event) {\n _this3._moveSelector(event);\n });\n this.hammer.on(\"panstart\", function(event) {\n _this3._moveSelector(event);\n });\n this.hammer.on(\"panmove\", function(event) {\n _this3._moveSelector(event);\n });\n this.hammer.on(\"panend\", function(event) {\n _this3._moveSelector(event);\n });\n }\n }, {\n key: \"_generateHueCircle\",\n value: function _generateHueCircle() {\n if (this.generated === false) {\n var ctx = this.colorPickerCanvas.getContext(\"2d\");\n if (this.pixelRation === void 0) {\n this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1);\n }\n ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n var w = this.colorPickerCanvas.clientWidth;\n var h = this.colorPickerCanvas.clientHeight;\n ctx.clearRect(0, 0, w, h);\n var x, y, hue, sat;\n this.centerCoordinates = {\n x: w * 0.5,\n y: h * 0.5\n };\n this.r = 0.49 * w;\n var angleConvert = 2 * Math.PI / 360;\n var hfac = 1 / 360;\n var sfac = 1 / this.r;\n var rgb;\n for (hue = 0; hue < 360; hue++) {\n for (sat = 0; sat < this.r; sat++) {\n x = this.centerCoordinates.x + sat * Math.sin(angleConvert * hue);\n y = this.centerCoordinates.y + sat * Math.cos(angleConvert * hue);\n rgb = HSVToRGB(hue * hfac, sat * sfac, 1);\n ctx.fillStyle = \"rgb(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \")\";\n ctx.fillRect(x - 0.5, y - 0.5, 2, 2);\n }\n }\n ctx.strokeStyle = \"rgba(0,0,0,1)\";\n ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r);\n ctx.stroke();\n this.hueCircle = ctx.getImageData(0, 0, w, h);\n }\n this.generated = true;\n }\n }, {\n key: \"_moveSelector\",\n value: function _moveSelector(event) {\n var rect = this.colorPickerDiv.getBoundingClientRect();\n var left = event.center.x - rect.left;\n var top = event.center.y - rect.top;\n var centerY = 0.5 * this.colorPickerDiv.clientHeight;\n var centerX = 0.5 * this.colorPickerDiv.clientWidth;\n var x = left - centerX;\n var y = top - centerY;\n var angle = Math.atan2(x, y);\n var radius = 0.98 * Math.min(Math.sqrt(x * x + y * y), centerX);\n var newTop = Math.cos(angle) * radius + centerY;\n var newLeft = Math.sin(angle) * radius + centerX;\n this.colorPickerSelector.style.top = newTop - 0.5 * this.colorPickerSelector.clientHeight + \"px\";\n this.colorPickerSelector.style.left = newLeft - 0.5 * this.colorPickerSelector.clientWidth + \"px\";\n var h = angle / (2 * Math.PI);\n h = h < 0 ? h + 1 : h;\n var s = radius / this.r;\n var hsv = RGBToHSV(this.color.r, this.color.g, this.color.b);\n hsv.h = h;\n hsv.s = s;\n var rgba = HSVToRGB(hsv.h, hsv.s, hsv.v);\n rgba[\"a\"] = this.color.a;\n this.color = rgba;\n this.initialColorDiv.style.backgroundColor = \"rgba(\" + this.initialColor.r + \",\" + this.initialColor.g + \",\" + this.initialColor.b + \",\" + this.initialColor.a + \")\";\n this.newColorDiv.style.backgroundColor = \"rgba(\" + this.color.r + \",\" + this.color.g + \",\" + this.color.b + \",\" + this.color.a + \")\";\n }\n }]);\n return ColorPicker2;\n}();\nfunction wrapInTag() {\n for (var _len5 = arguments.length, rest = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n rest[_key5] = arguments[_key5];\n }\n if (rest.length < 1) {\n throw new TypeError(\"Invalid arguments.\");\n } else if (rest.length === 1) {\n return document.createTextNode(rest[0]);\n } else {\n var element = document.createElement(rest[0]);\n element.appendChild(wrapInTag.apply(void 0, _toConsumableArray(slice$1(rest).call(rest, 1))));\n return element;\n }\n}\nvar Configurator = /* @__PURE__ */ function() {\n function Configurator2(parentModule, defaultContainer, configureOptions2) {\n var pixelRatio = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 1;\n var hideOption = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : function() {\n return false;\n };\n _classCallCheck(this, Configurator2);\n this.parent = parentModule;\n this.changedOptions = [];\n this.container = defaultContainer;\n this.allowCreation = false;\n this.hideOption = hideOption;\n this.options = {};\n this.initialized = false;\n this.popupCounter = 0;\n this.defaultOptions = {\n enabled: false,\n filter: true,\n container: void 0,\n showButton: true\n };\n assign$2(this.options, this.defaultOptions);\n this.configureOptions = configureOptions2;\n this.moduleOptions = {};\n this.domElements = [];\n this.popupDiv = {};\n this.popupLimit = 5;\n this.popupHistory = {};\n this.colorPicker = new ColorPicker(pixelRatio);\n this.wrapper = void 0;\n }\n _createClass(Configurator2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n if (options2 !== void 0) {\n this.popupHistory = {};\n this._removePopup();\n var enabled = true;\n if (typeof options2 === \"string\") {\n this.options.filter = options2;\n } else if (isArray$1(options2)) {\n this.options.filter = options2.join();\n } else if (_typeof(options2) === \"object\") {\n if (options2 == null) {\n throw new TypeError(\"options cannot be null\");\n }\n if (options2.container !== void 0) {\n this.options.container = options2.container;\n }\n if (filter2(options2) !== void 0) {\n this.options.filter = filter2(options2);\n }\n if (options2.showButton !== void 0) {\n this.options.showButton = options2.showButton;\n }\n if (options2.enabled !== void 0) {\n enabled = options2.enabled;\n }\n } else if (typeof options2 === \"boolean\") {\n this.options.filter = true;\n enabled = options2;\n } else if (typeof options2 === \"function\") {\n this.options.filter = options2;\n enabled = true;\n }\n if (filter2(this.options) === false) {\n enabled = false;\n }\n this.options.enabled = enabled;\n }\n this._clean();\n }\n }, {\n key: \"setModuleOptions\",\n value: function setModuleOptions(moduleOptions) {\n this.moduleOptions = moduleOptions;\n if (this.options.enabled === true) {\n this._clean();\n if (this.options.container !== void 0) {\n this.container = this.options.container;\n }\n this._create();\n }\n }\n }, {\n key: \"_create\",\n value: function _create() {\n this._clean();\n this.changedOptions = [];\n var filter$12 = filter2(this.options);\n var counter = 0;\n var show = false;\n for (var _option in this.configureOptions) {\n if (Object.prototype.hasOwnProperty.call(this.configureOptions, _option)) {\n this.allowCreation = false;\n show = false;\n if (typeof filter$12 === \"function\") {\n show = filter$12(_option, []);\n show = show || this._handleObject(this.configureOptions[_option], [_option], true);\n } else if (filter$12 === true || indexOf2(filter$12).call(filter$12, _option) !== -1) {\n show = true;\n }\n if (show !== false) {\n this.allowCreation = true;\n if (counter > 0) {\n this._makeItem([]);\n }\n this._makeHeader(_option);\n this._handleObject(this.configureOptions[_option], [_option]);\n }\n counter++;\n }\n }\n this._makeButton();\n this._push();\n }\n }, {\n key: \"_push\",\n value: function _push() {\n this.wrapper = document.createElement(\"div\");\n this.wrapper.className = \"vis-configuration-wrapper\";\n this.container.appendChild(this.wrapper);\n for (var i = 0; i < this.domElements.length; i++) {\n this.wrapper.appendChild(this.domElements[i]);\n }\n this._showPopupIfNeeded();\n }\n }, {\n key: \"_clean\",\n value: function _clean() {\n for (var i = 0; i < this.domElements.length; i++) {\n this.wrapper.removeChild(this.domElements[i]);\n }\n if (this.wrapper !== void 0) {\n this.container.removeChild(this.wrapper);\n this.wrapper = void 0;\n }\n this.domElements = [];\n this._removePopup();\n }\n }, {\n key: \"_getValue\",\n value: function _getValue(path2) {\n var base = this.moduleOptions;\n for (var i = 0; i < path2.length; i++) {\n if (base[path2[i]] !== void 0) {\n base = base[path2[i]];\n } else {\n base = void 0;\n break;\n }\n }\n return base;\n }\n }, {\n key: \"_makeItem\",\n value: function _makeItem(path2) {\n if (this.allowCreation === true) {\n var item = document.createElement(\"div\");\n item.className = \"vis-configuration vis-config-item vis-config-s\" + path2.length;\n for (var _len6 = arguments.length, domElements = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n domElements[_key6 - 1] = arguments[_key6];\n }\n forEach$2(domElements).call(domElements, function(element) {\n item.appendChild(element);\n });\n this.domElements.push(item);\n return this.domElements.length;\n }\n return 0;\n }\n }, {\n key: \"_makeHeader\",\n value: function _makeHeader(name) {\n var div = document.createElement(\"div\");\n div.className = \"vis-configuration vis-config-header\";\n div.innerText = name;\n this._makeItem([], div);\n }\n }, {\n key: \"_makeLabel\",\n value: function _makeLabel(name, path2) {\n var objectLabel = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n var div = document.createElement(\"div\");\n div.className = \"vis-configuration vis-config-label vis-config-s\" + path2.length;\n if (objectLabel === true) {\n while (div.firstChild) {\n div.removeChild(div.firstChild);\n }\n div.appendChild(wrapInTag(\"i\", \"b\", name));\n } else {\n div.innerText = name + \":\";\n }\n return div;\n }\n }, {\n key: \"_makeDropdown\",\n value: function _makeDropdown(arr, value, path2) {\n var select = document.createElement(\"select\");\n select.className = \"vis-configuration vis-config-select\";\n var selectedValue = 0;\n if (value !== void 0) {\n if (indexOf2(arr).call(arr, value) !== -1) {\n selectedValue = indexOf2(arr).call(arr, value);\n }\n }\n for (var i = 0; i < arr.length; i++) {\n var _option2 = document.createElement(\"option\");\n _option2.value = arr[i];\n if (i === selectedValue) {\n _option2.selected = \"selected\";\n }\n _option2.innerText = arr[i];\n select.appendChild(_option2);\n }\n var me = this;\n select.onchange = function() {\n me._update(this.value, path2);\n };\n var label = this._makeLabel(path2[path2.length - 1], path2);\n this._makeItem(path2, label, select);\n }\n }, {\n key: \"_makeRange\",\n value: function _makeRange(arr, value, path2) {\n var defaultValue = arr[0];\n var min2 = arr[1];\n var max2 = arr[2];\n var step = arr[3];\n var range = document.createElement(\"input\");\n range.className = \"vis-configuration vis-config-range\";\n try {\n range.type = \"range\";\n range.min = min2;\n range.max = max2;\n } catch (err) {\n }\n range.step = step;\n var popupString = \"\";\n var popupValue = 0;\n if (value !== void 0) {\n var factor = 1.2;\n if (value < 0 && value * factor < min2) {\n range.min = Math.ceil(value * factor);\n popupValue = range.min;\n popupString = \"range increased\";\n } else if (value / factor < min2) {\n range.min = Math.ceil(value / factor);\n popupValue = range.min;\n popupString = \"range increased\";\n }\n if (value * factor > max2 && max2 !== 1) {\n range.max = Math.ceil(value * factor);\n popupValue = range.max;\n popupString = \"range increased\";\n }\n range.value = value;\n } else {\n range.value = defaultValue;\n }\n var input = document.createElement(\"input\");\n input.className = \"vis-configuration vis-config-rangeinput\";\n input.value = range.value;\n var me = this;\n range.onchange = function() {\n input.value = this.value;\n me._update(Number(this.value), path2);\n };\n range.oninput = function() {\n input.value = this.value;\n };\n var label = this._makeLabel(path2[path2.length - 1], path2);\n var itemIndex = this._makeItem(path2, label, range, input);\n if (popupString !== \"\" && this.popupHistory[itemIndex] !== popupValue) {\n this.popupHistory[itemIndex] = popupValue;\n this._setupPopup(popupString, itemIndex);\n }\n }\n }, {\n key: \"_makeButton\",\n value: function _makeButton() {\n var _this4 = this;\n if (this.options.showButton === true) {\n var generateButton = document.createElement(\"div\");\n generateButton.className = \"vis-configuration vis-config-button\";\n generateButton.innerText = \"generate options\";\n generateButton.onclick = function() {\n _this4._printOptions();\n };\n generateButton.onmouseover = function() {\n generateButton.className = \"vis-configuration vis-config-button hover\";\n };\n generateButton.onmouseout = function() {\n generateButton.className = \"vis-configuration vis-config-button\";\n };\n this.optionsContainer = document.createElement(\"div\");\n this.optionsContainer.className = \"vis-configuration vis-config-option-container\";\n this.domElements.push(this.optionsContainer);\n this.domElements.push(generateButton);\n }\n }\n }, {\n key: \"_setupPopup\",\n value: function _setupPopup(string2, index2) {\n var _this5 = this;\n if (this.initialized === true && this.allowCreation === true && this.popupCounter < this.popupLimit) {\n var div = document.createElement(\"div\");\n div.id = \"vis-configuration-popup\";\n div.className = \"vis-configuration-popup\";\n div.innerText = string2;\n div.onclick = function() {\n _this5._removePopup();\n };\n this.popupCounter += 1;\n this.popupDiv = {\n html: div,\n index: index2\n };\n }\n }\n }, {\n key: \"_removePopup\",\n value: function _removePopup() {\n if (this.popupDiv.html !== void 0) {\n this.popupDiv.html.parentNode.removeChild(this.popupDiv.html);\n clearTimeout(this.popupDiv.hideTimeout);\n clearTimeout(this.popupDiv.deleteTimeout);\n this.popupDiv = {};\n }\n }\n }, {\n key: \"_showPopupIfNeeded\",\n value: function _showPopupIfNeeded() {\n var _this6 = this;\n if (this.popupDiv.html !== void 0) {\n var correspondingElement = this.domElements[this.popupDiv.index];\n var rect = correspondingElement.getBoundingClientRect();\n this.popupDiv.html.style.left = rect.left + \"px\";\n this.popupDiv.html.style.top = rect.top - 30 + \"px\";\n document.body.appendChild(this.popupDiv.html);\n this.popupDiv.hideTimeout = setTimeout$1(function() {\n _this6.popupDiv.html.style.opacity = 0;\n }, 1500);\n this.popupDiv.deleteTimeout = setTimeout$1(function() {\n _this6._removePopup();\n }, 1800);\n }\n }\n }, {\n key: \"_makeCheckbox\",\n value: function _makeCheckbox(defaultValue, value, path2) {\n var checkbox = document.createElement(\"input\");\n checkbox.type = \"checkbox\";\n checkbox.className = \"vis-configuration vis-config-checkbox\";\n checkbox.checked = defaultValue;\n if (value !== void 0) {\n checkbox.checked = value;\n if (value !== defaultValue) {\n if (_typeof(defaultValue) === \"object\") {\n if (value !== defaultValue.enabled) {\n this.changedOptions.push({\n path: path2,\n value\n });\n }\n } else {\n this.changedOptions.push({\n path: path2,\n value\n });\n }\n }\n }\n var me = this;\n checkbox.onchange = function() {\n me._update(this.checked, path2);\n };\n var label = this._makeLabel(path2[path2.length - 1], path2);\n this._makeItem(path2, label, checkbox);\n }\n }, {\n key: \"_makeTextInput\",\n value: function _makeTextInput(defaultValue, value, path2) {\n var checkbox = document.createElement(\"input\");\n checkbox.type = \"text\";\n checkbox.className = \"vis-configuration vis-config-text\";\n checkbox.value = value;\n if (value !== defaultValue) {\n this.changedOptions.push({\n path: path2,\n value\n });\n }\n var me = this;\n checkbox.onchange = function() {\n me._update(this.value, path2);\n };\n var label = this._makeLabel(path2[path2.length - 1], path2);\n this._makeItem(path2, label, checkbox);\n }\n }, {\n key: \"_makeColorField\",\n value: function _makeColorField(arr, value, path2) {\n var _this7 = this;\n var defaultColor = arr[1];\n var div = document.createElement(\"div\");\n value = value === void 0 ? defaultColor : value;\n if (value !== \"none\") {\n div.className = \"vis-configuration vis-config-colorBlock\";\n div.style.backgroundColor = value;\n } else {\n div.className = \"vis-configuration vis-config-colorBlock none\";\n }\n value = value === void 0 ? defaultColor : value;\n div.onclick = function() {\n _this7._showColorPicker(value, div, path2);\n };\n var label = this._makeLabel(path2[path2.length - 1], path2);\n this._makeItem(path2, label, div);\n }\n }, {\n key: \"_showColorPicker\",\n value: function _showColorPicker(value, div, path2) {\n var _this8 = this;\n div.onclick = function() {\n };\n this.colorPicker.insertTo(div);\n this.colorPicker.show();\n this.colorPicker.setColor(value);\n this.colorPicker.setUpdateCallback(function(color) {\n var colorString = \"rgba(\" + color.r + \",\" + color.g + \",\" + color.b + \",\" + color.a + \")\";\n div.style.backgroundColor = colorString;\n _this8._update(colorString, path2);\n });\n this.colorPicker.setCloseCallback(function() {\n div.onclick = function() {\n _this8._showColorPicker(value, div, path2);\n };\n });\n }\n }, {\n key: \"_handleObject\",\n value: function _handleObject(obj) {\n var path2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];\n var checkOnly = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n var show = false;\n var filter$12 = filter2(this.options);\n var visibleInSet = false;\n for (var subObj in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, subObj)) {\n show = true;\n var item = obj[subObj];\n var newPath = copyAndExtendArray(path2, subObj);\n if (typeof filter$12 === \"function\") {\n show = filter$12(subObj, path2);\n if (show === false) {\n if (!isArray$1(item) && typeof item !== \"string\" && typeof item !== \"boolean\" && item instanceof Object) {\n this.allowCreation = false;\n show = this._handleObject(item, newPath, true);\n this.allowCreation = checkOnly === false;\n }\n }\n }\n if (show !== false) {\n visibleInSet = true;\n var value = this._getValue(newPath);\n if (isArray$1(item)) {\n this._handleArray(item, value, newPath);\n } else if (typeof item === \"string\") {\n this._makeTextInput(item, value, newPath);\n } else if (typeof item === \"boolean\") {\n this._makeCheckbox(item, value, newPath);\n } else if (item instanceof Object) {\n if (!this.hideOption(path2, subObj, this.moduleOptions)) {\n if (item.enabled !== void 0) {\n var enabledPath = copyAndExtendArray(newPath, \"enabled\");\n var enabledValue = this._getValue(enabledPath);\n if (enabledValue === true) {\n var label = this._makeLabel(subObj, newPath, true);\n this._makeItem(newPath, label);\n visibleInSet = this._handleObject(item, newPath) || visibleInSet;\n } else {\n this._makeCheckbox(item, enabledValue, newPath);\n }\n } else {\n var _label = this._makeLabel(subObj, newPath, true);\n this._makeItem(newPath, _label);\n visibleInSet = this._handleObject(item, newPath) || visibleInSet;\n }\n }\n } else {\n console.error(\"dont know how to handle\", item, subObj, newPath);\n }\n }\n }\n }\n return visibleInSet;\n }\n }, {\n key: \"_handleArray\",\n value: function _handleArray(arr, value, path2) {\n if (typeof arr[0] === \"string\" && arr[0] === \"color\") {\n this._makeColorField(arr, value, path2);\n if (arr[1] !== value) {\n this.changedOptions.push({\n path: path2,\n value\n });\n }\n } else if (typeof arr[0] === \"string\") {\n this._makeDropdown(arr, value, path2);\n if (arr[0] !== value) {\n this.changedOptions.push({\n path: path2,\n value\n });\n }\n } else if (typeof arr[0] === \"number\") {\n this._makeRange(arr, value, path2);\n if (arr[0] !== value) {\n this.changedOptions.push({\n path: path2,\n value: Number(value)\n });\n }\n }\n }\n }, {\n key: \"_update\",\n value: function _update(value, path2) {\n var options2 = this._constructOptions(value, path2);\n if (this.parent.body && this.parent.body.emitter && this.parent.body.emitter.emit) {\n this.parent.body.emitter.emit(\"configChange\", options2);\n }\n this.initialized = true;\n this.parent.setOptions(options2);\n }\n }, {\n key: \"_constructOptions\",\n value: function _constructOptions(value, path2) {\n var optionsObj = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var pointer = optionsObj;\n value = value === \"true\" ? true : value;\n value = value === \"false\" ? false : value;\n for (var i = 0; i < path2.length; i++) {\n if (path2[i] !== \"global\") {\n if (pointer[path2[i]] === void 0) {\n pointer[path2[i]] = {};\n }\n if (i !== path2.length - 1) {\n pointer = pointer[path2[i]];\n } else {\n pointer[path2[i]] = value;\n }\n }\n }\n return optionsObj;\n }\n }, {\n key: \"_printOptions\",\n value: function _printOptions() {\n var options2 = this.getOptions();\n while (this.optionsContainer.firstChild) {\n this.optionsContainer.removeChild(this.optionsContainer.firstChild);\n }\n this.optionsContainer.appendChild(wrapInTag(\"pre\", \"const options = \" + stringify$1(options2, null, 2)));\n }\n }, {\n key: \"getOptions\",\n value: function getOptions() {\n var options2 = {};\n for (var i = 0; i < this.changedOptions.length; i++) {\n this._constructOptions(this.changedOptions[i].value, this.changedOptions[i].path, options2);\n }\n return options2;\n }\n }]);\n return Configurator2;\n}();\nvar Popup = /* @__PURE__ */ function() {\n function Popup2(container, overflowMethod) {\n _classCallCheck(this, Popup2);\n this.container = container;\n this.overflowMethod = overflowMethod || \"cap\";\n this.x = 0;\n this.y = 0;\n this.padding = 5;\n this.hidden = false;\n this.frame = document.createElement(\"div\");\n this.frame.className = \"vis-tooltip\";\n this.container.appendChild(this.frame);\n }\n _createClass(Popup2, [{\n key: \"setPosition\",\n value: function setPosition(x, y) {\n this.x = _parseInt(x);\n this.y = _parseInt(y);\n }\n }, {\n key: \"setText\",\n value: function setText(content) {\n if (content instanceof Element) {\n while (this.frame.firstChild) {\n this.frame.removeChild(this.frame.firstChild);\n }\n this.frame.appendChild(content);\n } else {\n this.frame.innerText = content;\n }\n }\n }, {\n key: \"show\",\n value: function show(doShow) {\n if (doShow === void 0) {\n doShow = true;\n }\n if (doShow === true) {\n var height = this.frame.clientHeight;\n var width = this.frame.clientWidth;\n var maxHeight = this.frame.parentNode.clientHeight;\n var maxWidth = this.frame.parentNode.clientWidth;\n var left = 0, top = 0;\n if (this.overflowMethod == \"flip\") {\n var isLeft = false, isTop = true;\n if (this.y - height < this.padding) {\n isTop = false;\n }\n if (this.x + width > maxWidth - this.padding) {\n isLeft = true;\n }\n if (isLeft) {\n left = this.x - width;\n } else {\n left = this.x;\n }\n if (isTop) {\n top = this.y - height;\n } else {\n top = this.y;\n }\n } else {\n top = this.y - height;\n if (top + height + this.padding > maxHeight) {\n top = maxHeight - height - this.padding;\n }\n if (top < this.padding) {\n top = this.padding;\n }\n left = this.x;\n if (left + width + this.padding > maxWidth) {\n left = maxWidth - width - this.padding;\n }\n if (left < this.padding) {\n left = this.padding;\n }\n }\n this.frame.style.left = left + \"px\";\n this.frame.style.top = top + \"px\";\n this.frame.style.visibility = \"visible\";\n this.hidden = false;\n } else {\n this.hide();\n }\n }\n }, {\n key: \"hide\",\n value: function hide() {\n this.hidden = true;\n this.frame.style.left = \"0\";\n this.frame.style.top = \"0\";\n this.frame.style.visibility = \"hidden\";\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.frame.parentNode.removeChild(this.frame);\n }\n }]);\n return Popup2;\n}();\nvar errorFound = false;\nvar allOptions$1;\nvar VALIDATOR_PRINT_STYLE = \"background: #FFeeee; color: #dd0000\";\nvar Validator = /* @__PURE__ */ function() {\n function Validator2() {\n _classCallCheck(this, Validator2);\n }\n _createClass(Validator2, null, [{\n key: \"validate\",\n value: function validate2(options2, referenceOptions, subObject) {\n errorFound = false;\n allOptions$1 = referenceOptions;\n var usedOptions = referenceOptions;\n if (subObject !== void 0) {\n usedOptions = referenceOptions[subObject];\n }\n Validator2.parse(options2, usedOptions, []);\n return errorFound;\n }\n }, {\n key: \"parse\",\n value: function parse(options2, referenceOptions, path2) {\n for (var _option3 in options2) {\n if (Object.prototype.hasOwnProperty.call(options2, _option3)) {\n Validator2.check(_option3, options2, referenceOptions, path2);\n }\n }\n }\n }, {\n key: \"check\",\n value: function check2(option, options2, referenceOptions, path2) {\n if (referenceOptions[option] === void 0 && referenceOptions.__any__ === void 0) {\n Validator2.getSuggestion(option, referenceOptions, path2);\n return;\n }\n var referenceOption = option;\n var is_object = true;\n if (referenceOptions[option] === void 0 && referenceOptions.__any__ !== void 0) {\n referenceOption = \"__any__\";\n is_object = Validator2.getType(options2[option]) === \"object\";\n }\n var refOptionObj = referenceOptions[referenceOption];\n if (is_object && refOptionObj.__type__ !== void 0) {\n refOptionObj = refOptionObj.__type__;\n }\n Validator2.checkFields(option, options2, referenceOptions, referenceOption, refOptionObj, path2);\n }\n }, {\n key: \"checkFields\",\n value: function checkFields(option, options2, referenceOptions, referenceOption, refOptionObj, path2) {\n var log = function log2(message) {\n console.error(\"%c\" + message + Validator2.printLocation(path2, option), VALIDATOR_PRINT_STYLE);\n };\n var optionType = Validator2.getType(options2[option]);\n var refOptionType = refOptionObj[optionType];\n if (refOptionType !== void 0) {\n if (Validator2.getType(refOptionType) === \"array\" && indexOf2(refOptionType).call(refOptionType, options2[option]) === -1) {\n log('Invalid option detected in \"' + option + '\". Allowed values are:' + Validator2.print(refOptionType) + ' not \"' + options2[option] + '\". ');\n errorFound = true;\n } else if (optionType === \"object\" && referenceOption !== \"__any__\") {\n path2 = copyAndExtendArray(path2, option);\n Validator2.parse(options2[option], referenceOptions[referenceOption], path2);\n }\n } else if (refOptionObj[\"any\"] === void 0) {\n log('Invalid type received for \"' + option + '\". Expected: ' + Validator2.print(keys3(refOptionObj)) + \". Received [\" + optionType + '] \"' + options2[option] + '\"');\n errorFound = true;\n }\n }\n }, {\n key: \"getType\",\n value: function getType(object2) {\n var type = _typeof(object2);\n if (type === \"object\") {\n if (object2 === null) {\n return \"null\";\n }\n if (object2 instanceof Boolean) {\n return \"boolean\";\n }\n if (object2 instanceof Number) {\n return \"number\";\n }\n if (object2 instanceof String) {\n return \"string\";\n }\n if (isArray$1(object2)) {\n return \"array\";\n }\n if (object2 instanceof Date) {\n return \"date\";\n }\n if (object2.nodeType !== void 0) {\n return \"dom\";\n }\n if (object2._isAMomentObject === true) {\n return \"moment\";\n }\n return \"object\";\n } else if (type === \"number\") {\n return \"number\";\n } else if (type === \"boolean\") {\n return \"boolean\";\n } else if (type === \"string\") {\n return \"string\";\n } else if (type === void 0) {\n return \"undefined\";\n }\n return type;\n }\n }, {\n key: \"getSuggestion\",\n value: function getSuggestion(option, options2, path2) {\n var localSearch = Validator2.findInOptions(option, options2, path2, false);\n var globalSearch = Validator2.findInOptions(option, allOptions$1, [], true);\n var localSearchThreshold = 8;\n var globalSearchThreshold = 4;\n var msg;\n if (localSearch.indexMatch !== void 0) {\n msg = \" in \" + Validator2.printLocation(localSearch.path, option, \"\") + 'Perhaps it was incomplete? Did you mean: \"' + localSearch.indexMatch + '\"?\\n\\n';\n } else if (globalSearch.distance <= globalSearchThreshold && localSearch.distance > globalSearch.distance) {\n msg = \" in \" + Validator2.printLocation(localSearch.path, option, \"\") + \"Perhaps it was misplaced? Matching option found at: \" + Validator2.printLocation(globalSearch.path, globalSearch.closestMatch, \"\");\n } else if (localSearch.distance <= localSearchThreshold) {\n msg = '. Did you mean \"' + localSearch.closestMatch + '\"?' + Validator2.printLocation(localSearch.path, option);\n } else {\n msg = \". Did you mean one of these: \" + Validator2.print(keys3(options2)) + Validator2.printLocation(path2, option);\n }\n console.error('%cUnknown option detected: \"' + option + '\"' + msg, VALIDATOR_PRINT_STYLE);\n errorFound = true;\n }\n }, {\n key: \"findInOptions\",\n value: function findInOptions(option, options2, path2) {\n var recursive = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;\n var min2 = 1e9;\n var closestMatch = \"\";\n var closestMatchPath = [];\n var lowerCaseOption = option.toLowerCase();\n var indexMatch = void 0;\n for (var op in options2) {\n var distance = void 0;\n if (options2[op].__type__ !== void 0 && recursive === true) {\n var result = Validator2.findInOptions(option, options2[op], copyAndExtendArray(path2, op));\n if (min2 > result.distance) {\n closestMatch = result.closestMatch;\n closestMatchPath = result.path;\n min2 = result.distance;\n indexMatch = result.indexMatch;\n }\n } else {\n var _context20;\n if (indexOf2(_context20 = op.toLowerCase()).call(_context20, lowerCaseOption) !== -1) {\n indexMatch = op;\n }\n distance = Validator2.levenshteinDistance(option, op);\n if (min2 > distance) {\n closestMatch = op;\n closestMatchPath = copyArray(path2);\n min2 = distance;\n }\n }\n }\n return {\n closestMatch,\n path: closestMatchPath,\n distance: min2,\n indexMatch\n };\n }\n }, {\n key: \"printLocation\",\n value: function printLocation(path2, option) {\n var prefix = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : \"Problem value found at: \\n\";\n var str = \"\\n\\n\" + prefix + \"options = {\\n\";\n for (var i = 0; i < path2.length; i++) {\n for (var j = 0; j < i + 1; j++) {\n str += \" \";\n }\n str += path2[i] + \": {\\n\";\n }\n for (var _j = 0; _j < path2.length + 1; _j++) {\n str += \" \";\n }\n str += option + \"\\n\";\n for (var _i3 = 0; _i3 < path2.length + 1; _i3++) {\n for (var _j2 = 0; _j2 < path2.length - _i3; _j2++) {\n str += \" \";\n }\n str += \"}\\n\";\n }\n return str + \"\\n\\n\";\n }\n }, {\n key: \"print\",\n value: function print(options2) {\n return stringify$1(options2).replace(/(\")|(\\[)|(\\])|(,\"__type__\")/g, \"\").replace(/(,)/g, \", \");\n }\n }, {\n key: \"levenshteinDistance\",\n value: function levenshteinDistance(a, b) {\n if (a.length === 0)\n return b.length;\n if (b.length === 0)\n return a.length;\n var matrix = [];\n var i;\n for (i = 0; i <= b.length; i++) {\n matrix[i] = [i];\n }\n var j;\n for (j = 0; j <= a.length; j++) {\n matrix[0][j] = j;\n }\n for (i = 1; i <= b.length; i++) {\n for (j = 1; j <= a.length; j++) {\n if (b.charAt(i - 1) == a.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1));\n }\n }\n }\n return matrix[b.length][a.length];\n }\n }]);\n return Validator2;\n}();\nvar Activator$1 = Activator;\nvar Configurator$1 = Configurator;\nvar Hammer$1 = Hammer;\nvar Popup$1 = Popup;\nvar VALIDATOR_PRINT_STYLE$1 = VALIDATOR_PRINT_STYLE;\nvar Validator$1 = Validator;\nfunction parseDOT(data2) {\n dot = data2;\n return parseGraph();\n}\nvar NODE_ATTR_MAPPING = {\n fontsize: \"font.size\",\n fontcolor: \"font.color\",\n labelfontcolor: \"font.color\",\n fontname: \"font.face\",\n color: [\"color.border\", \"color.background\"],\n fillcolor: \"color.background\",\n tooltip: \"title\",\n labeltooltip: \"title\"\n};\nvar EDGE_ATTR_MAPPING = create$4(NODE_ATTR_MAPPING);\nEDGE_ATTR_MAPPING.color = \"color.color\";\nEDGE_ATTR_MAPPING.style = \"dashes\";\nvar TOKENTYPE = {\n NULL: 0,\n DELIMITER: 1,\n IDENTIFIER: 2,\n UNKNOWN: 3\n};\nvar DELIMITERS = {\n \"{\": true,\n \"}\": true,\n \"[\": true,\n \"]\": true,\n \";\": true,\n \"=\": true,\n \",\": true,\n \"->\": true,\n \"--\": true\n};\nvar dot = \"\";\nvar index = 0;\nvar c = \"\";\nvar token = \"\";\nvar tokenType = TOKENTYPE.NULL;\nfunction first() {\n index = 0;\n c = dot.charAt(0);\n}\nfunction next2() {\n index++;\n c = dot.charAt(index);\n}\nfunction nextPreview() {\n return dot.charAt(index + 1);\n}\nfunction isAlphaNumeric(c2) {\n var charCode = c2.charCodeAt(0);\n if (charCode < 47) {\n return charCode === 35 || charCode === 46;\n }\n if (charCode < 59) {\n return charCode > 47;\n }\n if (charCode < 91) {\n return charCode > 64;\n }\n if (charCode < 96) {\n return charCode === 95;\n }\n if (charCode < 123) {\n return charCode > 96;\n }\n return false;\n}\nfunction merge$1(a, b) {\n if (!a) {\n a = {};\n }\n if (b) {\n for (var name in b) {\n if (b.hasOwnProperty(name)) {\n a[name] = b[name];\n }\n }\n }\n return a;\n}\nfunction setValue(obj, path2, value) {\n var keys4 = path2.split(\".\");\n var o = obj;\n while (keys4.length) {\n var key = keys4.shift();\n if (keys4.length) {\n if (!o[key]) {\n o[key] = {};\n }\n o = o[key];\n } else {\n o[key] = value;\n }\n }\n}\nfunction addNode(graph, node) {\n var i, len;\n var current = null;\n var graphs = [graph];\n var root = graph;\n while (root.parent) {\n graphs.push(root.parent);\n root = root.parent;\n }\n if (root.nodes) {\n for (i = 0, len = root.nodes.length; i < len; i++) {\n if (node.id === root.nodes[i].id) {\n current = root.nodes[i];\n break;\n }\n }\n }\n if (!current) {\n current = {\n id: node.id\n };\n if (graph.node) {\n current.attr = merge$1(current.attr, graph.node);\n }\n }\n for (i = graphs.length - 1; i >= 0; i--) {\n var _context;\n var g = graphs[i];\n if (!g.nodes) {\n g.nodes = [];\n }\n if (indexOf2(_context = g.nodes).call(_context, current) === -1) {\n g.nodes.push(current);\n }\n }\n if (node.attr) {\n current.attr = merge$1(current.attr, node.attr);\n }\n}\nfunction addEdge(graph, edge) {\n if (!graph.edges) {\n graph.edges = [];\n }\n graph.edges.push(edge);\n if (graph.edge) {\n var attr = merge$1({}, graph.edge);\n edge.attr = merge$1(attr, edge.attr);\n }\n}\nfunction createEdge(graph, from3, to, type, attr) {\n var edge = {\n from: from3,\n to,\n type\n };\n if (graph.edge) {\n edge.attr = merge$1({}, graph.edge);\n }\n edge.attr = merge$1(edge.attr || {}, attr);\n if (attr != null) {\n if (attr.hasOwnProperty(\"arrows\") && attr[\"arrows\"] != null) {\n edge[\"arrows\"] = {\n to: {\n enabled: true,\n type: attr.arrows.type\n }\n };\n attr[\"arrows\"] = null;\n }\n }\n return edge;\n}\nfunction getToken() {\n tokenType = TOKENTYPE.NULL;\n token = \"\";\n while (c === \" \" || c === \"\t\" || c === \"\\n\" || c === \"\\r\") {\n next2();\n }\n do {\n var isComment = false;\n if (c === \"#\") {\n var i = index - 1;\n while (dot.charAt(i) === \" \" || dot.charAt(i) === \"\t\") {\n i--;\n }\n if (dot.charAt(i) === \"\\n\" || dot.charAt(i) === \"\") {\n while (c != \"\" && c != \"\\n\") {\n next2();\n }\n isComment = true;\n }\n }\n if (c === \"/\" && nextPreview() === \"/\") {\n while (c != \"\" && c != \"\\n\") {\n next2();\n }\n isComment = true;\n }\n if (c === \"/\" && nextPreview() === \"*\") {\n while (c != \"\") {\n if (c === \"*\" && nextPreview() === \"/\") {\n next2();\n next2();\n break;\n } else {\n next2();\n }\n }\n isComment = true;\n }\n while (c === \" \" || c === \"\t\" || c === \"\\n\" || c === \"\\r\") {\n next2();\n }\n } while (isComment);\n if (c === \"\") {\n tokenType = TOKENTYPE.DELIMITER;\n return;\n }\n var c2 = c + nextPreview();\n if (DELIMITERS[c2]) {\n tokenType = TOKENTYPE.DELIMITER;\n token = c2;\n next2();\n next2();\n return;\n }\n if (DELIMITERS[c]) {\n tokenType = TOKENTYPE.DELIMITER;\n token = c;\n next2();\n return;\n }\n if (isAlphaNumeric(c) || c === \"-\") {\n token += c;\n next2();\n while (isAlphaNumeric(c)) {\n token += c;\n next2();\n }\n if (token === \"false\") {\n token = false;\n } else if (token === \"true\") {\n token = true;\n } else if (!isNaN(Number(token))) {\n token = Number(token);\n }\n tokenType = TOKENTYPE.IDENTIFIER;\n return;\n }\n if (c === '\"') {\n next2();\n while (c != \"\" && (c != '\"' || c === '\"' && nextPreview() === '\"')) {\n if (c === '\"') {\n token += c;\n next2();\n } else if (c === \"\\\\\" && nextPreview() === \"n\") {\n token += \"\\n\";\n next2();\n } else {\n token += c;\n }\n next2();\n }\n if (c != '\"') {\n throw newSyntaxError('End of string \" expected');\n }\n next2();\n tokenType = TOKENTYPE.IDENTIFIER;\n return;\n }\n tokenType = TOKENTYPE.UNKNOWN;\n while (c != \"\") {\n token += c;\n next2();\n }\n throw new SyntaxError('Syntax error in part \"' + chop(token, 30) + '\"');\n}\nfunction parseGraph() {\n var graph = {};\n first();\n getToken();\n if (token === \"strict\") {\n graph.strict = true;\n getToken();\n }\n if (token === \"graph\" || token === \"digraph\") {\n graph.type = token;\n getToken();\n }\n if (tokenType === TOKENTYPE.IDENTIFIER) {\n graph.id = token;\n getToken();\n }\n if (token != \"{\") {\n throw newSyntaxError(\"Angle bracket { expected\");\n }\n getToken();\n parseStatements(graph);\n if (token != \"}\") {\n throw newSyntaxError(\"Angle bracket } expected\");\n }\n getToken();\n if (token !== \"\") {\n throw newSyntaxError(\"End of file expected\");\n }\n getToken();\n delete graph.node;\n delete graph.edge;\n delete graph.graph;\n return graph;\n}\nfunction parseStatements(graph) {\n while (token !== \"\" && token != \"}\") {\n parseStatement(graph);\n if (token === \";\") {\n getToken();\n }\n }\n}\nfunction parseStatement(graph) {\n var subgraph = parseSubgraph(graph);\n if (subgraph) {\n parseEdge(graph, subgraph);\n return;\n }\n var attr = parseAttributeStatement(graph);\n if (attr) {\n return;\n }\n if (tokenType != TOKENTYPE.IDENTIFIER) {\n throw newSyntaxError(\"Identifier expected\");\n }\n var id2 = token;\n getToken();\n if (token === \"=\") {\n getToken();\n if (tokenType != TOKENTYPE.IDENTIFIER) {\n throw newSyntaxError(\"Identifier expected\");\n }\n graph[id2] = token;\n getToken();\n } else {\n parseNodeStatement(graph, id2);\n }\n}\nfunction parseSubgraph(graph) {\n var subgraph = null;\n if (token === \"subgraph\") {\n subgraph = {};\n subgraph.type = \"subgraph\";\n getToken();\n if (tokenType === TOKENTYPE.IDENTIFIER) {\n subgraph.id = token;\n getToken();\n }\n }\n if (token === \"{\") {\n getToken();\n if (!subgraph) {\n subgraph = {};\n }\n subgraph.parent = graph;\n subgraph.node = graph.node;\n subgraph.edge = graph.edge;\n subgraph.graph = graph.graph;\n parseStatements(subgraph);\n if (token != \"}\") {\n throw newSyntaxError(\"Angle bracket } expected\");\n }\n getToken();\n delete subgraph.node;\n delete subgraph.edge;\n delete subgraph.graph;\n delete subgraph.parent;\n if (!graph.subgraphs) {\n graph.subgraphs = [];\n }\n graph.subgraphs.push(subgraph);\n }\n return subgraph;\n}\nfunction parseAttributeStatement(graph) {\n if (token === \"node\") {\n getToken();\n graph.node = parseAttributeList();\n return \"node\";\n } else if (token === \"edge\") {\n getToken();\n graph.edge = parseAttributeList();\n return \"edge\";\n } else if (token === \"graph\") {\n getToken();\n graph.graph = parseAttributeList();\n return \"graph\";\n }\n return null;\n}\nfunction parseNodeStatement(graph, id2) {\n var node = {\n id: id2\n };\n var attr = parseAttributeList();\n if (attr) {\n node.attr = attr;\n }\n addNode(graph, node);\n parseEdge(graph, id2);\n}\nfunction parseEdge(graph, from3) {\n while (token === \"->\" || token === \"--\") {\n var to;\n var type = token;\n getToken();\n var subgraph = parseSubgraph(graph);\n if (subgraph) {\n to = subgraph;\n } else {\n if (tokenType != TOKENTYPE.IDENTIFIER) {\n throw newSyntaxError(\"Identifier or subgraph expected\");\n }\n to = token;\n addNode(graph, {\n id: to\n });\n getToken();\n }\n var attr = parseAttributeList();\n var edge = createEdge(graph, from3, to, type, attr);\n addEdge(graph, edge);\n from3 = to;\n }\n}\nfunction parseAttributeList() {\n var i;\n var attr = null;\n var edgeStyles = {\n dashed: true,\n solid: false,\n dotted: [1, 5]\n };\n var arrowTypes = {\n dot: \"circle\",\n box: \"box\",\n crow: \"crow\",\n curve: \"curve\",\n icurve: \"inv_curve\",\n normal: \"triangle\",\n inv: \"inv_triangle\",\n diamond: \"diamond\",\n tee: \"bar\",\n vee: \"vee\"\n };\n var attr_list = new Array();\n var attr_names = new Array();\n while (token === \"[\") {\n getToken();\n attr = {};\n while (token !== \"\" && token != \"]\") {\n if (tokenType != TOKENTYPE.IDENTIFIER) {\n throw newSyntaxError(\"Attribute name expected\");\n }\n var name = token;\n getToken();\n if (token != \"=\") {\n throw newSyntaxError(\"Equal sign = expected\");\n }\n getToken();\n if (tokenType != TOKENTYPE.IDENTIFIER) {\n throw newSyntaxError(\"Attribute value expected\");\n }\n var value = token;\n if (name === \"style\") {\n value = edgeStyles[value];\n }\n var arrowType;\n if (name === \"arrowhead\") {\n arrowType = arrowTypes[value];\n name = \"arrows\";\n value = {\n to: {\n enabled: true,\n type: arrowType\n }\n };\n }\n if (name === \"arrowtail\") {\n arrowType = arrowTypes[value];\n name = \"arrows\";\n value = {\n from: {\n enabled: true,\n type: arrowType\n }\n };\n }\n attr_list.push({\n attr,\n name,\n value\n });\n attr_names.push(name);\n getToken();\n if (token == \",\") {\n getToken();\n }\n }\n if (token != \"]\") {\n throw newSyntaxError(\"Bracket ] expected\");\n }\n getToken();\n }\n if (includes3(attr_names).call(attr_names, \"dir\")) {\n var idx = {};\n idx.arrows = {};\n for (i = 0; i < attr_list.length; i++) {\n if (attr_list[i].name === \"arrows\") {\n if (attr_list[i].value.to != null) {\n idx.arrows.to = i;\n } else if (attr_list[i].value.from != null) {\n idx.arrows.from = i;\n } else {\n throw newSyntaxError(\"Invalid value of arrows\");\n }\n } else if (attr_list[i].name === \"dir\") {\n idx.dir = i;\n }\n }\n var dir_type = attr_list[idx.dir].value;\n if (!includes3(attr_names).call(attr_names, \"arrows\")) {\n if (dir_type === \"both\") {\n attr_list.push({\n attr: attr_list[idx.dir].attr,\n name: \"arrows\",\n value: {\n to: {\n enabled: true\n }\n }\n });\n idx.arrows.to = attr_list.length - 1;\n attr_list.push({\n attr: attr_list[idx.dir].attr,\n name: \"arrows\",\n value: {\n from: {\n enabled: true\n }\n }\n });\n idx.arrows.from = attr_list.length - 1;\n } else if (dir_type === \"forward\") {\n attr_list.push({\n attr: attr_list[idx.dir].attr,\n name: \"arrows\",\n value: {\n to: {\n enabled: true\n }\n }\n });\n idx.arrows.to = attr_list.length - 1;\n } else if (dir_type === \"back\") {\n attr_list.push({\n attr: attr_list[idx.dir].attr,\n name: \"arrows\",\n value: {\n from: {\n enabled: true\n }\n }\n });\n idx.arrows.from = attr_list.length - 1;\n } else if (dir_type === \"none\") {\n attr_list.push({\n attr: attr_list[idx.dir].attr,\n name: \"arrows\",\n value: \"\"\n });\n idx.arrows.to = attr_list.length - 1;\n } else {\n throw newSyntaxError('Invalid dir type \"' + dir_type + '\"');\n }\n }\n var from_type;\n var to_type;\n if (dir_type === \"both\") {\n if (idx.arrows.to && idx.arrows.from) {\n to_type = attr_list[idx.arrows.to].value.to.type;\n from_type = attr_list[idx.arrows.from].value.from.type;\n attr_list[idx.arrows.to] = {\n attr: attr_list[idx.arrows.to].attr,\n name: attr_list[idx.arrows.to].name,\n value: {\n to: {\n enabled: true,\n type: to_type\n },\n from: {\n enabled: true,\n type: from_type\n }\n }\n };\n splice2(attr_list).call(attr_list, idx.arrows.from, 1);\n } else if (idx.arrows.to) {\n to_type = attr_list[idx.arrows.to].value.to.type;\n from_type = \"arrow\";\n attr_list[idx.arrows.to] = {\n attr: attr_list[idx.arrows.to].attr,\n name: attr_list[idx.arrows.to].name,\n value: {\n to: {\n enabled: true,\n type: to_type\n },\n from: {\n enabled: true,\n type: from_type\n }\n }\n };\n } else if (idx.arrows.from) {\n to_type = \"arrow\";\n from_type = attr_list[idx.arrows.from].value.from.type;\n attr_list[idx.arrows.from] = {\n attr: attr_list[idx.arrows.from].attr,\n name: attr_list[idx.arrows.from].name,\n value: {\n to: {\n enabled: true,\n type: to_type\n },\n from: {\n enabled: true,\n type: from_type\n }\n }\n };\n }\n } else if (dir_type === \"back\") {\n if (idx.arrows.to && idx.arrows.from) {\n to_type = \"\";\n from_type = attr_list[idx.arrows.from].value.from.type;\n attr_list[idx.arrows.from] = {\n attr: attr_list[idx.arrows.from].attr,\n name: attr_list[idx.arrows.from].name,\n value: {\n to: {\n enabled: true,\n type: to_type\n },\n from: {\n enabled: true,\n type: from_type\n }\n }\n };\n } else if (idx.arrows.to) {\n to_type = \"\";\n from_type = \"arrow\";\n idx.arrows.from = idx.arrows.to;\n attr_list[idx.arrows.from] = {\n attr: attr_list[idx.arrows.from].attr,\n name: attr_list[idx.arrows.from].name,\n value: {\n to: {\n enabled: true,\n type: to_type\n },\n from: {\n enabled: true,\n type: from_type\n }\n }\n };\n } else if (idx.arrows.from) {\n to_type = \"\";\n from_type = attr_list[idx.arrows.from].value.from.type;\n attr_list[idx.arrows.to] = {\n attr: attr_list[idx.arrows.from].attr,\n name: attr_list[idx.arrows.from].name,\n value: {\n to: {\n enabled: true,\n type: to_type\n },\n from: {\n enabled: true,\n type: from_type\n }\n }\n };\n }\n attr_list[idx.arrows.from] = {\n attr: attr_list[idx.arrows.from].attr,\n name: attr_list[idx.arrows.from].name,\n value: {\n from: {\n enabled: true,\n type: attr_list[idx.arrows.from].value.from.type\n }\n }\n };\n } else if (dir_type === \"none\") {\n var idx_arrow;\n if (idx.arrows.to) {\n idx_arrow = idx.arrows.to;\n } else {\n idx_arrow = idx.arrows.from;\n }\n attr_list[idx_arrow] = {\n attr: attr_list[idx_arrow].attr,\n name: attr_list[idx_arrow].name,\n value: \"\"\n };\n } else if (dir_type === \"forward\") {\n if (idx.arrows.to && idx.arrows.from) {\n to_type = attr_list[idx.arrows.to].value.to.type;\n from_type = \"\";\n attr_list[idx.arrows.to] = {\n attr: attr_list[idx.arrows.to].attr,\n name: attr_list[idx.arrows.to].name,\n value: {\n to: {\n enabled: true,\n type: to_type\n },\n from: {\n enabled: true,\n type: from_type\n }\n }\n };\n } else if (idx.arrows.to) {\n to_type = attr_list[idx.arrows.to].value.to.type;\n from_type = \"\";\n attr_list[idx.arrows.to] = {\n attr: attr_list[idx.arrows.to].attr,\n name: attr_list[idx.arrows.to].name,\n value: {\n to: {\n enabled: true,\n type: to_type\n },\n from: {\n enabled: true,\n type: from_type\n }\n }\n };\n } else if (idx.arrows.from) {\n to_type = \"arrow\";\n from_type = \"\";\n idx.arrows.to = idx.arrows.from;\n attr_list[idx.arrows.to] = {\n attr: attr_list[idx.arrows.to].attr,\n name: attr_list[idx.arrows.to].name,\n value: {\n to: {\n enabled: true,\n type: to_type\n },\n from: {\n enabled: true,\n type: from_type\n }\n }\n };\n }\n attr_list[idx.arrows.to] = {\n attr: attr_list[idx.arrows.to].attr,\n name: attr_list[idx.arrows.to].name,\n value: {\n to: {\n enabled: true,\n type: attr_list[idx.arrows.to].value.to.type\n }\n }\n };\n } else {\n throw newSyntaxError('Invalid dir type \"' + dir_type + '\"');\n }\n splice2(attr_list).call(attr_list, idx.dir, 1);\n }\n var nof_attr_list;\n if (includes3(attr_names).call(attr_names, \"penwidth\")) {\n var tmp_attr_list = [];\n nof_attr_list = attr_list.length;\n for (i = 0; i < nof_attr_list; i++) {\n if (attr_list[i].name !== \"width\") {\n if (attr_list[i].name === \"penwidth\") {\n attr_list[i].name = \"width\";\n }\n tmp_attr_list.push(attr_list[i]);\n }\n }\n attr_list = tmp_attr_list;\n }\n nof_attr_list = attr_list.length;\n for (i = 0; i < nof_attr_list; i++) {\n setValue(attr_list[i].attr, attr_list[i].name, attr_list[i].value);\n }\n return attr;\n}\nfunction newSyntaxError(message) {\n return new SyntaxError(message + ', got \"' + chop(token, 30) + '\" (char ' + index + \")\");\n}\nfunction chop(text, maxLength) {\n return text.length <= maxLength ? text : text.substr(0, 27) + \"...\";\n}\nfunction forEach2(array1, array2, fn) {\n if (isArray$1(array1)) {\n forEach$2(array1).call(array1, function(elem1) {\n if (isArray$1(array2)) {\n forEach$2(array2).call(array2, function(elem2) {\n fn(elem1, elem2);\n });\n } else {\n fn(elem1, array2);\n }\n });\n } else {\n if (isArray$1(array2)) {\n forEach$2(array2).call(array2, function(elem2) {\n fn(array1, elem2);\n });\n } else {\n fn(array1, array2);\n }\n }\n}\nfunction setProp(object2, path2, value) {\n var names = path2.split(\".\");\n var prop = names.pop();\n var obj = object2;\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n if (!(name in obj)) {\n obj[name] = {};\n }\n obj = obj[name];\n }\n obj[prop] = value;\n return object2;\n}\nfunction convertAttr(attr, mapping) {\n var converted = {};\n for (var prop in attr) {\n if (attr.hasOwnProperty(prop)) {\n var visProp = mapping[prop];\n if (isArray$1(visProp)) {\n forEach$2(visProp).call(visProp, function(visPropI) {\n setProp(converted, visPropI, attr[prop]);\n });\n } else if (typeof visProp === \"string\") {\n setProp(converted, visProp, attr[prop]);\n } else {\n setProp(converted, prop, attr[prop]);\n }\n }\n }\n return converted;\n}\nfunction DOTToGraph(data2) {\n var dotData = parseDOT(data2);\n var graphData = {\n nodes: [],\n edges: [],\n options: {}\n };\n if (dotData.nodes) {\n var _context2;\n forEach$2(_context2 = dotData.nodes).call(_context2, function(dotNode) {\n var graphNode = {\n id: dotNode.id,\n label: String(dotNode.label || dotNode.id)\n };\n merge$1(graphNode, convertAttr(dotNode.attr, NODE_ATTR_MAPPING));\n if (graphNode.image) {\n graphNode.shape = \"image\";\n }\n graphData.nodes.push(graphNode);\n });\n }\n if (dotData.edges) {\n var _context3;\n var convertEdge = function convertEdge2(dotEdge) {\n var graphEdge = {\n from: dotEdge.from,\n to: dotEdge.to\n };\n merge$1(graphEdge, convertAttr(dotEdge.attr, EDGE_ATTR_MAPPING));\n if (graphEdge.arrows == null && dotEdge.type === \"->\") {\n graphEdge.arrows = \"to\";\n }\n return graphEdge;\n };\n forEach$2(_context3 = dotData.edges).call(_context3, function(dotEdge) {\n var from3, to;\n if (dotEdge.from instanceof Object) {\n from3 = dotEdge.from.nodes;\n } else {\n from3 = {\n id: dotEdge.from\n };\n }\n if (dotEdge.to instanceof Object) {\n to = dotEdge.to.nodes;\n } else {\n to = {\n id: dotEdge.to\n };\n }\n if (dotEdge.from instanceof Object && dotEdge.from.edges) {\n var _context4;\n forEach$2(_context4 = dotEdge.from.edges).call(_context4, function(subEdge) {\n var graphEdge = convertEdge(subEdge);\n graphData.edges.push(graphEdge);\n });\n }\n forEach2(from3, to, function(from4, to2) {\n var subEdge = createEdge(graphData, from4.id, to2.id, dotEdge.type, dotEdge.attr);\n var graphEdge = convertEdge(subEdge);\n graphData.edges.push(graphEdge);\n });\n if (dotEdge.to instanceof Object && dotEdge.to.edges) {\n var _context5;\n forEach$2(_context5 = dotEdge.to.edges).call(_context5, function(subEdge) {\n var graphEdge = convertEdge(subEdge);\n graphData.edges.push(graphEdge);\n });\n }\n });\n }\n if (dotData.attr) {\n graphData.options = dotData.attr;\n }\n return graphData;\n}\nvar dotparser = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n parseDOT,\n DOTToGraph\n});\nfunction parseGephi(gephiJSON, optionsObj) {\n var _context;\n var options2 = {\n edges: {\n inheritColor: false\n },\n nodes: {\n fixed: false,\n parseColor: false\n }\n };\n if (optionsObj != null) {\n if (optionsObj.fixed != null) {\n options2.nodes.fixed = optionsObj.fixed;\n }\n if (optionsObj.parseColor != null) {\n options2.nodes.parseColor = optionsObj.parseColor;\n }\n if (optionsObj.inheritColor != null) {\n options2.edges.inheritColor = optionsObj.inheritColor;\n }\n }\n var gEdges = gephiJSON.edges;\n var vEdges = map$3(gEdges).call(gEdges, function(gEdge) {\n var vEdge = {\n from: gEdge.source,\n id: gEdge.id,\n to: gEdge.target\n };\n if (gEdge.attributes != null) {\n vEdge.attributes = gEdge.attributes;\n }\n if (gEdge.label != null) {\n vEdge.label = gEdge.label;\n }\n if (gEdge.attributes != null && gEdge.attributes.title != null) {\n vEdge.title = gEdge.attributes.title;\n }\n if (gEdge.type === \"Directed\") {\n vEdge.arrows = \"to\";\n }\n if (gEdge.color && options2.edges.inheritColor === false) {\n vEdge.color = gEdge.color;\n }\n return vEdge;\n });\n var vNodes = map$3(_context = gephiJSON.nodes).call(_context, function(gNode) {\n var vNode = {\n id: gNode.id,\n fixed: options2.nodes.fixed && gNode.x != null && gNode.y != null\n };\n if (gNode.attributes != null) {\n vNode.attributes = gNode.attributes;\n }\n if (gNode.label != null) {\n vNode.label = gNode.label;\n }\n if (gNode.size != null) {\n vNode.size = gNode.size;\n }\n if (gNode.attributes != null && gNode.attributes.title != null) {\n vNode.title = gNode.attributes.title;\n }\n if (gNode.title != null) {\n vNode.title = gNode.title;\n }\n if (gNode.x != null) {\n vNode.x = gNode.x;\n }\n if (gNode.y != null) {\n vNode.y = gNode.y;\n }\n if (gNode.color != null) {\n if (options2.nodes.parseColor === true) {\n vNode.color = gNode.color;\n } else {\n vNode.color = {\n background: gNode.color,\n border: gNode.color,\n highlight: {\n background: gNode.color,\n border: gNode.color\n },\n hover: {\n background: gNode.color,\n border: gNode.color\n }\n };\n }\n }\n return vNode;\n });\n return {\n nodes: vNodes,\n edges: vEdges\n };\n}\nvar gephiParser = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n parseGephi\n});\nvar en = {\n addDescription: \"Click in an empty space to place a new node.\",\n addEdge: \"Add Edge\",\n addNode: \"Add Node\",\n back: \"Back\",\n close: \"Close\",\n createEdgeError: \"Cannot link edges to a cluster.\",\n del: \"Delete selected\",\n deleteClusterError: \"Clusters cannot be deleted.\",\n edgeDescription: \"Click on a node and drag the edge to another node to connect them.\",\n edit: \"Edit\",\n editClusterError: \"Clusters cannot be edited.\",\n editEdge: \"Edit Edge\",\n editEdgeDescription: \"Click on the control points and drag them to a node to connect to it.\",\n editNode: \"Edit Node\"\n};\nvar de = {\n addDescription: \"Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.\",\n addEdge: \"Kante hinzuf\\xFCgen\",\n addNode: \"Knoten hinzuf\\xFCgen\",\n back: \"Zur\\xFCck\",\n close: \"Schlie\\xDFen\",\n createEdgeError: \"Es ist nicht m\\xF6glich, Kanten mit Clustern zu verbinden.\",\n del: \"L\\xF6sche Auswahl\",\n deleteClusterError: \"Cluster k\\xF6nnen nicht gel\\xF6scht werden.\",\n edgeDescription: \"Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.\",\n edit: \"Editieren\",\n editClusterError: \"Cluster k\\xF6nnen nicht editiert werden.\",\n editEdge: \"Kante editieren\",\n editEdgeDescription: \"Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.\",\n editNode: \"Knoten editieren\"\n};\nvar es = {\n addDescription: \"Haga clic en un lugar vac\\xEDo para colocar un nuevo nodo.\",\n addEdge: \"A\\xF1adir arista\",\n addNode: \"A\\xF1adir nodo\",\n back: \"Atr\\xE1s\",\n close: \"Cerrar\",\n createEdgeError: \"No se puede conectar una arista a un grupo.\",\n del: \"Eliminar selecci\\xF3n\",\n deleteClusterError: \"No es posible eliminar grupos.\",\n edgeDescription: \"Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.\",\n edit: \"Editar\",\n editClusterError: \"No es posible editar grupos.\",\n editEdge: \"Editar arista\",\n editEdgeDescription: \"Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.\",\n editNode: \"Editar nodo\"\n};\nvar it = {\n addDescription: \"Clicca per aggiungere un nuovo nodo\",\n addEdge: \"Aggiungi un vertice\",\n addNode: \"Aggiungi un nodo\",\n back: \"Indietro\",\n close: \"Chiudere\",\n createEdgeError: \"Non si possono collegare vertici ad un cluster\",\n del: \"Cancella la selezione\",\n deleteClusterError: \"I cluster non possono essere cancellati\",\n edgeDescription: \"Clicca su un nodo e trascinalo ad un altro nodo per connetterli.\",\n edit: \"Modifica\",\n editClusterError: \"I clusters non possono essere modificati.\",\n editEdge: \"Modifica il vertice\",\n editEdgeDescription: \"Clicca sui Punti di controllo e trascinali ad un nodo per connetterli.\",\n editNode: \"Modifica il nodo\"\n};\nvar nl = {\n addDescription: \"Klik op een leeg gebied om een nieuwe node te maken.\",\n addEdge: \"Link toevoegen\",\n addNode: \"Node toevoegen\",\n back: \"Terug\",\n close: \"Sluiten\",\n createEdgeError: \"Kan geen link maken naar een cluster.\",\n del: \"Selectie verwijderen\",\n deleteClusterError: \"Clusters kunnen niet worden verwijderd.\",\n edgeDescription: \"Klik op een node en sleep de link naar een andere node om ze te verbinden.\",\n edit: \"Wijzigen\",\n editClusterError: \"Clusters kunnen niet worden aangepast.\",\n editEdge: \"Link wijzigen\",\n editEdgeDescription: \"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.\",\n editNode: \"Node wijzigen\"\n};\nvar pt = {\n addDescription: \"Clique em um espa\\xE7o em branco para adicionar um novo n\\xF3\",\n addEdge: \"Adicionar aresta\",\n addNode: \"Adicionar n\\xF3\",\n back: \"Voltar\",\n close: \"Fechar\",\n createEdgeError: \"N\\xE3o foi poss\\xEDvel linkar arestas a um cluster.\",\n del: \"Remover selecionado\",\n deleteClusterError: \"Clusters n\\xE3o puderam ser removidos.\",\n edgeDescription: \"Clique em um n\\xF3 e arraste a aresta at\\xE9 outro n\\xF3 para conect\\xE1-los\",\n edit: \"Editar\",\n editClusterError: \"Clusters n\\xE3o puderam ser editados.\",\n editEdge: \"Editar aresta\",\n editEdgeDescription: \"Clique nos pontos de controle e os arraste para um n\\xF3 para conect\\xE1-los\",\n editNode: \"Editar n\\xF3\"\n};\nvar ru = {\n addDescription: \"\\u041A\\u043B\\u0438\\u043A\\u043D\\u0438\\u0442\\u0435 \\u0432 \\u0441\\u0432\\u043E\\u0431\\u043E\\u0434\\u043D\\u043E\\u0435 \\u043C\\u0435\\u0441\\u0442\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0434\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C \\u043D\\u043E\\u0432\\u044B\\u0439 \\u0443\\u0437\\u0435\\u043B.\",\n addEdge: \"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C \\u0440\\u0435\\u0431\\u0440\\u043E\",\n addNode: \"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C \\u0443\\u0437\\u0435\\u043B\",\n back: \"\\u041D\\u0430\\u0437\\u0430\\u0434\",\n close: \"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0432\\u0430\\u0442\\u044C\",\n createEdgeError: \"\\u041D\\u0435\\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E \\u0441\\u043E\\u0435\\u0434\\u0438\\u043D\\u0438\\u0442\\u044C \\u0440\\u0435\\u0431\\u0440\\u0430 \\u0432 \\u043A\\u043B\\u0430\\u0441\\u0442\\u0435\\u0440.\",\n del: \"\\u0423\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0435\",\n deleteClusterError: \"\\u041A\\u043B\\u0430\\u0441\\u0442\\u0435\\u0440\\u044B \\u043D\\u0435 \\u043C\\u043E\\u0433\\u0443\\u0442 \\u0431\\u044B\\u0442\\u044C \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u044B\",\n edgeDescription: \"\\u041A\\u043B\\u0438\\u043A\\u043D\\u0438\\u0442\\u0435 \\u043D\\u0430 \\u0443\\u0437\\u0435\\u043B \\u0438 \\u043F\\u0440\\u043E\\u0442\\u044F\\u043D\\u0438\\u0442\\u0435 \\u0440\\u0435\\u0431\\u0440\\u043E \\u043A \\u0434\\u0440\\u0443\\u0433\\u043E\\u043C\\u0443 \\u0443\\u0437\\u043B\\u0443, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0441\\u043E\\u0435\\u0434\\u0438\\u043D\\u0438\\u0442\\u044C \\u0438\\u0445.\",\n edit: \"\\u0420\\u0435\\u0434\\u0430\\u043A\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C\",\n editClusterError: \"\\u041A\\u043B\\u0430\\u0441\\u0442\\u0435\\u0440\\u044B \\u043D\\u0435\\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B \\u0434\\u043B\\u044F \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F.\",\n editEdge: \"\\u0420\\u0435\\u0434\\u0430\\u043A\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0440\\u0435\\u0431\\u0440\\u043E\",\n editEdgeDescription: \"\\u041A\\u043B\\u0438\\u043A\\u043D\\u0438\\u0442\\u0435 \\u043D\\u0430 \\u043A\\u043E\\u043D\\u0442\\u0440\\u043E\\u043B\\u044C\\u043D\\u044B\\u0435 \\u0442\\u043E\\u0447\\u043A\\u0438 \\u0438 \\u043F\\u0435\\u0440\\u0435\\u0442\\u0430\\u0449\\u0438\\u0442\\u0435 \\u0438\\u0445 \\u0432 \\u0443\\u0437\\u0435\\u043B, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043F\\u043E\\u0434\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C\\u0441\\u044F \\u043A \\u043D\\u0435\\u043C\\u0443.\",\n editNode: \"\\u0420\\u0435\\u0434\\u0430\\u043A\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0443\\u0437\\u0435\\u043B\"\n};\nvar cn = {\n addDescription: \"\\u5355\\u51FB\\u7A7A\\u767D\\u5904\\u653E\\u7F6E\\u65B0\\u8282\\u70B9\\u3002\",\n addEdge: \"\\u6DFB\\u52A0\\u8FDE\\u63A5\\u7EBF\",\n addNode: \"\\u6DFB\\u52A0\\u8282\\u70B9\",\n back: \"\\u8FD4\\u56DE\",\n close: \"\\u95DC\\u9589\",\n createEdgeError: \"\\u65E0\\u6CD5\\u5C06\\u8FDE\\u63A5\\u7EBF\\u8FDE\\u63A5\\u5230\\u7FA4\\u96C6\\u3002\",\n del: \"\\u5220\\u9664\\u9009\\u5B9A\",\n deleteClusterError: \"\\u65E0\\u6CD5\\u5220\\u9664\\u7FA4\\u96C6\\u3002\",\n edgeDescription: \"\\u5355\\u51FB\\u67D0\\u4E2A\\u8282\\u70B9\\u5E76\\u5C06\\u8BE5\\u8FDE\\u63A5\\u7EBF\\u62D6\\u52A8\\u5230\\u53E6\\u4E00\\u4E2A\\u8282\\u70B9\\u4EE5\\u8FDE\\u63A5\\u5B83\\u4EEC\\u3002\",\n edit: \"\\u7F16\\u8F91\",\n editClusterError: \"\\u65E0\\u6CD5\\u7F16\\u8F91\\u7FA4\\u96C6\\u3002\",\n editEdge: \"\\u7F16\\u8F91\\u8FDE\\u63A5\\u7EBF\",\n editEdgeDescription: \"\\u5355\\u51FB\\u63A7\\u5236\\u8282\\u70B9\\u5E76\\u5C06\\u5B83\\u4EEC\\u62D6\\u5230\\u8282\\u70B9\\u4E0A\\u8FDE\\u63A5\\u3002\",\n editNode: \"\\u7F16\\u8F91\\u8282\\u70B9\"\n};\nvar uk = {\n addDescription: \"K\\u043B\\u0456\\u043A\\u043D\\u0456\\u0442\\u044C \\u043D\\u0430 \\u0432\\u0456\\u043B\\u044C\\u043D\\u0435 \\u043C\\u0456\\u0441\\u0446\\u0435, \\u0449\\u043E\\u0431 \\u0434\\u043E\\u0434\\u0430\\u0442\\u0438 \\u043D\\u043E\\u0432\\u0438\\u0439 \\u0432\\u0443\\u0437\\u043E\\u043B.\",\n addEdge: \"\\u0414\\u043E\\u0434\\u0430\\u0442\\u0438 \\u043A\\u0440\\u0430\\u0439\",\n addNode: \"\\u0414\\u043E\\u0434\\u0430\\u0442\\u0438 \\u0432\\u0443\\u0437\\u043E\\u043B\",\n back: \"\\u041D\\u0430\\u0437\\u0430\\u0434\",\n close: \"\\u0417\\u0430\\u043A\\u0440\\u0438\\u0442\\u0438\",\n createEdgeError: \"\\u041D\\u0435 \\u043C\\u043E\\u0436\\u043B\\u0438\\u0432\\u043E \\u043E\\u0431'\\u0454\\u0434\\u043D\\u0430\\u0442\\u0438 \\u043A\\u0440\\u0430\\u0457 \\u0432 \\u0433\\u0440\\u0443\\u043F\\u0443.\",\n del: \"\\u0412\\u0438\\u0434\\u0430\\u043B\\u0438\\u0442\\u0438 \\u043E\\u0431\\u0440\\u0430\\u043D\\u0435\",\n deleteClusterError: \"\\u0413\\u0440\\u0443\\u043F\\u0438 \\u043D\\u0435 \\u043C\\u043E\\u0436\\u0443\\u0442\\u044C \\u0431\\u0443\\u0442\\u0438 \\u0432\\u0438\\u0434\\u0430\\u043B\\u0435\\u043D\\u0456.\",\n edgeDescription: \"\\u041A\\u043B\\u0456\\u043A\\u043D\\u0456\\u0442\\u044C \\u043D\\u0430 \\u0432\\u0443\\u0437\\u043E\\u043B \\u0456 \\u043F\\u0435\\u0440\\u0435\\u0442\\u044F\\u0433\\u043D\\u0456\\u0442\\u044C \\u043A\\u0440\\u0430\\u0439 \\u0434\\u043E \\u0456\\u043D\\u0448\\u043E\\u0433\\u043E \\u0432\\u0443\\u0437\\u043B\\u0430, \\u0449\\u043E\\u0431 \\u0457\\u0445 \\u0437'\\u0454\\u0434\\u043D\\u0430\\u0442\\u0438.\",\n edit: \"\\u0420\\u0435\\u0434\\u0430\\u0433\\u0443\\u0432\\u0430\\u0442\\u0438\",\n editClusterError: \"\\u0413\\u0440\\u0443\\u043F\\u0438 \\u043D\\u0435\\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u0456 \\u0434\\u043B\\u044F \\u0440\\u0435\\u0434\\u0430\\u0433\\u0443\\u0432\\u0430\\u043D\\u043D\\u044F.\",\n editEdge: \"\\u0420\\u0435\\u0434\\u0430\\u0433\\u0443\\u0432\\u0430\\u0442\\u0438 \\u043A\\u0440\\u0430\\u0439\",\n editEdgeDescription: \"\\u041A\\u043B\\u0456\\u043A\\u043D\\u0456\\u0442\\u044C \\u043D\\u0430 \\u043A\\u043E\\u043D\\u0442\\u0440\\u043E\\u043B\\u044C\\u043D\\u0456 \\u0442\\u043E\\u0447\\u043A\\u0438 \\u0456 \\u043F\\u0435\\u0440\\u0435\\u0442\\u044F\\u0433\\u043D\\u0456\\u0442\\u044C \\u0457\\u0445 \\u0443 \\u0432\\u0443\\u0437\\u043E\\u043B, \\u0449\\u043E\\u0431 \\u043F\\u0456\\u0434\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u0438\\u0441\\u044F \\u0434\\u043E \\u043D\\u044C\\u043E\\u0433\\u043E.\",\n editNode: \"\\u0420\\u0435\\u0434\\u0430\\u0433\\u0443\\u0432\\u0430\\u0442\\u0438 \\u0432\\u0443\\u0437\\u043E\\u043B\"\n};\nvar fr = {\n addDescription: \"Cliquez dans un endroit vide pour placer un n\\u0153ud.\",\n addEdge: \"Ajouter un lien\",\n addNode: \"Ajouter un n\\u0153ud\",\n back: \"Retour\",\n close: \"Fermer\",\n createEdgeError: \"Impossible de cr\\xE9er un lien vers un cluster.\",\n del: \"Effacer la s\\xE9lection\",\n deleteClusterError: \"Les clusters ne peuvent pas \\xEAtre effac\\xE9s.\",\n edgeDescription: \"Cliquez sur un n\\u0153ud et glissez le lien vers un autre n\\u0153ud pour les connecter.\",\n edit: \"\\xC9diter\",\n editClusterError: \"Les clusters ne peuvent pas \\xEAtre \\xE9dit\\xE9s.\",\n editEdge: \"\\xC9diter le lien\",\n editEdgeDescription: \"Cliquez sur les points de contr\\xF4le et glissez-les pour connecter un n\\u0153ud.\",\n editNode: \"\\xC9diter le n\\u0153ud\"\n};\nvar cs = {\n addDescription: \"Kluknut\\xEDm do pr\\xE1zdn\\xE9ho prostoru m\\u016F\\u017Eete p\\u0159idat nov\\xFD vrchol.\",\n addEdge: \"P\\u0159idat hranu\",\n addNode: \"P\\u0159idat vrchol\",\n back: \"Zp\\u011Bt\",\n close: \"Zav\\u0159\\xEDt\",\n createEdgeError: \"Nelze p\\u0159ipojit hranu ke shluku.\",\n del: \"Smazat v\\xFDb\\u011Br\",\n deleteClusterError: \"Nelze mazat shluky.\",\n edgeDescription: \"P\\u0159eta\\u017Een\\xEDm z jednoho vrcholu do druh\\xE9ho m\\u016F\\u017Eete spojit tyto vrcholy novou hranou.\",\n edit: \"Upravit\",\n editClusterError: \"Nelze upravovat shluky.\",\n editEdge: \"Upravit hranu\",\n editEdgeDescription: \"P\\u0159eta\\u017Een\\xEDm kontroln\\xEDho vrcholu hrany ji m\\u016F\\u017Eete p\\u0159ipojit k jin\\xE9mu vrcholu.\",\n editNode: \"Upravit vrchol\"\n};\nvar locales = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n en,\n de,\n es,\n it,\n nl,\n pt,\n ru,\n cn,\n uk,\n fr,\n cs\n});\nfunction normalizeLanguageCode(locales2, rawCode) {\n try {\n var _rawCode$split = rawCode.split(/[-_ /]/, 2), _rawCode$split2 = _slicedToArray(_rawCode$split, 2), rawLanguage = _rawCode$split2[0], rawCountry = _rawCode$split2[1];\n var language = rawLanguage != null ? rawLanguage.toLowerCase() : null;\n var country = rawCountry != null ? rawCountry.toUpperCase() : null;\n if (language && country) {\n var code = language + \"-\" + country;\n if (Object.prototype.hasOwnProperty.call(locales2, code)) {\n return code;\n } else {\n var _context;\n console.warn(concat2(_context = \"Unknown variant \".concat(country, \" of language \")).call(_context, language, \".\"));\n }\n }\n if (language) {\n var _code = language;\n if (Object.prototype.hasOwnProperty.call(locales2, _code)) {\n return _code;\n } else {\n console.warn(\"Unknown language \".concat(language));\n }\n }\n console.warn(\"Unknown locale \".concat(rawCode, \", falling back to English.\"));\n return \"en\";\n } catch (error) {\n console.error(error);\n console.warn(\"Unexpected error while normalizing locale \".concat(rawCode, \", falling back to English.\"));\n return \"en\";\n }\n}\nvar CachedImage = /* @__PURE__ */ function() {\n function CachedImage2() {\n _classCallCheck(this, CachedImage2);\n this.NUM_ITERATIONS = 4;\n this.image = new Image();\n this.canvas = document.createElement(\"canvas\");\n }\n _createClass(CachedImage2, [{\n key: \"init\",\n value: function init() {\n if (this.initialized())\n return;\n this.src = this.image.src;\n var w = this.image.width;\n var h = this.image.height;\n this.width = w;\n this.height = h;\n var h2 = Math.floor(h / 2);\n var h4 = Math.floor(h / 4);\n var h8 = Math.floor(h / 8);\n var h16 = Math.floor(h / 16);\n var w2 = Math.floor(w / 2);\n var w4 = Math.floor(w / 4);\n var w8 = Math.floor(w / 8);\n var w16 = Math.floor(w / 16);\n this.canvas.width = 3 * w4;\n this.canvas.height = h2;\n this.coordinates = [[0, 0, w2, h2], [w2, 0, w4, h4], [w2, h4, w8, h8], [5 * w8, h4, w16, h16]];\n this._fillMipMap();\n }\n }, {\n key: \"initialized\",\n value: function initialized() {\n return this.coordinates !== void 0;\n }\n }, {\n key: \"_fillMipMap\",\n value: function _fillMipMap() {\n var ctx = this.canvas.getContext(\"2d\");\n var to = this.coordinates[0];\n ctx.drawImage(this.image, to[0], to[1], to[2], to[3]);\n for (var iterations = 1; iterations < this.NUM_ITERATIONS; iterations++) {\n var from3 = this.coordinates[iterations - 1];\n var _to = this.coordinates[iterations];\n ctx.drawImage(this.canvas, from3[0], from3[1], from3[2], from3[3], _to[0], _to[1], _to[2], _to[3]);\n }\n }\n }, {\n key: \"drawImageAtPosition\",\n value: function drawImageAtPosition(ctx, factor, left, top, width, height) {\n if (!this.initialized())\n return;\n if (factor > 2) {\n factor *= 0.5;\n var iterations = 0;\n while (factor > 2 && iterations < this.NUM_ITERATIONS) {\n factor *= 0.5;\n iterations += 1;\n }\n if (iterations >= this.NUM_ITERATIONS) {\n iterations = this.NUM_ITERATIONS - 1;\n }\n var from3 = this.coordinates[iterations];\n ctx.drawImage(this.canvas, from3[0], from3[1], from3[2], from3[3], left, top, width, height);\n } else {\n ctx.drawImage(this.image, left, top, width, height);\n }\n }\n }]);\n return CachedImage2;\n}();\nvar Images = /* @__PURE__ */ function() {\n function Images2(callback) {\n _classCallCheck(this, Images2);\n this.images = {};\n this.imageBroken = {};\n this.callback = callback;\n }\n _createClass(Images2, [{\n key: \"_tryloadBrokenUrl\",\n value: function _tryloadBrokenUrl(url, brokenUrl, imageToLoadBrokenUrlOn) {\n if (url === void 0 || imageToLoadBrokenUrlOn === void 0)\n return;\n if (brokenUrl === void 0) {\n console.warn(\"No broken url image defined\");\n return;\n }\n imageToLoadBrokenUrlOn.image.onerror = function() {\n console.error(\"Could not load brokenImage:\", brokenUrl);\n };\n imageToLoadBrokenUrlOn.image.src = brokenUrl;\n }\n }, {\n key: \"_redrawWithImage\",\n value: function _redrawWithImage(imageToRedrawWith) {\n if (this.callback) {\n this.callback(imageToRedrawWith);\n }\n }\n }, {\n key: \"load\",\n value: function load(url, brokenUrl) {\n var _this = this;\n var cachedImage = this.images[url];\n if (cachedImage)\n return cachedImage;\n var img = new CachedImage();\n this.images[url] = img;\n img.image.onload = function() {\n _this._fixImageCoordinates(img.image);\n img.init();\n _this._redrawWithImage(img);\n };\n img.image.onerror = function() {\n console.error(\"Could not load image:\", url);\n _this._tryloadBrokenUrl(url, brokenUrl, img);\n };\n img.image.src = url;\n return img;\n }\n }, {\n key: \"_fixImageCoordinates\",\n value: function _fixImageCoordinates(imageToCache) {\n if (imageToCache.width === 0) {\n document.body.appendChild(imageToCache);\n imageToCache.width = imageToCache.offsetWidth;\n imageToCache.height = imageToCache.offsetHeight;\n document.body.removeChild(imageToCache);\n }\n }\n }]);\n return Images2;\n}();\nvar internalMetadata = {exports: {}};\nvar fails$4 = fails$m;\nvar freezing = !fails$4(function() {\n return Object.isExtensible(Object.preventExtensions({}));\n});\nvar $$d = _export;\nvar hiddenKeys = hiddenKeys$6;\nvar isObject$5 = isObject$j;\nvar has$1 = has$c;\nvar defineProperty$2 = objectDefineProperty.f;\nvar getOwnPropertyNamesModule = objectGetOwnPropertyNames;\nvar getOwnPropertyNamesExternalModule = objectGetOwnPropertyNamesExternal;\nvar uid = uid$4;\nvar FREEZING = freezing;\nvar REQUIRED = false;\nvar METADATA = uid(\"meta\");\nvar id$1 = 0;\nvar isExtensible$1 = Object.isExtensible || function() {\n return true;\n};\nvar setMetadata = function(it2) {\n defineProperty$2(it2, METADATA, {\n value: {\n objectID: \"O\" + id$1++,\n weakData: {}\n }\n });\n};\nvar fastKey$1 = function(it2, create5) {\n if (!isObject$5(it2))\n return typeof it2 == \"symbol\" ? it2 : (typeof it2 == \"string\" ? \"S\" : \"P\") + it2;\n if (!has$1(it2, METADATA)) {\n if (!isExtensible$1(it2))\n return \"F\";\n if (!create5)\n return \"E\";\n setMetadata(it2);\n }\n return it2[METADATA].objectID;\n};\nvar getWeakData$1 = function(it2, create5) {\n if (!has$1(it2, METADATA)) {\n if (!isExtensible$1(it2))\n return true;\n if (!create5)\n return false;\n setMetadata(it2);\n }\n return it2[METADATA].weakData;\n};\nvar onFreeze = function(it2) {\n if (FREEZING && REQUIRED && isExtensible$1(it2) && !has$1(it2, METADATA))\n setMetadata(it2);\n return it2;\n};\nvar enable = function() {\n meta.enable = function() {\n };\n REQUIRED = true;\n var getOwnPropertyNames6 = getOwnPropertyNamesModule.f;\n var splice3 = [].splice;\n var test2 = {};\n test2[METADATA] = 1;\n if (getOwnPropertyNames6(test2).length) {\n getOwnPropertyNamesModule.f = function(it2) {\n var result = getOwnPropertyNames6(it2);\n for (var i = 0, length2 = result.length; i < length2; i++) {\n if (result[i] === METADATA) {\n splice3.call(result, i, 1);\n break;\n }\n }\n return result;\n };\n $$d({\n target: \"Object\",\n stat: true,\n forced: true\n }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\nvar meta = internalMetadata.exports = {\n enable,\n fastKey: fastKey$1,\n getWeakData: getWeakData$1,\n onFreeze\n};\nhiddenKeys[METADATA] = true;\nvar anObject$3 = anObject$c;\nvar isArrayIteratorMethod = isArrayIteratorMethod$2;\nvar toLength$2 = toLength$a;\nvar bind$2 = functionBindContext;\nvar getIteratorMethod = getIteratorMethod$6;\nvar iteratorClose = iteratorClose$2;\nvar Result = function(stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\nvar iterate$3 = function(iterable, unboundFunction, options2) {\n var that = options2 && options2.that;\n var AS_ENTRIES = !!(options2 && options2.AS_ENTRIES);\n var IS_ITERATOR = !!(options2 && options2.IS_ITERATOR);\n var INTERRUPTED = !!(options2 && options2.INTERRUPTED);\n var fn = bind$2(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator2, iterFn, index2, length2, result, next3, step;\n var stop = function(condition) {\n if (iterator2)\n iteratorClose(iterator2);\n return new Result(true, condition);\n };\n var callFn = function(value) {\n if (AS_ENTRIES) {\n anObject$3(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n }\n return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n if (IS_ITERATOR) {\n iterator2 = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != \"function\")\n throw TypeError(\"Target is not iterable\");\n if (isArrayIteratorMethod(iterFn)) {\n for (index2 = 0, length2 = toLength$2(iterable.length); length2 > index2; index2++) {\n result = callFn(iterable[index2]);\n if (result && result instanceof Result)\n return result;\n }\n return new Result(false);\n }\n iterator2 = iterFn.call(iterable);\n }\n next3 = iterator2.next;\n while (!(step = next3.call(iterator2)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator2);\n throw error;\n }\n if (typeof result == \"object\" && result && result instanceof Result)\n return result;\n }\n return new Result(false);\n};\nvar anInstance$3 = function(it2, Constructor, name) {\n if (!(it2 instanceof Constructor)) {\n throw TypeError(\"Incorrect \" + (name ? name + \" \" : \"\") + \"invocation\");\n }\n return it2;\n};\nvar $$c = _export;\nvar global$5 = global$k;\nvar InternalMetadataModule$1 = internalMetadata.exports;\nvar fails$3 = fails$m;\nvar createNonEnumerableProperty = createNonEnumerableProperty$9;\nvar iterate$2 = iterate$3;\nvar anInstance$2 = anInstance$3;\nvar isObject$4 = isObject$j;\nvar setToStringTag = setToStringTag$5;\nvar defineProperty$1 = objectDefineProperty.f;\nvar forEach3 = arrayIteration.forEach;\nvar DESCRIPTORS$2 = descriptors;\nvar InternalStateModule$2 = internalState;\nvar setInternalState$2 = InternalStateModule$2.set;\nvar internalStateGetterFor$2 = InternalStateModule$2.getterFor;\nvar collection$3 = function(CONSTRUCTOR_NAME, wrapper2, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf(\"Map\") !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf(\"Weak\") !== -1;\n var ADDER = IS_MAP ? \"set\" : \"add\";\n var NativeConstructor = global$5[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var exported = {};\n var Constructor;\n if (!DESCRIPTORS$2 || typeof NativeConstructor != \"function\" || !(IS_WEAK || NativePrototype.forEach && !fails$3(function() {\n new NativeConstructor().entries().next();\n }))) {\n Constructor = common.getConstructor(wrapper2, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule$1.enable();\n } else {\n Constructor = wrapper2(function(target, iterable) {\n setInternalState$2(anInstance$2(target, Constructor, CONSTRUCTOR_NAME), {\n type: CONSTRUCTOR_NAME,\n collection: new NativeConstructor()\n });\n if (iterable != void 0)\n iterate$2(iterable, target[ADDER], {\n that: target,\n AS_ENTRIES: IS_MAP\n });\n });\n var getInternalState2 = internalStateGetterFor$2(CONSTRUCTOR_NAME);\n forEach3([\"add\", \"clear\", \"delete\", \"forEach\", \"get\", \"has\", \"set\", \"keys\", \"values\", \"entries\"], function(KEY) {\n var IS_ADDER = KEY == \"add\" || KEY == \"set\";\n if (KEY in NativePrototype && !(IS_WEAK && KEY == \"clear\")) {\n createNonEnumerableProperty(Constructor.prototype, KEY, function(a, b) {\n var collection2 = getInternalState2(this).collection;\n if (!IS_ADDER && IS_WEAK && !isObject$4(a))\n return KEY == \"get\" ? void 0 : false;\n var result = collection2[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n }\n });\n IS_WEAK || defineProperty$1(Constructor.prototype, \"size\", {\n configurable: true,\n get: function() {\n return getInternalState2(this).collection.size;\n }\n });\n }\n setToStringTag(Constructor, CONSTRUCTOR_NAME, false, true);\n exported[CONSTRUCTOR_NAME] = Constructor;\n $$c({\n global: true,\n forced: true\n }, exported);\n if (!IS_WEAK)\n common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n return Constructor;\n};\nvar redefine = redefine$3;\nvar redefineAll$3 = function(target, src, options2) {\n for (var key in src) {\n if (options2 && options2.unsafe && target[key])\n target[key] = src[key];\n else\n redefine(target, key, src[key], options2);\n }\n return target;\n};\nvar getBuiltIn$1 = getBuiltIn$8;\nvar definePropertyModule = objectDefineProperty;\nvar wellKnownSymbol = wellKnownSymbol$j;\nvar DESCRIPTORS$1 = descriptors;\nvar SPECIES = wellKnownSymbol(\"species\");\nvar setSpecies$1 = function(CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn$1(CONSTRUCTOR_NAME);\n var defineProperty5 = definePropertyModule.f;\n if (DESCRIPTORS$1 && Constructor && !Constructor[SPECIES]) {\n defineProperty5(Constructor, SPECIES, {\n configurable: true,\n get: function() {\n return this;\n }\n });\n }\n};\nvar defineProperty4 = objectDefineProperty.f;\nvar create$3 = objectCreate;\nvar redefineAll$2 = redefineAll$3;\nvar bind$1 = functionBindContext;\nvar anInstance$1 = anInstance$3;\nvar iterate$1 = iterate$3;\nvar defineIterator = defineIterator$3;\nvar setSpecies = setSpecies$1;\nvar DESCRIPTORS = descriptors;\nvar fastKey = internalMetadata.exports.fastKey;\nvar InternalStateModule$1 = internalState;\nvar setInternalState$1 = InternalStateModule$1.set;\nvar internalStateGetterFor$1 = InternalStateModule$1.getterFor;\nvar collectionStrong$2 = {\n getConstructor: function(wrapper2, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper2(function(that, iterable) {\n anInstance$1(that, C, CONSTRUCTOR_NAME);\n setInternalState$1(that, {\n type: CONSTRUCTOR_NAME,\n index: create$3(null),\n first: void 0,\n last: void 0,\n size: 0\n });\n if (!DESCRIPTORS)\n that.size = 0;\n if (iterable != void 0)\n iterate$1(iterable, that[ADDER], {\n that,\n AS_ENTRIES: IS_MAP\n });\n });\n var getInternalState2 = internalStateGetterFor$1(CONSTRUCTOR_NAME);\n var define = function(that, key, value) {\n var state = getInternalState2(that);\n var entry = getEntry(that, key);\n var previous, index2;\n if (entry) {\n entry.value = value;\n } else {\n state.last = entry = {\n index: index2 = fastKey(key, true),\n key,\n value,\n previous: previous = state.last,\n next: void 0,\n removed: false\n };\n if (!state.first)\n state.first = entry;\n if (previous)\n previous.next = entry;\n if (DESCRIPTORS)\n state.size++;\n else\n that.size++;\n if (index2 !== \"F\")\n state.index[index2] = entry;\n }\n return that;\n };\n var getEntry = function(that, key) {\n var state = getInternalState2(that);\n var index2 = fastKey(key);\n var entry;\n if (index2 !== \"F\")\n return state.index[index2];\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key)\n return entry;\n }\n };\n redefineAll$2(C.prototype, {\n clear: function clear() {\n var that = this;\n var state = getInternalState2(that);\n var data2 = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous)\n entry.previous = entry.previous.next = void 0;\n delete data2[entry.index];\n entry = entry.next;\n }\n state.first = state.last = void 0;\n if (DESCRIPTORS)\n state.size = 0;\n else\n that.size = 0;\n },\n delete: function(key) {\n var that = this;\n var state = getInternalState2(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next3 = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev)\n prev.next = next3;\n if (next3)\n next3.previous = prev;\n if (state.first == entry)\n state.first = next3;\n if (state.last == entry)\n state.last = prev;\n if (DESCRIPTORS)\n state.size--;\n else\n that.size--;\n }\n return !!entry;\n },\n forEach: function forEach4(callbackfn) {\n var state = getInternalState2(this);\n var boundFunction = bind$1(callbackfn, arguments.length > 1 ? arguments[1] : void 0, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n while (entry && entry.removed)\n entry = entry.previous;\n }\n },\n has: function has2(key) {\n return !!getEntry(this, key);\n }\n });\n redefineAll$2(C.prototype, IS_MAP ? {\n get: function get2(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n set: function set2(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS)\n defineProperty4(C.prototype, \"size\", {\n get: function() {\n return getInternalState2(this).size;\n }\n });\n return C;\n },\n setStrong: function(C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + \" Iterator\";\n var getInternalCollectionState = internalStateGetterFor$1(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor$1(ITERATOR_NAME);\n defineIterator(C, CONSTRUCTOR_NAME, function(iterated, kind) {\n setInternalState$1(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind,\n last: void 0\n });\n }, function() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n while (entry && entry.removed)\n entry = entry.previous;\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n state.target = void 0;\n return {\n value: void 0,\n done: true\n };\n }\n if (kind == \"keys\")\n return {\n value: entry.key,\n done: false\n };\n if (kind == \"values\")\n return {\n value: entry.value,\n done: false\n };\n return {\n value: [entry.key, entry.value],\n done: false\n };\n }, IS_MAP ? \"entries\" : \"values\", !IS_MAP, true);\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\nvar collection$2 = collection$3;\nvar collectionStrong$1 = collectionStrong$2;\ncollection$2(\"Map\", function(init) {\n return function Map() {\n return init(this, arguments.length ? arguments[0] : void 0);\n };\n}, collectionStrong$1);\nvar path$b = path$x;\nvar map$2 = path$b.Map;\nvar parent$k = map$2;\nvar map$1 = parent$k;\nvar map2 = map$1;\nvar Groups = /* @__PURE__ */ function() {\n function Groups2() {\n _classCallCheck(this, Groups2);\n this.clear();\n this._defaultIndex = 0;\n this._groupIndex = 0;\n this._defaultGroups = [\n {\n border: \"#2B7CE9\",\n background: \"#97C2FC\",\n highlight: {\n border: \"#2B7CE9\",\n background: \"#D2E5FF\"\n },\n hover: {\n border: \"#2B7CE9\",\n background: \"#D2E5FF\"\n }\n },\n {\n border: \"#FFA500\",\n background: \"#FFFF00\",\n highlight: {\n border: \"#FFA500\",\n background: \"#FFFFA3\"\n },\n hover: {\n border: \"#FFA500\",\n background: \"#FFFFA3\"\n }\n },\n {\n border: \"#FA0A10\",\n background: \"#FB7E81\",\n highlight: {\n border: \"#FA0A10\",\n background: \"#FFAFB1\"\n },\n hover: {\n border: \"#FA0A10\",\n background: \"#FFAFB1\"\n }\n },\n {\n border: \"#41A906\",\n background: \"#7BE141\",\n highlight: {\n border: \"#41A906\",\n background: \"#A1EC76\"\n },\n hover: {\n border: \"#41A906\",\n background: \"#A1EC76\"\n }\n },\n {\n border: \"#E129F0\",\n background: \"#EB7DF4\",\n highlight: {\n border: \"#E129F0\",\n background: \"#F0B3F5\"\n },\n hover: {\n border: \"#E129F0\",\n background: \"#F0B3F5\"\n }\n },\n {\n border: \"#7C29F0\",\n background: \"#AD85E4\",\n highlight: {\n border: \"#7C29F0\",\n background: \"#D3BDF0\"\n },\n hover: {\n border: \"#7C29F0\",\n background: \"#D3BDF0\"\n }\n },\n {\n border: \"#C37F00\",\n background: \"#FFA807\",\n highlight: {\n border: \"#C37F00\",\n background: \"#FFCA66\"\n },\n hover: {\n border: \"#C37F00\",\n background: \"#FFCA66\"\n }\n },\n {\n border: \"#4220FB\",\n background: \"#6E6EFD\",\n highlight: {\n border: \"#4220FB\",\n background: \"#9B9BFD\"\n },\n hover: {\n border: \"#4220FB\",\n background: \"#9B9BFD\"\n }\n },\n {\n border: \"#FD5A77\",\n background: \"#FFC0CB\",\n highlight: {\n border: \"#FD5A77\",\n background: \"#FFD1D9\"\n },\n hover: {\n border: \"#FD5A77\",\n background: \"#FFD1D9\"\n }\n },\n {\n border: \"#4AD63A\",\n background: \"#C2FABC\",\n highlight: {\n border: \"#4AD63A\",\n background: \"#E6FFE3\"\n },\n hover: {\n border: \"#4AD63A\",\n background: \"#E6FFE3\"\n }\n },\n {\n border: \"#990000\",\n background: \"#EE0000\",\n highlight: {\n border: \"#BB0000\",\n background: \"#FF3333\"\n },\n hover: {\n border: \"#BB0000\",\n background: \"#FF3333\"\n }\n },\n {\n border: \"#FF6000\",\n background: \"#FF6000\",\n highlight: {\n border: \"#FF6000\",\n background: \"#FF6000\"\n },\n hover: {\n border: \"#FF6000\",\n background: \"#FF6000\"\n }\n },\n {\n border: \"#97C2FC\",\n background: \"#2B7CE9\",\n highlight: {\n border: \"#D2E5FF\",\n background: \"#2B7CE9\"\n },\n hover: {\n border: \"#D2E5FF\",\n background: \"#2B7CE9\"\n }\n },\n {\n border: \"#399605\",\n background: \"#255C03\",\n highlight: {\n border: \"#399605\",\n background: \"#255C03\"\n },\n hover: {\n border: \"#399605\",\n background: \"#255C03\"\n }\n },\n {\n border: \"#B70054\",\n background: \"#FF007E\",\n highlight: {\n border: \"#B70054\",\n background: \"#FF007E\"\n },\n hover: {\n border: \"#B70054\",\n background: \"#FF007E\"\n }\n },\n {\n border: \"#AD85E4\",\n background: \"#7C29F0\",\n highlight: {\n border: \"#D3BDF0\",\n background: \"#7C29F0\"\n },\n hover: {\n border: \"#D3BDF0\",\n background: \"#7C29F0\"\n }\n },\n {\n border: \"#4557FA\",\n background: \"#000EA1\",\n highlight: {\n border: \"#6E6EFD\",\n background: \"#000EA1\"\n },\n hover: {\n border: \"#6E6EFD\",\n background: \"#000EA1\"\n }\n },\n {\n border: \"#FFC0CB\",\n background: \"#FD5A77\",\n highlight: {\n border: \"#FFD1D9\",\n background: \"#FD5A77\"\n },\n hover: {\n border: \"#FFD1D9\",\n background: \"#FD5A77\"\n }\n },\n {\n border: \"#C2FABC\",\n background: \"#74D66A\",\n highlight: {\n border: \"#E6FFE3\",\n background: \"#74D66A\"\n },\n hover: {\n border: \"#E6FFE3\",\n background: \"#74D66A\"\n }\n },\n {\n border: \"#EE0000\",\n background: \"#990000\",\n highlight: {\n border: \"#FF3333\",\n background: \"#BB0000\"\n },\n hover: {\n border: \"#FF3333\",\n background: \"#BB0000\"\n }\n }\n ];\n this.options = {};\n this.defaultOptions = {\n useDefaultGroups: true\n };\n assign$2(this.options, this.defaultOptions);\n }\n _createClass(Groups2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n var optionFields = [\"useDefaultGroups\"];\n if (options2 !== void 0) {\n for (var groupName in options2) {\n if (Object.prototype.hasOwnProperty.call(options2, groupName)) {\n if (indexOf2(optionFields).call(optionFields, groupName) === -1) {\n var group = options2[groupName];\n this.add(groupName, group);\n }\n }\n }\n }\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this._groups = new map2();\n this._groupNames = [];\n }\n }, {\n key: \"get\",\n value: function get2(groupname) {\n var shouldCreate = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n var group = this._groups.get(groupname);\n if (group === void 0 && shouldCreate) {\n if (this.options.useDefaultGroups === false && this._groupNames.length > 0) {\n var index2 = this._groupIndex % this._groupNames.length;\n ++this._groupIndex;\n group = {};\n group.color = this._groups.get(this._groupNames[index2]);\n this._groups.set(groupname, group);\n } else {\n var _index = this._defaultIndex % this._defaultGroups.length;\n this._defaultIndex++;\n group = {};\n group.color = this._defaultGroups[_index];\n this._groups.set(groupname, group);\n }\n }\n return group;\n }\n }, {\n key: \"add\",\n value: function add(groupName, style) {\n if (!this._groups.has(groupName)) {\n this._groupNames.push(groupName);\n }\n this._groups.set(groupName, style);\n return style;\n }\n }]);\n return Groups2;\n}();\nvar $$b = _export;\n$$b({\n target: \"Number\",\n stat: true\n}, {\n isNaN: function isNaN2(number2) {\n return number2 != number2;\n }\n});\nvar path$a = path$x;\nvar isNan$2 = path$a.Number.isNaN;\nvar parent$j = isNan$2;\nvar isNan$1 = parent$j;\nvar isNan = isNan$1;\nvar global$4 = global$k;\nvar globalIsFinite = global$4.isFinite;\nvar numberIsFinite$1 = Number.isFinite || function isFinite(it2) {\n return typeof it2 == \"number\" && globalIsFinite(it2);\n};\nvar $$a = _export;\nvar numberIsFinite = numberIsFinite$1;\n$$a({\n target: \"Number\",\n stat: true\n}, {\n isFinite: numberIsFinite\n});\nvar path$9 = path$x;\nvar _isFinite$2 = path$9.Number.isFinite;\nvar parent$i = _isFinite$2;\nvar _isFinite$1 = parent$i;\nvar _isFinite = _isFinite$1;\nvar $$9 = _export;\nvar $some = arrayIteration.some;\nvar arrayMethodIsStrict$3 = arrayMethodIsStrict$6;\nvar STRICT_METHOD$3 = arrayMethodIsStrict$3(\"some\");\n$$9({\n target: \"Array\",\n proto: true,\n forced: !STRICT_METHOD$3\n}, {\n some: function some(callbackfn) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar entryVirtual$4 = entryVirtual$i;\nvar some$3 = entryVirtual$4(\"Array\").some;\nvar some$2 = some$3;\nvar ArrayPrototype$4 = Array.prototype;\nvar some_1 = function(it2) {\n var own = it2.some;\n return it2 === ArrayPrototype$4 || it2 instanceof Array && own === ArrayPrototype$4.some ? some$2 : own;\n};\nvar parent$h = some_1;\nvar some$1 = parent$h;\nvar some2 = some$1;\nvar global$3 = global$k;\nvar toString$1 = toString$9;\nvar trim2 = stringTrim.trim;\nvar whitespaces = whitespaces$4;\nvar $parseFloat = global$3.parseFloat;\nvar FORCED$2 = 1 / $parseFloat(whitespaces + \"-0\") !== -Infinity;\nvar numberParseFloat = FORCED$2 ? function parseFloat2(string2) {\n var trimmedString = trim2(toString$1(string2));\n var result = $parseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == \"-\" ? -0 : result;\n} : $parseFloat;\nvar $$8 = _export;\nvar parseFloatImplementation = numberParseFloat;\n$$8({\n global: true,\n forced: parseFloat != parseFloatImplementation\n}, {\n parseFloat: parseFloatImplementation\n});\nvar path$8 = path$x;\nvar _parseFloat$2 = path$8.parseFloat;\nvar parent$g = _parseFloat$2;\nvar _parseFloat$1 = parent$g;\nvar _parseFloat = _parseFloat$1;\nvar $$7 = _export;\nvar fails$2 = fails$m;\nvar getOwnPropertyNames$3 = objectGetOwnPropertyNamesExternal.f;\nvar FAILS_ON_PRIMITIVES = fails$2(function() {\n return !Object.getOwnPropertyNames(1);\n});\n$$7({\n target: \"Object\",\n stat: true,\n forced: FAILS_ON_PRIMITIVES\n}, {\n getOwnPropertyNames: getOwnPropertyNames$3\n});\nvar path$7 = path$x;\nvar Object$1 = path$7.Object;\nvar getOwnPropertyNames$2 = function getOwnPropertyNames4(it2) {\n return Object$1.getOwnPropertyNames(it2);\n};\nvar parent$f = getOwnPropertyNames$2;\nvar getOwnPropertyNames$1 = parent$f;\nvar getOwnPropertyNames5 = getOwnPropertyNames$1;\nfunction choosify(subOption, pile) {\n var allowed = [\"node\", \"edge\", \"label\"];\n var value = true;\n var chosen = topMost(pile, \"chosen\");\n if (typeof chosen === \"boolean\") {\n value = chosen;\n } else if (_typeof(chosen) === \"object\") {\n if (indexOf2(allowed).call(allowed, subOption) === -1) {\n throw new Error(\"choosify: subOption '\" + subOption + \"' should be one of '\" + allowed.join(\"', '\") + \"'\");\n }\n var chosenEdge = topMost(pile, [\"chosen\", subOption]);\n if (typeof chosenEdge === \"boolean\" || typeof chosenEdge === \"function\") {\n value = chosenEdge;\n }\n }\n return value;\n}\nfunction pointInRect(rect, point, rotationPoint) {\n if (rect.width <= 0 || rect.height <= 0) {\n return false;\n }\n if (rotationPoint !== void 0) {\n var tmp = {\n x: point.x - rotationPoint.x,\n y: point.y - rotationPoint.y\n };\n if (rotationPoint.angle !== 0) {\n var angle = -rotationPoint.angle;\n var tmp2 = {\n x: Math.cos(angle) * tmp.x - Math.sin(angle) * tmp.y,\n y: Math.sin(angle) * tmp.x + Math.cos(angle) * tmp.y\n };\n point = tmp2;\n } else {\n point = tmp;\n }\n }\n var right = rect.x + rect.width;\n var bottom = rect.y + rect.width;\n return rect.left < point.x && right > point.x && rect.top < point.y && bottom > point.y;\n}\nfunction isValidLabel(text) {\n return typeof text === \"string\" && text !== \"\";\n}\nfunction getSelfRefCoordinates(ctx, angle, radius, node) {\n var x = node.x;\n var y = node.y;\n if (typeof node.distanceToBorder === \"function\") {\n var toBorderDist = node.distanceToBorder(ctx, angle);\n var yFromNodeCenter = Math.sin(angle) * toBorderDist;\n var xFromNodeCenter = Math.cos(angle) * toBorderDist;\n if (xFromNodeCenter === toBorderDist) {\n x += toBorderDist;\n y = node.y;\n } else if (yFromNodeCenter === toBorderDist) {\n x = node.x;\n y -= toBorderDist;\n } else {\n x += xFromNodeCenter;\n y -= yFromNodeCenter;\n }\n } else if (node.shape.width > node.shape.height) {\n x = node.x + node.shape.width * 0.5;\n y = node.y - radius;\n } else {\n x = node.x + radius;\n y = node.y - node.shape.height * 0.5;\n }\n return {\n x,\n y\n };\n}\nvar entryVirtual$3 = entryVirtual$i;\nvar values$3 = entryVirtual$3(\"Array\").values;\nvar parent$e = values$3;\nvar values$2 = parent$e;\nvar values$1 = values$2;\nvar classof$1 = classof$8;\nvar ArrayPrototype$3 = Array.prototype;\nvar DOMIterables = {\n DOMTokenList: true,\n NodeList: true\n};\nvar values_1 = function(it2) {\n var own = it2.values;\n return it2 === ArrayPrototype$3 || it2 instanceof Array && own === ArrayPrototype$3.values || DOMIterables.hasOwnProperty(classof$1(it2)) ? values$1 : own;\n};\nvar values2 = values_1;\nvar LabelAccumulator = /* @__PURE__ */ function() {\n function LabelAccumulator2(measureText) {\n _classCallCheck(this, LabelAccumulator2);\n this.measureText = measureText;\n this.current = 0;\n this.width = 0;\n this.height = 0;\n this.lines = [];\n }\n _createClass(LabelAccumulator2, [{\n key: \"_add\",\n value: function _add(l, text) {\n var mod = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : \"normal\";\n if (this.lines[l] === void 0) {\n this.lines[l] = {\n width: 0,\n height: 0,\n blocks: []\n };\n }\n var tmpText = text;\n if (text === void 0 || text === \"\")\n tmpText = \" \";\n var result = this.measureText(tmpText, mod);\n var block = assign$2({}, values2(result));\n block.text = text;\n block.width = result.width;\n block.mod = mod;\n if (text === void 0 || text === \"\") {\n block.width = 0;\n }\n this.lines[l].blocks.push(block);\n this.lines[l].width += block.width;\n }\n }, {\n key: \"curWidth\",\n value: function curWidth() {\n var line = this.lines[this.current];\n if (line === void 0)\n return 0;\n return line.width;\n }\n }, {\n key: \"append\",\n value: function append(text) {\n var mod = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"normal\";\n this._add(this.current, text, mod);\n }\n }, {\n key: \"newLine\",\n value: function newLine(text) {\n var mod = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"normal\";\n this._add(this.current, text, mod);\n this.current++;\n }\n }, {\n key: \"determineLineHeights\",\n value: function determineLineHeights() {\n for (var k = 0; k < this.lines.length; k++) {\n var line = this.lines[k];\n var height = 0;\n if (line.blocks !== void 0) {\n for (var l = 0; l < line.blocks.length; l++) {\n var block = line.blocks[l];\n if (height < block.height) {\n height = block.height;\n }\n }\n }\n line.height = height;\n }\n }\n }, {\n key: \"determineLabelSize\",\n value: function determineLabelSize() {\n var width = 0;\n var height = 0;\n for (var k = 0; k < this.lines.length; k++) {\n var line = this.lines[k];\n if (line.width > width) {\n width = line.width;\n }\n height += line.height;\n }\n this.width = width;\n this.height = height;\n }\n }, {\n key: \"removeEmptyBlocks\",\n value: function removeEmptyBlocks() {\n var tmpLines = [];\n for (var k = 0; k < this.lines.length; k++) {\n var line = this.lines[k];\n if (line.blocks.length === 0)\n continue;\n if (k === this.lines.length - 1) {\n if (line.width === 0)\n continue;\n }\n var tmpLine = {};\n assign$2(tmpLine, line);\n tmpLine.blocks = [];\n var firstEmptyBlock = void 0;\n var tmpBlocks = [];\n for (var l = 0; l < line.blocks.length; l++) {\n var block = line.blocks[l];\n if (block.width !== 0) {\n tmpBlocks.push(block);\n } else {\n if (firstEmptyBlock === void 0) {\n firstEmptyBlock = block;\n }\n }\n }\n if (tmpBlocks.length === 0 && firstEmptyBlock !== void 0) {\n tmpBlocks.push(firstEmptyBlock);\n }\n tmpLine.blocks = tmpBlocks;\n tmpLines.push(tmpLine);\n }\n return tmpLines;\n }\n }, {\n key: \"finalize\",\n value: function finalize() {\n this.determineLineHeights();\n this.determineLabelSize();\n var tmpLines = this.removeEmptyBlocks();\n return {\n width: this.width,\n height: this.height,\n lines: tmpLines\n };\n }\n }]);\n return LabelAccumulator2;\n}();\nvar tagPattern = {\n \"\": //,\n \"\": //,\n \"\": //,\n \"\": /<\\/b>/,\n \"\": /<\\/i>/,\n \"\": /<\\/code>/,\n \"*\": /\\*/,\n _: /_/,\n \"`\": /`/,\n afterBold: /[^*]/,\n afterItal: /[^_]/,\n afterMono: /[^`]/\n};\nvar MarkupAccumulator = /* @__PURE__ */ function() {\n function MarkupAccumulator2(text) {\n _classCallCheck(this, MarkupAccumulator2);\n this.text = text;\n this.bold = false;\n this.ital = false;\n this.mono = false;\n this.spacing = false;\n this.position = 0;\n this.buffer = \"\";\n this.modStack = [];\n this.blocks = [];\n }\n _createClass(MarkupAccumulator2, [{\n key: \"mod\",\n value: function mod() {\n return this.modStack.length === 0 ? \"normal\" : this.modStack[0];\n }\n }, {\n key: \"modName\",\n value: function modName() {\n if (this.modStack.length === 0)\n return \"normal\";\n else if (this.modStack[0] === \"mono\")\n return \"mono\";\n else {\n if (this.bold && this.ital) {\n return \"boldital\";\n } else if (this.bold) {\n return \"bold\";\n } else if (this.ital) {\n return \"ital\";\n }\n }\n }\n }, {\n key: \"emitBlock\",\n value: function emitBlock() {\n if (this.spacing) {\n this.add(\" \");\n this.spacing = false;\n }\n if (this.buffer.length > 0) {\n this.blocks.push({\n text: this.buffer,\n mod: this.modName()\n });\n this.buffer = \"\";\n }\n }\n }, {\n key: \"add\",\n value: function add(text) {\n if (text === \" \") {\n this.spacing = true;\n }\n if (this.spacing) {\n this.buffer += \" \";\n this.spacing = false;\n }\n if (text != \" \") {\n this.buffer += text;\n }\n }\n }, {\n key: \"parseWS\",\n value: function parseWS(ch) {\n if (/[ \\t]/.test(ch)) {\n if (!this.mono) {\n this.spacing = true;\n } else {\n this.add(ch);\n }\n return true;\n }\n return false;\n }\n }, {\n key: \"setTag\",\n value: function setTag(tagName) {\n this.emitBlock();\n this[tagName] = true;\n this.modStack.unshift(tagName);\n }\n }, {\n key: \"unsetTag\",\n value: function unsetTag(tagName) {\n this.emitBlock();\n this[tagName] = false;\n this.modStack.shift();\n }\n }, {\n key: \"parseStartTag\",\n value: function parseStartTag(tagName, tag) {\n if (!this.mono && !this[tagName] && this.match(tag)) {\n this.setTag(tagName);\n return true;\n }\n return false;\n }\n }, {\n key: \"match\",\n value: function match2(tag) {\n var advance = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n var _this$prepareRegExp = this.prepareRegExp(tag), _this$prepareRegExp2 = _slicedToArray(_this$prepareRegExp, 2), regExp = _this$prepareRegExp2[0], length2 = _this$prepareRegExp2[1];\n var matched = regExp.test(this.text.substr(this.position, length2));\n if (matched && advance) {\n this.position += length2 - 1;\n }\n return matched;\n }\n }, {\n key: \"parseEndTag\",\n value: function parseEndTag(tagName, tag, nextTag) {\n var checkTag = this.mod() === tagName;\n if (tagName === \"mono\") {\n checkTag = checkTag && this.mono;\n } else {\n checkTag = checkTag && !this.mono;\n }\n if (checkTag && this.match(tag)) {\n if (nextTag !== void 0) {\n if (this.position === this.text.length - 1 || this.match(nextTag, false)) {\n this.unsetTag(tagName);\n }\n } else {\n this.unsetTag(tagName);\n }\n return true;\n }\n return false;\n }\n }, {\n key: \"replace\",\n value: function replace(tag, value) {\n if (this.match(tag)) {\n this.add(value);\n this.position += length - 1;\n return true;\n }\n return false;\n }\n }, {\n key: \"prepareRegExp\",\n value: function prepareRegExp(tag) {\n var length2;\n var regExp;\n if (tag instanceof RegExp) {\n regExp = tag;\n length2 = 1;\n } else {\n var prepared = tagPattern[tag];\n if (prepared !== void 0) {\n regExp = prepared;\n } else {\n regExp = new RegExp(tag);\n }\n length2 = tag.length;\n }\n return [regExp, length2];\n }\n }]);\n return MarkupAccumulator2;\n}();\nvar LabelSplitter = /* @__PURE__ */ function() {\n function LabelSplitter2(ctx, parent2, selected, hover) {\n var _this = this;\n _classCallCheck(this, LabelSplitter2);\n this.ctx = ctx;\n this.parent = parent2;\n this.selected = selected;\n this.hover = hover;\n var textWidth = function textWidth2(text, mod) {\n if (text === void 0)\n return 0;\n var values3 = _this.parent.getFormattingValues(ctx, selected, hover, mod);\n var width = 0;\n if (text !== \"\") {\n var measure = _this.ctx.measureText(text);\n width = measure.width;\n }\n return {\n width,\n values: values3\n };\n };\n this.lines = new LabelAccumulator(textWidth);\n }\n _createClass(LabelSplitter2, [{\n key: \"process\",\n value: function process2(text) {\n if (!isValidLabel(text)) {\n return this.lines.finalize();\n }\n var font = this.parent.fontOptions;\n text = text.replace(/\\r\\n/g, \"\\n\");\n text = text.replace(/\\r/g, \"\\n\");\n var nlLines = String(text).split(\"\\n\");\n var lineCount = nlLines.length;\n if (font.multi) {\n for (var i = 0; i < lineCount; i++) {\n var blocks = this.splitBlocks(nlLines[i], font.multi);\n if (blocks === void 0)\n continue;\n if (blocks.length === 0) {\n this.lines.newLine(\"\");\n continue;\n }\n if (font.maxWdt > 0) {\n for (var j = 0; j < blocks.length; j++) {\n var mod = blocks[j].mod;\n var _text = blocks[j].text;\n this.splitStringIntoLines(_text, mod, true);\n }\n } else {\n for (var _j = 0; _j < blocks.length; _j++) {\n var _mod = blocks[_j].mod;\n var _text2 = blocks[_j].text;\n this.lines.append(_text2, _mod);\n }\n }\n this.lines.newLine();\n }\n } else {\n if (font.maxWdt > 0) {\n for (var _i = 0; _i < lineCount; _i++) {\n this.splitStringIntoLines(nlLines[_i]);\n }\n } else {\n for (var _i2 = 0; _i2 < lineCount; _i2++) {\n this.lines.newLine(nlLines[_i2]);\n }\n }\n }\n return this.lines.finalize();\n }\n }, {\n key: \"decodeMarkupSystem\",\n value: function decodeMarkupSystem(markupSystem) {\n var system = \"none\";\n if (markupSystem === \"markdown\" || markupSystem === \"md\") {\n system = \"markdown\";\n } else if (markupSystem === true || markupSystem === \"html\") {\n system = \"html\";\n }\n return system;\n }\n }, {\n key: \"splitHtmlBlocks\",\n value: function splitHtmlBlocks(text) {\n var s = new MarkupAccumulator(text);\n var parseEntities = function parseEntities2(ch2) {\n if (/&/.test(ch2)) {\n var parsed2 = s.replace(s.text, \"<\", \"<\") || s.replace(s.text, \"&\", \"&\");\n if (!parsed2) {\n s.add(\"&\");\n }\n return true;\n }\n return false;\n };\n while (s.position < s.text.length) {\n var ch = s.text.charAt(s.position);\n var parsed = s.parseWS(ch) || /\") || s.parseStartTag(\"ital\", \"\") || s.parseStartTag(\"mono\", \"\") || s.parseEndTag(\"bold\", \"\") || s.parseEndTag(\"ital\", \"\") || s.parseEndTag(\"mono\", \"\")) || parseEntities(ch);\n if (!parsed) {\n s.add(ch);\n }\n s.position++;\n }\n s.emitBlock();\n return s.blocks;\n }\n }, {\n key: \"splitMarkdownBlocks\",\n value: function splitMarkdownBlocks(text) {\n var _this2 = this;\n var s = new MarkupAccumulator(text);\n var beginable = true;\n var parseOverride = function parseOverride2(ch2) {\n if (/\\\\/.test(ch2)) {\n if (s.position < _this2.text.length + 1) {\n s.position++;\n ch2 = _this2.text.charAt(s.position);\n if (/ \\t/.test(ch2)) {\n s.spacing = true;\n } else {\n s.add(ch2);\n beginable = false;\n }\n }\n return true;\n }\n return false;\n };\n while (s.position < s.text.length) {\n var ch = s.text.charAt(s.position);\n var parsed = s.parseWS(ch) || parseOverride(ch) || (beginable || s.spacing) && (s.parseStartTag(\"bold\", \"*\") || s.parseStartTag(\"ital\", \"_\") || s.parseStartTag(\"mono\", \"`\")) || s.parseEndTag(\"bold\", \"*\", \"afterBold\") || s.parseEndTag(\"ital\", \"_\", \"afterItal\") || s.parseEndTag(\"mono\", \"`\", \"afterMono\");\n if (!parsed) {\n s.add(ch);\n beginable = false;\n }\n s.position++;\n }\n s.emitBlock();\n return s.blocks;\n }\n }, {\n key: \"splitBlocks\",\n value: function splitBlocks(text, markupSystem) {\n var system = this.decodeMarkupSystem(markupSystem);\n if (system === \"none\") {\n return [{\n text,\n mod: \"normal\"\n }];\n } else if (system === \"markdown\") {\n return this.splitMarkdownBlocks(text);\n } else if (system === \"html\") {\n return this.splitHtmlBlocks(text);\n }\n }\n }, {\n key: \"overMaxWidth\",\n value: function overMaxWidth(text) {\n var width = this.ctx.measureText(text).width;\n return this.lines.curWidth() + width > this.parent.fontOptions.maxWdt;\n }\n }, {\n key: \"getLongestFit\",\n value: function getLongestFit(words) {\n var text = \"\";\n var w = 0;\n while (w < words.length) {\n var pre = text === \"\" ? \"\" : \" \";\n var newText = text + pre + words[w];\n if (this.overMaxWidth(newText))\n break;\n text = newText;\n w++;\n }\n return w;\n }\n }, {\n key: \"getLongestFitWord\",\n value: function getLongestFitWord(words) {\n var w = 0;\n while (w < words.length) {\n if (this.overMaxWidth(slice$1(words).call(words, 0, w)))\n break;\n w++;\n }\n return w;\n }\n }, {\n key: \"splitStringIntoLines\",\n value: function splitStringIntoLines(str) {\n var mod = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"normal\";\n var appendLast = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n this.parent.getFormattingValues(this.ctx, this.selected, this.hover, mod);\n str = str.replace(/^( +)/g, \"$1\\r\");\n str = str.replace(/([^\\r][^ ]*)( +)/g, \"$1\\r$2\\r\");\n var words = str.split(\"\\r\");\n while (words.length > 0) {\n var w = this.getLongestFit(words);\n if (w === 0) {\n var word = words[0];\n var x = this.getLongestFitWord(word);\n this.lines.newLine(slice$1(word).call(word, 0, x), mod);\n words[0] = slice$1(word).call(word, x);\n } else {\n var newW = w;\n if (words[w - 1] === \" \") {\n w--;\n } else if (words[newW] === \" \") {\n newW++;\n }\n var text = slice$1(words).call(words, 0, w).join(\"\");\n if (w == words.length && appendLast) {\n this.lines.append(text, mod);\n } else {\n this.lines.newLine(text, mod);\n }\n words = slice$1(words).call(words, newW);\n }\n }\n }\n }]);\n return LabelSplitter2;\n}();\nvar multiFontStyle = [\"bold\", \"ital\", \"boldital\", \"mono\"];\nvar Label = /* @__PURE__ */ function() {\n function Label2(body, options2) {\n var edgelabel = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n _classCallCheck(this, Label2);\n this.body = body;\n this.pointToSelf = false;\n this.baseSize = void 0;\n this.fontOptions = {};\n this.setOptions(options2);\n this.size = {\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n yLine: 0\n };\n this.isEdgeLabel = edgelabel;\n }\n _createClass(Label2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n this.elementOptions = options2;\n this.initFontOptions(options2.font);\n if (isValidLabel(options2.label)) {\n this.labelDirty = true;\n } else {\n options2.label = void 0;\n }\n if (options2.font !== void 0 && options2.font !== null) {\n if (typeof options2.font === \"string\") {\n this.baseSize = this.fontOptions.size;\n } else if (_typeof(options2.font) === \"object\") {\n var size = options2.font.size;\n if (size !== void 0) {\n this.baseSize = size;\n }\n }\n }\n }\n }, {\n key: \"initFontOptions\",\n value: function initFontOptions(newFontOptions) {\n var _this = this;\n forEach$1(multiFontStyle, function(style) {\n _this.fontOptions[style] = {};\n });\n if (Label2.parseFontString(this.fontOptions, newFontOptions)) {\n this.fontOptions.vadjust = 0;\n return;\n }\n forEach$1(newFontOptions, function(prop, n) {\n if (prop !== void 0 && prop !== null && _typeof(prop) !== \"object\") {\n _this.fontOptions[n] = prop;\n }\n });\n }\n }, {\n key: \"constrain\",\n value: function constrain(pile) {\n var fontOptions = {\n constrainWidth: false,\n maxWdt: -1,\n minWdt: -1,\n constrainHeight: false,\n minHgt: -1,\n valign: \"middle\"\n };\n var widthConstraint = topMost(pile, \"widthConstraint\");\n if (typeof widthConstraint === \"number\") {\n fontOptions.maxWdt = Number(widthConstraint);\n fontOptions.minWdt = Number(widthConstraint);\n } else if (_typeof(widthConstraint) === \"object\") {\n var widthConstraintMaximum = topMost(pile, [\"widthConstraint\", \"maximum\"]);\n if (typeof widthConstraintMaximum === \"number\") {\n fontOptions.maxWdt = Number(widthConstraintMaximum);\n }\n var widthConstraintMinimum = topMost(pile, [\"widthConstraint\", \"minimum\"]);\n if (typeof widthConstraintMinimum === \"number\") {\n fontOptions.minWdt = Number(widthConstraintMinimum);\n }\n }\n var heightConstraint = topMost(pile, \"heightConstraint\");\n if (typeof heightConstraint === \"number\") {\n fontOptions.minHgt = Number(heightConstraint);\n } else if (_typeof(heightConstraint) === \"object\") {\n var heightConstraintMinimum = topMost(pile, [\"heightConstraint\", \"minimum\"]);\n if (typeof heightConstraintMinimum === \"number\") {\n fontOptions.minHgt = Number(heightConstraintMinimum);\n }\n var heightConstraintValign = topMost(pile, [\"heightConstraint\", \"valign\"]);\n if (typeof heightConstraintValign === \"string\") {\n if (heightConstraintValign === \"top\" || heightConstraintValign === \"bottom\") {\n fontOptions.valign = heightConstraintValign;\n }\n }\n }\n return fontOptions;\n }\n }, {\n key: \"update\",\n value: function update(options2, pile) {\n this.setOptions(options2, true);\n this.propagateFonts(pile);\n deepExtend(this.fontOptions, this.constrain(pile));\n this.fontOptions.chooser = choosify(\"label\", pile);\n }\n }, {\n key: \"adjustSizes\",\n value: function adjustSizes(margins) {\n var widthBias = margins ? margins.right + margins.left : 0;\n if (this.fontOptions.constrainWidth) {\n this.fontOptions.maxWdt -= widthBias;\n this.fontOptions.minWdt -= widthBias;\n }\n var heightBias = margins ? margins.top + margins.bottom : 0;\n if (this.fontOptions.constrainHeight) {\n this.fontOptions.minHgt -= heightBias;\n }\n }\n }, {\n key: \"addFontOptionsToPile\",\n value: function addFontOptionsToPile(dstPile, srcPile) {\n for (var i = 0; i < srcPile.length; ++i) {\n this.addFontToPile(dstPile, srcPile[i]);\n }\n }\n }, {\n key: \"addFontToPile\",\n value: function addFontToPile(pile, options2) {\n if (options2 === void 0)\n return;\n if (options2.font === void 0 || options2.font === null)\n return;\n var item = options2.font;\n pile.push(item);\n }\n }, {\n key: \"getBasicOptions\",\n value: function getBasicOptions(pile) {\n var ret = {};\n for (var n = 0; n < pile.length; ++n) {\n var fontOptions = pile[n];\n var tmpShorthand = {};\n if (Label2.parseFontString(tmpShorthand, fontOptions)) {\n fontOptions = tmpShorthand;\n }\n forEach$1(fontOptions, function(opt, name) {\n if (opt === void 0)\n return;\n if (Object.prototype.hasOwnProperty.call(ret, name))\n return;\n if (indexOf2(multiFontStyle).call(multiFontStyle, name) !== -1) {\n ret[name] = {};\n } else {\n ret[name] = opt;\n }\n });\n }\n return ret;\n }\n }, {\n key: \"getFontOption\",\n value: function getFontOption(pile, multiName, option) {\n var multiFont;\n for (var n = 0; n < pile.length; ++n) {\n var fontOptions = pile[n];\n if (Object.prototype.hasOwnProperty.call(fontOptions, multiName)) {\n multiFont = fontOptions[multiName];\n if (multiFont === void 0 || multiFont === null)\n continue;\n var tmpShorthand = {};\n if (Label2.parseFontString(tmpShorthand, multiFont)) {\n multiFont = tmpShorthand;\n }\n if (Object.prototype.hasOwnProperty.call(multiFont, option)) {\n return multiFont[option];\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(this.fontOptions, option)) {\n return this.fontOptions[option];\n }\n throw new Error(\"Did not find value for multi-font for property: '\" + option + \"'\");\n }\n }, {\n key: \"getFontOptions\",\n value: function getFontOptions(pile, multiName) {\n var result = {};\n var optionNames = [\"color\", \"size\", \"face\", \"mod\", \"vadjust\"];\n for (var i = 0; i < optionNames.length; ++i) {\n var mod = optionNames[i];\n result[mod] = this.getFontOption(pile, multiName, mod);\n }\n return result;\n }\n }, {\n key: \"propagateFonts\",\n value: function propagateFonts(pile) {\n var _this2 = this;\n var fontPile = [];\n this.addFontOptionsToPile(fontPile, pile);\n this.fontOptions = this.getBasicOptions(fontPile);\n var _loop = function _loop2(i2) {\n var mod = multiFontStyle[i2];\n var modOptions = _this2.fontOptions[mod];\n var tmpMultiFontOptions = _this2.getFontOptions(fontPile, mod);\n forEach$1(tmpMultiFontOptions, function(option, n) {\n modOptions[n] = option;\n });\n modOptions.size = Number(modOptions.size);\n modOptions.vadjust = Number(modOptions.vadjust);\n };\n for (var i = 0; i < multiFontStyle.length; ++i) {\n _loop(i);\n }\n }\n }, {\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover) {\n var baseline = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : \"middle\";\n if (this.elementOptions.label === void 0)\n return;\n var viewFontSize = this.fontOptions.size * this.body.view.scale;\n if (this.elementOptions.label && viewFontSize < this.elementOptions.scaling.label.drawThreshold - 1)\n return;\n if (viewFontSize >= this.elementOptions.scaling.label.maxVisible) {\n viewFontSize = Number(this.elementOptions.scaling.label.maxVisible) / this.body.view.scale;\n }\n this.calculateLabelSize(ctx, selected, hover, x, y, baseline);\n this._drawBackground(ctx);\n this._drawText(ctx, x, this.size.yLine, baseline, viewFontSize);\n }\n }, {\n key: \"_drawBackground\",\n value: function _drawBackground(ctx) {\n if (this.fontOptions.background !== void 0 && this.fontOptions.background !== \"none\") {\n ctx.fillStyle = this.fontOptions.background;\n var size = this.getSize();\n ctx.fillRect(size.left, size.top, size.width, size.height);\n }\n }\n }, {\n key: \"_drawText\",\n value: function _drawText(ctx, x, y) {\n var baseline = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : \"middle\";\n var viewFontSize = arguments.length > 4 ? arguments[4] : void 0;\n var _this$_setAlignment = this._setAlignment(ctx, x, y, baseline);\n var _this$_setAlignment2 = _slicedToArray(_this$_setAlignment, 2);\n x = _this$_setAlignment2[0];\n y = _this$_setAlignment2[1];\n ctx.textAlign = \"left\";\n x = x - this.size.width / 2;\n if (this.fontOptions.valign && this.size.height > this.size.labelHeight) {\n if (this.fontOptions.valign === \"top\") {\n y -= (this.size.height - this.size.labelHeight) / 2;\n }\n if (this.fontOptions.valign === \"bottom\") {\n y += (this.size.height - this.size.labelHeight) / 2;\n }\n }\n for (var i = 0; i < this.lineCount; i++) {\n var line = this.lines[i];\n if (line && line.blocks) {\n var width = 0;\n if (this.isEdgeLabel || this.fontOptions.align === \"center\") {\n width += (this.size.width - line.width) / 2;\n } else if (this.fontOptions.align === \"right\") {\n width += this.size.width - line.width;\n }\n for (var j = 0; j < line.blocks.length; j++) {\n var block = line.blocks[j];\n ctx.font = block.font;\n var _this$_getColor = this._getColor(block.color, viewFontSize, block.strokeColor), _this$_getColor2 = _slicedToArray(_this$_getColor, 2), fontColor = _this$_getColor2[0], strokeColor = _this$_getColor2[1];\n if (block.strokeWidth > 0) {\n ctx.lineWidth = block.strokeWidth;\n ctx.strokeStyle = strokeColor;\n ctx.lineJoin = \"round\";\n }\n ctx.fillStyle = fontColor;\n if (block.strokeWidth > 0) {\n ctx.strokeText(block.text, x + width, y + block.vadjust);\n }\n ctx.fillText(block.text, x + width, y + block.vadjust);\n width += block.width;\n }\n y += line.height;\n }\n }\n }\n }, {\n key: \"_setAlignment\",\n value: function _setAlignment(ctx, x, y, baseline) {\n if (this.isEdgeLabel && this.fontOptions.align !== \"horizontal\" && this.pointToSelf === false) {\n x = 0;\n y = 0;\n var lineMargin = 2;\n if (this.fontOptions.align === \"top\") {\n ctx.textBaseline = \"alphabetic\";\n y -= 2 * lineMargin;\n } else if (this.fontOptions.align === \"bottom\") {\n ctx.textBaseline = \"hanging\";\n y += 2 * lineMargin;\n } else {\n ctx.textBaseline = \"middle\";\n }\n } else {\n ctx.textBaseline = baseline;\n }\n return [x, y];\n }\n }, {\n key: \"_getColor\",\n value: function _getColor(color, viewFontSize, initialStrokeColor) {\n var fontColor = color || \"#000000\";\n var strokeColor = initialStrokeColor || \"#ffffff\";\n if (viewFontSize <= this.elementOptions.scaling.label.drawThreshold) {\n var opacity = Math.max(0, Math.min(1, 1 - (this.elementOptions.scaling.label.drawThreshold - viewFontSize)));\n fontColor = overrideOpacity(fontColor, opacity);\n strokeColor = overrideOpacity(strokeColor, opacity);\n }\n return [fontColor, strokeColor];\n }\n }, {\n key: \"getTextSize\",\n value: function getTextSize(ctx) {\n var selected = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n var hover = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n this._processLabel(ctx, selected, hover);\n return {\n width: this.size.width,\n height: this.size.height,\n lineCount: this.lineCount\n };\n }\n }, {\n key: \"getSize\",\n value: function getSize() {\n var lineMargin = 2;\n var x = this.size.left;\n var y = this.size.top - 0.5 * lineMargin;\n if (this.isEdgeLabel) {\n var x2 = -this.size.width * 0.5;\n switch (this.fontOptions.align) {\n case \"middle\":\n x = x2;\n y = -this.size.height * 0.5;\n break;\n case \"top\":\n x = x2;\n y = -(this.size.height + lineMargin);\n break;\n case \"bottom\":\n x = x2;\n y = lineMargin;\n break;\n }\n }\n var ret = {\n left: x,\n top: y,\n width: this.size.width,\n height: this.size.height\n };\n return ret;\n }\n }, {\n key: \"calculateLabelSize\",\n value: function calculateLabelSize(ctx, selected, hover) {\n var x = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0;\n var y = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : 0;\n var baseline = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : \"middle\";\n this._processLabel(ctx, selected, hover);\n this.size.left = x - this.size.width * 0.5;\n this.size.top = y - this.size.height * 0.5;\n this.size.yLine = y + (1 - this.lineCount) * 0.5 * this.fontOptions.size;\n if (baseline === \"hanging\") {\n this.size.top += 0.5 * this.fontOptions.size;\n this.size.top += 4;\n this.size.yLine += 4;\n }\n }\n }, {\n key: \"getFormattingValues\",\n value: function getFormattingValues(ctx, selected, hover, mod) {\n var getValue = function getValue2(fontOptions, mod2, option) {\n if (mod2 === \"normal\") {\n if (option === \"mod\")\n return \"\";\n return fontOptions[option];\n }\n if (fontOptions[mod2][option] !== void 0) {\n return fontOptions[mod2][option];\n } else {\n return fontOptions[option];\n }\n };\n var values3 = {\n color: getValue(this.fontOptions, mod, \"color\"),\n size: getValue(this.fontOptions, mod, \"size\"),\n face: getValue(this.fontOptions, mod, \"face\"),\n mod: getValue(this.fontOptions, mod, \"mod\"),\n vadjust: getValue(this.fontOptions, mod, \"vadjust\"),\n strokeWidth: this.fontOptions.strokeWidth,\n strokeColor: this.fontOptions.strokeColor\n };\n if (selected || hover) {\n if (mod === \"normal\" && this.fontOptions.chooser === true && this.elementOptions.labelHighlightBold) {\n values3.mod = \"bold\";\n } else {\n if (typeof this.fontOptions.chooser === \"function\") {\n this.fontOptions.chooser(values3, this.elementOptions.id, selected, hover);\n }\n }\n }\n var fontString = \"\";\n if (values3.mod !== void 0 && values3.mod !== \"\") {\n fontString += values3.mod + \" \";\n }\n fontString += values3.size + \"px \" + values3.face;\n ctx.font = fontString.replace(/\"/g, \"\");\n values3.font = ctx.font;\n values3.height = values3.size;\n return values3;\n }\n }, {\n key: \"differentState\",\n value: function differentState(selected, hover) {\n return selected !== this.selectedState || hover !== this.hoverState;\n }\n }, {\n key: \"_processLabelText\",\n value: function _processLabelText(ctx, selected, hover, inText) {\n var splitter = new LabelSplitter(ctx, this, selected, hover);\n return splitter.process(inText);\n }\n }, {\n key: \"_processLabel\",\n value: function _processLabel(ctx, selected, hover) {\n if (this.labelDirty === false && !this.differentState(selected, hover))\n return;\n var state = this._processLabelText(ctx, selected, hover, this.elementOptions.label);\n if (this.fontOptions.minWdt > 0 && state.width < this.fontOptions.minWdt) {\n state.width = this.fontOptions.minWdt;\n }\n this.size.labelHeight = state.height;\n if (this.fontOptions.minHgt > 0 && state.height < this.fontOptions.minHgt) {\n state.height = this.fontOptions.minHgt;\n }\n this.lines = state.lines;\n this.lineCount = state.lines.length;\n this.size.width = state.width;\n this.size.height = state.height;\n this.selectedState = selected;\n this.hoverState = hover;\n this.labelDirty = false;\n }\n }, {\n key: \"visible\",\n value: function visible() {\n if (this.size.width === 0 || this.size.height === 0 || this.elementOptions.label === void 0) {\n return false;\n }\n var viewFontSize = this.fontOptions.size * this.body.view.scale;\n if (viewFontSize < this.elementOptions.scaling.label.drawThreshold - 1) {\n return false;\n }\n return true;\n }\n }], [{\n key: \"parseFontString\",\n value: function parseFontString(outOptions, inOptions) {\n if (!inOptions || typeof inOptions !== \"string\")\n return false;\n var newOptionsArray = inOptions.split(\" \");\n outOptions.size = +newOptionsArray[0].replace(\"px\", \"\");\n outOptions.face = newOptionsArray[1];\n outOptions.color = newOptionsArray[2];\n return true;\n }\n }]);\n return Label2;\n}();\nvar $$6 = _export;\nvar getBuiltIn = getBuiltIn$8;\nvar aFunction$2 = aFunction$5;\nvar anObject$2 = anObject$c;\nvar isObject$3 = isObject$j;\nvar create$2 = objectCreate;\nvar bind2 = functionBind;\nvar fails$1 = fails$m;\nvar nativeConstruct = getBuiltIn(\"Reflect\", \"construct\");\nvar NEW_TARGET_BUG = fails$1(function() {\n function F() {\n }\n return !(nativeConstruct(function() {\n }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails$1(function() {\n nativeConstruct(function() {\n });\n});\nvar FORCED$1 = NEW_TARGET_BUG || ARGS_BUG;\n$$6({\n target: \"Reflect\",\n stat: true,\n forced: FORCED$1,\n sham: FORCED$1\n}, {\n construct: function construct(Target, args) {\n aFunction$2(Target);\n anObject$2(args);\n var newTarget = arguments.length < 3 ? Target : aFunction$2(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG)\n return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n switch (args.length) {\n case 0:\n return new Target();\n case 1:\n return new Target(args[0]);\n case 2:\n return new Target(args[0], args[1]);\n case 3:\n return new Target(args[0], args[1], args[2]);\n case 4:\n return new Target(args[0], args[1], args[2], args[3]);\n }\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind2.apply(Target, $args))();\n }\n var proto = newTarget.prototype;\n var instance = create$2(isObject$3(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject$3(result) ? result : instance;\n }\n});\nvar path$6 = path$x;\nvar construct$2 = path$6.Reflect.construct;\nvar parent$d = construct$2;\nvar construct$1 = parent$d;\nvar construct2 = construct$1;\nvar parent$c = create$5;\nvar create$1 = parent$c;\nvar create4 = create$1;\nvar $$5 = _export;\nvar setPrototypeOf$4 = objectSetPrototypeOf;\n$$5({\n target: \"Object\",\n stat: true\n}, {\n setPrototypeOf: setPrototypeOf$4\n});\nvar path$5 = path$x;\nvar setPrototypeOf$3 = path$5.Object.setPrototypeOf;\nvar parent$b = setPrototypeOf$3;\nvar setPrototypeOf$2 = parent$b;\nvar parent$a = setPrototypeOf$2;\nvar setPrototypeOf$1 = parent$a;\nvar setPrototypeOf = setPrototypeOf$1;\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = setPrototypeOf || function _setPrototypeOf2(o2, p2) {\n o2.__proto__ = p2;\n return o2;\n };\n return _setPrototypeOf(o, p);\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 subClass.prototype = create4(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass)\n _setPrototypeOf(subClass, superClass);\n}\nfunction _assertThisInitialized(self2) {\n if (self2 === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self2;\n}\nfunction _possibleConstructorReturn(self2, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self2);\n}\nvar parent$9 = getPrototypeOf$4;\nvar getPrototypeOf$2 = parent$9;\nvar getPrototypeOf$1 = getPrototypeOf$2;\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = setPrototypeOf ? getPrototypeOf$1 : function _getPrototypeOf2(o2) {\n return o2.__proto__ || getPrototypeOf$1(o2);\n };\n return _getPrototypeOf(o);\n}\nvar NodeBase = /* @__PURE__ */ function() {\n function NodeBase2(options2, body, labelModule) {\n _classCallCheck(this, NodeBase2);\n this.body = body;\n this.labelModule = labelModule;\n this.setOptions(options2);\n this.top = void 0;\n this.left = void 0;\n this.height = void 0;\n this.width = void 0;\n this.radius = void 0;\n this.margin = void 0;\n this.refreshNeeded = true;\n this.boundingBox = {\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n };\n }\n _createClass(NodeBase2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n this.options = options2;\n }\n }, {\n key: \"_setMargins\",\n value: function _setMargins(labelModule) {\n this.margin = {};\n if (this.options.margin) {\n if (_typeof(this.options.margin) == \"object\") {\n this.margin.top = this.options.margin.top;\n this.margin.right = this.options.margin.right;\n this.margin.bottom = this.options.margin.bottom;\n this.margin.left = this.options.margin.left;\n } else {\n this.margin.top = this.options.margin;\n this.margin.right = this.options.margin;\n this.margin.bottom = this.options.margin;\n this.margin.left = this.options.margin;\n }\n }\n labelModule.adjustSizes(this.margin);\n }\n }, {\n key: \"_distanceToBorder\",\n value: function _distanceToBorder(ctx, angle) {\n var borderWidth = this.options.borderWidth;\n if (ctx) {\n this.resize(ctx);\n }\n return Math.min(Math.abs(this.width / 2 / Math.cos(angle)), Math.abs(this.height / 2 / Math.sin(angle))) + borderWidth;\n }\n }, {\n key: \"enableShadow\",\n value: function enableShadow(ctx, values3) {\n if (values3.shadow) {\n ctx.shadowColor = values3.shadowColor;\n ctx.shadowBlur = values3.shadowSize;\n ctx.shadowOffsetX = values3.shadowX;\n ctx.shadowOffsetY = values3.shadowY;\n }\n }\n }, {\n key: \"disableShadow\",\n value: function disableShadow(ctx, values3) {\n if (values3.shadow) {\n ctx.shadowColor = \"rgba(0,0,0,0)\";\n ctx.shadowBlur = 0;\n ctx.shadowOffsetX = 0;\n ctx.shadowOffsetY = 0;\n }\n }\n }, {\n key: \"enableBorderDashes\",\n value: function enableBorderDashes(ctx, values3) {\n if (values3.borderDashes !== false) {\n if (ctx.setLineDash !== void 0) {\n var dashes = values3.borderDashes;\n if (dashes === true) {\n dashes = [5, 15];\n }\n ctx.setLineDash(dashes);\n } else {\n console.warn(\"setLineDash is not supported in this browser. The dashed borders cannot be used.\");\n this.options.shapeProperties.borderDashes = false;\n values3.borderDashes = false;\n }\n }\n }\n }, {\n key: \"disableBorderDashes\",\n value: function disableBorderDashes(ctx, values3) {\n if (values3.borderDashes !== false) {\n if (ctx.setLineDash !== void 0) {\n ctx.setLineDash([0]);\n } else {\n console.warn(\"setLineDash is not supported in this browser. The dashed borders cannot be used.\");\n this.options.shapeProperties.borderDashes = false;\n values3.borderDashes = false;\n }\n }\n }\n }, {\n key: \"needsRefresh\",\n value: function needsRefresh(selected, hover) {\n if (this.refreshNeeded === true) {\n this.refreshNeeded = false;\n return true;\n }\n return this.width === void 0 || this.labelModule.differentState(selected, hover);\n }\n }, {\n key: \"initContextForDraw\",\n value: function initContextForDraw(ctx, values3) {\n var borderWidth = values3.borderWidth / this.body.view.scale;\n ctx.lineWidth = Math.min(this.width, borderWidth);\n ctx.strokeStyle = values3.borderColor;\n ctx.fillStyle = values3.color;\n }\n }, {\n key: \"performStroke\",\n value: function performStroke(ctx, values3) {\n var borderWidth = values3.borderWidth / this.body.view.scale;\n ctx.save();\n if (borderWidth > 0) {\n this.enableBorderDashes(ctx, values3);\n ctx.stroke();\n this.disableBorderDashes(ctx, values3);\n }\n ctx.restore();\n }\n }, {\n key: \"performFill\",\n value: function performFill(ctx, values3) {\n ctx.save();\n ctx.fillStyle = values3.color;\n this.enableShadow(ctx, values3);\n fill2(ctx).call(ctx);\n this.disableShadow(ctx, values3);\n ctx.restore();\n this.performStroke(ctx, values3);\n }\n }, {\n key: \"_addBoundingBoxMargin\",\n value: function _addBoundingBoxMargin(margin) {\n this.boundingBox.left -= margin;\n this.boundingBox.top -= margin;\n this.boundingBox.bottom += margin;\n this.boundingBox.right += margin;\n }\n }, {\n key: \"_updateBoundingBox\",\n value: function _updateBoundingBox(x, y, ctx, selected, hover) {\n if (ctx !== void 0) {\n this.resize(ctx, selected, hover);\n }\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n this.boundingBox.left = this.left;\n this.boundingBox.top = this.top;\n this.boundingBox.bottom = this.top + this.height;\n this.boundingBox.right = this.left + this.width;\n }\n }, {\n key: \"updateBoundingBox\",\n value: function updateBoundingBox(x, y, ctx, selected, hover) {\n this._updateBoundingBox(x, y, ctx, selected, hover);\n }\n }, {\n key: \"getDimensionsFromLabel\",\n value: function getDimensionsFromLabel(ctx, selected, hover) {\n this.textSize = this.labelModule.getTextSize(ctx, selected, hover);\n var width = this.textSize.width;\n var height = this.textSize.height;\n var DEFAULT_SIZE = 14;\n if (width === 0) {\n width = DEFAULT_SIZE;\n height = DEFAULT_SIZE;\n }\n return {\n width,\n height\n };\n }\n }]);\n return NodeBase2;\n}();\nfunction _createSuper$s(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$s();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$s() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar Box$1 = /* @__PURE__ */ function(_NodeBase) {\n _inherits(Box2, _NodeBase);\n var _super = _createSuper$s(Box2);\n function Box2(options2, body, labelModule) {\n var _this;\n _classCallCheck(this, Box2);\n _this = _super.call(this, options2, body, labelModule);\n _this._setMargins(labelModule);\n return _this;\n }\n _createClass(Box2, [{\n key: \"resize\",\n value: function resize(ctx) {\n var selected = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.selected;\n var hover = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : this.hover;\n if (this.needsRefresh(selected, hover)) {\n var dimensions = this.getDimensionsFromLabel(ctx, selected, hover);\n this.width = dimensions.width + this.margin.right + this.margin.left;\n this.height = dimensions.height + this.margin.top + this.margin.bottom;\n this.radius = this.width / 2;\n }\n }\n }, {\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n this.resize(ctx, selected, hover);\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n this.initContextForDraw(ctx, values3);\n drawRoundRect(ctx, this.left, this.top, this.width, this.height, values3.borderRadius);\n this.performFill(ctx, values3);\n this.updateBoundingBox(x, y, ctx, selected, hover);\n this.labelModule.draw(ctx, this.left + this.textSize.width / 2 + this.margin.left, this.top + this.textSize.height / 2 + this.margin.top, selected, hover);\n }\n }, {\n key: \"updateBoundingBox\",\n value: function updateBoundingBox(x, y, ctx, selected, hover) {\n this._updateBoundingBox(x, y, ctx, selected, hover);\n var borderRadius = this.options.shapeProperties.borderRadius;\n this._addBoundingBoxMargin(borderRadius);\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx, angle) {\n if (ctx) {\n this.resize(ctx);\n }\n var borderWidth = this.options.borderWidth;\n return Math.min(Math.abs(this.width / 2 / Math.cos(angle)), Math.abs(this.height / 2 / Math.sin(angle))) + borderWidth;\n }\n }]);\n return Box2;\n}(NodeBase);\nfunction _createSuper$r(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$r();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$r() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar CircleImageBase = /* @__PURE__ */ function(_NodeBase) {\n _inherits(CircleImageBase2, _NodeBase);\n var _super = _createSuper$r(CircleImageBase2);\n function CircleImageBase2(options2, body, labelModule) {\n var _this;\n _classCallCheck(this, CircleImageBase2);\n _this = _super.call(this, options2, body, labelModule);\n _this.labelOffset = 0;\n _this.selected = false;\n return _this;\n }\n _createClass(CircleImageBase2, [{\n key: \"setOptions\",\n value: function setOptions(options2, imageObj, imageObjAlt) {\n this.options = options2;\n if (!(imageObj === void 0 && imageObjAlt === void 0)) {\n this.setImages(imageObj, imageObjAlt);\n }\n }\n }, {\n key: \"setImages\",\n value: function setImages(imageObj, imageObjAlt) {\n if (imageObjAlt && this.selected) {\n this.imageObj = imageObjAlt;\n this.imageObjAlt = imageObj;\n } else {\n this.imageObj = imageObj;\n this.imageObjAlt = imageObjAlt;\n }\n }\n }, {\n key: \"switchImages\",\n value: function switchImages(selected) {\n var selection_changed = selected && !this.selected || !selected && this.selected;\n this.selected = selected;\n if (this.imageObjAlt !== void 0 && selection_changed) {\n var imageTmp = this.imageObj;\n this.imageObj = this.imageObjAlt;\n this.imageObjAlt = imageTmp;\n }\n }\n }, {\n key: \"_getImagePadding\",\n value: function _getImagePadding() {\n var imgPadding = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n if (this.options.imagePadding) {\n var optImgPadding = this.options.imagePadding;\n if (_typeof(optImgPadding) == \"object\") {\n imgPadding.top = optImgPadding.top;\n imgPadding.right = optImgPadding.right;\n imgPadding.bottom = optImgPadding.bottom;\n imgPadding.left = optImgPadding.left;\n } else {\n imgPadding.top = optImgPadding;\n imgPadding.right = optImgPadding;\n imgPadding.bottom = optImgPadding;\n imgPadding.left = optImgPadding;\n }\n }\n return imgPadding;\n }\n }, {\n key: \"_resizeImage\",\n value: function _resizeImage() {\n var width, height;\n if (this.options.shapeProperties.useImageSize === false) {\n var ratio_width = 1;\n var ratio_height = 1;\n if (this.imageObj.width && this.imageObj.height) {\n if (this.imageObj.width > this.imageObj.height) {\n ratio_width = this.imageObj.width / this.imageObj.height;\n } else {\n ratio_height = this.imageObj.height / this.imageObj.width;\n }\n }\n width = this.options.size * 2 * ratio_width;\n height = this.options.size * 2 * ratio_height;\n } else {\n var imgPadding = this._getImagePadding();\n width = this.imageObj.width + imgPadding.left + imgPadding.right;\n height = this.imageObj.height + imgPadding.top + imgPadding.bottom;\n }\n this.width = width;\n this.height = height;\n this.radius = 0.5 * this.width;\n }\n }, {\n key: \"_drawRawCircle\",\n value: function _drawRawCircle(ctx, x, y, values3) {\n this.initContextForDraw(ctx, values3);\n drawCircle(ctx, x, y, values3.size);\n this.performFill(ctx, values3);\n }\n }, {\n key: \"_drawImageAtPosition\",\n value: function _drawImageAtPosition(ctx, values3) {\n if (this.imageObj.width != 0) {\n ctx.globalAlpha = values3.opacity !== void 0 ? values3.opacity : 1;\n this.enableShadow(ctx, values3);\n var factor = 1;\n if (this.options.shapeProperties.interpolation === true) {\n factor = this.imageObj.width / this.width / this.body.view.scale;\n }\n var imgPadding = this._getImagePadding();\n var imgPosLeft = this.left + imgPadding.left;\n var imgPosTop = this.top + imgPadding.top;\n var imgWidth = this.width - imgPadding.left - imgPadding.right;\n var imgHeight = this.height - imgPadding.top - imgPadding.bottom;\n this.imageObj.drawImageAtPosition(ctx, factor, imgPosLeft, imgPosTop, imgWidth, imgHeight);\n this.disableShadow(ctx, values3);\n }\n }\n }, {\n key: \"_drawImageLabel\",\n value: function _drawImageLabel(ctx, x, y, selected, hover) {\n var offset = 0;\n if (this.height !== void 0) {\n offset = this.height * 0.5;\n var labelDimensions = this.labelModule.getTextSize(ctx, selected, hover);\n if (labelDimensions.lineCount >= 1) {\n offset += labelDimensions.height / 2;\n }\n }\n var yLabel = y + offset;\n if (this.options.label) {\n this.labelOffset = offset;\n }\n this.labelModule.draw(ctx, x, yLabel, selected, hover, \"hanging\");\n }\n }]);\n return CircleImageBase2;\n}(NodeBase);\nfunction _createSuper$q(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$q();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$q() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar Circle$1 = /* @__PURE__ */ function(_CircleImageBase) {\n _inherits(Circle2, _CircleImageBase);\n var _super = _createSuper$q(Circle2);\n function Circle2(options2, body, labelModule) {\n var _this;\n _classCallCheck(this, Circle2);\n _this = _super.call(this, options2, body, labelModule);\n _this._setMargins(labelModule);\n return _this;\n }\n _createClass(Circle2, [{\n key: \"resize\",\n value: function resize(ctx) {\n var selected = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.selected;\n var hover = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : this.hover;\n if (this.needsRefresh(selected, hover)) {\n var dimensions = this.getDimensionsFromLabel(ctx, selected, hover);\n var diameter = Math.max(dimensions.width + this.margin.right + this.margin.left, dimensions.height + this.margin.top + this.margin.bottom);\n this.options.size = diameter / 2;\n this.width = diameter;\n this.height = diameter;\n this.radius = this.width / 2;\n }\n }\n }, {\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n this.resize(ctx, selected, hover);\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n this._drawRawCircle(ctx, x, y, values3);\n this.updateBoundingBox(x, y);\n this.labelModule.draw(ctx, this.left + this.textSize.width / 2 + this.margin.left, y, selected, hover);\n }\n }, {\n key: \"updateBoundingBox\",\n value: function updateBoundingBox(x, y) {\n this.boundingBox.top = y - this.options.size;\n this.boundingBox.left = x - this.options.size;\n this.boundingBox.right = x + this.options.size;\n this.boundingBox.bottom = y + this.options.size;\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx) {\n if (ctx) {\n this.resize(ctx);\n }\n return this.width * 0.5;\n }\n }]);\n return Circle2;\n}(CircleImageBase);\nfunction _createSuper$p(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$p();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$p() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar CircularImage = /* @__PURE__ */ function(_CircleImageBase) {\n _inherits(CircularImage2, _CircleImageBase);\n var _super = _createSuper$p(CircularImage2);\n function CircularImage2(options2, body, labelModule, imageObj, imageObjAlt) {\n var _this;\n _classCallCheck(this, CircularImage2);\n _this = _super.call(this, options2, body, labelModule);\n _this.setImages(imageObj, imageObjAlt);\n return _this;\n }\n _createClass(CircularImage2, [{\n key: \"resize\",\n value: function resize(ctx) {\n var selected = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.selected;\n var hover = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : this.hover;\n var imageAbsent = this.imageObj.src === void 0 || this.imageObj.width === void 0 || this.imageObj.height === void 0;\n if (imageAbsent) {\n var diameter = this.options.size * 2;\n this.width = diameter;\n this.height = diameter;\n this.radius = 0.5 * this.width;\n return;\n }\n if (this.needsRefresh(selected, hover)) {\n this._resizeImage();\n }\n }\n }, {\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n this.switchImages(selected);\n this.resize();\n var labelX = x, labelY = y;\n if (this.options.shapeProperties.coordinateOrigin === \"top-left\") {\n this.left = x;\n this.top = y;\n labelX += this.width / 2;\n labelY += this.height / 2;\n } else {\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n }\n this._drawRawCircle(ctx, labelX, labelY, values3);\n ctx.save();\n ctx.clip();\n this._drawImageAtPosition(ctx, values3);\n ctx.restore();\n this._drawImageLabel(ctx, labelX, labelY, selected, hover);\n this.updateBoundingBox(x, y);\n }\n }, {\n key: \"updateBoundingBox\",\n value: function updateBoundingBox(x, y) {\n if (this.options.shapeProperties.coordinateOrigin === \"top-left\") {\n this.boundingBox.top = y;\n this.boundingBox.left = x;\n this.boundingBox.right = x + this.options.size * 2;\n this.boundingBox.bottom = y + this.options.size * 2;\n } else {\n this.boundingBox.top = y - this.options.size;\n this.boundingBox.left = x - this.options.size;\n this.boundingBox.right = x + this.options.size;\n this.boundingBox.bottom = y + this.options.size;\n }\n this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left);\n this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width);\n this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelOffset);\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx) {\n if (ctx) {\n this.resize(ctx);\n }\n return this.width * 0.5;\n }\n }]);\n return CircularImage2;\n}(CircleImageBase);\nfunction _createSuper$o(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$o();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$o() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar ShapeBase = /* @__PURE__ */ function(_NodeBase) {\n _inherits(ShapeBase2, _NodeBase);\n var _super = _createSuper$o(ShapeBase2);\n function ShapeBase2(options2, body, labelModule) {\n _classCallCheck(this, ShapeBase2);\n return _super.call(this, options2, body, labelModule);\n }\n _createClass(ShapeBase2, [{\n key: \"resize\",\n value: function resize(ctx) {\n var selected = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.selected;\n var hover = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : this.hover;\n var values3 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {\n size: this.options.size\n };\n if (this.needsRefresh(selected, hover)) {\n var _this$customSizeWidth, _this$customSizeHeigh;\n this.labelModule.getTextSize(ctx, selected, hover);\n var size = 2 * values3.size;\n this.width = (_this$customSizeWidth = this.customSizeWidth) !== null && _this$customSizeWidth !== void 0 ? _this$customSizeWidth : size;\n this.height = (_this$customSizeHeigh = this.customSizeHeight) !== null && _this$customSizeHeigh !== void 0 ? _this$customSizeHeigh : size;\n this.radius = 0.5 * this.width;\n }\n }\n }, {\n key: \"_drawShape\",\n value: function _drawShape(ctx, shape, sizeMultiplier, x, y, selected, hover, values3) {\n var _this = this;\n this.resize(ctx, selected, hover, values3);\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n this.initContextForDraw(ctx, values3);\n getShape(shape)(ctx, x, y, values3.size);\n this.performFill(ctx, values3);\n if (this.options.icon !== void 0) {\n if (this.options.icon.code !== void 0) {\n ctx.font = (selected ? \"bold \" : \"\") + this.height / 2 + \"px \" + (this.options.icon.face || \"FontAwesome\");\n ctx.fillStyle = this.options.icon.color || \"black\";\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n ctx.fillText(this.options.icon.code, x, y);\n }\n }\n return {\n drawExternalLabel: function drawExternalLabel() {\n if (_this.options.label !== void 0) {\n _this.labelModule.calculateLabelSize(ctx, selected, hover, x, y, \"hanging\");\n var yLabel = y + 0.5 * _this.height + 0.5 * _this.labelModule.size.height;\n _this.labelModule.draw(ctx, x, yLabel, selected, hover, \"hanging\");\n }\n _this.updateBoundingBox(x, y);\n }\n };\n }\n }, {\n key: \"updateBoundingBox\",\n value: function updateBoundingBox(x, y) {\n this.boundingBox.top = y - this.options.size;\n this.boundingBox.left = x - this.options.size;\n this.boundingBox.right = x + this.options.size;\n this.boundingBox.bottom = y + this.options.size;\n if (this.options.label !== void 0 && this.labelModule.size.width > 0) {\n this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left);\n this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width);\n this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelModule.size.height);\n }\n }\n }]);\n return ShapeBase2;\n}(NodeBase);\nfunction ownKeys$3(object2, enumerableOnly) {\n var keys$12 = keys3(object2);\n if (getOwnPropertySymbols3) {\n var symbols = getOwnPropertySymbols3(object2);\n if (enumerableOnly) {\n symbols = filter2(symbols).call(symbols, function(sym) {\n return getOwnPropertyDescriptor$2(object2, sym).enumerable;\n });\n }\n keys$12.push.apply(keys$12, symbols);\n }\n return keys$12;\n}\nfunction _objectSpread$3(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n var _context;\n forEach$2(_context = ownKeys$3(Object(source), true)).call(_context, function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (getOwnPropertyDescriptors2) {\n defineProperties4(target, getOwnPropertyDescriptors2(source));\n } else {\n var _context2;\n forEach$2(_context2 = ownKeys$3(Object(source))).call(_context2, function(key) {\n defineProperty$5(target, key, getOwnPropertyDescriptor$2(source, key));\n });\n }\n }\n return target;\n}\nfunction _createSuper$n(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$n();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$n() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar CustomShape = /* @__PURE__ */ function(_ShapeBase) {\n _inherits(CustomShape2, _ShapeBase);\n var _super = _createSuper$n(CustomShape2);\n function CustomShape2(options2, body, labelModule, ctxRenderer) {\n var _this;\n _classCallCheck(this, CustomShape2);\n _this = _super.call(this, options2, body, labelModule, ctxRenderer);\n _this.ctxRenderer = ctxRenderer;\n return _this;\n }\n _createClass(CustomShape2, [{\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n this.resize(ctx, selected, hover, values3);\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n ctx.save();\n var drawLater = this.ctxRenderer({\n ctx,\n id: this.options.id,\n x,\n y,\n state: {\n selected,\n hover\n },\n style: _objectSpread$3({}, values3),\n label: this.options.label\n });\n if (drawLater.drawNode != null) {\n drawLater.drawNode();\n }\n ctx.restore();\n if (drawLater.drawExternalLabel) {\n var drawExternalLabel = drawLater.drawExternalLabel;\n drawLater.drawExternalLabel = function() {\n ctx.save();\n drawExternalLabel();\n ctx.restore();\n };\n }\n if (drawLater.nodeDimensions) {\n this.customSizeWidth = drawLater.nodeDimensions.width;\n this.customSizeHeight = drawLater.nodeDimensions.height;\n }\n return drawLater;\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx, angle);\n }\n }]);\n return CustomShape2;\n}(ShapeBase);\nfunction _createSuper$m(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$m();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$m() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar Database = /* @__PURE__ */ function(_NodeBase) {\n _inherits(Database2, _NodeBase);\n var _super = _createSuper$m(Database2);\n function Database2(options2, body, labelModule) {\n var _this;\n _classCallCheck(this, Database2);\n _this = _super.call(this, options2, body, labelModule);\n _this._setMargins(labelModule);\n return _this;\n }\n _createClass(Database2, [{\n key: \"resize\",\n value: function resize(ctx, selected, hover) {\n if (this.needsRefresh(selected, hover)) {\n var dimensions = this.getDimensionsFromLabel(ctx, selected, hover);\n var size = dimensions.width + this.margin.right + this.margin.left;\n this.width = size;\n this.height = size;\n this.radius = this.width / 2;\n }\n }\n }, {\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n this.resize(ctx, selected, hover);\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n this.initContextForDraw(ctx, values3);\n drawDatabase(ctx, x - this.width / 2, y - this.height / 2, this.width, this.height);\n this.performFill(ctx, values3);\n this.updateBoundingBox(x, y, ctx, selected, hover);\n this.labelModule.draw(ctx, this.left + this.textSize.width / 2 + this.margin.left, this.top + this.textSize.height / 2 + this.margin.top, selected, hover);\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx, angle);\n }\n }]);\n return Database2;\n}(NodeBase);\nfunction _createSuper$l(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$l();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$l() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar Diamond$1 = /* @__PURE__ */ function(_ShapeBase) {\n _inherits(Diamond2, _ShapeBase);\n var _super = _createSuper$l(Diamond2);\n function Diamond2(options2, body, labelModule) {\n _classCallCheck(this, Diamond2);\n return _super.call(this, options2, body, labelModule);\n }\n _createClass(Diamond2, [{\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n return this._drawShape(ctx, \"diamond\", 4, x, y, selected, hover, values3);\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx, angle);\n }\n }]);\n return Diamond2;\n}(ShapeBase);\nfunction _createSuper$k(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$k();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$k() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar Dot = /* @__PURE__ */ function(_ShapeBase) {\n _inherits(Dot2, _ShapeBase);\n var _super = _createSuper$k(Dot2);\n function Dot2(options2, body, labelModule) {\n _classCallCheck(this, Dot2);\n return _super.call(this, options2, body, labelModule);\n }\n _createClass(Dot2, [{\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n return this._drawShape(ctx, \"circle\", 2, x, y, selected, hover, values3);\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx) {\n if (ctx) {\n this.resize(ctx);\n }\n return this.options.size;\n }\n }]);\n return Dot2;\n}(ShapeBase);\nfunction _createSuper$j(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$j();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$j() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar Ellipse = /* @__PURE__ */ function(_NodeBase) {\n _inherits(Ellipse2, _NodeBase);\n var _super = _createSuper$j(Ellipse2);\n function Ellipse2(options2, body, labelModule) {\n _classCallCheck(this, Ellipse2);\n return _super.call(this, options2, body, labelModule);\n }\n _createClass(Ellipse2, [{\n key: \"resize\",\n value: function resize(ctx) {\n var selected = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.selected;\n var hover = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : this.hover;\n if (this.needsRefresh(selected, hover)) {\n var dimensions = this.getDimensionsFromLabel(ctx, selected, hover);\n this.height = dimensions.height * 2;\n this.width = dimensions.width + dimensions.height;\n this.radius = 0.5 * this.width;\n }\n }\n }, {\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n this.resize(ctx, selected, hover);\n this.left = x - this.width * 0.5;\n this.top = y - this.height * 0.5;\n this.initContextForDraw(ctx, values3);\n drawEllipse(ctx, this.left, this.top, this.width, this.height);\n this.performFill(ctx, values3);\n this.updateBoundingBox(x, y, ctx, selected, hover);\n this.labelModule.draw(ctx, x, y, selected, hover);\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx, angle) {\n if (ctx) {\n this.resize(ctx);\n }\n var a = this.width * 0.5;\n var b = this.height * 0.5;\n var w = Math.sin(angle) * a;\n var h = Math.cos(angle) * b;\n return a * b / Math.sqrt(w * w + h * h);\n }\n }]);\n return Ellipse2;\n}(NodeBase);\nfunction _createSuper$i(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$i();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$i() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar Icon = /* @__PURE__ */ function(_NodeBase) {\n _inherits(Icon2, _NodeBase);\n var _super = _createSuper$i(Icon2);\n function Icon2(options2, body, labelModule) {\n var _this;\n _classCallCheck(this, Icon2);\n _this = _super.call(this, options2, body, labelModule);\n _this._setMargins(labelModule);\n return _this;\n }\n _createClass(Icon2, [{\n key: \"resize\",\n value: function resize(ctx, selected, hover) {\n if (this.needsRefresh(selected, hover)) {\n this.iconSize = {\n width: Number(this.options.icon.size),\n height: Number(this.options.icon.size)\n };\n this.width = this.iconSize.width + this.margin.right + this.margin.left;\n this.height = this.iconSize.height + this.margin.top + this.margin.bottom;\n this.radius = 0.5 * this.width;\n }\n }\n }, {\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n var _this2 = this;\n this.resize(ctx, selected, hover);\n this.options.icon.size = this.options.icon.size || 50;\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n this._icon(ctx, x, y, selected, hover, values3);\n return {\n drawExternalLabel: function drawExternalLabel() {\n if (_this2.options.label !== void 0) {\n var iconTextSpacing = 5;\n _this2.labelModule.draw(ctx, _this2.left + _this2.iconSize.width / 2 + _this2.margin.left, y + _this2.height / 2 + iconTextSpacing, selected);\n }\n _this2.updateBoundingBox(x, y);\n }\n };\n }\n }, {\n key: \"updateBoundingBox\",\n value: function updateBoundingBox(x, y) {\n this.boundingBox.top = y - this.options.icon.size * 0.5;\n this.boundingBox.left = x - this.options.icon.size * 0.5;\n this.boundingBox.right = x + this.options.icon.size * 0.5;\n this.boundingBox.bottom = y + this.options.icon.size * 0.5;\n if (this.options.label !== void 0 && this.labelModule.size.width > 0) {\n var iconTextSpacing = 5;\n this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left);\n this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width);\n this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelModule.size.height + iconTextSpacing);\n }\n }\n }, {\n key: \"_icon\",\n value: function _icon(ctx, x, y, selected, hover, values3) {\n var iconSize = Number(this.options.icon.size);\n if (this.options.icon.code !== void 0) {\n ctx.font = [\n this.options.icon.weight != null ? this.options.icon.weight : selected ? \"bold\" : \"\",\n (this.options.icon.weight != null && selected ? 5 : 0) + iconSize + \"px\",\n this.options.icon.face\n ].join(\" \");\n ctx.fillStyle = this.options.icon.color || \"black\";\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n this.enableShadow(ctx, values3);\n ctx.fillText(this.options.icon.code, x, y);\n this.disableShadow(ctx, values3);\n } else {\n console.error(\"When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.\");\n }\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx, angle);\n }\n }]);\n return Icon2;\n}(NodeBase);\nfunction _createSuper$h(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$h();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$h() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar Image$2 = /* @__PURE__ */ function(_CircleImageBase) {\n _inherits(Image2, _CircleImageBase);\n var _super = _createSuper$h(Image2);\n function Image2(options2, body, labelModule, imageObj, imageObjAlt) {\n var _this;\n _classCallCheck(this, Image2);\n _this = _super.call(this, options2, body, labelModule);\n _this.setImages(imageObj, imageObjAlt);\n return _this;\n }\n _createClass(Image2, [{\n key: \"resize\",\n value: function resize(ctx) {\n var selected = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.selected;\n var hover = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : this.hover;\n var imageAbsent = this.imageObj.src === void 0 || this.imageObj.width === void 0 || this.imageObj.height === void 0;\n if (imageAbsent) {\n var side = this.options.size * 2;\n this.width = side;\n this.height = side;\n return;\n }\n if (this.needsRefresh(selected, hover)) {\n this._resizeImage();\n }\n }\n }, {\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n ctx.save();\n this.switchImages(selected);\n this.resize();\n var labelX = x, labelY = y;\n if (this.options.shapeProperties.coordinateOrigin === \"top-left\") {\n this.left = x;\n this.top = y;\n labelX += this.width / 2;\n labelY += this.height / 2;\n } else {\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n }\n if (this.options.shapeProperties.useBorderWithImage === true) {\n var neutralborderWidth = this.options.borderWidth;\n var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth;\n var borderWidth = (selected ? selectionLineWidth : neutralborderWidth) / this.body.view.scale;\n ctx.lineWidth = Math.min(this.width, borderWidth);\n ctx.beginPath();\n var strokeStyle = selected ? this.options.color.highlight.border : hover ? this.options.color.hover.border : this.options.color.border;\n var fillStyle = selected ? this.options.color.highlight.background : hover ? this.options.color.hover.background : this.options.color.background;\n if (values3.opacity !== void 0) {\n strokeStyle = overrideOpacity(strokeStyle, values3.opacity);\n fillStyle = overrideOpacity(fillStyle, values3.opacity);\n }\n ctx.strokeStyle = strokeStyle;\n ctx.fillStyle = fillStyle;\n ctx.rect(this.left - 0.5 * ctx.lineWidth, this.top - 0.5 * ctx.lineWidth, this.width + ctx.lineWidth, this.height + ctx.lineWidth);\n fill2(ctx).call(ctx);\n this.performStroke(ctx, values3);\n ctx.closePath();\n }\n this._drawImageAtPosition(ctx, values3);\n this._drawImageLabel(ctx, labelX, labelY, selected, hover);\n this.updateBoundingBox(x, y);\n ctx.restore();\n }\n }, {\n key: \"updateBoundingBox\",\n value: function updateBoundingBox(x, y) {\n this.resize();\n if (this.options.shapeProperties.coordinateOrigin === \"top-left\") {\n this.left = x;\n this.top = y;\n } else {\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n }\n this.boundingBox.left = this.left;\n this.boundingBox.top = this.top;\n this.boundingBox.bottom = this.top + this.height;\n this.boundingBox.right = this.left + this.width;\n if (this.options.label !== void 0 && this.labelModule.size.width > 0) {\n this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left);\n this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width);\n this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelOffset);\n }\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx, angle);\n }\n }]);\n return Image2;\n}(CircleImageBase);\nfunction _createSuper$g(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$g();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$g() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar Square = /* @__PURE__ */ function(_ShapeBase) {\n _inherits(Square2, _ShapeBase);\n var _super = _createSuper$g(Square2);\n function Square2(options2, body, labelModule) {\n _classCallCheck(this, Square2);\n return _super.call(this, options2, body, labelModule);\n }\n _createClass(Square2, [{\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n return this._drawShape(ctx, \"square\", 2, x, y, selected, hover, values3);\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx, angle);\n }\n }]);\n return Square2;\n}(ShapeBase);\nfunction _createSuper$f(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$f();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$f() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar Hexagon = /* @__PURE__ */ function(_ShapeBase) {\n _inherits(Hexagon2, _ShapeBase);\n var _super = _createSuper$f(Hexagon2);\n function Hexagon2(options2, body, labelModule) {\n _classCallCheck(this, Hexagon2);\n return _super.call(this, options2, body, labelModule);\n }\n _createClass(Hexagon2, [{\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n return this._drawShape(ctx, \"hexagon\", 4, x, y, selected, hover, values3);\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx, angle);\n }\n }]);\n return Hexagon2;\n}(ShapeBase);\nfunction _createSuper$e(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$e();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$e() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar Star = /* @__PURE__ */ function(_ShapeBase) {\n _inherits(Star2, _ShapeBase);\n var _super = _createSuper$e(Star2);\n function Star2(options2, body, labelModule) {\n _classCallCheck(this, Star2);\n return _super.call(this, options2, body, labelModule);\n }\n _createClass(Star2, [{\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n return this._drawShape(ctx, \"star\", 4, x, y, selected, hover, values3);\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx, angle);\n }\n }]);\n return Star2;\n}(ShapeBase);\nfunction _createSuper$d(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$d();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$d() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar Text = /* @__PURE__ */ function(_NodeBase) {\n _inherits(Text2, _NodeBase);\n var _super = _createSuper$d(Text2);\n function Text2(options2, body, labelModule) {\n var _this;\n _classCallCheck(this, Text2);\n _this = _super.call(this, options2, body, labelModule);\n _this._setMargins(labelModule);\n return _this;\n }\n _createClass(Text2, [{\n key: \"resize\",\n value: function resize(ctx, selected, hover) {\n if (this.needsRefresh(selected, hover)) {\n this.textSize = this.labelModule.getTextSize(ctx, selected, hover);\n this.width = this.textSize.width + this.margin.right + this.margin.left;\n this.height = this.textSize.height + this.margin.top + this.margin.bottom;\n this.radius = 0.5 * this.width;\n }\n }\n }, {\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n this.resize(ctx, selected, hover);\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n this.enableShadow(ctx, values3);\n this.labelModule.draw(ctx, this.left + this.textSize.width / 2 + this.margin.left, this.top + this.textSize.height / 2 + this.margin.top, selected, hover);\n this.disableShadow(ctx, values3);\n this.updateBoundingBox(x, y, ctx, selected, hover);\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx, angle);\n }\n }]);\n return Text2;\n}(NodeBase);\nfunction _createSuper$c(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$c();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$c() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar Triangle$1 = /* @__PURE__ */ function(_ShapeBase) {\n _inherits(Triangle2, _ShapeBase);\n var _super = _createSuper$c(Triangle2);\n function Triangle2(options2, body, labelModule) {\n _classCallCheck(this, Triangle2);\n return _super.call(this, options2, body, labelModule);\n }\n _createClass(Triangle2, [{\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n return this._drawShape(ctx, \"triangle\", 3, x, y, selected, hover, values3);\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx, angle);\n }\n }]);\n return Triangle2;\n}(ShapeBase);\nfunction _createSuper$b(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$b();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$b() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar TriangleDown = /* @__PURE__ */ function(_ShapeBase) {\n _inherits(TriangleDown2, _ShapeBase);\n var _super = _createSuper$b(TriangleDown2);\n function TriangleDown2(options2, body, labelModule) {\n _classCallCheck(this, TriangleDown2);\n return _super.call(this, options2, body, labelModule);\n }\n _createClass(TriangleDown2, [{\n key: \"draw\",\n value: function draw(ctx, x, y, selected, hover, values3) {\n return this._drawShape(ctx, \"triangleDown\", 3, x, y, selected, hover, values3);\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx, angle);\n }\n }]);\n return TriangleDown2;\n}(ShapeBase);\nfunction ownKeys$2(object2, enumerableOnly) {\n var keys$12 = keys3(object2);\n if (getOwnPropertySymbols3) {\n var symbols = getOwnPropertySymbols3(object2);\n if (enumerableOnly) {\n symbols = filter2(symbols).call(symbols, function(sym) {\n return getOwnPropertyDescriptor$2(object2, sym).enumerable;\n });\n }\n keys$12.push.apply(keys$12, symbols);\n }\n return keys$12;\n}\nfunction _objectSpread$2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n var _context5;\n forEach$2(_context5 = ownKeys$2(Object(source), true)).call(_context5, function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (getOwnPropertyDescriptors2) {\n defineProperties4(target, getOwnPropertyDescriptors2(source));\n } else {\n var _context6;\n forEach$2(_context6 = ownKeys$2(Object(source))).call(_context6, function(key) {\n defineProperty$5(target, key, getOwnPropertyDescriptor$2(source, key));\n });\n }\n }\n return target;\n}\nvar Node = /* @__PURE__ */ function() {\n function Node2(options2, body, imagelist, grouplist, globalOptions, defaultOptions) {\n _classCallCheck(this, Node2);\n this.options = bridgeObject(globalOptions);\n this.globalOptions = globalOptions;\n this.defaultOptions = defaultOptions;\n this.body = body;\n this.edges = [];\n this.id = void 0;\n this.imagelist = imagelist;\n this.grouplist = grouplist;\n this.x = void 0;\n this.y = void 0;\n this.baseSize = this.options.size;\n this.baseFontSize = this.options.font.size;\n this.predefinedPosition = false;\n this.selected = false;\n this.hover = false;\n this.labelModule = new Label(this.body, this.options, false);\n this.setOptions(options2);\n }\n _createClass(Node2, [{\n key: \"attachEdge\",\n value: function attachEdge(edge) {\n var _context;\n if (indexOf2(_context = this.edges).call(_context, edge) === -1) {\n this.edges.push(edge);\n }\n }\n }, {\n key: \"detachEdge\",\n value: function detachEdge(edge) {\n var _context2;\n var index2 = indexOf2(_context2 = this.edges).call(_context2, edge);\n if (index2 != -1) {\n var _context3;\n splice2(_context3 = this.edges).call(_context3, index2, 1);\n }\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options2) {\n var currentShape = this.options.shape;\n if (!options2) {\n return;\n }\n if (typeof options2.color !== \"undefined\") {\n this._localColor = options2.color;\n }\n if (options2.id !== void 0) {\n this.id = options2.id;\n }\n if (this.id === void 0) {\n throw new Error(\"Node must have an id\");\n }\n Node2.checkMass(options2, this.id);\n if (options2.x !== void 0) {\n if (options2.x === null) {\n this.x = void 0;\n this.predefinedPosition = false;\n } else {\n this.x = _parseInt(options2.x);\n this.predefinedPosition = true;\n }\n }\n if (options2.y !== void 0) {\n if (options2.y === null) {\n this.y = void 0;\n this.predefinedPosition = false;\n } else {\n this.y = _parseInt(options2.y);\n this.predefinedPosition = true;\n }\n }\n if (options2.size !== void 0) {\n this.baseSize = options2.size;\n }\n if (options2.value !== void 0) {\n options2.value = _parseFloat(options2.value);\n }\n Node2.parseOptions(this.options, options2, true, this.globalOptions, this.grouplist);\n var pile = [options2, this.options, this.defaultOptions];\n this.chooser = choosify(\"node\", pile);\n this._load_images();\n this.updateLabelModule(options2);\n if (options2.opacity !== void 0 && Node2.checkOpacity(options2.opacity)) {\n this.options.opacity = options2.opacity;\n }\n this.updateShape(currentShape);\n return options2.hidden !== void 0 || options2.physics !== void 0;\n }\n }, {\n key: \"_load_images\",\n value: function _load_images() {\n if (this.options.shape === \"circularImage\" || this.options.shape === \"image\") {\n if (this.options.image === void 0) {\n throw new Error(\"Option image must be defined for node type '\" + this.options.shape + \"'\");\n }\n }\n if (this.options.image === void 0) {\n return;\n }\n if (this.imagelist === void 0) {\n throw new Error(\"Internal Error: No images provided\");\n }\n if (typeof this.options.image === \"string\") {\n this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage, this.id);\n } else {\n if (this.options.image.unselected === void 0) {\n throw new Error(\"No unselected image provided\");\n }\n this.imageObj = this.imagelist.load(this.options.image.unselected, this.options.brokenImage, this.id);\n if (this.options.image.selected !== void 0) {\n this.imageObjAlt = this.imagelist.load(this.options.image.selected, this.options.brokenImage, this.id);\n } else {\n this.imageObjAlt = void 0;\n }\n }\n }\n }, {\n key: \"getFormattingValues\",\n value: function getFormattingValues() {\n var values3 = {\n color: this.options.color.background,\n opacity: this.options.opacity,\n borderWidth: this.options.borderWidth,\n borderColor: this.options.color.border,\n size: this.options.size,\n borderDashes: this.options.shapeProperties.borderDashes,\n borderRadius: this.options.shapeProperties.borderRadius,\n shadow: this.options.shadow.enabled,\n shadowColor: this.options.shadow.color,\n shadowSize: this.options.shadow.size,\n shadowX: this.options.shadow.x,\n shadowY: this.options.shadow.y\n };\n if (this.selected || this.hover) {\n if (this.chooser === true) {\n if (this.selected) {\n if (this.options.borderWidthSelected != null) {\n values3.borderWidth = this.options.borderWidthSelected;\n } else {\n values3.borderWidth *= 2;\n }\n values3.color = this.options.color.highlight.background;\n values3.borderColor = this.options.color.highlight.border;\n values3.shadow = this.options.shadow.enabled;\n } else if (this.hover) {\n values3.color = this.options.color.hover.background;\n values3.borderColor = this.options.color.hover.border;\n values3.shadow = this.options.shadow.enabled;\n }\n } else if (typeof this.chooser === \"function\") {\n this.chooser(values3, this.options.id, this.selected, this.hover);\n if (values3.shadow === false) {\n if (values3.shadowColor !== this.options.shadow.color || values3.shadowSize !== this.options.shadow.size || values3.shadowX !== this.options.shadow.x || values3.shadowY !== this.options.shadow.y) {\n values3.shadow = true;\n }\n }\n }\n } else {\n values3.shadow = this.options.shadow.enabled;\n }\n if (this.options.opacity !== void 0) {\n var opacity = this.options.opacity;\n values3.borderColor = overrideOpacity(values3.borderColor, opacity);\n values3.color = overrideOpacity(values3.color, opacity);\n values3.shadowColor = overrideOpacity(values3.shadowColor, opacity);\n }\n return values3;\n }\n }, {\n key: \"updateLabelModule\",\n value: function updateLabelModule(options2) {\n if (this.options.label === void 0 || this.options.label === null) {\n this.options.label = \"\";\n }\n Node2.updateGroupOptions(this.options, _objectSpread$2(_objectSpread$2({}, options2), {}, {\n color: options2 && options2.color || this._localColor || void 0\n }), this.grouplist);\n var currentGroup = this.grouplist.get(this.options.group, false);\n var pile = [\n options2,\n this.options,\n currentGroup,\n this.globalOptions,\n this.defaultOptions\n ];\n this.labelModule.update(this.options, pile);\n if (this.labelModule.baseSize !== void 0) {\n this.baseFontSize = this.labelModule.baseSize;\n }\n }\n }, {\n key: \"updateShape\",\n value: function updateShape(currentShape) {\n if (currentShape === this.options.shape && this.shape) {\n this.shape.setOptions(this.options, this.imageObj, this.imageObjAlt);\n } else {\n switch (this.options.shape) {\n case \"box\":\n this.shape = new Box$1(this.options, this.body, this.labelModule);\n break;\n case \"circle\":\n this.shape = new Circle$1(this.options, this.body, this.labelModule);\n break;\n case \"circularImage\":\n this.shape = new CircularImage(this.options, this.body, this.labelModule, this.imageObj, this.imageObjAlt);\n break;\n case \"custom\":\n this.shape = new CustomShape(this.options, this.body, this.labelModule, this.options.ctxRenderer);\n break;\n case \"database\":\n this.shape = new Database(this.options, this.body, this.labelModule);\n break;\n case \"diamond\":\n this.shape = new Diamond$1(this.options, this.body, this.labelModule);\n break;\n case \"dot\":\n this.shape = new Dot(this.options, this.body, this.labelModule);\n break;\n case \"ellipse\":\n this.shape = new Ellipse(this.options, this.body, this.labelModule);\n break;\n case \"icon\":\n this.shape = new Icon(this.options, this.body, this.labelModule);\n break;\n case \"image\":\n this.shape = new Image$2(this.options, this.body, this.labelModule, this.imageObj, this.imageObjAlt);\n break;\n case \"square\":\n this.shape = new Square(this.options, this.body, this.labelModule);\n break;\n case \"hexagon\":\n this.shape = new Hexagon(this.options, this.body, this.labelModule);\n break;\n case \"star\":\n this.shape = new Star(this.options, this.body, this.labelModule);\n break;\n case \"text\":\n this.shape = new Text(this.options, this.body, this.labelModule);\n break;\n case \"triangle\":\n this.shape = new Triangle$1(this.options, this.body, this.labelModule);\n break;\n case \"triangleDown\":\n this.shape = new TriangleDown(this.options, this.body, this.labelModule);\n break;\n default:\n this.shape = new Ellipse(this.options, this.body, this.labelModule);\n break;\n }\n }\n this.needsRefresh();\n }\n }, {\n key: \"select\",\n value: function select() {\n this.selected = true;\n this.needsRefresh();\n }\n }, {\n key: \"unselect\",\n value: function unselect() {\n this.selected = false;\n this.needsRefresh();\n }\n }, {\n key: \"needsRefresh\",\n value: function needsRefresh() {\n this.shape.refreshNeeded = true;\n }\n }, {\n key: \"getTitle\",\n value: function getTitle() {\n return this.options.title;\n }\n }, {\n key: \"distanceToBorder\",\n value: function distanceToBorder(ctx, angle) {\n return this.shape.distanceToBorder(ctx, angle);\n }\n }, {\n key: \"isFixed\",\n value: function isFixed() {\n return this.options.fixed.x && this.options.fixed.y;\n }\n }, {\n key: \"isSelected\",\n value: function isSelected() {\n return this.selected;\n }\n }, {\n key: \"getValue\",\n value: function getValue() {\n return this.options.value;\n }\n }, {\n key: \"getLabelSize\",\n value: function getLabelSize() {\n return this.labelModule.size();\n }\n }, {\n key: \"setValueRange\",\n value: function setValueRange(min2, max2, total) {\n if (this.options.value !== void 0) {\n var scale = this.options.scaling.customScalingFunction(min2, max2, total, this.options.value);\n var sizeDiff = this.options.scaling.max - this.options.scaling.min;\n if (this.options.scaling.label.enabled === true) {\n var fontDiff = this.options.scaling.label.max - this.options.scaling.label.min;\n this.options.font.size = this.options.scaling.label.min + scale * fontDiff;\n }\n this.options.size = this.options.scaling.min + scale * sizeDiff;\n } else {\n this.options.size = this.baseSize;\n this.options.font.size = this.baseFontSize;\n }\n this.updateLabelModule();\n }\n }, {\n key: \"draw\",\n value: function draw(ctx) {\n var values3 = this.getFormattingValues();\n return this.shape.draw(ctx, this.x, this.y, this.selected, this.hover, values3) || {};\n }\n }, {\n key: \"updateBoundingBox\",\n value: function updateBoundingBox(ctx) {\n this.shape.updateBoundingBox(this.x, this.y, ctx);\n }\n }, {\n key: \"resize\",\n value: function resize(ctx) {\n var values3 = this.getFormattingValues();\n this.shape.resize(ctx, this.selected, this.hover, values3);\n }\n }, {\n key: \"getItemsOnPoint\",\n value: function getItemsOnPoint(point) {\n var ret = [];\n if (this.labelModule.visible()) {\n if (pointInRect(this.labelModule.getSize(), point)) {\n ret.push({\n nodeId: this.id,\n labelId: 0\n });\n }\n }\n if (pointInRect(this.shape.boundingBox, point)) {\n ret.push({\n nodeId: this.id\n });\n }\n return ret;\n }\n }, {\n key: \"isOverlappingWith\",\n value: function isOverlappingWith(obj) {\n return this.shape.left < obj.right && this.shape.left + this.shape.width > obj.left && this.shape.top < obj.bottom && this.shape.top + this.shape.height > obj.top;\n }\n }, {\n key: \"isBoundingBoxOverlappingWith\",\n value: function isBoundingBoxOverlappingWith(obj) {\n return this.shape.boundingBox.left < obj.right && this.shape.boundingBox.right > obj.left && this.shape.boundingBox.top < obj.bottom && this.shape.boundingBox.bottom > obj.top;\n }\n }], [{\n key: \"checkOpacity\",\n value: function checkOpacity(opacity) {\n return 0 <= opacity && opacity <= 1;\n }\n }, {\n key: \"checkCoordinateOrigin\",\n value: function checkCoordinateOrigin(origin) {\n return origin === void 0 || origin === \"center\" || origin === \"top-left\";\n }\n }, {\n key: \"updateGroupOptions\",\n value: function updateGroupOptions(parentOptions, newOptions, groupList) {\n var _context4;\n if (groupList === void 0)\n return;\n var group = parentOptions.group;\n if (newOptions !== void 0 && newOptions.group !== void 0 && group !== newOptions.group) {\n throw new Error(\"updateGroupOptions: group values in options don't match.\");\n }\n var hasGroup = typeof group === \"number\" || typeof group === \"string\" && group != \"\";\n if (!hasGroup)\n return;\n var groupObj = groupList.get(group);\n if (groupObj.opacity !== void 0 && newOptions.opacity === void 0) {\n if (!Node2.checkOpacity(groupObj.opacity)) {\n console.error(\"Invalid option for node opacity. Value must be between 0 and 1, found: \" + groupObj.opacity);\n groupObj.opacity = void 0;\n }\n }\n var skipProperties = filter2(_context4 = getOwnPropertyNames5(newOptions)).call(_context4, function(p) {\n return newOptions[p] != null;\n });\n skipProperties.push(\"font\");\n selectiveNotDeepExtend(skipProperties, parentOptions, groupObj);\n parentOptions.color = parseColor(parentOptions.color);\n }\n }, {\n key: \"parseOptions\",\n value: function parseOptions(parentOptions, newOptions) {\n var allowDeletion = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n var globalOptions = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};\n var groupList = arguments.length > 4 ? arguments[4] : void 0;\n var fields = [\"color\", \"fixed\", \"shadow\"];\n selectiveNotDeepExtend(fields, parentOptions, newOptions, allowDeletion);\n Node2.checkMass(newOptions);\n if (parentOptions.opacity !== void 0) {\n if (!Node2.checkOpacity(parentOptions.opacity)) {\n console.error(\"Invalid option for node opacity. Value must be between 0 and 1, found: \" + parentOptions.opacity);\n parentOptions.opacity = void 0;\n }\n }\n if (newOptions.opacity !== void 0) {\n if (!Node2.checkOpacity(newOptions.opacity)) {\n console.error(\"Invalid option for node opacity. Value must be between 0 and 1, found: \" + newOptions.opacity);\n newOptions.opacity = void 0;\n }\n }\n if (newOptions.shapeProperties && !Node2.checkCoordinateOrigin(newOptions.shapeProperties.coordinateOrigin)) {\n console.error(\"Invalid option for node coordinateOrigin, found: \" + newOptions.shapeProperties.coordinateOrigin);\n }\n mergeOptions(parentOptions, newOptions, \"shadow\", globalOptions);\n if (newOptions.color !== void 0 && newOptions.color !== null) {\n var parsedColor = parseColor(newOptions.color);\n fillIfDefined(parentOptions.color, parsedColor);\n } else if (allowDeletion === true && newOptions.color === null) {\n parentOptions.color = bridgeObject(globalOptions.color);\n }\n if (newOptions.fixed !== void 0 && newOptions.fixed !== null) {\n if (typeof newOptions.fixed === \"boolean\") {\n parentOptions.fixed.x = newOptions.fixed;\n parentOptions.fixed.y = newOptions.fixed;\n } else {\n if (newOptions.fixed.x !== void 0 && typeof newOptions.fixed.x === \"boolean\") {\n parentOptions.fixed.x = newOptions.fixed.x;\n }\n if (newOptions.fixed.y !== void 0 && typeof newOptions.fixed.y === \"boolean\") {\n parentOptions.fixed.y = newOptions.fixed.y;\n }\n }\n }\n if (allowDeletion === true && newOptions.font === null) {\n parentOptions.font = bridgeObject(globalOptions.font);\n }\n Node2.updateGroupOptions(parentOptions, newOptions, groupList);\n if (newOptions.scaling !== void 0) {\n mergeOptions(parentOptions.scaling, newOptions.scaling, \"label\", globalOptions.scaling);\n }\n }\n }, {\n key: \"checkMass\",\n value: function checkMass(options2, id2) {\n if (options2.mass !== void 0 && options2.mass <= 0) {\n var strId = \"\";\n if (id2 !== void 0) {\n strId = \" in node id: \" + id2;\n }\n console.error(\"%cNegative or zero mass disallowed\" + strId + \", setting mass to 1.\", VALIDATOR_PRINT_STYLE$1);\n options2.mass = 1;\n }\n }\n }]);\n return Node2;\n}();\nfunction _createForOfIteratorHelper$6(o, allowArrayLike) {\n var it2 = typeof symbol !== \"undefined\" && getIteratorMethod$1(o) || o[\"@@iterator\"];\n if (!it2) {\n if (isArray$1(o) || (it2 = _unsupportedIterableToArray$6(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it2)\n o = it2;\n var i = 0;\n var F = function F2() {\n };\n return {s: F, n: function n() {\n if (i >= o.length)\n return {done: true};\n return {done: false, value: o[i++]};\n }, e: function e(_e) {\n throw _e;\n }, f: F};\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true, didErr = false, err;\n return {s: function s() {\n it2 = it2.call(o);\n }, n: function n() {\n var step = it2.next();\n normalCompletion = step.done;\n return step;\n }, e: function e(_e2) {\n didErr = true;\n err = _e2;\n }, f: function f() {\n try {\n if (!normalCompletion && it2.return != null)\n it2.return();\n } finally {\n if (didErr)\n throw err;\n }\n }};\n}\nfunction _unsupportedIterableToArray$6(o, minLen) {\n var _context4;\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray$6(o, minLen);\n var n = slice$1(_context4 = Object.prototype.toString.call(o)).call(_context4, 8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return from$2(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray$6(o, minLen);\n}\nfunction _arrayLikeToArray$6(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nvar NodesHandler = /* @__PURE__ */ function() {\n function NodesHandler2(body, images, groups, layoutEngine) {\n var _context, _this = this;\n _classCallCheck(this, NodesHandler2);\n this.body = body;\n this.images = images;\n this.groups = groups;\n this.layoutEngine = layoutEngine;\n this.body.functions.createNode = bind$5(_context = this.create).call(_context, this);\n this.nodesListeners = {\n add: function add(event, params) {\n _this.add(params.items);\n },\n update: function update(event, params) {\n _this.update(params.items, params.data, params.oldData);\n },\n remove: function remove(event, params) {\n _this.remove(params.items);\n }\n };\n this.defaultOptions = {\n borderWidth: 1,\n borderWidthSelected: void 0,\n brokenImage: void 0,\n color: {\n border: \"#2B7CE9\",\n background: \"#97C2FC\",\n highlight: {\n border: \"#2B7CE9\",\n background: \"#D2E5FF\"\n },\n hover: {\n border: \"#2B7CE9\",\n background: \"#D2E5FF\"\n }\n },\n opacity: void 0,\n fixed: {\n x: false,\n y: false\n },\n font: {\n color: \"#343434\",\n size: 14,\n face: \"arial\",\n background: \"none\",\n strokeWidth: 0,\n strokeColor: \"#ffffff\",\n align: \"center\",\n vadjust: 0,\n multi: false,\n bold: {\n mod: \"bold\"\n },\n boldital: {\n mod: \"bold italic\"\n },\n ital: {\n mod: \"italic\"\n },\n mono: {\n mod: \"\",\n size: 15,\n face: \"monospace\",\n vadjust: 2\n }\n },\n group: void 0,\n hidden: false,\n icon: {\n face: \"FontAwesome\",\n code: void 0,\n size: 50,\n color: \"#2B7CE9\"\n },\n image: void 0,\n imagePadding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n label: void 0,\n labelHighlightBold: true,\n level: void 0,\n margin: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5\n },\n mass: 1,\n physics: true,\n scaling: {\n min: 10,\n max: 30,\n label: {\n enabled: false,\n min: 14,\n max: 30,\n maxVisible: 30,\n drawThreshold: 5\n },\n customScalingFunction: function customScalingFunction(min2, max2, total, value) {\n if (max2 === min2) {\n return 0.5;\n } else {\n var scale = 1 / (max2 - min2);\n return Math.max(0, (value - min2) * scale);\n }\n }\n },\n shadow: {\n enabled: false,\n color: \"rgba(0,0,0,0.5)\",\n size: 10,\n x: 5,\n y: 5\n },\n shape: \"ellipse\",\n shapeProperties: {\n borderDashes: false,\n borderRadius: 6,\n interpolation: true,\n useImageSize: false,\n useBorderWithImage: false,\n coordinateOrigin: \"center\"\n },\n size: 25,\n title: void 0,\n value: void 0,\n x: void 0,\n y: void 0\n };\n if (this.defaultOptions.mass <= 0) {\n throw \"Internal error: mass in defaultOptions of NodesHandler may not be zero or negative\";\n }\n this.options = bridgeObject(this.defaultOptions);\n this.bindEventListeners();\n }\n _createClass(NodesHandler2, [{\n key: \"bindEventListeners\",\n value: function bindEventListeners() {\n var _context2, _context3, _this2 = this;\n this.body.emitter.on(\"refreshNodes\", bind$5(_context2 = this.refresh).call(_context2, this));\n this.body.emitter.on(\"refresh\", bind$5(_context3 = this.refresh).call(_context3, this));\n this.body.emitter.on(\"destroy\", function() {\n forEach$1(_this2.nodesListeners, function(callback, event) {\n if (_this2.body.data.nodes)\n _this2.body.data.nodes.off(event, callback);\n });\n delete _this2.body.functions.createNode;\n delete _this2.nodesListeners.add;\n delete _this2.nodesListeners.update;\n delete _this2.nodesListeners.remove;\n delete _this2.nodesListeners;\n });\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options2) {\n if (options2 !== void 0) {\n Node.parseOptions(this.options, options2);\n if (options2.opacity !== void 0) {\n if (isNan(options2.opacity) || !_isFinite(options2.opacity) || options2.opacity < 0 || options2.opacity > 1) {\n console.error(\"Invalid option for node opacity. Value must be between 0 and 1, found: \" + options2.opacity);\n } else {\n this.options.opacity = options2.opacity;\n }\n }\n if (options2.shape !== void 0) {\n for (var nodeId in this.body.nodes) {\n if (Object.prototype.hasOwnProperty.call(this.body.nodes, nodeId)) {\n this.body.nodes[nodeId].updateShape();\n }\n }\n }\n if (typeof options2.font !== \"undefined\" || typeof options2.widthConstraint !== \"undefined\" || typeof options2.heightConstraint !== \"undefined\") {\n for (var _i = 0, _Object$keys = keys3(this.body.nodes); _i < _Object$keys.length; _i++) {\n var _nodeId = _Object$keys[_i];\n this.body.nodes[_nodeId].updateLabelModule();\n this.body.nodes[_nodeId].needsRefresh();\n }\n }\n if (options2.size !== void 0) {\n for (var _nodeId2 in this.body.nodes) {\n if (Object.prototype.hasOwnProperty.call(this.body.nodes, _nodeId2)) {\n this.body.nodes[_nodeId2].needsRefresh();\n }\n }\n }\n if (options2.hidden !== void 0 || options2.physics !== void 0) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n }\n }, {\n key: \"setData\",\n value: function setData(nodes) {\n var doNotEmit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n var oldNodesData = this.body.data.nodes;\n if (isDataViewLike(\"id\", nodes)) {\n this.body.data.nodes = nodes;\n } else if (isArray$1(nodes)) {\n this.body.data.nodes = new DataSet();\n this.body.data.nodes.add(nodes);\n } else if (!nodes) {\n this.body.data.nodes = new DataSet();\n } else {\n throw new TypeError(\"Array or DataSet expected\");\n }\n if (oldNodesData) {\n forEach$1(this.nodesListeners, function(callback, event) {\n oldNodesData.off(event, callback);\n });\n }\n this.body.nodes = {};\n if (this.body.data.nodes) {\n var me = this;\n forEach$1(this.nodesListeners, function(callback, event) {\n me.body.data.nodes.on(event, callback);\n });\n var ids = this.body.data.nodes.getIds();\n this.add(ids, true);\n }\n if (doNotEmit === false) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n }, {\n key: \"add\",\n value: function add(ids) {\n var doNotEmit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n var id2;\n var newNodes = [];\n for (var i = 0; i < ids.length; i++) {\n id2 = ids[i];\n var properties = this.body.data.nodes.get(id2);\n var node = this.create(properties);\n newNodes.push(node);\n this.body.nodes[id2] = node;\n }\n this.layoutEngine.positionInitially(newNodes);\n if (doNotEmit === false) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n }, {\n key: \"update\",\n value: function update(ids, changedData, oldData) {\n var nodes = this.body.nodes;\n var dataChanged = false;\n for (var i = 0; i < ids.length; i++) {\n var id2 = ids[i];\n var node = nodes[id2];\n var data2 = changedData[i];\n if (node !== void 0) {\n if (node.setOptions(data2)) {\n dataChanged = true;\n }\n } else {\n dataChanged = true;\n node = this.create(data2);\n nodes[id2] = node;\n }\n }\n if (!dataChanged && oldData !== void 0) {\n dataChanged = some2(changedData).call(changedData, function(newValue, index2) {\n var oldValue = oldData[index2];\n return oldValue && oldValue.level !== newValue.level;\n });\n }\n if (dataChanged === true) {\n this.body.emitter.emit(\"_dataChanged\");\n } else {\n this.body.emitter.emit(\"_dataUpdated\");\n }\n }\n }, {\n key: \"remove\",\n value: function remove(ids) {\n var nodes = this.body.nodes;\n for (var i = 0; i < ids.length; i++) {\n var id2 = ids[i];\n delete nodes[id2];\n }\n this.body.emitter.emit(\"_dataChanged\");\n }\n }, {\n key: \"create\",\n value: function create5(properties) {\n var constructorClass = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Node;\n return new constructorClass(properties, this.body, this.images, this.groups, this.options, this.defaultOptions);\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n var _this3 = this;\n var clearPositions = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;\n forEach$1(this.body.nodes, function(node, nodeId) {\n var data2 = _this3.body.data.nodes.get(nodeId);\n if (data2 !== void 0) {\n if (clearPositions === true) {\n node.setOptions({\n x: null,\n y: null\n });\n }\n node.setOptions({\n fixed: false\n });\n node.setOptions(data2);\n }\n });\n }\n }, {\n key: \"getPositions\",\n value: function getPositions(ids) {\n var dataArray = {};\n if (ids !== void 0) {\n if (isArray$1(ids) === true) {\n for (var i = 0; i < ids.length; i++) {\n if (this.body.nodes[ids[i]] !== void 0) {\n var node = this.body.nodes[ids[i]];\n dataArray[ids[i]] = {\n x: Math.round(node.x),\n y: Math.round(node.y)\n };\n }\n }\n } else {\n if (this.body.nodes[ids] !== void 0) {\n var _node = this.body.nodes[ids];\n dataArray[ids] = {\n x: Math.round(_node.x),\n y: Math.round(_node.y)\n };\n }\n }\n } else {\n for (var _i2 = 0; _i2 < this.body.nodeIndices.length; _i2++) {\n var _node2 = this.body.nodes[this.body.nodeIndices[_i2]];\n dataArray[this.body.nodeIndices[_i2]] = {\n x: Math.round(_node2.x),\n y: Math.round(_node2.y)\n };\n }\n }\n return dataArray;\n }\n }, {\n key: \"getPosition\",\n value: function getPosition(id2) {\n if (id2 == void 0) {\n throw new TypeError(\"No id was specified for getPosition method.\");\n } else if (this.body.nodes[id2] == void 0) {\n throw new ReferenceError(\"NodeId provided for getPosition does not exist. Provided: \".concat(id2));\n } else {\n return {\n x: Math.round(this.body.nodes[id2].x),\n y: Math.round(this.body.nodes[id2].y)\n };\n }\n }\n }, {\n key: \"storePositions\",\n value: function storePositions() {\n var dataArray = [];\n var dataset = this.body.data.nodes.getDataSet();\n var _iterator = _createForOfIteratorHelper$6(dataset.get()), _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done; ) {\n var dsNode = _step.value;\n var id2 = dsNode.id;\n var bodyNode = this.body.nodes[id2];\n var x = Math.round(bodyNode.x);\n var y = Math.round(bodyNode.y);\n if (dsNode.x !== x || dsNode.y !== y) {\n dataArray.push({\n id: id2,\n x,\n y\n });\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n dataset.update(dataArray);\n }\n }, {\n key: \"getBoundingBox\",\n value: function getBoundingBox(nodeId) {\n if (this.body.nodes[nodeId] !== void 0) {\n return this.body.nodes[nodeId].shape.boundingBox;\n }\n }\n }, {\n key: \"getConnectedNodes\",\n value: function getConnectedNodes(nodeId, direction) {\n var nodeList = [];\n if (this.body.nodes[nodeId] !== void 0) {\n var node = this.body.nodes[nodeId];\n var nodeObj = {};\n for (var i = 0; i < node.edges.length; i++) {\n var edge = node.edges[i];\n if (direction !== \"to\" && edge.toId == node.id) {\n if (nodeObj[edge.fromId] === void 0) {\n nodeList.push(edge.fromId);\n nodeObj[edge.fromId] = true;\n }\n } else if (direction !== \"from\" && edge.fromId == node.id) {\n if (nodeObj[edge.toId] === void 0) {\n nodeList.push(edge.toId);\n nodeObj[edge.toId] = true;\n }\n }\n }\n }\n return nodeList;\n }\n }, {\n key: \"getConnectedEdges\",\n value: function getConnectedEdges(nodeId) {\n var edgeList = [];\n if (this.body.nodes[nodeId] !== void 0) {\n var node = this.body.nodes[nodeId];\n for (var i = 0; i < node.edges.length; i++) {\n edgeList.push(node.edges[i].id);\n }\n } else {\n console.error(\"NodeId provided for getConnectedEdges does not exist. Provided: \", nodeId);\n }\n return edgeList;\n }\n }, {\n key: \"moveNode\",\n value: function moveNode(nodeId, x, y) {\n var _this4 = this;\n if (this.body.nodes[nodeId] !== void 0) {\n this.body.nodes[nodeId].x = Number(x);\n this.body.nodes[nodeId].y = Number(y);\n setTimeout$1(function() {\n _this4.body.emitter.emit(\"startSimulation\");\n }, 0);\n } else {\n console.error(\"Node id supplied to moveNode does not exist. Provided: \", nodeId);\n }\n }\n }]);\n return NodesHandler2;\n}();\nvar $$4 = _export;\nvar isObject$2 = isObject$j;\nvar anObject$1 = anObject$c;\nvar has = has$c;\nvar getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor;\nvar getPrototypeOf2 = objectGetPrototypeOf;\nfunction get$4(target, propertyKey) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var descriptor, prototype;\n if (anObject$1(target) === receiver)\n return target[propertyKey];\n if (descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey))\n return has(descriptor, \"value\") ? descriptor.value : descriptor.get === void 0 ? void 0 : descriptor.get.call(receiver);\n if (isObject$2(prototype = getPrototypeOf2(target)))\n return get$4(prototype, propertyKey, receiver);\n}\n$$4({\n target: \"Reflect\",\n stat: true\n}, {\n get: get$4\n});\nvar path$4 = path$x;\nvar get$3 = path$4.Reflect.get;\nvar parent$8 = get$3;\nvar get$2 = parent$8;\nvar parent$7 = get$2;\nvar get$1 = parent$7;\nvar get = get$1;\nvar parent$6 = getOwnPropertyDescriptor$3;\nvar getOwnPropertyDescriptor$1 = parent$6;\nvar getOwnPropertyDescriptor5 = getOwnPropertyDescriptor$1;\nfunction _superPropBase(object2, property) {\n while (!Object.prototype.hasOwnProperty.call(object2, property)) {\n object2 = _getPrototypeOf(object2);\n if (object2 === null)\n break;\n }\n return object2;\n}\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && get) {\n _get = get;\n } else {\n _get = function _get2(target2, property2, receiver2) {\n var base = _superPropBase(target2, property2);\n if (!base)\n return;\n var desc = getOwnPropertyDescriptor5(base, property2);\n if (desc.get) {\n return desc.get.call(receiver2);\n }\n return desc.value;\n };\n }\n return _get(target, property, receiver || target);\n}\nvar $$3 = _export;\nvar $hypot = Math.hypot;\nvar abs = Math.abs;\nvar sqrt = Math.sqrt;\nvar BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\n$$3({\n target: \"Math\",\n stat: true,\n forced: BUGGY\n}, {\n hypot: function hypot(value1, value2) {\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\n sum += arg;\n }\n return larg === Infinity ? Infinity : larg * sqrt(sum);\n }\n});\nvar path$3 = path$x;\nvar hypot$2 = path$3.Math.hypot;\nvar parent$5 = hypot$2;\nvar hypot$1 = parent$5;\nvar hypot2 = hypot$1;\nfunction _createSuper$a(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$a();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$a() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar EndPoint = /* @__PURE__ */ function() {\n function EndPoint2() {\n _classCallCheck(this, EndPoint2);\n }\n _createClass(EndPoint2, null, [{\n key: \"transform\",\n value: function transform(points, arrowData) {\n if (!isArray$1(points)) {\n points = [points];\n }\n var x = arrowData.point.x;\n var y = arrowData.point.y;\n var angle = arrowData.angle;\n var length2 = arrowData.length;\n for (var i = 0; i < points.length; ++i) {\n var p = points[i];\n var xt = p.x * Math.cos(angle) - p.y * Math.sin(angle);\n var yt = p.x * Math.sin(angle) + p.y * Math.cos(angle);\n p.x = x + length2 * xt;\n p.y = y + length2 * yt;\n }\n }\n }, {\n key: \"drawPath\",\n value: function drawPath(ctx, points) {\n ctx.beginPath();\n ctx.moveTo(points[0].x, points[0].y);\n for (var i = 1; i < points.length; ++i) {\n ctx.lineTo(points[i].x, points[i].y);\n }\n ctx.closePath();\n }\n }]);\n return EndPoint2;\n}();\nvar Image$1 = /* @__PURE__ */ function(_EndPoint) {\n _inherits(Image2, _EndPoint);\n var _super = _createSuper$a(Image2);\n function Image2() {\n _classCallCheck(this, Image2);\n return _super.apply(this, arguments);\n }\n _createClass(Image2, null, [{\n key: \"draw\",\n value: function draw(ctx, arrowData) {\n if (arrowData.image) {\n ctx.save();\n ctx.translate(arrowData.point.x, arrowData.point.y);\n ctx.rotate(Math.PI / 2 + arrowData.angle);\n var width = arrowData.imageWidth != null ? arrowData.imageWidth : arrowData.image.width;\n var height = arrowData.imageHeight != null ? arrowData.imageHeight : arrowData.image.height;\n arrowData.image.drawImageAtPosition(ctx, 1, -width / 2, 0, width, height);\n ctx.restore();\n }\n return false;\n }\n }]);\n return Image2;\n}(EndPoint);\nvar Arrow = /* @__PURE__ */ function(_EndPoint2) {\n _inherits(Arrow2, _EndPoint2);\n var _super2 = _createSuper$a(Arrow2);\n function Arrow2() {\n _classCallCheck(this, Arrow2);\n return _super2.apply(this, arguments);\n }\n _createClass(Arrow2, null, [{\n key: \"draw\",\n value: function draw(ctx, arrowData) {\n var points = [{\n x: 0,\n y: 0\n }, {\n x: -1,\n y: 0.3\n }, {\n x: -0.9,\n y: 0\n }, {\n x: -1,\n y: -0.3\n }];\n EndPoint.transform(points, arrowData);\n EndPoint.drawPath(ctx, points);\n return true;\n }\n }]);\n return Arrow2;\n}(EndPoint);\nvar Crow = /* @__PURE__ */ function() {\n function Crow2() {\n _classCallCheck(this, Crow2);\n }\n _createClass(Crow2, null, [{\n key: \"draw\",\n value: function draw(ctx, arrowData) {\n var points = [{\n x: -1,\n y: 0\n }, {\n x: 0,\n y: 0.3\n }, {\n x: -0.4,\n y: 0\n }, {\n x: 0,\n y: -0.3\n }];\n EndPoint.transform(points, arrowData);\n EndPoint.drawPath(ctx, points);\n return true;\n }\n }]);\n return Crow2;\n}();\nvar Curve = /* @__PURE__ */ function() {\n function Curve2() {\n _classCallCheck(this, Curve2);\n }\n _createClass(Curve2, null, [{\n key: \"draw\",\n value: function draw(ctx, arrowData) {\n var point = {\n x: -0.4,\n y: 0\n };\n EndPoint.transform(point, arrowData);\n ctx.strokeStyle = ctx.fillStyle;\n ctx.fillStyle = \"rgba(0, 0, 0, 0)\";\n var pi = Math.PI;\n var startAngle = arrowData.angle - pi / 2;\n var endAngle = arrowData.angle + pi / 2;\n ctx.beginPath();\n ctx.arc(point.x, point.y, arrowData.length * 0.4, startAngle, endAngle, false);\n ctx.stroke();\n return true;\n }\n }]);\n return Curve2;\n}();\nvar InvertedCurve = /* @__PURE__ */ function() {\n function InvertedCurve2() {\n _classCallCheck(this, InvertedCurve2);\n }\n _createClass(InvertedCurve2, null, [{\n key: \"draw\",\n value: function draw(ctx, arrowData) {\n var point = {\n x: -0.3,\n y: 0\n };\n EndPoint.transform(point, arrowData);\n ctx.strokeStyle = ctx.fillStyle;\n ctx.fillStyle = \"rgba(0, 0, 0, 0)\";\n var pi = Math.PI;\n var startAngle = arrowData.angle + pi / 2;\n var endAngle = arrowData.angle + 3 * pi / 2;\n ctx.beginPath();\n ctx.arc(point.x, point.y, arrowData.length * 0.4, startAngle, endAngle, false);\n ctx.stroke();\n return true;\n }\n }]);\n return InvertedCurve2;\n}();\nvar Triangle = /* @__PURE__ */ function() {\n function Triangle2() {\n _classCallCheck(this, Triangle2);\n }\n _createClass(Triangle2, null, [{\n key: \"draw\",\n value: function draw(ctx, arrowData) {\n var points = [{\n x: 0.02,\n y: 0\n }, {\n x: -1,\n y: 0.3\n }, {\n x: -1,\n y: -0.3\n }];\n EndPoint.transform(points, arrowData);\n EndPoint.drawPath(ctx, points);\n return true;\n }\n }]);\n return Triangle2;\n}();\nvar InvertedTriangle = /* @__PURE__ */ function() {\n function InvertedTriangle2() {\n _classCallCheck(this, InvertedTriangle2);\n }\n _createClass(InvertedTriangle2, null, [{\n key: \"draw\",\n value: function draw(ctx, arrowData) {\n var points = [{\n x: 0,\n y: 0.3\n }, {\n x: 0,\n y: -0.3\n }, {\n x: -1,\n y: 0\n }];\n EndPoint.transform(points, arrowData);\n EndPoint.drawPath(ctx, points);\n return true;\n }\n }]);\n return InvertedTriangle2;\n}();\nvar Circle = /* @__PURE__ */ function() {\n function Circle2() {\n _classCallCheck(this, Circle2);\n }\n _createClass(Circle2, null, [{\n key: \"draw\",\n value: function draw(ctx, arrowData) {\n var point = {\n x: -0.4,\n y: 0\n };\n EndPoint.transform(point, arrowData);\n drawCircle(ctx, point.x, point.y, arrowData.length * 0.4);\n return true;\n }\n }]);\n return Circle2;\n}();\nvar Bar = /* @__PURE__ */ function() {\n function Bar2() {\n _classCallCheck(this, Bar2);\n }\n _createClass(Bar2, null, [{\n key: \"draw\",\n value: function draw(ctx, arrowData) {\n var points = [{\n x: 0,\n y: 0.5\n }, {\n x: 0,\n y: -0.5\n }, {\n x: -0.15,\n y: -0.5\n }, {\n x: -0.15,\n y: 0.5\n }];\n EndPoint.transform(points, arrowData);\n EndPoint.drawPath(ctx, points);\n return true;\n }\n }]);\n return Bar2;\n}();\nvar Box = /* @__PURE__ */ function() {\n function Box2() {\n _classCallCheck(this, Box2);\n }\n _createClass(Box2, null, [{\n key: \"draw\",\n value: function draw(ctx, arrowData) {\n var points = [{\n x: 0,\n y: 0.3\n }, {\n x: 0,\n y: -0.3\n }, {\n x: -0.6,\n y: -0.3\n }, {\n x: -0.6,\n y: 0.3\n }];\n EndPoint.transform(points, arrowData);\n EndPoint.drawPath(ctx, points);\n return true;\n }\n }]);\n return Box2;\n}();\nvar Diamond = /* @__PURE__ */ function() {\n function Diamond2() {\n _classCallCheck(this, Diamond2);\n }\n _createClass(Diamond2, null, [{\n key: \"draw\",\n value: function draw(ctx, arrowData) {\n var points = [{\n x: 0,\n y: 0\n }, {\n x: -0.5,\n y: -0.3\n }, {\n x: -1,\n y: 0\n }, {\n x: -0.5,\n y: 0.3\n }];\n EndPoint.transform(points, arrowData);\n EndPoint.drawPath(ctx, points);\n return true;\n }\n }]);\n return Diamond2;\n}();\nvar Vee = /* @__PURE__ */ function() {\n function Vee2() {\n _classCallCheck(this, Vee2);\n }\n _createClass(Vee2, null, [{\n key: \"draw\",\n value: function draw(ctx, arrowData) {\n var points = [{\n x: -1,\n y: 0.3\n }, {\n x: -0.5,\n y: 0\n }, {\n x: -1,\n y: -0.3\n }, {\n x: 0,\n y: 0\n }];\n EndPoint.transform(points, arrowData);\n EndPoint.drawPath(ctx, points);\n return true;\n }\n }]);\n return Vee2;\n}();\nvar EndPoints = /* @__PURE__ */ function() {\n function EndPoints2() {\n _classCallCheck(this, EndPoints2);\n }\n _createClass(EndPoints2, null, [{\n key: \"draw\",\n value: function draw(ctx, arrowData) {\n var type;\n if (arrowData.type) {\n type = arrowData.type.toLowerCase();\n }\n switch (type) {\n case \"image\":\n return Image$1.draw(ctx, arrowData);\n case \"circle\":\n return Circle.draw(ctx, arrowData);\n case \"box\":\n return Box.draw(ctx, arrowData);\n case \"crow\":\n return Crow.draw(ctx, arrowData);\n case \"curve\":\n return Curve.draw(ctx, arrowData);\n case \"diamond\":\n return Diamond.draw(ctx, arrowData);\n case \"inv_curve\":\n return InvertedCurve.draw(ctx, arrowData);\n case \"triangle\":\n return Triangle.draw(ctx, arrowData);\n case \"inv_triangle\":\n return InvertedTriangle.draw(ctx, arrowData);\n case \"bar\":\n return Bar.draw(ctx, arrowData);\n case \"vee\":\n return Vee.draw(ctx, arrowData);\n case \"arrow\":\n default:\n return Arrow.draw(ctx, arrowData);\n }\n }\n }]);\n return EndPoints2;\n}();\nfunction ownKeys$1(object2, enumerableOnly) {\n var keys$12 = keys3(object2);\n if (getOwnPropertySymbols3) {\n var symbols = getOwnPropertySymbols3(object2);\n if (enumerableOnly) {\n symbols = filter2(symbols).call(symbols, function(sym) {\n return getOwnPropertyDescriptor$2(object2, sym).enumerable;\n });\n }\n keys$12.push.apply(keys$12, symbols);\n }\n return keys$12;\n}\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n var _context2;\n forEach$2(_context2 = ownKeys$1(Object(source), true)).call(_context2, function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (getOwnPropertyDescriptors2) {\n defineProperties4(target, getOwnPropertyDescriptors2(source));\n } else {\n var _context3;\n forEach$2(_context3 = ownKeys$1(Object(source))).call(_context3, function(key) {\n defineProperty$5(target, key, getOwnPropertyDescriptor$2(source, key));\n });\n }\n }\n return target;\n}\nvar EdgeBase = /* @__PURE__ */ function() {\n function EdgeBase2(options2, _body, _labelModule) {\n _classCallCheck(this, EdgeBase2);\n this._body = _body;\n this._labelModule = _labelModule;\n this.color = {};\n this.colorDirty = true;\n this.hoverWidth = 1.5;\n this.selectionWidth = 2;\n this.setOptions(options2);\n this.fromPoint = this.from;\n this.toPoint = this.to;\n }\n _createClass(EdgeBase2, [{\n key: \"connect\",\n value: function connect() {\n this.from = this._body.nodes[this.options.from];\n this.to = this._body.nodes[this.options.to];\n }\n }, {\n key: \"cleanup\",\n value: function cleanup() {\n return false;\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options2) {\n this.options = options2;\n this.from = this._body.nodes[this.options.from];\n this.to = this._body.nodes[this.options.to];\n this.id = this.options.id;\n }\n }, {\n key: \"drawLine\",\n value: function drawLine(ctx, values3, _selected, _hover) {\n var viaNode = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : this.getViaNode();\n ctx.strokeStyle = this.getColor(ctx, values3);\n ctx.lineWidth = values3.width;\n if (values3.dashes !== false) {\n this._drawDashedLine(ctx, values3, viaNode);\n } else {\n this._drawLine(ctx, values3, viaNode);\n }\n }\n }, {\n key: \"_drawLine\",\n value: function _drawLine(ctx, values3, viaNode, fromPoint, toPoint) {\n if (this.from != this.to) {\n this._line(ctx, values3, viaNode, fromPoint, toPoint);\n } else {\n var _this$_getCircleData = this._getCircleData(ctx), _this$_getCircleData2 = _slicedToArray(_this$_getCircleData, 3), x = _this$_getCircleData2[0], y = _this$_getCircleData2[1], radius = _this$_getCircleData2[2];\n this._circle(ctx, values3, x, y, radius);\n }\n }\n }, {\n key: \"_drawDashedLine\",\n value: function _drawDashedLine(ctx, values3, viaNode, _fromPoint, _toPoint) {\n ctx.lineCap = \"round\";\n var pattern = isArray$1(values3.dashes) ? values3.dashes : [5, 5];\n if (ctx.setLineDash !== void 0) {\n ctx.save();\n ctx.setLineDash(pattern);\n ctx.lineDashOffset = 0;\n if (this.from != this.to) {\n this._line(ctx, values3, viaNode);\n } else {\n var _this$_getCircleData3 = this._getCircleData(ctx), _this$_getCircleData4 = _slicedToArray(_this$_getCircleData3, 3), x = _this$_getCircleData4[0], y = _this$_getCircleData4[1], radius = _this$_getCircleData4[2];\n this._circle(ctx, values3, x, y, radius);\n }\n ctx.setLineDash([0]);\n ctx.lineDashOffset = 0;\n ctx.restore();\n } else {\n if (this.from != this.to) {\n drawDashedLine(ctx, this.from.x, this.from.y, this.to.x, this.to.y, pattern);\n } else {\n var _this$_getCircleData5 = this._getCircleData(ctx), _this$_getCircleData6 = _slicedToArray(_this$_getCircleData5, 3), _x = _this$_getCircleData6[0], _y = _this$_getCircleData6[1], _radius = _this$_getCircleData6[2];\n this._circle(ctx, values3, _x, _y, _radius);\n }\n this.enableShadow(ctx, values3);\n ctx.stroke();\n this.disableShadow(ctx, values3);\n }\n }\n }, {\n key: \"findBorderPosition\",\n value: function findBorderPosition(node, ctx, options2) {\n if (this.from != this.to) {\n return this._findBorderPosition(node, ctx, options2);\n } else {\n return this._findBorderPositionCircle(node, ctx, options2);\n }\n }\n }, {\n key: \"findBorderPositions\",\n value: function findBorderPositions(ctx) {\n if (this.from != this.to) {\n return {\n from: this._findBorderPosition(this.from, ctx),\n to: this._findBorderPosition(this.to, ctx)\n };\n } else {\n var _context;\n var _this$_getCircleData$ = slice$1(_context = this._getCircleData(ctx)).call(_context, 0, 2), _this$_getCircleData$2 = _slicedToArray(_this$_getCircleData$, 2), x = _this$_getCircleData$2[0], y = _this$_getCircleData$2[1];\n return {\n from: this._findBorderPositionCircle(this.from, ctx, {\n x,\n y,\n low: 0.25,\n high: 0.6,\n direction: -1\n }),\n to: this._findBorderPositionCircle(this.from, ctx, {\n x,\n y,\n low: 0.6,\n high: 0.8,\n direction: 1\n })\n };\n }\n }\n }, {\n key: \"_getCircleData\",\n value: function _getCircleData(ctx) {\n var radius = this.options.selfReference.size;\n if (ctx !== void 0) {\n if (this.from.shape.width === void 0) {\n this.from.shape.resize(ctx);\n }\n }\n var coordinates = getSelfRefCoordinates(ctx, this.options.selfReference.angle, radius, this.from);\n return [coordinates.x, coordinates.y, radius];\n }\n }, {\n key: \"_pointOnCircle\",\n value: function _pointOnCircle(x, y, radius, position) {\n var angle = position * 2 * Math.PI;\n return {\n x: x + radius * Math.cos(angle),\n y: y - radius * Math.sin(angle)\n };\n }\n }, {\n key: \"_findBorderPositionCircle\",\n value: function _findBorderPositionCircle(nearNode, ctx, options2) {\n var x = options2.x;\n var y = options2.y;\n var low2 = options2.low;\n var high = options2.high;\n var direction = options2.direction;\n var maxIterations = 10;\n var radius = this.options.selfReference.size;\n var threshold = 0.05;\n var pos;\n var middle = (low2 + high) * 0.5;\n var endPointOffset = 0;\n if (this.options.arrowStrikethrough === true) {\n if (direction === -1) {\n endPointOffset = this.options.endPointOffset.from;\n } else if (direction === 1) {\n endPointOffset = this.options.endPointOffset.to;\n }\n }\n var iteration = 0;\n do {\n middle = (low2 + high) * 0.5;\n pos = this._pointOnCircle(x, y, radius, middle);\n var angle = Math.atan2(nearNode.y - pos.y, nearNode.x - pos.x);\n var distanceToBorder = nearNode.distanceToBorder(ctx, angle) + endPointOffset;\n var distanceToPoint = Math.sqrt(Math.pow(pos.x - nearNode.x, 2) + Math.pow(pos.y - nearNode.y, 2));\n var difference = distanceToBorder - distanceToPoint;\n if (Math.abs(difference) < threshold) {\n break;\n } else if (difference > 0) {\n if (direction > 0) {\n low2 = middle;\n } else {\n high = middle;\n }\n } else {\n if (direction > 0) {\n high = middle;\n } else {\n low2 = middle;\n }\n }\n ++iteration;\n } while (low2 <= high && iteration < maxIterations);\n return _objectSpread$1(_objectSpread$1({}, pos), {}, {\n t: middle\n });\n }\n }, {\n key: \"getLineWidth\",\n value: function getLineWidth(selected, hover) {\n if (selected === true) {\n return Math.max(this.selectionWidth, 0.3 / this._body.view.scale);\n } else if (hover === true) {\n return Math.max(this.hoverWidth, 0.3 / this._body.view.scale);\n } else {\n return Math.max(this.options.width, 0.3 / this._body.view.scale);\n }\n }\n }, {\n key: \"getColor\",\n value: function getColor(ctx, values3) {\n if (values3.inheritsColor !== false) {\n if (values3.inheritsColor === \"both\" && this.from.id !== this.to.id) {\n var grd = ctx.createLinearGradient(this.from.x, this.from.y, this.to.x, this.to.y);\n var fromColor = this.from.options.color.highlight.border;\n var toColor = this.to.options.color.highlight.border;\n if (this.from.selected === false && this.to.selected === false) {\n fromColor = overrideOpacity(this.from.options.color.border, values3.opacity);\n toColor = overrideOpacity(this.to.options.color.border, values3.opacity);\n } else if (this.from.selected === true && this.to.selected === false) {\n toColor = this.to.options.color.border;\n } else if (this.from.selected === false && this.to.selected === true) {\n fromColor = this.from.options.color.border;\n }\n grd.addColorStop(0, fromColor);\n grd.addColorStop(1, toColor);\n return grd;\n }\n if (values3.inheritsColor === \"to\") {\n return overrideOpacity(this.to.options.color.border, values3.opacity);\n } else {\n return overrideOpacity(this.from.options.color.border, values3.opacity);\n }\n } else {\n return overrideOpacity(values3.color, values3.opacity);\n }\n }\n }, {\n key: \"_circle\",\n value: function _circle(ctx, values3, x, y, radius) {\n this.enableShadow(ctx, values3);\n var angleFrom = 0;\n var angleTo = Math.PI * 2;\n if (!this.options.selfReference.renderBehindTheNode) {\n var low2 = this.options.selfReference.angle;\n var high = this.options.selfReference.angle + Math.PI;\n var pointTFrom = this._findBorderPositionCircle(this.from, ctx, {\n x,\n y,\n low: low2,\n high,\n direction: -1\n });\n var pointTTo = this._findBorderPositionCircle(this.from, ctx, {\n x,\n y,\n low: low2,\n high,\n direction: 1\n });\n angleFrom = Math.atan2(pointTFrom.y - y, pointTFrom.x - x);\n angleTo = Math.atan2(pointTTo.y - y, pointTTo.x - x);\n }\n ctx.beginPath();\n ctx.arc(x, y, radius, angleFrom, angleTo, false);\n ctx.stroke();\n this.disableShadow(ctx, values3);\n }\n }, {\n key: \"getDistanceToEdge\",\n value: function getDistanceToEdge(x1, y1, x2, y2, x3, y3) {\n if (this.from != this.to) {\n return this._getDistanceToEdge(x1, y1, x2, y2, x3, y3);\n } else {\n var _this$_getCircleData7 = this._getCircleData(void 0), _this$_getCircleData8 = _slicedToArray(_this$_getCircleData7, 3), x = _this$_getCircleData8[0], y = _this$_getCircleData8[1], radius = _this$_getCircleData8[2];\n var dx = x - x3;\n var dy = y - y3;\n return Math.abs(Math.sqrt(dx * dx + dy * dy) - radius);\n }\n }\n }, {\n key: \"_getDistanceToLine\",\n value: function _getDistanceToLine(x1, y1, x2, y2, x3, y3) {\n var px = x2 - x1;\n var py = y2 - y1;\n var something = px * px + py * py;\n var u = ((x3 - x1) * px + (y3 - y1) * py) / something;\n if (u > 1) {\n u = 1;\n } else if (u < 0) {\n u = 0;\n }\n var x = x1 + u * px;\n var y = y1 + u * py;\n var dx = x - x3;\n var dy = y - y3;\n return Math.sqrt(dx * dx + dy * dy);\n }\n }, {\n key: \"getArrowData\",\n value: function getArrowData(ctx, position, viaNode, _selected, _hover, values3) {\n var angle;\n var arrowPoint;\n var node1;\n var node2;\n var reversed;\n var scaleFactor;\n var type;\n var lineWidth = values3.width;\n if (position === \"from\") {\n node1 = this.from;\n node2 = this.to;\n reversed = values3.fromArrowScale < 0;\n scaleFactor = Math.abs(values3.fromArrowScale);\n type = values3.fromArrowType;\n } else if (position === \"to\") {\n node1 = this.to;\n node2 = this.from;\n reversed = values3.toArrowScale < 0;\n scaleFactor = Math.abs(values3.toArrowScale);\n type = values3.toArrowType;\n } else {\n node1 = this.to;\n node2 = this.from;\n reversed = values3.middleArrowScale < 0;\n scaleFactor = Math.abs(values3.middleArrowScale);\n type = values3.middleArrowType;\n }\n var length2 = 15 * scaleFactor + 3 * lineWidth;\n if (node1 != node2) {\n var approximateEdgeLength = hypot2(node1.x - node2.x, node1.y - node2.y);\n var relativeLength = length2 / approximateEdgeLength;\n if (position !== \"middle\") {\n if (this.options.smooth.enabled === true) {\n var pointT = this._findBorderPosition(node1, ctx, {\n via: viaNode\n });\n var guidePos = this.getPoint(pointT.t + relativeLength * (position === \"from\" ? 1 : -1), viaNode);\n angle = Math.atan2(pointT.y - guidePos.y, pointT.x - guidePos.x);\n arrowPoint = pointT;\n } else {\n angle = Math.atan2(node1.y - node2.y, node1.x - node2.x);\n arrowPoint = this._findBorderPosition(node1, ctx);\n }\n } else {\n var halfLength = (reversed ? -relativeLength : relativeLength) / 2;\n var guidePos1 = this.getPoint(0.5 + halfLength, viaNode);\n var guidePos2 = this.getPoint(0.5 - halfLength, viaNode);\n angle = Math.atan2(guidePos1.y - guidePos2.y, guidePos1.x - guidePos2.x);\n arrowPoint = this.getPoint(0.5, viaNode);\n }\n } else {\n var _this$_getCircleData9 = this._getCircleData(ctx), _this$_getCircleData10 = _slicedToArray(_this$_getCircleData9, 3), x = _this$_getCircleData10[0], y = _this$_getCircleData10[1], radius = _this$_getCircleData10[2];\n if (position === \"from\") {\n var low2 = this.options.selfReference.angle;\n var high = this.options.selfReference.angle + Math.PI;\n var _pointT = this._findBorderPositionCircle(this.from, ctx, {\n x,\n y,\n low: low2,\n high,\n direction: -1\n });\n angle = _pointT.t * -2 * Math.PI + 1.5 * Math.PI + 0.1 * Math.PI;\n arrowPoint = _pointT;\n } else if (position === \"to\") {\n var _low = this.options.selfReference.angle;\n var _high = this.options.selfReference.angle + Math.PI;\n var _pointT2 = this._findBorderPositionCircle(this.from, ctx, {\n x,\n y,\n low: _low,\n high: _high,\n direction: 1\n });\n angle = _pointT2.t * -2 * Math.PI + 1.5 * Math.PI - 1.1 * Math.PI;\n arrowPoint = _pointT2;\n } else {\n var pos = this.options.selfReference.angle / (2 * Math.PI);\n arrowPoint = this._pointOnCircle(x, y, radius, pos);\n angle = pos * -2 * Math.PI + 1.5 * Math.PI + 0.1 * Math.PI;\n }\n }\n var xi = arrowPoint.x - length2 * 0.9 * Math.cos(angle);\n var yi = arrowPoint.y - length2 * 0.9 * Math.sin(angle);\n var arrowCore = {\n x: xi,\n y: yi\n };\n return {\n point: arrowPoint,\n core: arrowCore,\n angle,\n length: length2,\n type\n };\n }\n }, {\n key: \"drawArrowHead\",\n value: function drawArrowHead(ctx, values3, _selected, _hover, arrowData) {\n ctx.strokeStyle = this.getColor(ctx, values3);\n ctx.fillStyle = ctx.strokeStyle;\n ctx.lineWidth = values3.width;\n var canFill = EndPoints.draw(ctx, arrowData);\n if (canFill) {\n this.enableShadow(ctx, values3);\n fill2(ctx).call(ctx);\n this.disableShadow(ctx, values3);\n }\n }\n }, {\n key: \"enableShadow\",\n value: function enableShadow(ctx, values3) {\n if (values3.shadow === true) {\n ctx.shadowColor = values3.shadowColor;\n ctx.shadowBlur = values3.shadowSize;\n ctx.shadowOffsetX = values3.shadowX;\n ctx.shadowOffsetY = values3.shadowY;\n }\n }\n }, {\n key: \"disableShadow\",\n value: function disableShadow(ctx, values3) {\n if (values3.shadow === true) {\n ctx.shadowColor = \"rgba(0,0,0,0)\";\n ctx.shadowBlur = 0;\n ctx.shadowOffsetX = 0;\n ctx.shadowOffsetY = 0;\n }\n }\n }, {\n key: \"drawBackground\",\n value: function drawBackground(ctx, values3) {\n if (values3.background !== false) {\n var origCtxAttr = {\n strokeStyle: ctx.strokeStyle,\n lineWidth: ctx.lineWidth,\n dashes: ctx.dashes\n };\n ctx.strokeStyle = values3.backgroundColor;\n ctx.lineWidth = values3.backgroundSize;\n this.setStrokeDashed(ctx, values3.backgroundDashes);\n ctx.stroke();\n ctx.strokeStyle = origCtxAttr.strokeStyle;\n ctx.lineWidth = origCtxAttr.lineWidth;\n ctx.dashes = origCtxAttr.dashes;\n this.setStrokeDashed(ctx, values3.dashes);\n }\n }\n }, {\n key: \"setStrokeDashed\",\n value: function setStrokeDashed(ctx, dashes) {\n if (dashes !== false) {\n if (ctx.setLineDash !== void 0) {\n var pattern = isArray$1(dashes) ? dashes : [5, 5];\n ctx.setLineDash(pattern);\n } else {\n console.warn(\"setLineDash is not supported in this browser. The dashed stroke cannot be used.\");\n }\n } else {\n if (ctx.setLineDash !== void 0) {\n ctx.setLineDash([]);\n } else {\n console.warn(\"setLineDash is not supported in this browser. The dashed stroke cannot be used.\");\n }\n }\n }\n }]);\n return EdgeBase2;\n}();\nfunction ownKeys2(object2, enumerableOnly) {\n var keys$12 = keys3(object2);\n if (getOwnPropertySymbols3) {\n var symbols = getOwnPropertySymbols3(object2);\n if (enumerableOnly) {\n symbols = filter2(symbols).call(symbols, function(sym) {\n return getOwnPropertyDescriptor$2(object2, sym).enumerable;\n });\n }\n keys$12.push.apply(keys$12, symbols);\n }\n return keys$12;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n var _context;\n forEach$2(_context = ownKeys2(Object(source), true)).call(_context, function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (getOwnPropertyDescriptors2) {\n defineProperties4(target, getOwnPropertyDescriptors2(source));\n } else {\n var _context2;\n forEach$2(_context2 = ownKeys2(Object(source))).call(_context2, function(key) {\n defineProperty$5(target, key, getOwnPropertyDescriptor$2(source, key));\n });\n }\n }\n return target;\n}\nfunction _createSuper$9(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$9();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$9() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar BezierEdgeBase = /* @__PURE__ */ function(_EdgeBase) {\n _inherits(BezierEdgeBase2, _EdgeBase);\n var _super = _createSuper$9(BezierEdgeBase2);\n function BezierEdgeBase2(options2, body, labelModule) {\n _classCallCheck(this, BezierEdgeBase2);\n return _super.call(this, options2, body, labelModule);\n }\n _createClass(BezierEdgeBase2, [{\n key: \"_findBorderPositionBezier\",\n value: function _findBorderPositionBezier(nearNode, ctx) {\n var viaNode = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : this._getViaCoordinates();\n var maxIterations = 10;\n var threshold = 0.2;\n var from3 = false;\n var high = 1;\n var low2 = 0;\n var node = this.to;\n var pos;\n var middle;\n var endPointOffset = this.options.endPointOffset ? this.options.endPointOffset.to : 0;\n if (nearNode.id === this.from.id) {\n node = this.from;\n from3 = true;\n endPointOffset = this.options.endPointOffset ? this.options.endPointOffset.from : 0;\n }\n if (this.options.arrowStrikethrough === false) {\n endPointOffset = 0;\n }\n var iteration = 0;\n do {\n middle = (low2 + high) * 0.5;\n pos = this.getPoint(middle, viaNode);\n var angle = Math.atan2(node.y - pos.y, node.x - pos.x);\n var distanceToBorder = node.distanceToBorder(ctx, angle) + endPointOffset;\n var distanceToPoint = Math.sqrt(Math.pow(pos.x - node.x, 2) + Math.pow(pos.y - node.y, 2));\n var difference = distanceToBorder - distanceToPoint;\n if (Math.abs(difference) < threshold) {\n break;\n } else if (difference < 0) {\n if (from3 === false) {\n low2 = middle;\n } else {\n high = middle;\n }\n } else {\n if (from3 === false) {\n high = middle;\n } else {\n low2 = middle;\n }\n }\n ++iteration;\n } while (low2 <= high && iteration < maxIterations);\n return _objectSpread(_objectSpread({}, pos), {}, {\n t: middle\n });\n }\n }, {\n key: \"_getDistanceToBezierEdge\",\n value: function _getDistanceToBezierEdge(x1, y1, x2, y2, x3, y3, via) {\n var minDistance = 1e9;\n var distance;\n var i, t, x, y;\n var lastX = x1;\n var lastY = y1;\n for (i = 1; i < 10; i++) {\n t = 0.1 * i;\n x = Math.pow(1 - t, 2) * x1 + 2 * t * (1 - t) * via.x + Math.pow(t, 2) * x2;\n y = Math.pow(1 - t, 2) * y1 + 2 * t * (1 - t) * via.y + Math.pow(t, 2) * y2;\n if (i > 0) {\n distance = this._getDistanceToLine(lastX, lastY, x, y, x3, y3);\n minDistance = distance < minDistance ? distance : minDistance;\n }\n lastX = x;\n lastY = y;\n }\n return minDistance;\n }\n }, {\n key: \"_bezierCurve\",\n value: function _bezierCurve(ctx, values3, viaNode1, viaNode2) {\n ctx.beginPath();\n ctx.moveTo(this.fromPoint.x, this.fromPoint.y);\n if (viaNode1 != null && viaNode1.x != null) {\n if (viaNode2 != null && viaNode2.x != null) {\n ctx.bezierCurveTo(viaNode1.x, viaNode1.y, viaNode2.x, viaNode2.y, this.toPoint.x, this.toPoint.y);\n } else {\n ctx.quadraticCurveTo(viaNode1.x, viaNode1.y, this.toPoint.x, this.toPoint.y);\n }\n } else {\n ctx.lineTo(this.toPoint.x, this.toPoint.y);\n }\n this.drawBackground(ctx, values3);\n this.enableShadow(ctx, values3);\n ctx.stroke();\n this.disableShadow(ctx, values3);\n }\n }, {\n key: \"getViaNode\",\n value: function getViaNode() {\n return this._getViaCoordinates();\n }\n }]);\n return BezierEdgeBase2;\n}(EdgeBase);\nfunction _createSuper$8(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$8();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$8() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar BezierEdgeDynamic = /* @__PURE__ */ function(_BezierEdgeBase) {\n _inherits(BezierEdgeDynamic2, _BezierEdgeBase);\n var _super = _createSuper$8(BezierEdgeDynamic2);\n function BezierEdgeDynamic2(options2, body, labelModule) {\n var _this;\n _classCallCheck(this, BezierEdgeDynamic2);\n _this = _super.call(this, options2, body, labelModule);\n _this.via = _this.via;\n _this._boundFunction = function() {\n _this.positionBezierNode();\n };\n _this._body.emitter.on(\"_repositionBezierNodes\", _this._boundFunction);\n return _this;\n }\n _createClass(BezierEdgeDynamic2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n _get(_getPrototypeOf(BezierEdgeDynamic2.prototype), \"setOptions\", this).call(this, options2);\n var physicsChange = false;\n if (this.options.physics !== options2.physics) {\n physicsChange = true;\n }\n this.options = options2;\n this.id = this.options.id;\n this.from = this._body.nodes[this.options.from];\n this.to = this._body.nodes[this.options.to];\n this.setupSupportNode();\n this.connect();\n if (physicsChange === true) {\n this.via.setOptions({\n physics: this.options.physics\n });\n this.positionBezierNode();\n }\n }\n }, {\n key: \"connect\",\n value: function connect() {\n this.from = this._body.nodes[this.options.from];\n this.to = this._body.nodes[this.options.to];\n if (this.from === void 0 || this.to === void 0 || this.options.physics === false) {\n this.via.setOptions({\n physics: false\n });\n } else {\n if (this.from.id === this.to.id) {\n this.via.setOptions({\n physics: false\n });\n } else {\n this.via.setOptions({\n physics: true\n });\n }\n }\n }\n }, {\n key: \"cleanup\",\n value: function cleanup() {\n this._body.emitter.off(\"_repositionBezierNodes\", this._boundFunction);\n if (this.via !== void 0) {\n delete this._body.nodes[this.via.id];\n this.via = void 0;\n return true;\n }\n return false;\n }\n }, {\n key: \"setupSupportNode\",\n value: function setupSupportNode() {\n if (this.via === void 0) {\n var nodeId = \"edgeId:\" + this.id;\n var node = this._body.functions.createNode({\n id: nodeId,\n shape: \"circle\",\n physics: true,\n hidden: true\n });\n this._body.nodes[nodeId] = node;\n this.via = node;\n this.via.parentEdgeId = this.id;\n this.positionBezierNode();\n }\n }\n }, {\n key: \"positionBezierNode\",\n value: function positionBezierNode() {\n if (this.via !== void 0 && this.from !== void 0 && this.to !== void 0) {\n this.via.x = 0.5 * (this.from.x + this.to.x);\n this.via.y = 0.5 * (this.from.y + this.to.y);\n } else if (this.via !== void 0) {\n this.via.x = 0;\n this.via.y = 0;\n }\n }\n }, {\n key: \"_line\",\n value: function _line(ctx, values3, viaNode) {\n this._bezierCurve(ctx, values3, viaNode);\n }\n }, {\n key: \"_getViaCoordinates\",\n value: function _getViaCoordinates() {\n return this.via;\n }\n }, {\n key: \"getViaNode\",\n value: function getViaNode() {\n return this.via;\n }\n }, {\n key: \"getPoint\",\n value: function getPoint(position) {\n var viaNode = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.via;\n if (this.from === this.to) {\n var _this$_getCircleData = this._getCircleData(), _this$_getCircleData2 = _slicedToArray(_this$_getCircleData, 3), cx = _this$_getCircleData2[0], cy = _this$_getCircleData2[1], cr = _this$_getCircleData2[2];\n var a = 2 * Math.PI * (1 - position);\n return {\n x: cx + cr * Math.sin(a),\n y: cy + cr - cr * (1 - Math.cos(a))\n };\n } else {\n return {\n x: Math.pow(1 - position, 2) * this.fromPoint.x + 2 * position * (1 - position) * viaNode.x + Math.pow(position, 2) * this.toPoint.x,\n y: Math.pow(1 - position, 2) * this.fromPoint.y + 2 * position * (1 - position) * viaNode.y + Math.pow(position, 2) * this.toPoint.y\n };\n }\n }\n }, {\n key: \"_findBorderPosition\",\n value: function _findBorderPosition(nearNode, ctx) {\n return this._findBorderPositionBezier(nearNode, ctx, this.via);\n }\n }, {\n key: \"_getDistanceToEdge\",\n value: function _getDistanceToEdge(x1, y1, x2, y2, x3, y3) {\n return this._getDistanceToBezierEdge(x1, y1, x2, y2, x3, y3, this.via);\n }\n }]);\n return BezierEdgeDynamic2;\n}(BezierEdgeBase);\nfunction _createSuper$7(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$7();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$7() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar BezierEdgeStatic = /* @__PURE__ */ function(_BezierEdgeBase) {\n _inherits(BezierEdgeStatic2, _BezierEdgeBase);\n var _super = _createSuper$7(BezierEdgeStatic2);\n function BezierEdgeStatic2(options2, body, labelModule) {\n _classCallCheck(this, BezierEdgeStatic2);\n return _super.call(this, options2, body, labelModule);\n }\n _createClass(BezierEdgeStatic2, [{\n key: \"_line\",\n value: function _line(ctx, values3, viaNode) {\n this._bezierCurve(ctx, values3, viaNode);\n }\n }, {\n key: \"getViaNode\",\n value: function getViaNode() {\n return this._getViaCoordinates();\n }\n }, {\n key: \"_getViaCoordinates\",\n value: function _getViaCoordinates() {\n var factor = this.options.smooth.roundness;\n var type = this.options.smooth.type;\n var dx = Math.abs(this.from.x - this.to.x);\n var dy = Math.abs(this.from.y - this.to.y);\n if (type === \"discrete\" || type === \"diagonalCross\") {\n var stepX;\n var stepY;\n if (dx <= dy) {\n stepX = stepY = factor * dy;\n } else {\n stepX = stepY = factor * dx;\n }\n if (this.from.x > this.to.x) {\n stepX = -stepX;\n }\n if (this.from.y >= this.to.y) {\n stepY = -stepY;\n }\n var xVia = this.from.x + stepX;\n var yVia = this.from.y + stepY;\n if (type === \"discrete\") {\n if (dx <= dy) {\n xVia = dx < factor * dy ? this.from.x : xVia;\n } else {\n yVia = dy < factor * dx ? this.from.y : yVia;\n }\n }\n return {\n x: xVia,\n y: yVia\n };\n } else if (type === \"straightCross\") {\n var _stepX = (1 - factor) * dx;\n var _stepY = (1 - factor) * dy;\n if (dx <= dy) {\n _stepX = 0;\n if (this.from.y < this.to.y) {\n _stepY = -_stepY;\n }\n } else {\n if (this.from.x < this.to.x) {\n _stepX = -_stepX;\n }\n _stepY = 0;\n }\n return {\n x: this.to.x + _stepX,\n y: this.to.y + _stepY\n };\n } else if (type === \"horizontal\") {\n var _stepX2 = (1 - factor) * dx;\n if (this.from.x < this.to.x) {\n _stepX2 = -_stepX2;\n }\n return {\n x: this.to.x + _stepX2,\n y: this.from.y\n };\n } else if (type === \"vertical\") {\n var _stepY2 = (1 - factor) * dy;\n if (this.from.y < this.to.y) {\n _stepY2 = -_stepY2;\n }\n return {\n x: this.from.x,\n y: this.to.y + _stepY2\n };\n } else if (type === \"curvedCW\") {\n dx = this.to.x - this.from.x;\n dy = this.from.y - this.to.y;\n var radius = Math.sqrt(dx * dx + dy * dy);\n var pi = Math.PI;\n var originalAngle = Math.atan2(dy, dx);\n var myAngle = (originalAngle + (factor * 0.5 + 0.5) * pi) % (2 * pi);\n return {\n x: this.from.x + (factor * 0.5 + 0.5) * radius * Math.sin(myAngle),\n y: this.from.y + (factor * 0.5 + 0.5) * radius * Math.cos(myAngle)\n };\n } else if (type === \"curvedCCW\") {\n dx = this.to.x - this.from.x;\n dy = this.from.y - this.to.y;\n var _radius = Math.sqrt(dx * dx + dy * dy);\n var _pi = Math.PI;\n var _originalAngle = Math.atan2(dy, dx);\n var _myAngle = (_originalAngle + (-factor * 0.5 + 0.5) * _pi) % (2 * _pi);\n return {\n x: this.from.x + (factor * 0.5 + 0.5) * _radius * Math.sin(_myAngle),\n y: this.from.y + (factor * 0.5 + 0.5) * _radius * Math.cos(_myAngle)\n };\n } else {\n var _stepX3;\n var _stepY3;\n if (dx <= dy) {\n _stepX3 = _stepY3 = factor * dy;\n } else {\n _stepX3 = _stepY3 = factor * dx;\n }\n if (this.from.x > this.to.x) {\n _stepX3 = -_stepX3;\n }\n if (this.from.y >= this.to.y) {\n _stepY3 = -_stepY3;\n }\n var _xVia = this.from.x + _stepX3;\n var _yVia = this.from.y + _stepY3;\n if (dx <= dy) {\n if (this.from.x <= this.to.x) {\n _xVia = this.to.x < _xVia ? this.to.x : _xVia;\n } else {\n _xVia = this.to.x > _xVia ? this.to.x : _xVia;\n }\n } else {\n if (this.from.y >= this.to.y) {\n _yVia = this.to.y > _yVia ? this.to.y : _yVia;\n } else {\n _yVia = this.to.y < _yVia ? this.to.y : _yVia;\n }\n }\n return {\n x: _xVia,\n y: _yVia\n };\n }\n }\n }, {\n key: \"_findBorderPosition\",\n value: function _findBorderPosition(nearNode, ctx) {\n var options2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n return this._findBorderPositionBezier(nearNode, ctx, options2.via);\n }\n }, {\n key: \"_getDistanceToEdge\",\n value: function _getDistanceToEdge(x1, y1, x2, y2, x3, y3) {\n var viaNode = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : this._getViaCoordinates();\n return this._getDistanceToBezierEdge(x1, y1, x2, y2, x3, y3, viaNode);\n }\n }, {\n key: \"getPoint\",\n value: function getPoint(position) {\n var viaNode = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this._getViaCoordinates();\n var t = position;\n var x = Math.pow(1 - t, 2) * this.fromPoint.x + 2 * t * (1 - t) * viaNode.x + Math.pow(t, 2) * this.toPoint.x;\n var y = Math.pow(1 - t, 2) * this.fromPoint.y + 2 * t * (1 - t) * viaNode.y + Math.pow(t, 2) * this.toPoint.y;\n return {\n x,\n y\n };\n }\n }]);\n return BezierEdgeStatic2;\n}(BezierEdgeBase);\nfunction _createSuper$6(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$6();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$6() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar CubicBezierEdgeBase = /* @__PURE__ */ function(_BezierEdgeBase) {\n _inherits(CubicBezierEdgeBase2, _BezierEdgeBase);\n var _super = _createSuper$6(CubicBezierEdgeBase2);\n function CubicBezierEdgeBase2(options2, body, labelModule) {\n _classCallCheck(this, CubicBezierEdgeBase2);\n return _super.call(this, options2, body, labelModule);\n }\n _createClass(CubicBezierEdgeBase2, [{\n key: \"_getDistanceToBezierEdge2\",\n value: function _getDistanceToBezierEdge2(x1, y1, x2, y2, x3, y3, via1, via2) {\n var minDistance = 1e9;\n var lastX = x1;\n var lastY = y1;\n var vec = [0, 0, 0, 0];\n for (var i = 1; i < 10; i++) {\n var t = 0.1 * i;\n vec[0] = Math.pow(1 - t, 3);\n vec[1] = 3 * t * Math.pow(1 - t, 2);\n vec[2] = 3 * Math.pow(t, 2) * (1 - t);\n vec[3] = Math.pow(t, 3);\n var x = vec[0] * x1 + vec[1] * via1.x + vec[2] * via2.x + vec[3] * x2;\n var y = vec[0] * y1 + vec[1] * via1.y + vec[2] * via2.y + vec[3] * y2;\n if (i > 0) {\n var distance = this._getDistanceToLine(lastX, lastY, x, y, x3, y3);\n minDistance = distance < minDistance ? distance : minDistance;\n }\n lastX = x;\n lastY = y;\n }\n return minDistance;\n }\n }]);\n return CubicBezierEdgeBase2;\n}(BezierEdgeBase);\nfunction _createSuper$5(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$5();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$5() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar CubicBezierEdge = /* @__PURE__ */ function(_CubicBezierEdgeBase) {\n _inherits(CubicBezierEdge2, _CubicBezierEdgeBase);\n var _super = _createSuper$5(CubicBezierEdge2);\n function CubicBezierEdge2(options2, body, labelModule) {\n _classCallCheck(this, CubicBezierEdge2);\n return _super.call(this, options2, body, labelModule);\n }\n _createClass(CubicBezierEdge2, [{\n key: \"_line\",\n value: function _line(ctx, values3, viaNodes) {\n var via1 = viaNodes[0];\n var via2 = viaNodes[1];\n this._bezierCurve(ctx, values3, via1, via2);\n }\n }, {\n key: \"_getViaCoordinates\",\n value: function _getViaCoordinates() {\n var dx = this.from.x - this.to.x;\n var dy = this.from.y - this.to.y;\n var x1;\n var y1;\n var x2;\n var y2;\n var roundness = this.options.smooth.roundness;\n if ((Math.abs(dx) > Math.abs(dy) || this.options.smooth.forceDirection === true || this.options.smooth.forceDirection === \"horizontal\") && this.options.smooth.forceDirection !== \"vertical\") {\n y1 = this.from.y;\n y2 = this.to.y;\n x1 = this.from.x - roundness * dx;\n x2 = this.to.x + roundness * dx;\n } else {\n y1 = this.from.y - roundness * dy;\n y2 = this.to.y + roundness * dy;\n x1 = this.from.x;\n x2 = this.to.x;\n }\n return [{\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n }];\n }\n }, {\n key: \"getViaNode\",\n value: function getViaNode() {\n return this._getViaCoordinates();\n }\n }, {\n key: \"_findBorderPosition\",\n value: function _findBorderPosition(nearNode, ctx) {\n return this._findBorderPositionBezier(nearNode, ctx);\n }\n }, {\n key: \"_getDistanceToEdge\",\n value: function _getDistanceToEdge(x1, y1, x2, y2, x3, y3) {\n var _ref = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : this._getViaCoordinates(), _ref2 = _slicedToArray(_ref, 2), via1 = _ref2[0], via2 = _ref2[1];\n return this._getDistanceToBezierEdge2(x1, y1, x2, y2, x3, y3, via1, via2);\n }\n }, {\n key: \"getPoint\",\n value: function getPoint(position) {\n var _ref3 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this._getViaCoordinates(), _ref4 = _slicedToArray(_ref3, 2), via1 = _ref4[0], via2 = _ref4[1];\n var t = position;\n var vec = [Math.pow(1 - t, 3), 3 * t * Math.pow(1 - t, 2), 3 * Math.pow(t, 2) * (1 - t), Math.pow(t, 3)];\n var x = vec[0] * this.fromPoint.x + vec[1] * via1.x + vec[2] * via2.x + vec[3] * this.toPoint.x;\n var y = vec[0] * this.fromPoint.y + vec[1] * via1.y + vec[2] * via2.y + vec[3] * this.toPoint.y;\n return {\n x,\n y\n };\n }\n }]);\n return CubicBezierEdge2;\n}(CubicBezierEdgeBase);\nfunction _createSuper$4(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$4();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$4() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar StraightEdge = /* @__PURE__ */ function(_EdgeBase) {\n _inherits(StraightEdge2, _EdgeBase);\n var _super = _createSuper$4(StraightEdge2);\n function StraightEdge2(options2, body, labelModule) {\n _classCallCheck(this, StraightEdge2);\n return _super.call(this, options2, body, labelModule);\n }\n _createClass(StraightEdge2, [{\n key: \"_line\",\n value: function _line(ctx, values3) {\n ctx.beginPath();\n ctx.moveTo(this.fromPoint.x, this.fromPoint.y);\n ctx.lineTo(this.toPoint.x, this.toPoint.y);\n this.enableShadow(ctx, values3);\n ctx.stroke();\n this.disableShadow(ctx, values3);\n }\n }, {\n key: \"getViaNode\",\n value: function getViaNode() {\n return void 0;\n }\n }, {\n key: \"getPoint\",\n value: function getPoint(position) {\n return {\n x: (1 - position) * this.fromPoint.x + position * this.toPoint.x,\n y: (1 - position) * this.fromPoint.y + position * this.toPoint.y\n };\n }\n }, {\n key: \"_findBorderPosition\",\n value: function _findBorderPosition(nearNode, ctx) {\n var node1 = this.to;\n var node2 = this.from;\n if (nearNode.id === this.from.id) {\n node1 = this.from;\n node2 = this.to;\n }\n var angle = Math.atan2(node1.y - node2.y, node1.x - node2.x);\n var dx = node1.x - node2.x;\n var dy = node1.y - node2.y;\n var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy);\n var toBorderDist = nearNode.distanceToBorder(ctx, angle);\n var toBorderPoint = (edgeSegmentLength - toBorderDist) / edgeSegmentLength;\n return {\n x: (1 - toBorderPoint) * node2.x + toBorderPoint * node1.x,\n y: (1 - toBorderPoint) * node2.y + toBorderPoint * node1.y,\n t: 0\n };\n }\n }, {\n key: \"_getDistanceToEdge\",\n value: function _getDistanceToEdge(x1, y1, x2, y2, x3, y3) {\n return this._getDistanceToLine(x1, y1, x2, y2, x3, y3);\n }\n }]);\n return StraightEdge2;\n}(EdgeBase);\nvar Edge = /* @__PURE__ */ function() {\n function Edge2(options2, body, imagelist, globalOptions, defaultOptions) {\n _classCallCheck(this, Edge2);\n if (body === void 0) {\n throw new Error(\"No body provided\");\n }\n this.options = bridgeObject(globalOptions);\n this.globalOptions = globalOptions;\n this.defaultOptions = defaultOptions;\n this.body = body;\n this.imagelist = imagelist;\n this.id = void 0;\n this.fromId = void 0;\n this.toId = void 0;\n this.selected = false;\n this.hover = false;\n this.labelDirty = true;\n this.baseWidth = this.options.width;\n this.baseFontSize = this.options.font.size;\n this.from = void 0;\n this.to = void 0;\n this.edgeType = void 0;\n this.connected = false;\n this.labelModule = new Label(this.body, this.options, true);\n this.setOptions(options2);\n }\n _createClass(Edge2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n if (!options2) {\n return;\n }\n var affectsLayout = typeof options2.physics !== \"undefined\" && this.options.physics !== options2.physics || typeof options2.hidden !== \"undefined\" && (this.options.hidden || false) !== (options2.hidden || false) || typeof options2.from !== \"undefined\" && this.options.from !== options2.from || typeof options2.to !== \"undefined\" && this.options.to !== options2.to;\n Edge2.parseOptions(this.options, options2, true, this.globalOptions);\n if (options2.id !== void 0) {\n this.id = options2.id;\n }\n if (options2.from !== void 0) {\n this.fromId = options2.from;\n }\n if (options2.to !== void 0) {\n this.toId = options2.to;\n }\n if (options2.title !== void 0) {\n this.title = options2.title;\n }\n if (options2.value !== void 0) {\n options2.value = _parseFloat(options2.value);\n }\n var pile = [options2, this.options, this.defaultOptions];\n this.chooser = choosify(\"edge\", pile);\n this.updateLabelModule(options2);\n affectsLayout = this.updateEdgeType() || affectsLayout;\n this._setInteractionWidths();\n this.connect();\n return affectsLayout;\n }\n }, {\n key: \"getFormattingValues\",\n value: function getFormattingValues() {\n var toArrow = this.options.arrows.to === true || this.options.arrows.to.enabled === true;\n var fromArrow = this.options.arrows.from === true || this.options.arrows.from.enabled === true;\n var middleArrow = this.options.arrows.middle === true || this.options.arrows.middle.enabled === true;\n var inheritsColor = this.options.color.inherit;\n var values3 = {\n toArrow,\n toArrowScale: this.options.arrows.to.scaleFactor,\n toArrowType: this.options.arrows.to.type,\n toArrowSrc: this.options.arrows.to.src,\n toArrowImageWidth: this.options.arrows.to.imageWidth,\n toArrowImageHeight: this.options.arrows.to.imageHeight,\n middleArrow,\n middleArrowScale: this.options.arrows.middle.scaleFactor,\n middleArrowType: this.options.arrows.middle.type,\n middleArrowSrc: this.options.arrows.middle.src,\n middleArrowImageWidth: this.options.arrows.middle.imageWidth,\n middleArrowImageHeight: this.options.arrows.middle.imageHeight,\n fromArrow,\n fromArrowScale: this.options.arrows.from.scaleFactor,\n fromArrowType: this.options.arrows.from.type,\n fromArrowSrc: this.options.arrows.from.src,\n fromArrowImageWidth: this.options.arrows.from.imageWidth,\n fromArrowImageHeight: this.options.arrows.from.imageHeight,\n arrowStrikethrough: this.options.arrowStrikethrough,\n color: inheritsColor ? void 0 : this.options.color.color,\n inheritsColor,\n opacity: this.options.color.opacity,\n hidden: this.options.hidden,\n length: this.options.length,\n shadow: this.options.shadow.enabled,\n shadowColor: this.options.shadow.color,\n shadowSize: this.options.shadow.size,\n shadowX: this.options.shadow.x,\n shadowY: this.options.shadow.y,\n dashes: this.options.dashes,\n width: this.options.width,\n background: this.options.background.enabled,\n backgroundColor: this.options.background.color,\n backgroundSize: this.options.background.size,\n backgroundDashes: this.options.background.dashes\n };\n if (this.selected || this.hover) {\n if (this.chooser === true) {\n if (this.selected) {\n var selectedWidth = this.options.selectionWidth;\n if (typeof selectedWidth === \"function\") {\n values3.width = selectedWidth(values3.width);\n } else if (typeof selectedWidth === \"number\") {\n values3.width += selectedWidth;\n }\n values3.width = Math.max(values3.width, 0.3 / this.body.view.scale);\n values3.color = this.options.color.highlight;\n values3.shadow = this.options.shadow.enabled;\n } else if (this.hover) {\n var hoverWidth = this.options.hoverWidth;\n if (typeof hoverWidth === \"function\") {\n values3.width = hoverWidth(values3.width);\n } else if (typeof hoverWidth === \"number\") {\n values3.width += hoverWidth;\n }\n values3.width = Math.max(values3.width, 0.3 / this.body.view.scale);\n values3.color = this.options.color.hover;\n values3.shadow = this.options.shadow.enabled;\n }\n } else if (typeof this.chooser === \"function\") {\n this.chooser(values3, this.options.id, this.selected, this.hover);\n if (values3.color !== void 0) {\n values3.inheritsColor = false;\n }\n if (values3.shadow === false) {\n if (values3.shadowColor !== this.options.shadow.color || values3.shadowSize !== this.options.shadow.size || values3.shadowX !== this.options.shadow.x || values3.shadowY !== this.options.shadow.y) {\n values3.shadow = true;\n }\n }\n }\n } else {\n values3.shadow = this.options.shadow.enabled;\n values3.width = Math.max(values3.width, 0.3 / this.body.view.scale);\n }\n return values3;\n }\n }, {\n key: \"updateLabelModule\",\n value: function updateLabelModule(options2) {\n var pile = [\n options2,\n this.options,\n this.globalOptions,\n this.defaultOptions\n ];\n this.labelModule.update(this.options, pile);\n if (this.labelModule.baseSize !== void 0) {\n this.baseFontSize = this.labelModule.baseSize;\n }\n }\n }, {\n key: \"updateEdgeType\",\n value: function updateEdgeType() {\n var smooth = this.options.smooth;\n var dataChanged = false;\n var changeInType = true;\n if (this.edgeType !== void 0) {\n if (this.edgeType instanceof BezierEdgeDynamic && smooth.enabled === true && smooth.type === \"dynamic\" || this.edgeType instanceof CubicBezierEdge && smooth.enabled === true && smooth.type === \"cubicBezier\" || this.edgeType instanceof BezierEdgeStatic && smooth.enabled === true && smooth.type !== \"dynamic\" && smooth.type !== \"cubicBezier\" || this.edgeType instanceof StraightEdge && smooth.type.enabled === false) {\n changeInType = false;\n }\n if (changeInType === true) {\n dataChanged = this.cleanup();\n }\n }\n if (changeInType === true) {\n if (smooth.enabled === true) {\n if (smooth.type === \"dynamic\") {\n dataChanged = true;\n this.edgeType = new BezierEdgeDynamic(this.options, this.body, this.labelModule);\n } else if (smooth.type === \"cubicBezier\") {\n this.edgeType = new CubicBezierEdge(this.options, this.body, this.labelModule);\n } else {\n this.edgeType = new BezierEdgeStatic(this.options, this.body, this.labelModule);\n }\n } else {\n this.edgeType = new StraightEdge(this.options, this.body, this.labelModule);\n }\n } else {\n this.edgeType.setOptions(this.options);\n }\n return dataChanged;\n }\n }, {\n key: \"connect\",\n value: function connect() {\n this.disconnect();\n this.from = this.body.nodes[this.fromId] || void 0;\n this.to = this.body.nodes[this.toId] || void 0;\n this.connected = this.from !== void 0 && this.to !== void 0;\n if (this.connected === true) {\n this.from.attachEdge(this);\n this.to.attachEdge(this);\n } else {\n if (this.from) {\n this.from.detachEdge(this);\n }\n if (this.to) {\n this.to.detachEdge(this);\n }\n }\n this.edgeType.connect();\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n if (this.from) {\n this.from.detachEdge(this);\n this.from = void 0;\n }\n if (this.to) {\n this.to.detachEdge(this);\n this.to = void 0;\n }\n this.connected = false;\n }\n }, {\n key: \"getTitle\",\n value: function getTitle() {\n return this.title;\n }\n }, {\n key: \"isSelected\",\n value: function isSelected() {\n return this.selected;\n }\n }, {\n key: \"getValue\",\n value: function getValue() {\n return this.options.value;\n }\n }, {\n key: \"setValueRange\",\n value: function setValueRange(min2, max2, total) {\n if (this.options.value !== void 0) {\n var scale = this.options.scaling.customScalingFunction(min2, max2, total, this.options.value);\n var widthDiff = this.options.scaling.max - this.options.scaling.min;\n if (this.options.scaling.label.enabled === true) {\n var fontDiff = this.options.scaling.label.max - this.options.scaling.label.min;\n this.options.font.size = this.options.scaling.label.min + scale * fontDiff;\n }\n this.options.width = this.options.scaling.min + scale * widthDiff;\n } else {\n this.options.width = this.baseWidth;\n this.options.font.size = this.baseFontSize;\n }\n this._setInteractionWidths();\n this.updateLabelModule();\n }\n }, {\n key: \"_setInteractionWidths\",\n value: function _setInteractionWidths() {\n if (typeof this.options.hoverWidth === \"function\") {\n this.edgeType.hoverWidth = this.options.hoverWidth(this.options.width);\n } else {\n this.edgeType.hoverWidth = this.options.hoverWidth + this.options.width;\n }\n if (typeof this.options.selectionWidth === \"function\") {\n this.edgeType.selectionWidth = this.options.selectionWidth(this.options.width);\n } else {\n this.edgeType.selectionWidth = this.options.selectionWidth + this.options.width;\n }\n }\n }, {\n key: \"draw\",\n value: function draw(ctx) {\n var values3 = this.getFormattingValues();\n if (values3.hidden) {\n return;\n }\n var viaNode = this.edgeType.getViaNode();\n this.edgeType.drawLine(ctx, values3, this.selected, this.hover, viaNode);\n this.drawLabel(ctx, viaNode);\n }\n }, {\n key: \"drawArrows\",\n value: function drawArrows(ctx) {\n var values3 = this.getFormattingValues();\n if (values3.hidden) {\n return;\n }\n var viaNode = this.edgeType.getViaNode();\n var arrowData = {};\n this.edgeType.fromPoint = this.edgeType.from;\n this.edgeType.toPoint = this.edgeType.to;\n if (values3.fromArrow) {\n arrowData.from = this.edgeType.getArrowData(ctx, \"from\", viaNode, this.selected, this.hover, values3);\n if (values3.arrowStrikethrough === false)\n this.edgeType.fromPoint = arrowData.from.core;\n if (values3.fromArrowSrc) {\n arrowData.from.image = this.imagelist.load(values3.fromArrowSrc);\n }\n if (values3.fromArrowImageWidth) {\n arrowData.from.imageWidth = values3.fromArrowImageWidth;\n }\n if (values3.fromArrowImageHeight) {\n arrowData.from.imageHeight = values3.fromArrowImageHeight;\n }\n }\n if (values3.toArrow) {\n arrowData.to = this.edgeType.getArrowData(ctx, \"to\", viaNode, this.selected, this.hover, values3);\n if (values3.arrowStrikethrough === false)\n this.edgeType.toPoint = arrowData.to.core;\n if (values3.toArrowSrc) {\n arrowData.to.image = this.imagelist.load(values3.toArrowSrc);\n }\n if (values3.toArrowImageWidth) {\n arrowData.to.imageWidth = values3.toArrowImageWidth;\n }\n if (values3.toArrowImageHeight) {\n arrowData.to.imageHeight = values3.toArrowImageHeight;\n }\n }\n if (values3.middleArrow) {\n arrowData.middle = this.edgeType.getArrowData(ctx, \"middle\", viaNode, this.selected, this.hover, values3);\n if (values3.middleArrowSrc) {\n arrowData.middle.image = this.imagelist.load(values3.middleArrowSrc);\n }\n if (values3.middleArrowImageWidth) {\n arrowData.middle.imageWidth = values3.middleArrowImageWidth;\n }\n if (values3.middleArrowImageHeight) {\n arrowData.middle.imageHeight = values3.middleArrowImageHeight;\n }\n }\n if (values3.fromArrow) {\n this.edgeType.drawArrowHead(ctx, values3, this.selected, this.hover, arrowData.from);\n }\n if (values3.middleArrow) {\n this.edgeType.drawArrowHead(ctx, values3, this.selected, this.hover, arrowData.middle);\n }\n if (values3.toArrow) {\n this.edgeType.drawArrowHead(ctx, values3, this.selected, this.hover, arrowData.to);\n }\n }\n }, {\n key: \"drawLabel\",\n value: function drawLabel(ctx, viaNode) {\n if (this.options.label !== void 0) {\n var node1 = this.from;\n var node2 = this.to;\n if (this.labelModule.differentState(this.selected, this.hover)) {\n this.labelModule.getTextSize(ctx, this.selected, this.hover);\n }\n var point;\n if (node1.id != node2.id) {\n this.labelModule.pointToSelf = false;\n point = this.edgeType.getPoint(0.5, viaNode);\n ctx.save();\n var rotationPoint = this._getRotation(ctx);\n if (rotationPoint.angle != 0) {\n ctx.translate(rotationPoint.x, rotationPoint.y);\n ctx.rotate(rotationPoint.angle);\n }\n this.labelModule.draw(ctx, point.x, point.y, this.selected, this.hover);\n ctx.restore();\n } else {\n this.labelModule.pointToSelf = true;\n var coordinates = getSelfRefCoordinates(ctx, this.options.selfReference.angle, this.options.selfReference.size, node1);\n point = this._pointOnCircle(coordinates.x, coordinates.y, this.options.selfReference.size, this.options.selfReference.angle);\n this.labelModule.draw(ctx, point.x, point.y, this.selected, this.hover);\n }\n }\n }\n }, {\n key: \"getItemsOnPoint\",\n value: function getItemsOnPoint(point) {\n var ret = [];\n if (this.labelModule.visible()) {\n var rotationPoint = this._getRotation();\n if (pointInRect(this.labelModule.getSize(), point, rotationPoint)) {\n ret.push({\n edgeId: this.id,\n labelId: 0\n });\n }\n }\n var obj = {\n left: point.x,\n top: point.y\n };\n if (this.isOverlappingWith(obj)) {\n ret.push({\n edgeId: this.id\n });\n }\n return ret;\n }\n }, {\n key: \"isOverlappingWith\",\n value: function isOverlappingWith(obj) {\n if (this.connected) {\n var distMax = 10;\n var xFrom = this.from.x;\n var yFrom = this.from.y;\n var xTo = this.to.x;\n var yTo = this.to.y;\n var xObj = obj.left;\n var yObj = obj.top;\n var dist = this.edgeType.getDistanceToEdge(xFrom, yFrom, xTo, yTo, xObj, yObj);\n return dist < distMax;\n } else {\n return false;\n }\n }\n }, {\n key: \"_getRotation\",\n value: function _getRotation(ctx) {\n var viaNode = this.edgeType.getViaNode();\n var point = this.edgeType.getPoint(0.5, viaNode);\n if (ctx !== void 0) {\n this.labelModule.calculateLabelSize(ctx, this.selected, this.hover, point.x, point.y);\n }\n var ret = {\n x: point.x,\n y: this.labelModule.size.yLine,\n angle: 0\n };\n if (!this.labelModule.visible()) {\n return ret;\n }\n if (this.options.font.align === \"horizontal\") {\n return ret;\n }\n var dy = this.from.y - this.to.y;\n var dx = this.from.x - this.to.x;\n var angle = Math.atan2(dy, dx);\n if (angle < -1 && dx < 0 || angle > 0 && dx < 0) {\n angle += Math.PI;\n }\n ret.angle = angle;\n return ret;\n }\n }, {\n key: \"_pointOnCircle\",\n value: function _pointOnCircle(x, y, radius, angle) {\n return {\n x: x + radius * Math.cos(angle),\n y: y - radius * Math.sin(angle)\n };\n }\n }, {\n key: \"select\",\n value: function select() {\n this.selected = true;\n }\n }, {\n key: \"unselect\",\n value: function unselect() {\n this.selected = false;\n }\n }, {\n key: \"cleanup\",\n value: function cleanup() {\n return this.edgeType.cleanup();\n }\n }, {\n key: \"remove\",\n value: function remove() {\n this.cleanup();\n this.disconnect();\n delete this.body.edges[this.id];\n }\n }, {\n key: \"endPointsValid\",\n value: function endPointsValid() {\n return this.body.nodes[this.fromId] !== void 0 && this.body.nodes[this.toId] !== void 0;\n }\n }], [{\n key: \"parseOptions\",\n value: function parseOptions(parentOptions, newOptions) {\n var allowDeletion = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n var globalOptions = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};\n var copyFromGlobals = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false;\n var fields = [\"endPointOffset\", \"arrowStrikethrough\", \"id\", \"from\", \"hidden\", \"hoverWidth\", \"labelHighlightBold\", \"length\", \"line\", \"opacity\", \"physics\", \"scaling\", \"selectionWidth\", \"selfReferenceSize\", \"selfReference\", \"to\", \"title\", \"value\", \"width\", \"font\", \"chosen\", \"widthConstraint\"];\n selectiveDeepExtend(fields, parentOptions, newOptions, allowDeletion);\n if (newOptions.endPointOffset !== void 0 && newOptions.endPointOffset.from !== void 0) {\n if (_isFinite(newOptions.endPointOffset.from)) {\n parentOptions.endPointOffset.from = newOptions.endPointOffset.from;\n } else {\n parentOptions.endPointOffset.from = globalOptions.endPointOffset.from !== void 0 ? globalOptions.endPointOffset.from : 0;\n console.error(\"endPointOffset.from is not a valid number\");\n }\n }\n if (newOptions.endPointOffset !== void 0 && newOptions.endPointOffset.to !== void 0) {\n if (_isFinite(newOptions.endPointOffset.to)) {\n parentOptions.endPointOffset.to = newOptions.endPointOffset.to;\n } else {\n parentOptions.endPointOffset.to = globalOptions.endPointOffset.to !== void 0 ? globalOptions.endPointOffset.to : 0;\n console.error(\"endPointOffset.to is not a valid number\");\n }\n }\n if (isValidLabel(newOptions.label)) {\n parentOptions.label = newOptions.label;\n } else if (!isValidLabel(parentOptions.label)) {\n parentOptions.label = void 0;\n }\n mergeOptions(parentOptions, newOptions, \"smooth\", globalOptions);\n mergeOptions(parentOptions, newOptions, \"shadow\", globalOptions);\n mergeOptions(parentOptions, newOptions, \"background\", globalOptions);\n if (newOptions.dashes !== void 0 && newOptions.dashes !== null) {\n parentOptions.dashes = newOptions.dashes;\n } else if (allowDeletion === true && newOptions.dashes === null) {\n parentOptions.dashes = create$4(globalOptions.dashes);\n }\n if (newOptions.scaling !== void 0 && newOptions.scaling !== null) {\n if (newOptions.scaling.min !== void 0) {\n parentOptions.scaling.min = newOptions.scaling.min;\n }\n if (newOptions.scaling.max !== void 0) {\n parentOptions.scaling.max = newOptions.scaling.max;\n }\n mergeOptions(parentOptions.scaling, newOptions.scaling, \"label\", globalOptions.scaling);\n } else if (allowDeletion === true && newOptions.scaling === null) {\n parentOptions.scaling = create$4(globalOptions.scaling);\n }\n if (newOptions.arrows !== void 0 && newOptions.arrows !== null) {\n if (typeof newOptions.arrows === \"string\") {\n var arrows = newOptions.arrows.toLowerCase();\n parentOptions.arrows.to.enabled = indexOf2(arrows).call(arrows, \"to\") != -1;\n parentOptions.arrows.middle.enabled = indexOf2(arrows).call(arrows, \"middle\") != -1;\n parentOptions.arrows.from.enabled = indexOf2(arrows).call(arrows, \"from\") != -1;\n } else if (_typeof(newOptions.arrows) === \"object\") {\n mergeOptions(parentOptions.arrows, newOptions.arrows, \"to\", globalOptions.arrows);\n mergeOptions(parentOptions.arrows, newOptions.arrows, \"middle\", globalOptions.arrows);\n mergeOptions(parentOptions.arrows, newOptions.arrows, \"from\", globalOptions.arrows);\n } else {\n throw new Error(\"The arrow newOptions can only be an object or a string. Refer to the documentation. You used:\" + stringify$1(newOptions.arrows));\n }\n } else if (allowDeletion === true && newOptions.arrows === null) {\n parentOptions.arrows = create$4(globalOptions.arrows);\n }\n if (newOptions.color !== void 0 && newOptions.color !== null) {\n var fromColor = isString(newOptions.color) ? {\n color: newOptions.color,\n highlight: newOptions.color,\n hover: newOptions.color,\n inherit: false,\n opacity: 1\n } : newOptions.color;\n var toColor = parentOptions.color;\n if (copyFromGlobals) {\n deepExtend(toColor, globalOptions.color, false, allowDeletion);\n } else {\n for (var i in toColor) {\n if (Object.prototype.hasOwnProperty.call(toColor, i)) {\n delete toColor[i];\n }\n }\n }\n if (isString(toColor)) {\n toColor.color = toColor;\n toColor.highlight = toColor;\n toColor.hover = toColor;\n toColor.inherit = false;\n if (fromColor.opacity === void 0) {\n toColor.opacity = 1;\n }\n } else {\n var colorsDefined = false;\n if (fromColor.color !== void 0) {\n toColor.color = fromColor.color;\n colorsDefined = true;\n }\n if (fromColor.highlight !== void 0) {\n toColor.highlight = fromColor.highlight;\n colorsDefined = true;\n }\n if (fromColor.hover !== void 0) {\n toColor.hover = fromColor.hover;\n colorsDefined = true;\n }\n if (fromColor.inherit !== void 0) {\n toColor.inherit = fromColor.inherit;\n }\n if (fromColor.opacity !== void 0) {\n toColor.opacity = Math.min(1, Math.max(0, fromColor.opacity));\n }\n if (colorsDefined === true) {\n toColor.inherit = false;\n } else {\n if (toColor.inherit === void 0) {\n toColor.inherit = \"from\";\n }\n }\n }\n } else if (allowDeletion === true && newOptions.color === null) {\n parentOptions.color = bridgeObject(globalOptions.color);\n }\n if (allowDeletion === true && newOptions.font === null) {\n parentOptions.font = bridgeObject(globalOptions.font);\n }\n if (Object.prototype.hasOwnProperty.call(newOptions, \"selfReferenceSize\")) {\n console.warn(\"The selfReferenceSize property has been deprecated. Please use selfReference property instead. The selfReference can be set like thise selfReference:{size:30, angle:Math.PI / 4}\");\n parentOptions.selfReference.size = newOptions.selfReferenceSize;\n }\n }\n }]);\n return Edge2;\n}();\nvar EdgesHandler = /* @__PURE__ */ function() {\n function EdgesHandler2(body, images, groups) {\n var _context, _this = this;\n _classCallCheck(this, EdgesHandler2);\n this.body = body;\n this.images = images;\n this.groups = groups;\n this.body.functions.createEdge = bind$5(_context = this.create).call(_context, this);\n this.edgesListeners = {\n add: function add(event, params) {\n _this.add(params.items);\n },\n update: function update(event, params) {\n _this.update(params.items);\n },\n remove: function remove(event, params) {\n _this.remove(params.items);\n }\n };\n this.options = {};\n this.defaultOptions = {\n arrows: {\n to: {\n enabled: false,\n scaleFactor: 1,\n type: \"arrow\"\n },\n middle: {\n enabled: false,\n scaleFactor: 1,\n type: \"arrow\"\n },\n from: {\n enabled: false,\n scaleFactor: 1,\n type: \"arrow\"\n }\n },\n endPointOffset: {\n from: 0,\n to: 0\n },\n arrowStrikethrough: true,\n color: {\n color: \"#848484\",\n highlight: \"#848484\",\n hover: \"#848484\",\n inherit: \"from\",\n opacity: 1\n },\n dashes: false,\n font: {\n color: \"#343434\",\n size: 14,\n face: \"arial\",\n background: \"none\",\n strokeWidth: 2,\n strokeColor: \"#ffffff\",\n align: \"horizontal\",\n multi: false,\n vadjust: 0,\n bold: {\n mod: \"bold\"\n },\n boldital: {\n mod: \"bold italic\"\n },\n ital: {\n mod: \"italic\"\n },\n mono: {\n mod: \"\",\n size: 15,\n face: \"courier new\",\n vadjust: 2\n }\n },\n hidden: false,\n hoverWidth: 1.5,\n label: void 0,\n labelHighlightBold: true,\n length: void 0,\n physics: true,\n scaling: {\n min: 1,\n max: 15,\n label: {\n enabled: true,\n min: 14,\n max: 30,\n maxVisible: 30,\n drawThreshold: 5\n },\n customScalingFunction: function customScalingFunction(min2, max2, total, value) {\n if (max2 === min2) {\n return 0.5;\n } else {\n var scale = 1 / (max2 - min2);\n return Math.max(0, (value - min2) * scale);\n }\n }\n },\n selectionWidth: 1.5,\n selfReference: {\n size: 20,\n angle: Math.PI / 4,\n renderBehindTheNode: true\n },\n shadow: {\n enabled: false,\n color: \"rgba(0,0,0,0.5)\",\n size: 10,\n x: 5,\n y: 5\n },\n background: {\n enabled: false,\n color: \"rgba(111,111,111,1)\",\n size: 10,\n dashes: false\n },\n smooth: {\n enabled: true,\n type: \"dynamic\",\n forceDirection: \"none\",\n roundness: 0.5\n },\n title: void 0,\n width: 1,\n value: void 0\n };\n deepExtend(this.options, this.defaultOptions);\n this.bindEventListeners();\n }\n _createClass(EdgesHandler2, [{\n key: \"bindEventListeners\",\n value: function bindEventListeners() {\n var _this2 = this, _context2, _context3;\n this.body.emitter.on(\"_forceDisableDynamicCurves\", function(type) {\n var emit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n if (type === \"dynamic\") {\n type = \"continuous\";\n }\n var dataChanged = false;\n for (var edgeId in _this2.body.edges) {\n if (Object.prototype.hasOwnProperty.call(_this2.body.edges, edgeId)) {\n var edge = _this2.body.edges[edgeId];\n var edgeData = _this2.body.data.edges.get(edgeId);\n if (edgeData != null) {\n var smoothOptions = edgeData.smooth;\n if (smoothOptions !== void 0) {\n if (smoothOptions.enabled === true && smoothOptions.type === \"dynamic\") {\n if (type === void 0) {\n edge.setOptions({\n smooth: false\n });\n } else {\n edge.setOptions({\n smooth: {\n type\n }\n });\n }\n dataChanged = true;\n }\n }\n }\n }\n }\n if (emit === true && dataChanged === true) {\n _this2.body.emitter.emit(\"_dataChanged\");\n }\n });\n this.body.emitter.on(\"_dataUpdated\", function() {\n _this2.reconnectEdges();\n });\n this.body.emitter.on(\"refreshEdges\", bind$5(_context2 = this.refresh).call(_context2, this));\n this.body.emitter.on(\"refresh\", bind$5(_context3 = this.refresh).call(_context3, this));\n this.body.emitter.on(\"destroy\", function() {\n forEach$1(_this2.edgesListeners, function(callback, event) {\n if (_this2.body.data.edges)\n _this2.body.data.edges.off(event, callback);\n });\n delete _this2.body.functions.createEdge;\n delete _this2.edgesListeners.add;\n delete _this2.edgesListeners.update;\n delete _this2.edgesListeners.remove;\n delete _this2.edgesListeners;\n });\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options2) {\n if (options2 !== void 0) {\n Edge.parseOptions(this.options, options2, true, this.defaultOptions, true);\n var dataChanged = false;\n if (options2.smooth !== void 0) {\n for (var edgeId in this.body.edges) {\n if (Object.prototype.hasOwnProperty.call(this.body.edges, edgeId)) {\n dataChanged = this.body.edges[edgeId].updateEdgeType() || dataChanged;\n }\n }\n }\n if (options2.font !== void 0) {\n for (var _edgeId in this.body.edges) {\n if (Object.prototype.hasOwnProperty.call(this.body.edges, _edgeId)) {\n this.body.edges[_edgeId].updateLabelModule();\n }\n }\n }\n if (options2.hidden !== void 0 || options2.physics !== void 0 || dataChanged === true) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n }\n }, {\n key: \"setData\",\n value: function setData(edges) {\n var _this3 = this;\n var doNotEmit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n var oldEdgesData = this.body.data.edges;\n if (isDataViewLike(\"id\", edges)) {\n this.body.data.edges = edges;\n } else if (isArray$1(edges)) {\n this.body.data.edges = new DataSet();\n this.body.data.edges.add(edges);\n } else if (!edges) {\n this.body.data.edges = new DataSet();\n } else {\n throw new TypeError(\"Array or DataSet expected\");\n }\n if (oldEdgesData) {\n forEach$1(this.edgesListeners, function(callback, event) {\n oldEdgesData.off(event, callback);\n });\n }\n this.body.edges = {};\n if (this.body.data.edges) {\n forEach$1(this.edgesListeners, function(callback, event) {\n _this3.body.data.edges.on(event, callback);\n });\n var ids = this.body.data.edges.getIds();\n this.add(ids, true);\n }\n this.body.emitter.emit(\"_adjustEdgesForHierarchicalLayout\");\n if (doNotEmit === false) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n }, {\n key: \"add\",\n value: function add(ids) {\n var doNotEmit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n var edges = this.body.edges;\n var edgesData = this.body.data.edges;\n for (var i = 0; i < ids.length; i++) {\n var id2 = ids[i];\n var oldEdge = edges[id2];\n if (oldEdge) {\n oldEdge.disconnect();\n }\n var data2 = edgesData.get(id2, {\n showInternalIds: true\n });\n edges[id2] = this.create(data2);\n }\n this.body.emitter.emit(\"_adjustEdgesForHierarchicalLayout\");\n if (doNotEmit === false) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n }, {\n key: \"update\",\n value: function update(ids) {\n var edges = this.body.edges;\n var edgesData = this.body.data.edges;\n var dataChanged = false;\n for (var i = 0; i < ids.length; i++) {\n var id2 = ids[i];\n var data2 = edgesData.get(id2);\n var edge = edges[id2];\n if (edge !== void 0) {\n edge.disconnect();\n dataChanged = edge.setOptions(data2) || dataChanged;\n edge.connect();\n } else {\n this.body.edges[id2] = this.create(data2);\n dataChanged = true;\n }\n }\n if (dataChanged === true) {\n this.body.emitter.emit(\"_adjustEdgesForHierarchicalLayout\");\n this.body.emitter.emit(\"_dataChanged\");\n } else {\n this.body.emitter.emit(\"_dataUpdated\");\n }\n }\n }, {\n key: \"remove\",\n value: function remove(ids) {\n var emit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n if (ids.length === 0)\n return;\n var edges = this.body.edges;\n forEach$1(ids, function(id2) {\n var edge = edges[id2];\n if (edge !== void 0) {\n edge.remove();\n }\n });\n if (emit) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n var _this4 = this;\n forEach$1(this.body.edges, function(edge, edgeId) {\n var data2 = _this4.body.data.edges.get(edgeId);\n if (data2 !== void 0) {\n edge.setOptions(data2);\n }\n });\n }\n }, {\n key: \"create\",\n value: function create5(properties) {\n return new Edge(properties, this.body, this.images, this.options, this.defaultOptions);\n }\n }, {\n key: \"reconnectEdges\",\n value: function reconnectEdges() {\n var id2;\n var nodes = this.body.nodes;\n var edges = this.body.edges;\n for (id2 in nodes) {\n if (Object.prototype.hasOwnProperty.call(nodes, id2)) {\n nodes[id2].edges = [];\n }\n }\n for (id2 in edges) {\n if (Object.prototype.hasOwnProperty.call(edges, id2)) {\n var edge = edges[id2];\n edge.from = null;\n edge.to = null;\n edge.connect();\n }\n }\n }\n }, {\n key: \"getConnectedNodes\",\n value: function getConnectedNodes(edgeId) {\n var nodeList = [];\n if (this.body.edges[edgeId] !== void 0) {\n var edge = this.body.edges[edgeId];\n if (edge.fromId !== void 0) {\n nodeList.push(edge.fromId);\n }\n if (edge.toId !== void 0) {\n nodeList.push(edge.toId);\n }\n }\n return nodeList;\n }\n }, {\n key: \"_updateState\",\n value: function _updateState() {\n this._addMissingEdges();\n this._removeInvalidEdges();\n }\n }, {\n key: \"_removeInvalidEdges\",\n value: function _removeInvalidEdges() {\n var _this5 = this;\n var edgesToDelete = [];\n forEach$1(this.body.edges, function(edge, id2) {\n var toNode = _this5.body.nodes[edge.toId];\n var fromNode = _this5.body.nodes[edge.fromId];\n if (toNode !== void 0 && toNode.isCluster === true || fromNode !== void 0 && fromNode.isCluster === true) {\n return;\n }\n if (toNode === void 0 || fromNode === void 0) {\n edgesToDelete.push(id2);\n }\n });\n this.remove(edgesToDelete, false);\n }\n }, {\n key: \"_addMissingEdges\",\n value: function _addMissingEdges() {\n var edgesData = this.body.data.edges;\n if (edgesData === void 0 || edgesData === null) {\n return;\n }\n var edges = this.body.edges;\n var addIds = [];\n forEach$2(edgesData).call(edgesData, function(edgeData, edgeId) {\n var edge = edges[edgeId];\n if (edge === void 0) {\n addIds.push(edgeId);\n }\n });\n this.add(addIds, true);\n }\n }]);\n return EdgesHandler2;\n}();\nvar BarnesHutSolver = /* @__PURE__ */ function() {\n function BarnesHutSolver2(body, physicsBody, options2) {\n _classCallCheck(this, BarnesHutSolver2);\n this.body = body;\n this.physicsBody = physicsBody;\n this.barnesHutTree;\n this.setOptions(options2);\n this._rng = Alea(\"BARNES HUT SOLVER\");\n }\n _createClass(BarnesHutSolver2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n this.options = options2;\n this.thetaInversed = 1 / this.options.theta;\n this.overlapAvoidanceFactor = 1 - Math.max(0, Math.min(1, this.options.avoidOverlap));\n }\n }, {\n key: \"solve\",\n value: function solve() {\n if (this.options.gravitationalConstant !== 0 && this.physicsBody.physicsNodeIndices.length > 0) {\n var node;\n var nodes = this.body.nodes;\n var nodeIndices = this.physicsBody.physicsNodeIndices;\n var nodeCount = nodeIndices.length;\n var barnesHutTree = this._formBarnesHutTree(nodes, nodeIndices);\n this.barnesHutTree = barnesHutTree;\n for (var i = 0; i < nodeCount; i++) {\n node = nodes[nodeIndices[i]];\n if (node.options.mass > 0) {\n this._getForceContributions(barnesHutTree.root, node);\n }\n }\n }\n }\n }, {\n key: \"_getForceContributions\",\n value: function _getForceContributions(parentBranch, node) {\n this._getForceContribution(parentBranch.children.NW, node);\n this._getForceContribution(parentBranch.children.NE, node);\n this._getForceContribution(parentBranch.children.SW, node);\n this._getForceContribution(parentBranch.children.SE, node);\n }\n }, {\n key: \"_getForceContribution\",\n value: function _getForceContribution(parentBranch, node) {\n if (parentBranch.childrenCount > 0) {\n var dx = parentBranch.centerOfMass.x - node.x;\n var dy = parentBranch.centerOfMass.y - node.y;\n var distance = Math.sqrt(dx * dx + dy * dy);\n if (distance * parentBranch.calcSize > this.thetaInversed) {\n this._calculateForces(distance, dx, dy, node, parentBranch);\n } else {\n if (parentBranch.childrenCount === 4) {\n this._getForceContributions(parentBranch, node);\n } else {\n if (parentBranch.children.data.id != node.id) {\n this._calculateForces(distance, dx, dy, node, parentBranch);\n }\n }\n }\n }\n }\n }, {\n key: \"_calculateForces\",\n value: function _calculateForces(distance, dx, dy, node, parentBranch) {\n if (distance === 0) {\n distance = 0.1;\n dx = distance;\n }\n if (this.overlapAvoidanceFactor < 1 && node.shape.radius) {\n distance = Math.max(0.1 + this.overlapAvoidanceFactor * node.shape.radius, distance - node.shape.radius);\n }\n var gravityForce = this.options.gravitationalConstant * parentBranch.mass * node.options.mass / Math.pow(distance, 3);\n var fx = dx * gravityForce;\n var fy = dy * gravityForce;\n this.physicsBody.forces[node.id].x += fx;\n this.physicsBody.forces[node.id].y += fy;\n }\n }, {\n key: \"_formBarnesHutTree\",\n value: function _formBarnesHutTree(nodes, nodeIndices) {\n var node;\n var nodeCount = nodeIndices.length;\n var minX = nodes[nodeIndices[0]].x;\n var minY = nodes[nodeIndices[0]].y;\n var maxX = nodes[nodeIndices[0]].x;\n var maxY = nodes[nodeIndices[0]].y;\n for (var i = 1; i < nodeCount; i++) {\n var _node = nodes[nodeIndices[i]];\n var x = _node.x;\n var y = _node.y;\n if (_node.options.mass > 0) {\n if (x < minX) {\n minX = x;\n }\n if (x > maxX) {\n maxX = x;\n }\n if (y < minY) {\n minY = y;\n }\n if (y > maxY) {\n maxY = y;\n }\n }\n }\n var sizeDiff = Math.abs(maxX - minX) - Math.abs(maxY - minY);\n if (sizeDiff > 0) {\n minY -= 0.5 * sizeDiff;\n maxY += 0.5 * sizeDiff;\n } else {\n minX += 0.5 * sizeDiff;\n maxX -= 0.5 * sizeDiff;\n }\n var minimumTreeSize = 1e-5;\n var rootSize = Math.max(minimumTreeSize, Math.abs(maxX - minX));\n var halfRootSize = 0.5 * rootSize;\n var centerX = 0.5 * (minX + maxX), centerY = 0.5 * (minY + maxY);\n var barnesHutTree = {\n root: {\n centerOfMass: {\n x: 0,\n y: 0\n },\n mass: 0,\n range: {\n minX: centerX - halfRootSize,\n maxX: centerX + halfRootSize,\n minY: centerY - halfRootSize,\n maxY: centerY + halfRootSize\n },\n size: rootSize,\n calcSize: 1 / rootSize,\n children: {\n data: null\n },\n maxWidth: 0,\n level: 0,\n childrenCount: 4\n }\n };\n this._splitBranch(barnesHutTree.root);\n for (var _i = 0; _i < nodeCount; _i++) {\n node = nodes[nodeIndices[_i]];\n if (node.options.mass > 0) {\n this._placeInTree(barnesHutTree.root, node);\n }\n }\n return barnesHutTree;\n }\n }, {\n key: \"_updateBranchMass\",\n value: function _updateBranchMass(parentBranch, node) {\n var centerOfMass = parentBranch.centerOfMass;\n var totalMass = parentBranch.mass + node.options.mass;\n var totalMassInv = 1 / totalMass;\n centerOfMass.x = centerOfMass.x * parentBranch.mass + node.x * node.options.mass;\n centerOfMass.x *= totalMassInv;\n centerOfMass.y = centerOfMass.y * parentBranch.mass + node.y * node.options.mass;\n centerOfMass.y *= totalMassInv;\n parentBranch.mass = totalMass;\n var biggestSize = Math.max(Math.max(node.height, node.radius), node.width);\n parentBranch.maxWidth = parentBranch.maxWidth < biggestSize ? biggestSize : parentBranch.maxWidth;\n }\n }, {\n key: \"_placeInTree\",\n value: function _placeInTree(parentBranch, node, skipMassUpdate) {\n if (skipMassUpdate != true || skipMassUpdate === void 0) {\n this._updateBranchMass(parentBranch, node);\n }\n var range = parentBranch.children.NW.range;\n var region;\n if (range.maxX > node.x) {\n if (range.maxY > node.y) {\n region = \"NW\";\n } else {\n region = \"SW\";\n }\n } else {\n if (range.maxY > node.y) {\n region = \"NE\";\n } else {\n region = \"SE\";\n }\n }\n this._placeInRegion(parentBranch, node, region);\n }\n }, {\n key: \"_placeInRegion\",\n value: function _placeInRegion(parentBranch, node, region) {\n var children = parentBranch.children[region];\n switch (children.childrenCount) {\n case 0:\n children.children.data = node;\n children.childrenCount = 1;\n this._updateBranchMass(children, node);\n break;\n case 1:\n if (children.children.data.x === node.x && children.children.data.y === node.y) {\n node.x += this._rng();\n node.y += this._rng();\n } else {\n this._splitBranch(children);\n this._placeInTree(children, node);\n }\n break;\n case 4:\n this._placeInTree(children, node);\n break;\n }\n }\n }, {\n key: \"_splitBranch\",\n value: function _splitBranch(parentBranch) {\n var containedNode = null;\n if (parentBranch.childrenCount === 1) {\n containedNode = parentBranch.children.data;\n parentBranch.mass = 0;\n parentBranch.centerOfMass.x = 0;\n parentBranch.centerOfMass.y = 0;\n }\n parentBranch.childrenCount = 4;\n parentBranch.children.data = null;\n this._insertRegion(parentBranch, \"NW\");\n this._insertRegion(parentBranch, \"NE\");\n this._insertRegion(parentBranch, \"SW\");\n this._insertRegion(parentBranch, \"SE\");\n if (containedNode != null) {\n this._placeInTree(parentBranch, containedNode);\n }\n }\n }, {\n key: \"_insertRegion\",\n value: function _insertRegion(parentBranch, region) {\n var minX, maxX, minY, maxY;\n var childSize = 0.5 * parentBranch.size;\n switch (region) {\n case \"NW\":\n minX = parentBranch.range.minX;\n maxX = parentBranch.range.minX + childSize;\n minY = parentBranch.range.minY;\n maxY = parentBranch.range.minY + childSize;\n break;\n case \"NE\":\n minX = parentBranch.range.minX + childSize;\n maxX = parentBranch.range.maxX;\n minY = parentBranch.range.minY;\n maxY = parentBranch.range.minY + childSize;\n break;\n case \"SW\":\n minX = parentBranch.range.minX;\n maxX = parentBranch.range.minX + childSize;\n minY = parentBranch.range.minY + childSize;\n maxY = parentBranch.range.maxY;\n break;\n case \"SE\":\n minX = parentBranch.range.minX + childSize;\n maxX = parentBranch.range.maxX;\n minY = parentBranch.range.minY + childSize;\n maxY = parentBranch.range.maxY;\n break;\n }\n parentBranch.children[region] = {\n centerOfMass: {\n x: 0,\n y: 0\n },\n mass: 0,\n range: {\n minX,\n maxX,\n minY,\n maxY\n },\n size: 0.5 * parentBranch.size,\n calcSize: 2 * parentBranch.calcSize,\n children: {\n data: null\n },\n maxWidth: 0,\n level: parentBranch.level + 1,\n childrenCount: 0\n };\n }\n }, {\n key: \"_debug\",\n value: function _debug(ctx, color) {\n if (this.barnesHutTree !== void 0) {\n ctx.lineWidth = 1;\n this._drawBranch(this.barnesHutTree.root, ctx, color);\n }\n }\n }, {\n key: \"_drawBranch\",\n value: function _drawBranch(branch, ctx, color) {\n if (color === void 0) {\n color = \"#FF0000\";\n }\n if (branch.childrenCount === 4) {\n this._drawBranch(branch.children.NW, ctx);\n this._drawBranch(branch.children.NE, ctx);\n this._drawBranch(branch.children.SE, ctx);\n this._drawBranch(branch.children.SW, ctx);\n }\n ctx.strokeStyle = color;\n ctx.beginPath();\n ctx.moveTo(branch.range.minX, branch.range.minY);\n ctx.lineTo(branch.range.maxX, branch.range.minY);\n ctx.stroke();\n ctx.beginPath();\n ctx.moveTo(branch.range.maxX, branch.range.minY);\n ctx.lineTo(branch.range.maxX, branch.range.maxY);\n ctx.stroke();\n ctx.beginPath();\n ctx.moveTo(branch.range.maxX, branch.range.maxY);\n ctx.lineTo(branch.range.minX, branch.range.maxY);\n ctx.stroke();\n ctx.beginPath();\n ctx.moveTo(branch.range.minX, branch.range.maxY);\n ctx.lineTo(branch.range.minX, branch.range.minY);\n ctx.stroke();\n }\n }]);\n return BarnesHutSolver2;\n}();\nvar RepulsionSolver = /* @__PURE__ */ function() {\n function RepulsionSolver2(body, physicsBody, options2) {\n _classCallCheck(this, RepulsionSolver2);\n this._rng = Alea(\"REPULSION SOLVER\");\n this.body = body;\n this.physicsBody = physicsBody;\n this.setOptions(options2);\n }\n _createClass(RepulsionSolver2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n this.options = options2;\n }\n }, {\n key: \"solve\",\n value: function solve() {\n var dx, dy, distance, fx, fy, repulsingForce, node1, node2;\n var nodes = this.body.nodes;\n var nodeIndices = this.physicsBody.physicsNodeIndices;\n var forces = this.physicsBody.forces;\n var nodeDistance = this.options.nodeDistance;\n var a = -2 / 3 / nodeDistance;\n var b = 4 / 3;\n for (var i = 0; i < nodeIndices.length - 1; i++) {\n node1 = nodes[nodeIndices[i]];\n for (var j = i + 1; j < nodeIndices.length; j++) {\n node2 = nodes[nodeIndices[j]];\n dx = node2.x - node1.x;\n dy = node2.y - node1.y;\n distance = Math.sqrt(dx * dx + dy * dy);\n if (distance === 0) {\n distance = 0.1 * this._rng();\n dx = distance;\n }\n if (distance < 2 * nodeDistance) {\n if (distance < 0.5 * nodeDistance) {\n repulsingForce = 1;\n } else {\n repulsingForce = a * distance + b;\n }\n repulsingForce = repulsingForce / distance;\n fx = dx * repulsingForce;\n fy = dy * repulsingForce;\n forces[node1.id].x -= fx;\n forces[node1.id].y -= fy;\n forces[node2.id].x += fx;\n forces[node2.id].y += fy;\n }\n }\n }\n }\n }]);\n return RepulsionSolver2;\n}();\nvar HierarchicalRepulsionSolver = /* @__PURE__ */ function() {\n function HierarchicalRepulsionSolver2(body, physicsBody, options2) {\n _classCallCheck(this, HierarchicalRepulsionSolver2);\n this.body = body;\n this.physicsBody = physicsBody;\n this.setOptions(options2);\n }\n _createClass(HierarchicalRepulsionSolver2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n this.options = options2;\n this.overlapAvoidanceFactor = Math.max(0, Math.min(1, this.options.avoidOverlap || 0));\n }\n }, {\n key: \"solve\",\n value: function solve() {\n var nodes = this.body.nodes;\n var nodeIndices = this.physicsBody.physicsNodeIndices;\n var forces = this.physicsBody.forces;\n var nodeDistance = this.options.nodeDistance;\n for (var i = 0; i < nodeIndices.length - 1; i++) {\n var node1 = nodes[nodeIndices[i]];\n for (var j = i + 1; j < nodeIndices.length; j++) {\n var node2 = nodes[nodeIndices[j]];\n if (node1.level === node2.level) {\n var theseNodesDistance = nodeDistance + this.overlapAvoidanceFactor * ((node1.shape.radius || 0) / 2 + (node2.shape.radius || 0) / 2);\n var dx = node2.x - node1.x;\n var dy = node2.y - node1.y;\n var distance = Math.sqrt(dx * dx + dy * dy);\n var steepness = 0.05;\n var repulsingForce = void 0;\n if (distance < theseNodesDistance) {\n repulsingForce = -Math.pow(steepness * distance, 2) + Math.pow(steepness * theseNodesDistance, 2);\n } else {\n repulsingForce = 0;\n }\n if (distance !== 0) {\n repulsingForce = repulsingForce / distance;\n }\n var fx = dx * repulsingForce;\n var fy = dy * repulsingForce;\n forces[node1.id].x -= fx;\n forces[node1.id].y -= fy;\n forces[node2.id].x += fx;\n forces[node2.id].y += fy;\n }\n }\n }\n }\n }]);\n return HierarchicalRepulsionSolver2;\n}();\nvar SpringSolver = /* @__PURE__ */ function() {\n function SpringSolver2(body, physicsBody, options2) {\n _classCallCheck(this, SpringSolver2);\n this.body = body;\n this.physicsBody = physicsBody;\n this.setOptions(options2);\n }\n _createClass(SpringSolver2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n this.options = options2;\n }\n }, {\n key: \"solve\",\n value: function solve() {\n var edgeLength, edge;\n var edgeIndices = this.physicsBody.physicsEdgeIndices;\n var edges = this.body.edges;\n var node1, node2, node3;\n for (var i = 0; i < edgeIndices.length; i++) {\n edge = edges[edgeIndices[i]];\n if (edge.connected === true && edge.toId !== edge.fromId) {\n if (this.body.nodes[edge.toId] !== void 0 && this.body.nodes[edge.fromId] !== void 0) {\n if (edge.edgeType.via !== void 0) {\n edgeLength = edge.options.length === void 0 ? this.options.springLength : edge.options.length;\n node1 = edge.to;\n node2 = edge.edgeType.via;\n node3 = edge.from;\n this._calculateSpringForce(node1, node2, 0.5 * edgeLength);\n this._calculateSpringForce(node2, node3, 0.5 * edgeLength);\n } else {\n edgeLength = edge.options.length === void 0 ? this.options.springLength * 1.5 : edge.options.length;\n this._calculateSpringForce(edge.from, edge.to, edgeLength);\n }\n }\n }\n }\n }\n }, {\n key: \"_calculateSpringForce\",\n value: function _calculateSpringForce(node1, node2, edgeLength) {\n var dx = node1.x - node2.x;\n var dy = node1.y - node2.y;\n var distance = Math.max(Math.sqrt(dx * dx + dy * dy), 0.01);\n var springForce = this.options.springConstant * (edgeLength - distance) / distance;\n var fx = dx * springForce;\n var fy = dy * springForce;\n if (this.physicsBody.forces[node1.id] !== void 0) {\n this.physicsBody.forces[node1.id].x += fx;\n this.physicsBody.forces[node1.id].y += fy;\n }\n if (this.physicsBody.forces[node2.id] !== void 0) {\n this.physicsBody.forces[node2.id].x -= fx;\n this.physicsBody.forces[node2.id].y -= fy;\n }\n }\n }]);\n return SpringSolver2;\n}();\nvar HierarchicalSpringSolver = /* @__PURE__ */ function() {\n function HierarchicalSpringSolver2(body, physicsBody, options2) {\n _classCallCheck(this, HierarchicalSpringSolver2);\n this.body = body;\n this.physicsBody = physicsBody;\n this.setOptions(options2);\n }\n _createClass(HierarchicalSpringSolver2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n this.options = options2;\n }\n }, {\n key: \"solve\",\n value: function solve() {\n var edgeLength, edge;\n var dx, dy, fx, fy, springForce, distance;\n var edges = this.body.edges;\n var factor = 0.5;\n var edgeIndices = this.physicsBody.physicsEdgeIndices;\n var nodeIndices = this.physicsBody.physicsNodeIndices;\n var forces = this.physicsBody.forces;\n for (var i = 0; i < nodeIndices.length; i++) {\n var nodeId = nodeIndices[i];\n forces[nodeId].springFx = 0;\n forces[nodeId].springFy = 0;\n }\n for (var _i = 0; _i < edgeIndices.length; _i++) {\n edge = edges[edgeIndices[_i]];\n if (edge.connected === true) {\n edgeLength = edge.options.length === void 0 ? this.options.springLength : edge.options.length;\n dx = edge.from.x - edge.to.x;\n dy = edge.from.y - edge.to.y;\n distance = Math.sqrt(dx * dx + dy * dy);\n distance = distance === 0 ? 0.01 : distance;\n springForce = this.options.springConstant * (edgeLength - distance) / distance;\n fx = dx * springForce;\n fy = dy * springForce;\n if (edge.to.level != edge.from.level) {\n if (forces[edge.toId] !== void 0) {\n forces[edge.toId].springFx -= fx;\n forces[edge.toId].springFy -= fy;\n }\n if (forces[edge.fromId] !== void 0) {\n forces[edge.fromId].springFx += fx;\n forces[edge.fromId].springFy += fy;\n }\n } else {\n if (forces[edge.toId] !== void 0) {\n forces[edge.toId].x -= factor * fx;\n forces[edge.toId].y -= factor * fy;\n }\n if (forces[edge.fromId] !== void 0) {\n forces[edge.fromId].x += factor * fx;\n forces[edge.fromId].y += factor * fy;\n }\n }\n }\n }\n springForce = 1;\n var springFx, springFy;\n for (var _i2 = 0; _i2 < nodeIndices.length; _i2++) {\n var _nodeId = nodeIndices[_i2];\n springFx = Math.min(springForce, Math.max(-springForce, forces[_nodeId].springFx));\n springFy = Math.min(springForce, Math.max(-springForce, forces[_nodeId].springFy));\n forces[_nodeId].x += springFx;\n forces[_nodeId].y += springFy;\n }\n var totalFx = 0;\n var totalFy = 0;\n for (var _i3 = 0; _i3 < nodeIndices.length; _i3++) {\n var _nodeId2 = nodeIndices[_i3];\n totalFx += forces[_nodeId2].x;\n totalFy += forces[_nodeId2].y;\n }\n var correctionFx = totalFx / nodeIndices.length;\n var correctionFy = totalFy / nodeIndices.length;\n for (var _i4 = 0; _i4 < nodeIndices.length; _i4++) {\n var _nodeId3 = nodeIndices[_i4];\n forces[_nodeId3].x -= correctionFx;\n forces[_nodeId3].y -= correctionFy;\n }\n }\n }]);\n return HierarchicalSpringSolver2;\n}();\nvar CentralGravitySolver = /* @__PURE__ */ function() {\n function CentralGravitySolver2(body, physicsBody, options2) {\n _classCallCheck(this, CentralGravitySolver2);\n this.body = body;\n this.physicsBody = physicsBody;\n this.setOptions(options2);\n }\n _createClass(CentralGravitySolver2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n this.options = options2;\n }\n }, {\n key: \"solve\",\n value: function solve() {\n var dx, dy, distance, node;\n var nodes = this.body.nodes;\n var nodeIndices = this.physicsBody.physicsNodeIndices;\n var forces = this.physicsBody.forces;\n for (var i = 0; i < nodeIndices.length; i++) {\n var nodeId = nodeIndices[i];\n node = nodes[nodeId];\n dx = -node.x;\n dy = -node.y;\n distance = Math.sqrt(dx * dx + dy * dy);\n this._calculateForces(distance, dx, dy, forces, node);\n }\n }\n }, {\n key: \"_calculateForces\",\n value: function _calculateForces(distance, dx, dy, forces, node) {\n var gravityForce = distance === 0 ? 0 : this.options.centralGravity / distance;\n forces[node.id].x = dx * gravityForce;\n forces[node.id].y = dy * gravityForce;\n }\n }]);\n return CentralGravitySolver2;\n}();\nfunction _createSuper$3(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$3();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$3() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar ForceAtlas2BasedRepulsionSolver = /* @__PURE__ */ function(_BarnesHutSolver) {\n _inherits(ForceAtlas2BasedRepulsionSolver2, _BarnesHutSolver);\n var _super = _createSuper$3(ForceAtlas2BasedRepulsionSolver2);\n function ForceAtlas2BasedRepulsionSolver2(body, physicsBody, options2) {\n var _this;\n _classCallCheck(this, ForceAtlas2BasedRepulsionSolver2);\n _this = _super.call(this, body, physicsBody, options2);\n _this._rng = Alea(\"FORCE ATLAS 2 BASED REPULSION SOLVER\");\n return _this;\n }\n _createClass(ForceAtlas2BasedRepulsionSolver2, [{\n key: \"_calculateForces\",\n value: function _calculateForces(distance, dx, dy, node, parentBranch) {\n if (distance === 0) {\n distance = 0.1 * this._rng();\n dx = distance;\n }\n if (this.overlapAvoidanceFactor < 1 && node.shape.radius) {\n distance = Math.max(0.1 + this.overlapAvoidanceFactor * node.shape.radius, distance - node.shape.radius);\n }\n var degree = node.edges.length + 1;\n var gravityForce = this.options.gravitationalConstant * parentBranch.mass * node.options.mass * degree / Math.pow(distance, 2);\n var fx = dx * gravityForce;\n var fy = dy * gravityForce;\n this.physicsBody.forces[node.id].x += fx;\n this.physicsBody.forces[node.id].y += fy;\n }\n }]);\n return ForceAtlas2BasedRepulsionSolver2;\n}(BarnesHutSolver);\nfunction _createSuper$2(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$2();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$2() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar ForceAtlas2BasedCentralGravitySolver = /* @__PURE__ */ function(_CentralGravitySolver) {\n _inherits(ForceAtlas2BasedCentralGravitySolver2, _CentralGravitySolver);\n var _super = _createSuper$2(ForceAtlas2BasedCentralGravitySolver2);\n function ForceAtlas2BasedCentralGravitySolver2(body, physicsBody, options2) {\n _classCallCheck(this, ForceAtlas2BasedCentralGravitySolver2);\n return _super.call(this, body, physicsBody, options2);\n }\n _createClass(ForceAtlas2BasedCentralGravitySolver2, [{\n key: \"_calculateForces\",\n value: function _calculateForces(distance, dx, dy, forces, node) {\n if (distance > 0) {\n var degree = node.edges.length + 1;\n var gravityForce = this.options.centralGravity * degree * node.options.mass;\n forces[node.id].x = dx * gravityForce;\n forces[node.id].y = dy * gravityForce;\n }\n }\n }]);\n return ForceAtlas2BasedCentralGravitySolver2;\n}(CentralGravitySolver);\nvar PhysicsEngine = /* @__PURE__ */ function() {\n function PhysicsEngine2(body) {\n _classCallCheck(this, PhysicsEngine2);\n this.body = body;\n this.physicsBody = {\n physicsNodeIndices: [],\n physicsEdgeIndices: [],\n forces: {},\n velocities: {}\n };\n this.physicsEnabled = true;\n this.simulationInterval = 1e3 / 60;\n this.requiresTimeout = true;\n this.previousStates = {};\n this.referenceState = {};\n this.freezeCache = {};\n this.renderTimer = void 0;\n this.adaptiveTimestep = false;\n this.adaptiveTimestepEnabled = false;\n this.adaptiveCounter = 0;\n this.adaptiveInterval = 3;\n this.stabilized = false;\n this.startedStabilization = false;\n this.stabilizationIterations = 0;\n this.ready = false;\n this.options = {};\n this.defaultOptions = {\n enabled: true,\n barnesHut: {\n theta: 0.5,\n gravitationalConstant: -2e3,\n centralGravity: 0.3,\n springLength: 95,\n springConstant: 0.04,\n damping: 0.09,\n avoidOverlap: 0\n },\n forceAtlas2Based: {\n theta: 0.5,\n gravitationalConstant: -50,\n centralGravity: 0.01,\n springConstant: 0.08,\n springLength: 100,\n damping: 0.4,\n avoidOverlap: 0\n },\n repulsion: {\n centralGravity: 0.2,\n springLength: 200,\n springConstant: 0.05,\n nodeDistance: 100,\n damping: 0.09,\n avoidOverlap: 0\n },\n hierarchicalRepulsion: {\n centralGravity: 0,\n springLength: 100,\n springConstant: 0.01,\n nodeDistance: 120,\n damping: 0.09\n },\n maxVelocity: 50,\n minVelocity: 0.75,\n solver: \"barnesHut\",\n stabilization: {\n enabled: true,\n iterations: 1e3,\n updateInterval: 50,\n onlyDynamicEdges: false,\n fit: true\n },\n timestep: 0.5,\n adaptiveTimestep: true,\n wind: {\n x: 0,\n y: 0\n }\n };\n assign$2(this.options, this.defaultOptions);\n this.timestep = 0.5;\n this.layoutFailed = false;\n this.bindEventListeners();\n }\n _createClass(PhysicsEngine2, [{\n key: \"bindEventListeners\",\n value: function bindEventListeners() {\n var _this = this;\n this.body.emitter.on(\"initPhysics\", function() {\n _this.initPhysics();\n });\n this.body.emitter.on(\"_layoutFailed\", function() {\n _this.layoutFailed = true;\n });\n this.body.emitter.on(\"resetPhysics\", function() {\n _this.stopSimulation();\n _this.ready = false;\n });\n this.body.emitter.on(\"disablePhysics\", function() {\n _this.physicsEnabled = false;\n _this.stopSimulation();\n });\n this.body.emitter.on(\"restorePhysics\", function() {\n _this.setOptions(_this.options);\n if (_this.ready === true) {\n _this.startSimulation();\n }\n });\n this.body.emitter.on(\"startSimulation\", function() {\n if (_this.ready === true) {\n _this.startSimulation();\n }\n });\n this.body.emitter.on(\"stopSimulation\", function() {\n _this.stopSimulation();\n });\n this.body.emitter.on(\"destroy\", function() {\n _this.stopSimulation(false);\n _this.body.emitter.off();\n });\n this.body.emitter.on(\"_dataChanged\", function() {\n _this.updatePhysicsData();\n });\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options2) {\n if (options2 !== void 0) {\n if (options2 === false) {\n this.options.enabled = false;\n this.physicsEnabled = false;\n this.stopSimulation();\n } else if (options2 === true) {\n this.options.enabled = true;\n this.physicsEnabled = true;\n this.startSimulation();\n } else {\n this.physicsEnabled = true;\n selectiveNotDeepExtend([\"stabilization\"], this.options, options2);\n mergeOptions(this.options, options2, \"stabilization\");\n if (options2.enabled === void 0) {\n this.options.enabled = true;\n }\n if (this.options.enabled === false) {\n this.physicsEnabled = false;\n this.stopSimulation();\n }\n var wind = this.options.wind;\n if (wind) {\n if (typeof wind.x !== \"number\" || isNan(wind.x)) {\n wind.x = 0;\n }\n if (typeof wind.y !== \"number\" || isNan(wind.y)) {\n wind.y = 0;\n }\n }\n this.timestep = this.options.timestep;\n }\n }\n this.init();\n }\n }, {\n key: \"init\",\n value: function init() {\n var options2;\n if (this.options.solver === \"forceAtlas2Based\") {\n options2 = this.options.forceAtlas2Based;\n this.nodesSolver = new ForceAtlas2BasedRepulsionSolver(this.body, this.physicsBody, options2);\n this.edgesSolver = new SpringSolver(this.body, this.physicsBody, options2);\n this.gravitySolver = new ForceAtlas2BasedCentralGravitySolver(this.body, this.physicsBody, options2);\n } else if (this.options.solver === \"repulsion\") {\n options2 = this.options.repulsion;\n this.nodesSolver = new RepulsionSolver(this.body, this.physicsBody, options2);\n this.edgesSolver = new SpringSolver(this.body, this.physicsBody, options2);\n this.gravitySolver = new CentralGravitySolver(this.body, this.physicsBody, options2);\n } else if (this.options.solver === \"hierarchicalRepulsion\") {\n options2 = this.options.hierarchicalRepulsion;\n this.nodesSolver = new HierarchicalRepulsionSolver(this.body, this.physicsBody, options2);\n this.edgesSolver = new HierarchicalSpringSolver(this.body, this.physicsBody, options2);\n this.gravitySolver = new CentralGravitySolver(this.body, this.physicsBody, options2);\n } else {\n options2 = this.options.barnesHut;\n this.nodesSolver = new BarnesHutSolver(this.body, this.physicsBody, options2);\n this.edgesSolver = new SpringSolver(this.body, this.physicsBody, options2);\n this.gravitySolver = new CentralGravitySolver(this.body, this.physicsBody, options2);\n }\n this.modelOptions = options2;\n }\n }, {\n key: \"initPhysics\",\n value: function initPhysics() {\n if (this.physicsEnabled === true && this.options.enabled === true) {\n if (this.options.stabilization.enabled === true) {\n this.stabilize();\n } else {\n this.stabilized = false;\n this.ready = true;\n this.body.emitter.emit(\"fit\", {}, this.layoutFailed);\n this.startSimulation();\n }\n } else {\n this.ready = true;\n this.body.emitter.emit(\"fit\");\n }\n }\n }, {\n key: \"startSimulation\",\n value: function startSimulation() {\n if (this.physicsEnabled === true && this.options.enabled === true) {\n this.stabilized = false;\n this.adaptiveTimestep = false;\n this.body.emitter.emit(\"_resizeNodes\");\n if (this.viewFunction === void 0) {\n var _context;\n this.viewFunction = bind$5(_context = this.simulationStep).call(_context, this);\n this.body.emitter.on(\"initRedraw\", this.viewFunction);\n this.body.emitter.emit(\"_startRendering\");\n }\n } else {\n this.body.emitter.emit(\"_redraw\");\n }\n }\n }, {\n key: \"stopSimulation\",\n value: function stopSimulation() {\n var emit = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;\n this.stabilized = true;\n if (emit === true) {\n this._emitStabilized();\n }\n if (this.viewFunction !== void 0) {\n this.body.emitter.off(\"initRedraw\", this.viewFunction);\n this.viewFunction = void 0;\n if (emit === true) {\n this.body.emitter.emit(\"_stopRendering\");\n }\n }\n }\n }, {\n key: \"simulationStep\",\n value: function simulationStep() {\n var startTime = now$1();\n this.physicsTick();\n var physicsTime = now$1() - startTime;\n if ((physicsTime < 0.4 * this.simulationInterval || this.runDoubleSpeed === true) && this.stabilized === false) {\n this.physicsTick();\n this.runDoubleSpeed = true;\n }\n if (this.stabilized === true) {\n this.stopSimulation();\n }\n }\n }, {\n key: \"_emitStabilized\",\n value: function _emitStabilized() {\n var _this2 = this;\n var amountOfIterations = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.stabilizationIterations;\n if (this.stabilizationIterations > 1 || this.startedStabilization === true) {\n setTimeout$1(function() {\n _this2.body.emitter.emit(\"stabilized\", {\n iterations: amountOfIterations\n });\n _this2.startedStabilization = false;\n _this2.stabilizationIterations = 0;\n }, 0);\n }\n }\n }, {\n key: \"physicsStep\",\n value: function physicsStep() {\n this.gravitySolver.solve();\n this.nodesSolver.solve();\n this.edgesSolver.solve();\n this.moveNodes();\n }\n }, {\n key: \"adjustTimeStep\",\n value: function adjustTimeStep() {\n var factor = 1.2;\n if (this._evaluateStepQuality() === true) {\n this.timestep = factor * this.timestep;\n } else {\n if (this.timestep / factor < this.options.timestep) {\n this.timestep = this.options.timestep;\n } else {\n this.adaptiveCounter = -1;\n this.timestep = Math.max(this.options.timestep, this.timestep / factor);\n }\n }\n }\n }, {\n key: \"physicsTick\",\n value: function physicsTick() {\n this._startStabilizing();\n if (this.stabilized === true)\n return;\n if (this.adaptiveTimestep === true && this.adaptiveTimestepEnabled === true) {\n var doAdaptive = this.adaptiveCounter % this.adaptiveInterval === 0;\n if (doAdaptive) {\n this.timestep = 2 * this.timestep;\n this.physicsStep();\n this.revert();\n this.timestep = 0.5 * this.timestep;\n this.physicsStep();\n this.physicsStep();\n this.adjustTimeStep();\n } else {\n this.physicsStep();\n }\n this.adaptiveCounter += 1;\n } else {\n this.timestep = this.options.timestep;\n this.physicsStep();\n }\n if (this.stabilized === true)\n this.revert();\n this.stabilizationIterations++;\n }\n }, {\n key: \"updatePhysicsData\",\n value: function updatePhysicsData() {\n this.physicsBody.forces = {};\n this.physicsBody.physicsNodeIndices = [];\n this.physicsBody.physicsEdgeIndices = [];\n var nodes = this.body.nodes;\n var edges = this.body.edges;\n for (var nodeId in nodes) {\n if (Object.prototype.hasOwnProperty.call(nodes, nodeId)) {\n if (nodes[nodeId].options.physics === true) {\n this.physicsBody.physicsNodeIndices.push(nodes[nodeId].id);\n }\n }\n }\n for (var edgeId in edges) {\n if (Object.prototype.hasOwnProperty.call(edges, edgeId)) {\n if (edges[edgeId].options.physics === true) {\n this.physicsBody.physicsEdgeIndices.push(edges[edgeId].id);\n }\n }\n }\n for (var i = 0; i < this.physicsBody.physicsNodeIndices.length; i++) {\n var _nodeId = this.physicsBody.physicsNodeIndices[i];\n this.physicsBody.forces[_nodeId] = {\n x: 0,\n y: 0\n };\n if (this.physicsBody.velocities[_nodeId] === void 0) {\n this.physicsBody.velocities[_nodeId] = {\n x: 0,\n y: 0\n };\n }\n }\n for (var _nodeId2 in this.physicsBody.velocities) {\n if (nodes[_nodeId2] === void 0) {\n delete this.physicsBody.velocities[_nodeId2];\n }\n }\n }\n }, {\n key: \"revert\",\n value: function revert() {\n var nodeIds = keys3(this.previousStates);\n var nodes = this.body.nodes;\n var velocities = this.physicsBody.velocities;\n this.referenceState = {};\n for (var i = 0; i < nodeIds.length; i++) {\n var nodeId = nodeIds[i];\n if (nodes[nodeId] !== void 0) {\n if (nodes[nodeId].options.physics === true) {\n this.referenceState[nodeId] = {\n positions: {\n x: nodes[nodeId].x,\n y: nodes[nodeId].y\n }\n };\n velocities[nodeId].x = this.previousStates[nodeId].vx;\n velocities[nodeId].y = this.previousStates[nodeId].vy;\n nodes[nodeId].x = this.previousStates[nodeId].x;\n nodes[nodeId].y = this.previousStates[nodeId].y;\n }\n } else {\n delete this.previousStates[nodeId];\n }\n }\n }\n }, {\n key: \"_evaluateStepQuality\",\n value: function _evaluateStepQuality() {\n var dx, dy, dpos;\n var nodes = this.body.nodes;\n var reference = this.referenceState;\n var posThreshold = 0.3;\n for (var nodeId in this.referenceState) {\n if (Object.prototype.hasOwnProperty.call(this.referenceState, nodeId) && nodes[nodeId] !== void 0) {\n dx = nodes[nodeId].x - reference[nodeId].positions.x;\n dy = nodes[nodeId].y - reference[nodeId].positions.y;\n dpos = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n if (dpos > posThreshold) {\n return false;\n }\n }\n }\n return true;\n }\n }, {\n key: \"moveNodes\",\n value: function moveNodes() {\n var nodeIndices = this.physicsBody.physicsNodeIndices;\n var maxNodeVelocity = 0;\n var averageNodeVelocity = 0;\n var velocityAdaptiveThreshold = 5;\n for (var i = 0; i < nodeIndices.length; i++) {\n var nodeId = nodeIndices[i];\n var nodeVelocity = this._performStep(nodeId);\n maxNodeVelocity = Math.max(maxNodeVelocity, nodeVelocity);\n averageNodeVelocity += nodeVelocity;\n }\n this.adaptiveTimestepEnabled = averageNodeVelocity / nodeIndices.length < velocityAdaptiveThreshold;\n this.stabilized = maxNodeVelocity < this.options.minVelocity;\n }\n }, {\n key: \"calculateComponentVelocity\",\n value: function calculateComponentVelocity(v, f, m) {\n var df = this.modelOptions.damping * v;\n var a = (f - df) / m;\n v += a * this.timestep;\n var maxV = this.options.maxVelocity || 1e9;\n if (Math.abs(v) > maxV) {\n v = v > 0 ? maxV : -maxV;\n }\n return v;\n }\n }, {\n key: \"_performStep\",\n value: function _performStep(nodeId) {\n var node = this.body.nodes[nodeId];\n var force = this.physicsBody.forces[nodeId];\n if (this.options.wind) {\n force.x += this.options.wind.x;\n force.y += this.options.wind.y;\n }\n var velocity = this.physicsBody.velocities[nodeId];\n this.previousStates[nodeId] = {\n x: node.x,\n y: node.y,\n vx: velocity.x,\n vy: velocity.y\n };\n if (node.options.fixed.x === false) {\n velocity.x = this.calculateComponentVelocity(velocity.x, force.x, node.options.mass);\n node.x += velocity.x * this.timestep;\n } else {\n force.x = 0;\n velocity.x = 0;\n }\n if (node.options.fixed.y === false) {\n velocity.y = this.calculateComponentVelocity(velocity.y, force.y, node.options.mass);\n node.y += velocity.y * this.timestep;\n } else {\n force.y = 0;\n velocity.y = 0;\n }\n var totalVelocity = Math.sqrt(Math.pow(velocity.x, 2) + Math.pow(velocity.y, 2));\n return totalVelocity;\n }\n }, {\n key: \"_freezeNodes\",\n value: function _freezeNodes() {\n var nodes = this.body.nodes;\n for (var id2 in nodes) {\n if (Object.prototype.hasOwnProperty.call(nodes, id2)) {\n if (nodes[id2].x && nodes[id2].y) {\n var fixed = nodes[id2].options.fixed;\n this.freezeCache[id2] = {\n x: fixed.x,\n y: fixed.y\n };\n fixed.x = true;\n fixed.y = true;\n }\n }\n }\n }\n }, {\n key: \"_restoreFrozenNodes\",\n value: function _restoreFrozenNodes() {\n var nodes = this.body.nodes;\n for (var id2 in nodes) {\n if (Object.prototype.hasOwnProperty.call(nodes, id2)) {\n if (this.freezeCache[id2] !== void 0) {\n nodes[id2].options.fixed.x = this.freezeCache[id2].x;\n nodes[id2].options.fixed.y = this.freezeCache[id2].y;\n }\n }\n }\n this.freezeCache = {};\n }\n }, {\n key: \"stabilize\",\n value: function stabilize() {\n var _this3 = this;\n var iterations = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.options.stabilization.iterations;\n if (typeof iterations !== \"number\") {\n iterations = this.options.stabilization.iterations;\n console.error(\"The stabilize method needs a numeric amount of iterations. Switching to default: \", iterations);\n }\n if (this.physicsBody.physicsNodeIndices.length === 0) {\n this.ready = true;\n return;\n }\n this.adaptiveTimestep = this.options.adaptiveTimestep;\n this.body.emitter.emit(\"_resizeNodes\");\n this.stopSimulation();\n this.stabilized = false;\n this.body.emitter.emit(\"_blockRedraw\");\n this.targetIterations = iterations;\n if (this.options.stabilization.onlyDynamicEdges === true) {\n this._freezeNodes();\n }\n this.stabilizationIterations = 0;\n setTimeout$1(function() {\n return _this3._stabilizationBatch();\n }, 0);\n }\n }, {\n key: \"_startStabilizing\",\n value: function _startStabilizing() {\n if (this.startedStabilization === true)\n return false;\n this.body.emitter.emit(\"startStabilizing\");\n this.startedStabilization = true;\n return true;\n }\n }, {\n key: \"_stabilizationBatch\",\n value: function _stabilizationBatch() {\n var _this4 = this;\n var running = function running2() {\n return _this4.stabilized === false && _this4.stabilizationIterations < _this4.targetIterations;\n };\n var sendProgress = function sendProgress2() {\n _this4.body.emitter.emit(\"stabilizationProgress\", {\n iterations: _this4.stabilizationIterations,\n total: _this4.targetIterations\n });\n };\n if (this._startStabilizing()) {\n sendProgress();\n }\n var count = 0;\n while (running() && count < this.options.stabilization.updateInterval) {\n this.physicsTick();\n count++;\n }\n sendProgress();\n if (running()) {\n var _context2;\n setTimeout$1(bind$5(_context2 = this._stabilizationBatch).call(_context2, this), 0);\n } else {\n this._finalizeStabilization();\n }\n }\n }, {\n key: \"_finalizeStabilization\",\n value: function _finalizeStabilization() {\n this.body.emitter.emit(\"_allowRedraw\");\n if (this.options.stabilization.fit === true) {\n this.body.emitter.emit(\"fit\");\n }\n if (this.options.stabilization.onlyDynamicEdges === true) {\n this._restoreFrozenNodes();\n }\n this.body.emitter.emit(\"stabilizationIterationsDone\");\n this.body.emitter.emit(\"_requestRedraw\");\n if (this.stabilized === true) {\n this._emitStabilized();\n } else {\n this.startSimulation();\n }\n this.ready = true;\n }\n }, {\n key: \"_drawForces\",\n value: function _drawForces(ctx) {\n for (var i = 0; i < this.physicsBody.physicsNodeIndices.length; i++) {\n var index2 = this.physicsBody.physicsNodeIndices[i];\n var node = this.body.nodes[index2];\n var force = this.physicsBody.forces[index2];\n var factor = 20;\n var colorFactor = 0.03;\n var forceSize = Math.sqrt(Math.pow(force.x, 2) + Math.pow(force.x, 2));\n var size = Math.min(Math.max(5, forceSize), 15);\n var arrowSize = 3 * size;\n var color = HSVToHex((180 - Math.min(1, Math.max(0, colorFactor * forceSize)) * 180) / 360, 1, 1);\n var point = {\n x: node.x + factor * force.x,\n y: node.y + factor * force.y\n };\n ctx.lineWidth = size;\n ctx.strokeStyle = color;\n ctx.beginPath();\n ctx.moveTo(node.x, node.y);\n ctx.lineTo(point.x, point.y);\n ctx.stroke();\n var angle = Math.atan2(force.y, force.x);\n ctx.fillStyle = color;\n EndPoints.draw(ctx, {\n type: \"arrow\",\n point,\n angle,\n length: arrowSize\n });\n fill2(ctx).call(ctx);\n }\n }\n }]);\n return PhysicsEngine2;\n}();\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nfunction rng() {\n if (!getRandomValues) {\n getRandomValues = typeof crypto !== \"undefined\" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== \"undefined\" && typeof msCrypto.getRandomValues === \"function\" && msCrypto.getRandomValues.bind(msCrypto);\n if (!getRandomValues) {\n throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");\n }\n }\n return getRandomValues(rnds8);\n}\nvar REGEX = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nfunction validate(uuid) {\n return typeof uuid === \"string\" && REGEX.test(uuid);\n}\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 256).toString(16).substr(1));\n}\nfunction stringify2(arr) {\n var offset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + \"-\" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + \"-\" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + \"-\" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + \"-\" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n if (!validate(uuid)) {\n throw TypeError(\"Stringified UUID is invalid\");\n }\n return uuid;\n}\nfunction v4(options2, buf, offset) {\n options2 = options2 || {};\n var rnds = options2.random || (options2.rng || rng)();\n rnds[6] = rnds[6] & 15 | 64;\n rnds[8] = rnds[8] & 63 | 128;\n if (buf) {\n offset = offset || 0;\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return stringify2(rnds);\n}\nvar NetworkUtil = /* @__PURE__ */ function() {\n function NetworkUtil2() {\n _classCallCheck(this, NetworkUtil2);\n }\n _createClass(NetworkUtil2, null, [{\n key: \"getRange\",\n value: function getRange(allNodes) {\n var specificNodes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];\n var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node;\n if (specificNodes.length > 0) {\n for (var i = 0; i < specificNodes.length; i++) {\n node = allNodes[specificNodes[i]];\n if (minX > node.shape.boundingBox.left) {\n minX = node.shape.boundingBox.left;\n }\n if (maxX < node.shape.boundingBox.right) {\n maxX = node.shape.boundingBox.right;\n }\n if (minY > node.shape.boundingBox.top) {\n minY = node.shape.boundingBox.top;\n }\n if (maxY < node.shape.boundingBox.bottom) {\n maxY = node.shape.boundingBox.bottom;\n }\n }\n }\n if (minX === 1e9 && maxX === -1e9 && minY === 1e9 && maxY === -1e9) {\n minY = 0, maxY = 0, minX = 0, maxX = 0;\n }\n return {\n minX,\n maxX,\n minY,\n maxY\n };\n }\n }, {\n key: \"getRangeCore\",\n value: function getRangeCore(allNodes) {\n var specificNodes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];\n var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node;\n if (specificNodes.length > 0) {\n for (var i = 0; i < specificNodes.length; i++) {\n node = allNodes[specificNodes[i]];\n if (minX > node.x) {\n minX = node.x;\n }\n if (maxX < node.x) {\n maxX = node.x;\n }\n if (minY > node.y) {\n minY = node.y;\n }\n if (maxY < node.y) {\n maxY = node.y;\n }\n }\n }\n if (minX === 1e9 && maxX === -1e9 && minY === 1e9 && maxY === -1e9) {\n minY = 0, maxY = 0, minX = 0, maxX = 0;\n }\n return {\n minX,\n maxX,\n minY,\n maxY\n };\n }\n }, {\n key: \"findCenter\",\n value: function findCenter(range) {\n return {\n x: 0.5 * (range.maxX + range.minX),\n y: 0.5 * (range.maxY + range.minY)\n };\n }\n }, {\n key: \"cloneOptions\",\n value: function cloneOptions(item, type) {\n var clonedOptions = {};\n if (type === void 0 || type === \"node\") {\n deepExtend(clonedOptions, item.options, true);\n clonedOptions.x = item.x;\n clonedOptions.y = item.y;\n clonedOptions.amountOfConnections = item.edges.length;\n } else {\n deepExtend(clonedOptions, item.options, true);\n }\n return clonedOptions;\n }\n }]);\n return NetworkUtil2;\n}();\nfunction _createSuper$1(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$1();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$1() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar Cluster = /* @__PURE__ */ function(_Node) {\n _inherits(Cluster2, _Node);\n var _super = _createSuper$1(Cluster2);\n function Cluster2(options2, body, imagelist, grouplist, globalOptions, defaultOptions) {\n var _this;\n _classCallCheck(this, Cluster2);\n _this = _super.call(this, options2, body, imagelist, grouplist, globalOptions, defaultOptions);\n _this.isCluster = true;\n _this.containedNodes = {};\n _this.containedEdges = {};\n return _this;\n }\n _createClass(Cluster2, [{\n key: \"_openChildCluster\",\n value: function _openChildCluster(childClusterId) {\n var _this2 = this;\n var childCluster = this.body.nodes[childClusterId];\n if (this.containedNodes[childClusterId] === void 0) {\n throw new Error(\"node with id: \" + childClusterId + \" not in current cluster\");\n }\n if (!childCluster.isCluster) {\n throw new Error(\"node with id: \" + childClusterId + \" is not a cluster\");\n }\n delete this.containedNodes[childClusterId];\n forEach$1(childCluster.edges, function(edge) {\n delete _this2.containedEdges[edge.id];\n });\n forEach$1(childCluster.containedNodes, function(node, nodeId) {\n _this2.containedNodes[nodeId] = node;\n });\n childCluster.containedNodes = {};\n forEach$1(childCluster.containedEdges, function(edge, edgeId) {\n _this2.containedEdges[edgeId] = edge;\n });\n childCluster.containedEdges = {};\n forEach$1(childCluster.edges, function(clusterEdge) {\n forEach$1(_this2.edges, function(parentClusterEdge) {\n var _context, _context2;\n var index2 = indexOf2(_context = parentClusterEdge.clusteringEdgeReplacingIds).call(_context, clusterEdge.id);\n if (index2 === -1)\n return;\n forEach$1(clusterEdge.clusteringEdgeReplacingIds, function(srcId) {\n parentClusterEdge.clusteringEdgeReplacingIds.push(srcId);\n _this2.body.edges[srcId].edgeReplacedById = parentClusterEdge.id;\n });\n splice2(_context2 = parentClusterEdge.clusteringEdgeReplacingIds).call(_context2, index2, 1);\n });\n });\n childCluster.edges = [];\n }\n }]);\n return Cluster2;\n}(Node);\nvar ClusterEngine = /* @__PURE__ */ function() {\n function ClusterEngine2(body) {\n var _this = this;\n _classCallCheck(this, ClusterEngine2);\n this.body = body;\n this.clusteredNodes = {};\n this.clusteredEdges = {};\n this.options = {};\n this.defaultOptions = {};\n assign$2(this.options, this.defaultOptions);\n this.body.emitter.on(\"_resetData\", function() {\n _this.clusteredNodes = {};\n _this.clusteredEdges = {};\n });\n }\n _createClass(ClusterEngine2, [{\n key: \"clusterByHubsize\",\n value: function clusterByHubsize(hubsize, options2) {\n if (hubsize === void 0) {\n hubsize = this._getHubSize();\n } else if (_typeof(hubsize) === \"object\") {\n options2 = this._checkOptions(hubsize);\n hubsize = this._getHubSize();\n }\n var nodesToCluster = [];\n for (var i = 0; i < this.body.nodeIndices.length; i++) {\n var node = this.body.nodes[this.body.nodeIndices[i]];\n if (node.edges.length >= hubsize) {\n nodesToCluster.push(node.id);\n }\n }\n for (var _i = 0; _i < nodesToCluster.length; _i++) {\n this.clusterByConnection(nodesToCluster[_i], options2, true);\n }\n this.body.emitter.emit(\"_dataChanged\");\n }\n }, {\n key: \"cluster\",\n value: function cluster() {\n var _this2 = this;\n var options2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n var refreshData = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n if (options2.joinCondition === void 0) {\n throw new Error(\"Cannot call clusterByNodeData without a joinCondition function in the options.\");\n }\n options2 = this._checkOptions(options2);\n var childNodesObj = {};\n var childEdgesObj = {};\n forEach$1(this.body.nodes, function(node, nodeId) {\n if (node.options && options2.joinCondition(node.options) === true) {\n childNodesObj[nodeId] = node;\n forEach$1(node.edges, function(edge) {\n if (_this2.clusteredEdges[edge.id] === void 0) {\n childEdgesObj[edge.id] = edge;\n }\n });\n }\n });\n this._cluster(childNodesObj, childEdgesObj, options2, refreshData);\n }\n }, {\n key: \"clusterByEdgeCount\",\n value: function clusterByEdgeCount(edgeCount, options2) {\n var _this3 = this;\n var refreshData = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;\n options2 = this._checkOptions(options2);\n var clusters = [];\n var usedNodes = {};\n var edge, edges, relevantEdgeCount;\n var _loop = function _loop2(i2) {\n var childNodesObj = {};\n var childEdgesObj = {};\n var nodeId = _this3.body.nodeIndices[i2];\n var node = _this3.body.nodes[nodeId];\n if (usedNodes[nodeId] === void 0) {\n relevantEdgeCount = 0;\n edges = [];\n for (var j = 0; j < node.edges.length; j++) {\n edge = node.edges[j];\n if (_this3.clusteredEdges[edge.id] === void 0) {\n if (edge.toId !== edge.fromId) {\n relevantEdgeCount++;\n }\n edges.push(edge);\n }\n }\n if (relevantEdgeCount === edgeCount) {\n var checkJoinCondition = function checkJoinCondition2(node2) {\n if (options2.joinCondition === void 0 || options2.joinCondition === null) {\n return true;\n }\n var clonedOptions = NetworkUtil.cloneOptions(node2);\n return options2.joinCondition(clonedOptions);\n };\n var gatheringSuccessful = true;\n for (var _j = 0; _j < edges.length; _j++) {\n edge = edges[_j];\n var childNodeId = _this3._getConnectedId(edge, nodeId);\n if (checkJoinCondition(node)) {\n childEdgesObj[edge.id] = edge;\n childNodesObj[nodeId] = node;\n childNodesObj[childNodeId] = _this3.body.nodes[childNodeId];\n usedNodes[nodeId] = true;\n } else {\n gatheringSuccessful = false;\n break;\n }\n }\n if (keys3(childNodesObj).length > 0 && keys3(childEdgesObj).length > 0 && gatheringSuccessful === true) {\n var findClusterData = function findClusterData2() {\n for (var n = 0; n < clusters.length; ++n) {\n for (var m2 in childNodesObj) {\n if (clusters[n].nodes[m2] !== void 0) {\n return clusters[n];\n }\n }\n }\n return void 0;\n };\n var foundCluster = findClusterData();\n if (foundCluster !== void 0) {\n for (var m in childNodesObj) {\n if (foundCluster.nodes[m] === void 0) {\n foundCluster.nodes[m] = childNodesObj[m];\n }\n }\n for (var _m in childEdgesObj) {\n if (foundCluster.edges[_m] === void 0) {\n foundCluster.edges[_m] = childEdgesObj[_m];\n }\n }\n } else {\n clusters.push({\n nodes: childNodesObj,\n edges: childEdgesObj\n });\n }\n }\n }\n }\n };\n for (var i = 0; i < this.body.nodeIndices.length; i++) {\n _loop(i);\n }\n for (var _i2 = 0; _i2 < clusters.length; _i2++) {\n this._cluster(clusters[_i2].nodes, clusters[_i2].edges, options2, false);\n }\n if (refreshData === true) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n }, {\n key: \"clusterOutliers\",\n value: function clusterOutliers(options2) {\n var refreshData = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n this.clusterByEdgeCount(1, options2, refreshData);\n }\n }, {\n key: \"clusterBridges\",\n value: function clusterBridges(options2) {\n var refreshData = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n this.clusterByEdgeCount(2, options2, refreshData);\n }\n }, {\n key: \"clusterByConnection\",\n value: function clusterByConnection(nodeId, options2) {\n var _context;\n var refreshData = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;\n if (nodeId === void 0) {\n throw new Error(\"No nodeId supplied to clusterByConnection!\");\n }\n if (this.body.nodes[nodeId] === void 0) {\n throw new Error(\"The nodeId given to clusterByConnection does not exist!\");\n }\n var node = this.body.nodes[nodeId];\n options2 = this._checkOptions(options2, node);\n if (options2.clusterNodeProperties.x === void 0) {\n options2.clusterNodeProperties.x = node.x;\n }\n if (options2.clusterNodeProperties.y === void 0) {\n options2.clusterNodeProperties.y = node.y;\n }\n if (options2.clusterNodeProperties.fixed === void 0) {\n options2.clusterNodeProperties.fixed = {};\n options2.clusterNodeProperties.fixed.x = node.options.fixed.x;\n options2.clusterNodeProperties.fixed.y = node.options.fixed.y;\n }\n var childNodesObj = {};\n var childEdgesObj = {};\n var parentNodeId = node.id;\n var parentClonedOptions = NetworkUtil.cloneOptions(node);\n childNodesObj[parentNodeId] = node;\n for (var i = 0; i < node.edges.length; i++) {\n var edge = node.edges[i];\n if (this.clusteredEdges[edge.id] === void 0) {\n var childNodeId = this._getConnectedId(edge, parentNodeId);\n if (this.clusteredNodes[childNodeId] === void 0) {\n if (childNodeId !== parentNodeId) {\n if (options2.joinCondition === void 0) {\n childEdgesObj[edge.id] = edge;\n childNodesObj[childNodeId] = this.body.nodes[childNodeId];\n } else {\n var childClonedOptions = NetworkUtil.cloneOptions(this.body.nodes[childNodeId]);\n if (options2.joinCondition(parentClonedOptions, childClonedOptions) === true) {\n childEdgesObj[edge.id] = edge;\n childNodesObj[childNodeId] = this.body.nodes[childNodeId];\n }\n }\n } else {\n childEdgesObj[edge.id] = edge;\n }\n }\n }\n }\n var childNodeIDs = map$3(_context = keys3(childNodesObj)).call(_context, function(childNode2) {\n return childNodesObj[childNode2].id;\n });\n for (var childNodeKey in childNodesObj) {\n if (!Object.prototype.hasOwnProperty.call(childNodesObj, childNodeKey))\n continue;\n var childNode = childNodesObj[childNodeKey];\n for (var y = 0; y < childNode.edges.length; y++) {\n var childEdge = childNode.edges[y];\n if (indexOf2(childNodeIDs).call(childNodeIDs, this._getConnectedId(childEdge, childNode.id)) > -1) {\n childEdgesObj[childEdge.id] = childEdge;\n }\n }\n }\n this._cluster(childNodesObj, childEdgesObj, options2, refreshData);\n }\n }, {\n key: \"_createClusterEdges\",\n value: function _createClusterEdges(childNodesObj, childEdgesObj, clusterNodeProperties, clusterEdgeProperties) {\n var edge, childNodeId, childNode, toId, fromId, otherNodeId;\n var childKeys = keys3(childNodesObj);\n var createEdges = [];\n for (var i = 0; i < childKeys.length; i++) {\n childNodeId = childKeys[i];\n childNode = childNodesObj[childNodeId];\n for (var j = 0; j < childNode.edges.length; j++) {\n edge = childNode.edges[j];\n if (this.clusteredEdges[edge.id] === void 0) {\n if (edge.toId == edge.fromId) {\n childEdgesObj[edge.id] = edge;\n } else {\n if (edge.toId == childNodeId) {\n toId = clusterNodeProperties.id;\n fromId = edge.fromId;\n otherNodeId = fromId;\n } else {\n toId = edge.toId;\n fromId = clusterNodeProperties.id;\n otherNodeId = toId;\n }\n }\n if (childNodesObj[otherNodeId] === void 0) {\n createEdges.push({\n edge,\n fromId,\n toId\n });\n }\n }\n }\n }\n var newEdges = [];\n var getNewEdge = function getNewEdge2(createdEdge2) {\n for (var _j2 = 0; _j2 < newEdges.length; _j2++) {\n var newEdge2 = newEdges[_j2];\n var matchToDirection = createdEdge2.fromId === newEdge2.fromId && createdEdge2.toId === newEdge2.toId;\n var matchFromDirection = createdEdge2.fromId === newEdge2.toId && createdEdge2.toId === newEdge2.fromId;\n if (matchToDirection || matchFromDirection) {\n return newEdge2;\n }\n }\n return null;\n };\n for (var _j3 = 0; _j3 < createEdges.length; _j3++) {\n var createdEdge = createEdges[_j3];\n var _edge = createdEdge.edge;\n var newEdge = getNewEdge(createdEdge);\n if (newEdge === null) {\n newEdge = this._createClusteredEdge(createdEdge.fromId, createdEdge.toId, _edge, clusterEdgeProperties);\n newEdges.push(newEdge);\n } else {\n newEdge.clusteringEdgeReplacingIds.push(_edge.id);\n }\n this.body.edges[_edge.id].edgeReplacedById = newEdge.id;\n this._backupEdgeOptions(_edge);\n _edge.setOptions({\n physics: false\n });\n }\n }\n }, {\n key: \"_checkOptions\",\n value: function _checkOptions() {\n var options2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n if (options2.clusterEdgeProperties === void 0) {\n options2.clusterEdgeProperties = {};\n }\n if (options2.clusterNodeProperties === void 0) {\n options2.clusterNodeProperties = {};\n }\n return options2;\n }\n }, {\n key: \"_cluster\",\n value: function _cluster(childNodesObj, childEdgesObj, options2) {\n var refreshData = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true;\n var tmpNodesToRemove = [];\n for (var nodeId in childNodesObj) {\n if (Object.prototype.hasOwnProperty.call(childNodesObj, nodeId)) {\n if (this.clusteredNodes[nodeId] !== void 0) {\n tmpNodesToRemove.push(nodeId);\n }\n }\n }\n for (var n = 0; n < tmpNodesToRemove.length; ++n) {\n delete childNodesObj[tmpNodesToRemove[n]];\n }\n if (keys3(childNodesObj).length == 0) {\n return;\n }\n if (keys3(childNodesObj).length == 1 && options2.clusterNodeProperties.allowSingleNodeCluster != true) {\n return;\n }\n var clusterNodeProperties = deepExtend({}, options2.clusterNodeProperties);\n if (options2.processProperties !== void 0) {\n var childNodesOptions = [];\n for (var _nodeId in childNodesObj) {\n if (Object.prototype.hasOwnProperty.call(childNodesObj, _nodeId)) {\n var clonedOptions = NetworkUtil.cloneOptions(childNodesObj[_nodeId]);\n childNodesOptions.push(clonedOptions);\n }\n }\n var childEdgesOptions = [];\n for (var edgeId in childEdgesObj) {\n if (Object.prototype.hasOwnProperty.call(childEdgesObj, edgeId)) {\n if (edgeId.substr(0, 12) !== \"clusterEdge:\") {\n var _clonedOptions = NetworkUtil.cloneOptions(childEdgesObj[edgeId], \"edge\");\n childEdgesOptions.push(_clonedOptions);\n }\n }\n }\n clusterNodeProperties = options2.processProperties(clusterNodeProperties, childNodesOptions, childEdgesOptions);\n if (!clusterNodeProperties) {\n throw new Error(\"The processProperties function does not return properties!\");\n }\n }\n if (clusterNodeProperties.id === void 0) {\n clusterNodeProperties.id = \"cluster:\" + v4();\n }\n var clusterId = clusterNodeProperties.id;\n if (clusterNodeProperties.label === void 0) {\n clusterNodeProperties.label = \"cluster\";\n }\n var pos = void 0;\n if (clusterNodeProperties.x === void 0) {\n pos = this._getClusterPosition(childNodesObj);\n clusterNodeProperties.x = pos.x;\n }\n if (clusterNodeProperties.y === void 0) {\n if (pos === void 0) {\n pos = this._getClusterPosition(childNodesObj);\n }\n clusterNodeProperties.y = pos.y;\n }\n clusterNodeProperties.id = clusterId;\n var clusterNode = this.body.functions.createNode(clusterNodeProperties, Cluster);\n clusterNode.containedNodes = childNodesObj;\n clusterNode.containedEdges = childEdgesObj;\n clusterNode.clusterEdgeProperties = options2.clusterEdgeProperties;\n this.body.nodes[clusterNodeProperties.id] = clusterNode;\n this._clusterEdges(childNodesObj, childEdgesObj, clusterNodeProperties, options2.clusterEdgeProperties);\n clusterNodeProperties.id = void 0;\n if (refreshData === true) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n }, {\n key: \"_backupEdgeOptions\",\n value: function _backupEdgeOptions(edge) {\n if (this.clusteredEdges[edge.id] === void 0) {\n this.clusteredEdges[edge.id] = {\n physics: edge.options.physics\n };\n }\n }\n }, {\n key: \"_restoreEdge\",\n value: function _restoreEdge(edge) {\n var originalOptions = this.clusteredEdges[edge.id];\n if (originalOptions !== void 0) {\n edge.setOptions({\n physics: originalOptions.physics\n });\n delete this.clusteredEdges[edge.id];\n }\n }\n }, {\n key: \"isCluster\",\n value: function isCluster(nodeId) {\n if (this.body.nodes[nodeId] !== void 0) {\n return this.body.nodes[nodeId].isCluster === true;\n } else {\n console.error(\"Node does not exist.\");\n return false;\n }\n }\n }, {\n key: \"_getClusterPosition\",\n value: function _getClusterPosition(childNodesObj) {\n var childKeys = keys3(childNodesObj);\n var minX = childNodesObj[childKeys[0]].x;\n var maxX = childNodesObj[childKeys[0]].x;\n var minY = childNodesObj[childKeys[0]].y;\n var maxY = childNodesObj[childKeys[0]].y;\n var node;\n for (var i = 1; i < childKeys.length; i++) {\n node = childNodesObj[childKeys[i]];\n minX = node.x < minX ? node.x : minX;\n maxX = node.x > maxX ? node.x : maxX;\n minY = node.y < minY ? node.y : minY;\n maxY = node.y > maxY ? node.y : maxY;\n }\n return {\n x: 0.5 * (minX + maxX),\n y: 0.5 * (minY + maxY)\n };\n }\n }, {\n key: \"openCluster\",\n value: function openCluster(clusterNodeId, options2) {\n var refreshData = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;\n if (clusterNodeId === void 0) {\n throw new Error(\"No clusterNodeId supplied to openCluster.\");\n }\n var clusterNode = this.body.nodes[clusterNodeId];\n if (clusterNode === void 0) {\n throw new Error(\"The clusterNodeId supplied to openCluster does not exist.\");\n }\n if (clusterNode.isCluster !== true || clusterNode.containedNodes === void 0 || clusterNode.containedEdges === void 0) {\n throw new Error(\"The node:\" + clusterNodeId + \" is not a valid cluster.\");\n }\n var stack = this.findNode(clusterNodeId);\n var parentIndex = indexOf2(stack).call(stack, clusterNodeId) - 1;\n if (parentIndex >= 0) {\n var parentClusterNodeId = stack[parentIndex];\n var parentClusterNode = this.body.nodes[parentClusterNodeId];\n parentClusterNode._openChildCluster(clusterNodeId);\n delete this.body.nodes[clusterNodeId];\n if (refreshData === true) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n return;\n }\n var containedNodes = clusterNode.containedNodes;\n var containedEdges = clusterNode.containedEdges;\n if (options2 !== void 0 && options2.releaseFunction !== void 0 && typeof options2.releaseFunction === \"function\") {\n var positions = {};\n var clusterPosition = {\n x: clusterNode.x,\n y: clusterNode.y\n };\n for (var nodeId in containedNodes) {\n if (Object.prototype.hasOwnProperty.call(containedNodes, nodeId)) {\n var containedNode = this.body.nodes[nodeId];\n positions[nodeId] = {\n x: containedNode.x,\n y: containedNode.y\n };\n }\n }\n var newPositions = options2.releaseFunction(clusterPosition, positions);\n for (var _nodeId2 in containedNodes) {\n if (Object.prototype.hasOwnProperty.call(containedNodes, _nodeId2)) {\n var _containedNode = this.body.nodes[_nodeId2];\n if (newPositions[_nodeId2] !== void 0) {\n _containedNode.x = newPositions[_nodeId2].x === void 0 ? clusterNode.x : newPositions[_nodeId2].x;\n _containedNode.y = newPositions[_nodeId2].y === void 0 ? clusterNode.y : newPositions[_nodeId2].y;\n }\n }\n }\n } else {\n forEach$1(containedNodes, function(containedNode2) {\n if (containedNode2.options.fixed.x === false) {\n containedNode2.x = clusterNode.x;\n }\n if (containedNode2.options.fixed.y === false) {\n containedNode2.y = clusterNode.y;\n }\n });\n }\n for (var _nodeId3 in containedNodes) {\n if (Object.prototype.hasOwnProperty.call(containedNodes, _nodeId3)) {\n var _containedNode2 = this.body.nodes[_nodeId3];\n _containedNode2.vx = clusterNode.vx;\n _containedNode2.vy = clusterNode.vy;\n _containedNode2.setOptions({\n physics: true\n });\n delete this.clusteredNodes[_nodeId3];\n }\n }\n var edgesToBeDeleted = [];\n for (var i = 0; i < clusterNode.edges.length; i++) {\n edgesToBeDeleted.push(clusterNode.edges[i]);\n }\n for (var _i3 = 0; _i3 < edgesToBeDeleted.length; _i3++) {\n var edge = edgesToBeDeleted[_i3];\n var otherNodeId = this._getConnectedId(edge, clusterNodeId);\n var otherNode = this.clusteredNodes[otherNodeId];\n for (var j = 0; j < edge.clusteringEdgeReplacingIds.length; j++) {\n var transferId = edge.clusteringEdgeReplacingIds[j];\n var transferEdge = this.body.edges[transferId];\n if (transferEdge === void 0)\n continue;\n if (otherNode !== void 0) {\n var otherCluster = this.body.nodes[otherNode.clusterId];\n otherCluster.containedEdges[transferEdge.id] = transferEdge;\n delete containedEdges[transferEdge.id];\n var fromId = transferEdge.fromId;\n var toId = transferEdge.toId;\n if (transferEdge.toId == otherNodeId) {\n toId = otherNode.clusterId;\n } else {\n fromId = otherNode.clusterId;\n }\n this._createClusteredEdge(fromId, toId, transferEdge, otherCluster.clusterEdgeProperties, {\n hidden: false,\n physics: true\n });\n } else {\n this._restoreEdge(transferEdge);\n }\n }\n edge.remove();\n }\n for (var edgeId in containedEdges) {\n if (Object.prototype.hasOwnProperty.call(containedEdges, edgeId)) {\n this._restoreEdge(containedEdges[edgeId]);\n }\n }\n delete this.body.nodes[clusterNodeId];\n if (refreshData === true) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n }, {\n key: \"getNodesInCluster\",\n value: function getNodesInCluster(clusterId) {\n var nodesArray = [];\n if (this.isCluster(clusterId) === true) {\n var containedNodes = this.body.nodes[clusterId].containedNodes;\n for (var nodeId in containedNodes) {\n if (Object.prototype.hasOwnProperty.call(containedNodes, nodeId)) {\n nodesArray.push(this.body.nodes[nodeId].id);\n }\n }\n }\n return nodesArray;\n }\n }, {\n key: \"findNode\",\n value: function findNode(nodeId) {\n var stack = [];\n var max2 = 100;\n var counter = 0;\n var node;\n while (this.clusteredNodes[nodeId] !== void 0 && counter < max2) {\n node = this.body.nodes[nodeId];\n if (node === void 0)\n return [];\n stack.push(node.id);\n nodeId = this.clusteredNodes[nodeId].clusterId;\n counter++;\n }\n node = this.body.nodes[nodeId];\n if (node === void 0)\n return [];\n stack.push(node.id);\n reverse2(stack).call(stack);\n return stack;\n }\n }, {\n key: \"updateClusteredNode\",\n value: function updateClusteredNode(clusteredNodeId, newOptions) {\n if (clusteredNodeId === void 0) {\n throw new Error(\"No clusteredNodeId supplied to updateClusteredNode.\");\n }\n if (newOptions === void 0) {\n throw new Error(\"No newOptions supplied to updateClusteredNode.\");\n }\n if (this.body.nodes[clusteredNodeId] === void 0) {\n throw new Error(\"The clusteredNodeId supplied to updateClusteredNode does not exist.\");\n }\n this.body.nodes[clusteredNodeId].setOptions(newOptions);\n this.body.emitter.emit(\"_dataChanged\");\n }\n }, {\n key: \"updateEdge\",\n value: function updateEdge(startEdgeId, newOptions) {\n if (startEdgeId === void 0) {\n throw new Error(\"No startEdgeId supplied to updateEdge.\");\n }\n if (newOptions === void 0) {\n throw new Error(\"No newOptions supplied to updateEdge.\");\n }\n if (this.body.edges[startEdgeId] === void 0) {\n throw new Error(\"The startEdgeId supplied to updateEdge does not exist.\");\n }\n var allEdgeIds = this.getClusteredEdges(startEdgeId);\n for (var i = 0; i < allEdgeIds.length; i++) {\n var edge = this.body.edges[allEdgeIds[i]];\n edge.setOptions(newOptions);\n }\n this.body.emitter.emit(\"_dataChanged\");\n }\n }, {\n key: \"getClusteredEdges\",\n value: function getClusteredEdges(edgeId) {\n var stack = [];\n var max2 = 100;\n var counter = 0;\n while (edgeId !== void 0 && this.body.edges[edgeId] !== void 0 && counter < max2) {\n stack.push(this.body.edges[edgeId].id);\n edgeId = this.body.edges[edgeId].edgeReplacedById;\n counter++;\n }\n reverse2(stack).call(stack);\n return stack;\n }\n }, {\n key: \"getBaseEdge\",\n value: function getBaseEdge(clusteredEdgeId) {\n return this.getBaseEdges(clusteredEdgeId)[0];\n }\n }, {\n key: \"getBaseEdges\",\n value: function getBaseEdges(clusteredEdgeId) {\n var IdsToHandle = [clusteredEdgeId];\n var doneIds = [];\n var foundIds = [];\n var max2 = 100;\n var counter = 0;\n while (IdsToHandle.length > 0 && counter < max2) {\n var nextId = IdsToHandle.pop();\n if (nextId === void 0)\n continue;\n var nextEdge = this.body.edges[nextId];\n if (nextEdge === void 0)\n continue;\n counter++;\n var replacingIds = nextEdge.clusteringEdgeReplacingIds;\n if (replacingIds === void 0) {\n foundIds.push(nextId);\n } else {\n for (var i = 0; i < replacingIds.length; ++i) {\n var replacingId = replacingIds[i];\n if (indexOf2(IdsToHandle).call(IdsToHandle, replacingIds) !== -1 || indexOf2(doneIds).call(doneIds, replacingIds) !== -1) {\n continue;\n }\n IdsToHandle.push(replacingId);\n }\n }\n doneIds.push(nextId);\n }\n return foundIds;\n }\n }, {\n key: \"_getConnectedId\",\n value: function _getConnectedId(edge, nodeId) {\n if (edge.toId != nodeId) {\n return edge.toId;\n } else if (edge.fromId != nodeId) {\n return edge.fromId;\n } else {\n return edge.fromId;\n }\n }\n }, {\n key: \"_getHubSize\",\n value: function _getHubSize() {\n var average = 0;\n var averageSquared = 0;\n var hubCounter = 0;\n var largestHub = 0;\n for (var i = 0; i < this.body.nodeIndices.length; i++) {\n var node = this.body.nodes[this.body.nodeIndices[i]];\n if (node.edges.length > largestHub) {\n largestHub = node.edges.length;\n }\n average += node.edges.length;\n averageSquared += Math.pow(node.edges.length, 2);\n hubCounter += 1;\n }\n average = average / hubCounter;\n averageSquared = averageSquared / hubCounter;\n var variance = averageSquared - Math.pow(average, 2);\n var standardDeviation = Math.sqrt(variance);\n var hubThreshold = Math.floor(average + 2 * standardDeviation);\n if (hubThreshold > largestHub) {\n hubThreshold = largestHub;\n }\n return hubThreshold;\n }\n }, {\n key: \"_createClusteredEdge\",\n value: function _createClusteredEdge(fromId, toId, baseEdge, clusterEdgeProperties, extraOptions) {\n var clonedOptions = NetworkUtil.cloneOptions(baseEdge, \"edge\");\n deepExtend(clonedOptions, clusterEdgeProperties);\n clonedOptions.from = fromId;\n clonedOptions.to = toId;\n clonedOptions.id = \"clusterEdge:\" + v4();\n if (extraOptions !== void 0) {\n deepExtend(clonedOptions, extraOptions);\n }\n var newEdge = this.body.functions.createEdge(clonedOptions);\n newEdge.clusteringEdgeReplacingIds = [baseEdge.id];\n newEdge.connect();\n this.body.edges[newEdge.id] = newEdge;\n return newEdge;\n }\n }, {\n key: \"_clusterEdges\",\n value: function _clusterEdges(childNodes, childEdges, clusterNode, clusterEdgeProperties) {\n if (childEdges instanceof Edge) {\n var edge = childEdges;\n var obj = {};\n obj[edge.id] = edge;\n childEdges = obj;\n }\n if (childNodes instanceof Node) {\n var node = childNodes;\n var _obj = {};\n _obj[node.id] = node;\n childNodes = _obj;\n }\n if (clusterNode === void 0 || clusterNode === null) {\n throw new Error(\"_clusterEdges: parameter clusterNode required\");\n }\n if (clusterEdgeProperties === void 0) {\n clusterEdgeProperties = clusterNode.clusterEdgeProperties;\n }\n this._createClusterEdges(childNodes, childEdges, clusterNode, clusterEdgeProperties);\n for (var edgeId in childEdges) {\n if (Object.prototype.hasOwnProperty.call(childEdges, edgeId)) {\n if (this.body.edges[edgeId] !== void 0) {\n var _edge2 = this.body.edges[edgeId];\n this._backupEdgeOptions(_edge2);\n _edge2.setOptions({\n physics: false\n });\n }\n }\n }\n for (var nodeId in childNodes) {\n if (Object.prototype.hasOwnProperty.call(childNodes, nodeId)) {\n this.clusteredNodes[nodeId] = {\n clusterId: clusterNode.id,\n node: this.body.nodes[nodeId]\n };\n this.body.nodes[nodeId].setOptions({\n physics: false\n });\n }\n }\n }\n }, {\n key: \"_getClusterNodeForNode\",\n value: function _getClusterNodeForNode(nodeId) {\n if (nodeId === void 0)\n return void 0;\n var clusteredNode = this.clusteredNodes[nodeId];\n if (clusteredNode === void 0)\n return void 0;\n var clusterId = clusteredNode.clusterId;\n if (clusterId === void 0)\n return void 0;\n return this.body.nodes[clusterId];\n }\n }, {\n key: \"_filter\",\n value: function _filter(arr, callback) {\n var ret = [];\n forEach$1(arr, function(item) {\n if (callback(item)) {\n ret.push(item);\n }\n });\n return ret;\n }\n }, {\n key: \"_updateState\",\n value: function _updateState() {\n var _this4 = this;\n var nodeId;\n var deletedNodeIds = [];\n var deletedEdgeIds = {};\n var eachClusterNode = function eachClusterNode2(callback) {\n forEach$1(_this4.body.nodes, function(node2) {\n if (node2.isCluster === true) {\n callback(node2);\n }\n });\n };\n for (nodeId in this.clusteredNodes) {\n if (!Object.prototype.hasOwnProperty.call(this.clusteredNodes, nodeId))\n continue;\n var node = this.body.nodes[nodeId];\n if (node === void 0) {\n deletedNodeIds.push(nodeId);\n }\n }\n eachClusterNode(function(clusterNode) {\n for (var n2 = 0; n2 < deletedNodeIds.length; n2++) {\n delete clusterNode.containedNodes[deletedNodeIds[n2]];\n }\n });\n for (var n = 0; n < deletedNodeIds.length; n++) {\n delete this.clusteredNodes[deletedNodeIds[n]];\n }\n forEach$1(this.clusteredEdges, function(edgeId) {\n var edge = _this4.body.edges[edgeId];\n if (edge === void 0 || !edge.endPointsValid()) {\n deletedEdgeIds[edgeId] = edgeId;\n }\n });\n eachClusterNode(function(clusterNode) {\n forEach$1(clusterNode.containedEdges, function(edge, edgeId) {\n if (!edge.endPointsValid() && !deletedEdgeIds[edgeId]) {\n deletedEdgeIds[edgeId] = edgeId;\n }\n });\n });\n forEach$1(this.body.edges, function(edge, edgeId) {\n var isValid = true;\n var replacedIds = edge.clusteringEdgeReplacingIds;\n if (replacedIds !== void 0) {\n var numValid = 0;\n forEach$1(replacedIds, function(containedEdgeId) {\n var containedEdge = _this4.body.edges[containedEdgeId];\n if (containedEdge !== void 0 && containedEdge.endPointsValid()) {\n numValid += 1;\n }\n });\n isValid = numValid > 0;\n }\n if (!edge.endPointsValid() || !isValid) {\n deletedEdgeIds[edgeId] = edgeId;\n }\n });\n eachClusterNode(function(clusterNode) {\n forEach$1(deletedEdgeIds, function(deletedEdgeId) {\n delete clusterNode.containedEdges[deletedEdgeId];\n forEach$1(clusterNode.edges, function(edge, m) {\n if (edge.id === deletedEdgeId) {\n clusterNode.edges[m] = null;\n return;\n }\n edge.clusteringEdgeReplacingIds = _this4._filter(edge.clusteringEdgeReplacingIds, function(id2) {\n return !deletedEdgeIds[id2];\n });\n });\n clusterNode.edges = _this4._filter(clusterNode.edges, function(item) {\n return item !== null;\n });\n });\n });\n forEach$1(deletedEdgeIds, function(edgeId) {\n delete _this4.clusteredEdges[edgeId];\n });\n forEach$1(deletedEdgeIds, function(edgeId) {\n delete _this4.body.edges[edgeId];\n });\n var ids = keys3(this.body.edges);\n forEach$1(ids, function(edgeId) {\n var edge = _this4.body.edges[edgeId];\n var shouldBeClustered = _this4._isClusteredNode(edge.fromId) || _this4._isClusteredNode(edge.toId);\n if (shouldBeClustered === _this4._isClusteredEdge(edge.id)) {\n return;\n }\n if (shouldBeClustered) {\n var clusterFrom = _this4._getClusterNodeForNode(edge.fromId);\n if (clusterFrom !== void 0) {\n _this4._clusterEdges(_this4.body.nodes[edge.fromId], edge, clusterFrom);\n }\n var clusterTo = _this4._getClusterNodeForNode(edge.toId);\n if (clusterTo !== void 0) {\n _this4._clusterEdges(_this4.body.nodes[edge.toId], edge, clusterTo);\n }\n } else {\n delete _this4._clusterEdges[edgeId];\n _this4._restoreEdge(edge);\n }\n });\n var changed = false;\n var continueLoop = true;\n var _loop2 = function _loop22() {\n var clustersToOpen = [];\n eachClusterNode(function(clusterNode) {\n var numNodes = keys3(clusterNode.containedNodes).length;\n var allowSingle = clusterNode.options.allowSingleNodeCluster === true;\n if (allowSingle && numNodes < 1 || !allowSingle && numNodes < 2) {\n clustersToOpen.push(clusterNode.id);\n }\n });\n for (var _n = 0; _n < clustersToOpen.length; ++_n) {\n _this4.openCluster(clustersToOpen[_n], {}, false);\n }\n continueLoop = clustersToOpen.length > 0;\n changed = changed || continueLoop;\n };\n while (continueLoop) {\n _loop2();\n }\n if (changed) {\n this._updateState();\n }\n }\n }, {\n key: \"_isClusteredNode\",\n value: function _isClusteredNode(nodeId) {\n return this.clusteredNodes[nodeId] !== void 0;\n }\n }, {\n key: \"_isClusteredEdge\",\n value: function _isClusteredEdge(edgeId) {\n return this.clusteredEdges[edgeId] !== void 0;\n }\n }]);\n return ClusterEngine2;\n}();\nfunction _createForOfIteratorHelper$5(o, allowArrayLike) {\n var it2 = typeof symbol !== \"undefined\" && getIteratorMethod$1(o) || o[\"@@iterator\"];\n if (!it2) {\n if (isArray$1(o) || (it2 = _unsupportedIterableToArray$5(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it2)\n o = it2;\n var i = 0;\n var F = function F2() {\n };\n return {s: F, n: function n() {\n if (i >= o.length)\n return {done: true};\n return {done: false, value: o[i++]};\n }, e: function e(_e) {\n throw _e;\n }, f: F};\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true, didErr = false, err;\n return {s: function s() {\n it2 = it2.call(o);\n }, n: function n() {\n var step = it2.next();\n normalCompletion = step.done;\n return step;\n }, e: function e(_e2) {\n didErr = true;\n err = _e2;\n }, f: function f() {\n try {\n if (!normalCompletion && it2.return != null)\n it2.return();\n } finally {\n if (didErr)\n throw err;\n }\n }};\n}\nfunction _unsupportedIterableToArray$5(o, minLen) {\n var _context4;\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray$5(o, minLen);\n var n = slice$1(_context4 = Object.prototype.toString.call(o)).call(_context4, 8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return from$2(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray$5(o, minLen);\n}\nfunction _arrayLikeToArray$5(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _initRequestAnimationFrame() {\n var func;\n if (window !== void 0) {\n func = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;\n }\n if (func === void 0) {\n window.requestAnimationFrame = function(callback) {\n callback();\n };\n } else {\n window.requestAnimationFrame = func;\n }\n}\nvar CanvasRenderer = /* @__PURE__ */ function() {\n function CanvasRenderer2(body, canvas) {\n _classCallCheck(this, CanvasRenderer2);\n _initRequestAnimationFrame();\n this.body = body;\n this.canvas = canvas;\n this.redrawRequested = false;\n this.renderTimer = void 0;\n this.requiresTimeout = true;\n this.renderingActive = false;\n this.renderRequests = 0;\n this.allowRedraw = true;\n this.dragging = false;\n this.zooming = false;\n this.options = {};\n this.defaultOptions = {\n hideEdgesOnDrag: false,\n hideEdgesOnZoom: false,\n hideNodesOnDrag: false\n };\n assign$2(this.options, this.defaultOptions);\n this._determineBrowserMethod();\n this.bindEventListeners();\n }\n _createClass(CanvasRenderer2, [{\n key: \"bindEventListeners\",\n value: function bindEventListeners() {\n var _this = this, _context2;\n this.body.emitter.on(\"dragStart\", function() {\n _this.dragging = true;\n });\n this.body.emitter.on(\"dragEnd\", function() {\n _this.dragging = false;\n });\n this.body.emitter.on(\"zoom\", function() {\n _this.zooming = true;\n window.clearTimeout(_this.zoomTimeoutId);\n _this.zoomTimeoutId = setTimeout$1(function() {\n var _context;\n _this.zooming = false;\n bind$5(_context = _this._requestRedraw).call(_context, _this)();\n }, 250);\n });\n this.body.emitter.on(\"_resizeNodes\", function() {\n _this._resizeNodes();\n });\n this.body.emitter.on(\"_redraw\", function() {\n if (_this.renderingActive === false) {\n _this._redraw();\n }\n });\n this.body.emitter.on(\"_blockRedraw\", function() {\n _this.allowRedraw = false;\n });\n this.body.emitter.on(\"_allowRedraw\", function() {\n _this.allowRedraw = true;\n _this.redrawRequested = false;\n });\n this.body.emitter.on(\"_requestRedraw\", bind$5(_context2 = this._requestRedraw).call(_context2, this));\n this.body.emitter.on(\"_startRendering\", function() {\n _this.renderRequests += 1;\n _this.renderingActive = true;\n _this._startRendering();\n });\n this.body.emitter.on(\"_stopRendering\", function() {\n _this.renderRequests -= 1;\n _this.renderingActive = _this.renderRequests > 0;\n _this.renderTimer = void 0;\n });\n this.body.emitter.on(\"destroy\", function() {\n _this.renderRequests = 0;\n _this.allowRedraw = false;\n _this.renderingActive = false;\n if (_this.requiresTimeout === true) {\n clearTimeout(_this.renderTimer);\n } else {\n window.cancelAnimationFrame(_this.renderTimer);\n }\n _this.body.emitter.off();\n });\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options2) {\n if (options2 !== void 0) {\n var fields = [\"hideEdgesOnDrag\", \"hideEdgesOnZoom\", \"hideNodesOnDrag\"];\n selectiveDeepExtend(fields, this.options, options2);\n }\n }\n }, {\n key: \"_requestNextFrame\",\n value: function _requestNextFrame(callback, delay) {\n if (typeof window === \"undefined\")\n return;\n var timer;\n var myWindow = window;\n if (this.requiresTimeout === true) {\n timer = setTimeout$1(callback, delay);\n } else {\n if (myWindow.requestAnimationFrame) {\n timer = myWindow.requestAnimationFrame(callback);\n }\n }\n return timer;\n }\n }, {\n key: \"_startRendering\",\n value: function _startRendering() {\n if (this.renderingActive === true) {\n if (this.renderTimer === void 0) {\n var _context3;\n this.renderTimer = this._requestNextFrame(bind$5(_context3 = this._renderStep).call(_context3, this), this.simulationInterval);\n }\n }\n }\n }, {\n key: \"_renderStep\",\n value: function _renderStep() {\n if (this.renderingActive === true) {\n this.renderTimer = void 0;\n if (this.requiresTimeout === true) {\n this._startRendering();\n }\n this._redraw();\n if (this.requiresTimeout === false) {\n this._startRendering();\n }\n }\n }\n }, {\n key: \"redraw\",\n value: function redraw() {\n this.body.emitter.emit(\"setSize\");\n this._redraw();\n }\n }, {\n key: \"_requestRedraw\",\n value: function _requestRedraw() {\n var _this2 = this;\n if (this.redrawRequested !== true && this.renderingActive === false && this.allowRedraw === true) {\n this.redrawRequested = true;\n this._requestNextFrame(function() {\n _this2._redraw(false);\n }, 0);\n }\n }\n }, {\n key: \"_redraw\",\n value: function _redraw() {\n var hidden = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;\n if (this.allowRedraw === true) {\n this.body.emitter.emit(\"initRedraw\");\n this.redrawRequested = false;\n var drawLater = {\n drawExternalLabels: null\n };\n if (this.canvas.frame.canvas.width === 0 || this.canvas.frame.canvas.height === 0) {\n this.canvas.setSize();\n }\n this.canvas.setTransform();\n var ctx = this.canvas.getContext();\n var w = this.canvas.frame.canvas.clientWidth;\n var h = this.canvas.frame.canvas.clientHeight;\n ctx.clearRect(0, 0, w, h);\n if (this.canvas.frame.clientWidth === 0) {\n return;\n }\n ctx.save();\n ctx.translate(this.body.view.translation.x, this.body.view.translation.y);\n ctx.scale(this.body.view.scale, this.body.view.scale);\n ctx.beginPath();\n this.body.emitter.emit(\"beforeDrawing\", ctx);\n ctx.closePath();\n if (hidden === false) {\n if ((this.dragging === false || this.dragging === true && this.options.hideEdgesOnDrag === false) && (this.zooming === false || this.zooming === true && this.options.hideEdgesOnZoom === false)) {\n this._drawEdges(ctx);\n }\n }\n if (this.dragging === false || this.dragging === true && this.options.hideNodesOnDrag === false) {\n var _this$_drawNodes = this._drawNodes(ctx, hidden), drawExternalLabels = _this$_drawNodes.drawExternalLabels;\n drawLater.drawExternalLabels = drawExternalLabels;\n }\n if (hidden === false) {\n if ((this.dragging === false || this.dragging === true && this.options.hideEdgesOnDrag === false) && (this.zooming === false || this.zooming === true && this.options.hideEdgesOnZoom === false)) {\n this._drawArrows(ctx);\n }\n }\n if (drawLater.drawExternalLabels != null) {\n drawLater.drawExternalLabels();\n }\n if (hidden === false) {\n this._drawSelectionBox(ctx);\n }\n ctx.beginPath();\n this.body.emitter.emit(\"afterDrawing\", ctx);\n ctx.closePath();\n ctx.restore();\n if (hidden === true) {\n ctx.clearRect(0, 0, w, h);\n }\n }\n }\n }, {\n key: \"_resizeNodes\",\n value: function _resizeNodes() {\n this.canvas.setTransform();\n var ctx = this.canvas.getContext();\n ctx.save();\n ctx.translate(this.body.view.translation.x, this.body.view.translation.y);\n ctx.scale(this.body.view.scale, this.body.view.scale);\n var nodes = this.body.nodes;\n var node;\n for (var nodeId in nodes) {\n if (Object.prototype.hasOwnProperty.call(nodes, nodeId)) {\n node = nodes[nodeId];\n node.resize(ctx);\n node.updateBoundingBox(ctx, node.selected);\n }\n }\n ctx.restore();\n }\n }, {\n key: \"_drawNodes\",\n value: function _drawNodes(ctx) {\n var alwaysShow = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n var nodes = this.body.nodes;\n var nodeIndices = this.body.nodeIndices;\n var node;\n var selected = [];\n var hovered = [];\n var margin = 20;\n var topLeft = this.canvas.DOMtoCanvas({\n x: -margin,\n y: -margin\n });\n var bottomRight = this.canvas.DOMtoCanvas({\n x: this.canvas.frame.canvas.clientWidth + margin,\n y: this.canvas.frame.canvas.clientHeight + margin\n });\n var viewableArea = {\n top: topLeft.y,\n left: topLeft.x,\n bottom: bottomRight.y,\n right: bottomRight.x\n };\n var _drawExternalLabels = [];\n for (var _i = 0; _i < nodeIndices.length; _i++) {\n node = nodes[nodeIndices[_i]];\n if (node.hover) {\n hovered.push(nodeIndices[_i]);\n } else if (node.isSelected()) {\n selected.push(nodeIndices[_i]);\n } else {\n if (alwaysShow === true) {\n var drawLater = node.draw(ctx);\n if (drawLater.drawExternalLabel != null) {\n _drawExternalLabels.push(drawLater.drawExternalLabel);\n }\n } else if (node.isBoundingBoxOverlappingWith(viewableArea) === true) {\n var _drawLater = node.draw(ctx);\n if (_drawLater.drawExternalLabel != null) {\n _drawExternalLabels.push(_drawLater.drawExternalLabel);\n }\n } else {\n node.updateBoundingBox(ctx, node.selected);\n }\n }\n }\n var i;\n var selectedLength = selected.length;\n var hoveredLength = hovered.length;\n for (i = 0; i < selectedLength; i++) {\n node = nodes[selected[i]];\n var _drawLater2 = node.draw(ctx);\n if (_drawLater2.drawExternalLabel != null) {\n _drawExternalLabels.push(_drawLater2.drawExternalLabel);\n }\n }\n for (i = 0; i < hoveredLength; i++) {\n node = nodes[hovered[i]];\n var _drawLater3 = node.draw(ctx);\n if (_drawLater3.drawExternalLabel != null) {\n _drawExternalLabels.push(_drawLater3.drawExternalLabel);\n }\n }\n return {\n drawExternalLabels: function drawExternalLabels() {\n var _iterator = _createForOfIteratorHelper$5(_drawExternalLabels), _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done; ) {\n var draw = _step.value;\n draw();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n };\n }\n }, {\n key: \"_drawEdges\",\n value: function _drawEdges(ctx) {\n var edges = this.body.edges;\n var edgeIndices = this.body.edgeIndices;\n for (var i = 0; i < edgeIndices.length; i++) {\n var edge = edges[edgeIndices[i]];\n if (edge.connected === true) {\n edge.draw(ctx);\n }\n }\n }\n }, {\n key: \"_drawArrows\",\n value: function _drawArrows(ctx) {\n var edges = this.body.edges;\n var edgeIndices = this.body.edgeIndices;\n for (var i = 0; i < edgeIndices.length; i++) {\n var edge = edges[edgeIndices[i]];\n if (edge.connected === true) {\n edge.drawArrows(ctx);\n }\n }\n }\n }, {\n key: \"_determineBrowserMethod\",\n value: function _determineBrowserMethod() {\n if (typeof window !== \"undefined\") {\n var browserType = navigator.userAgent.toLowerCase();\n this.requiresTimeout = false;\n if (indexOf2(browserType).call(browserType, \"msie 9.0\") != -1) {\n this.requiresTimeout = true;\n } else if (indexOf2(browserType).call(browserType, \"safari\") != -1) {\n if (indexOf2(browserType).call(browserType, \"chrome\") <= -1) {\n this.requiresTimeout = true;\n }\n }\n } else {\n this.requiresTimeout = true;\n }\n }\n }, {\n key: \"_drawSelectionBox\",\n value: function _drawSelectionBox(ctx) {\n if (this.body.selectionBox.show) {\n ctx.beginPath();\n var width = this.body.selectionBox.position.end.x - this.body.selectionBox.position.start.x;\n var height = this.body.selectionBox.position.end.y - this.body.selectionBox.position.start.y;\n ctx.rect(this.body.selectionBox.position.start.x, this.body.selectionBox.position.start.y, width, height);\n ctx.fillStyle = \"rgba(151, 194, 252, 0.2)\";\n ctx.fillRect(this.body.selectionBox.position.start.x, this.body.selectionBox.position.start.y, width, height);\n ctx.strokeStyle = \"rgba(151, 194, 252, 1)\";\n ctx.stroke();\n } else {\n ctx.closePath();\n }\n }\n }]);\n return CanvasRenderer2;\n}();\nvar path$2 = path$x;\nvar setInterval$1 = path$2.setInterval;\nvar setInterval = setInterval$1;\nfunction onTouch(hammer, callback) {\n callback.inputHandler = function(event) {\n if (event.isFirst) {\n callback(event);\n }\n };\n hammer.on(\"hammer.input\", callback.inputHandler);\n}\nfunction onRelease(hammer, callback) {\n callback.inputHandler = function(event) {\n if (event.isFinal) {\n callback(event);\n }\n };\n return hammer.on(\"hammer.input\", callback.inputHandler);\n}\nvar Canvas = /* @__PURE__ */ function() {\n function Canvas2(body) {\n _classCallCheck(this, Canvas2);\n this.body = body;\n this.pixelRatio = 1;\n this.cameraState = {};\n this.initialized = false;\n this.canvasViewCenter = {};\n this._cleanupCallbacks = [];\n this.options = {};\n this.defaultOptions = {\n autoResize: true,\n height: \"100%\",\n width: \"100%\"\n };\n assign$2(this.options, this.defaultOptions);\n this.bindEventListeners();\n }\n _createClass(Canvas2, [{\n key: \"bindEventListeners\",\n value: function bindEventListeners() {\n var _this = this, _context;\n this.body.emitter.once(\"resize\", function(obj) {\n if (obj.width !== 0) {\n _this.body.view.translation.x = obj.width * 0.5;\n }\n if (obj.height !== 0) {\n _this.body.view.translation.y = obj.height * 0.5;\n }\n });\n this.body.emitter.on(\"setSize\", bind$5(_context = this.setSize).call(_context, this));\n this.body.emitter.on(\"destroy\", function() {\n _this.hammerFrame.destroy();\n _this.hammer.destroy();\n _this._cleanUp();\n });\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options2) {\n var _this2 = this;\n if (options2 !== void 0) {\n var fields = [\"width\", \"height\", \"autoResize\"];\n selectiveDeepExtend(fields, this.options, options2);\n }\n this._cleanUp();\n if (this.options.autoResize === true) {\n var _context2;\n if (window.ResizeObserver) {\n var observer = new ResizeObserver(function() {\n var changed = _this2.setSize();\n if (changed === true) {\n _this2.body.emitter.emit(\"_requestRedraw\");\n }\n });\n var frame = this.frame;\n observer.observe(frame);\n this._cleanupCallbacks.push(function() {\n observer.unobserve(frame);\n });\n } else {\n var resizeTimer = setInterval(function() {\n var changed = _this2.setSize();\n if (changed === true) {\n _this2.body.emitter.emit(\"_requestRedraw\");\n }\n }, 1e3);\n this._cleanupCallbacks.push(function() {\n clearInterval(resizeTimer);\n });\n }\n var resizeFunction = bind$5(_context2 = this._onResize).call(_context2, this);\n addEventListener(window, \"resize\", resizeFunction);\n this._cleanupCallbacks.push(function() {\n removeEventListener(window, \"resize\", resizeFunction);\n });\n }\n }\n }, {\n key: \"_cleanUp\",\n value: function _cleanUp() {\n var _context3, _context4, _context5;\n forEach$2(_context3 = reverse2(_context4 = splice2(_context5 = this._cleanupCallbacks).call(_context5, 0)).call(_context4)).call(_context3, function(callback) {\n try {\n callback();\n } catch (error) {\n console.error(error);\n }\n });\n }\n }, {\n key: \"_onResize\",\n value: function _onResize() {\n this.setSize();\n this.body.emitter.emit(\"_redraw\");\n }\n }, {\n key: \"_getCameraState\",\n value: function _getCameraState() {\n var pixelRatio = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.pixelRatio;\n if (this.initialized === true) {\n this.cameraState.previousWidth = this.frame.canvas.width / pixelRatio;\n this.cameraState.previousHeight = this.frame.canvas.height / pixelRatio;\n this.cameraState.scale = this.body.view.scale;\n this.cameraState.position = this.DOMtoCanvas({\n x: 0.5 * this.frame.canvas.width / pixelRatio,\n y: 0.5 * this.frame.canvas.height / pixelRatio\n });\n }\n }\n }, {\n key: \"_setCameraState\",\n value: function _setCameraState() {\n if (this.cameraState.scale !== void 0 && this.frame.canvas.clientWidth !== 0 && this.frame.canvas.clientHeight !== 0 && this.pixelRatio !== 0 && this.cameraState.previousWidth > 0 && this.cameraState.previousHeight > 0) {\n var widthRatio = this.frame.canvas.width / this.pixelRatio / this.cameraState.previousWidth;\n var heightRatio = this.frame.canvas.height / this.pixelRatio / this.cameraState.previousHeight;\n var newScale = this.cameraState.scale;\n if (widthRatio != 1 && heightRatio != 1) {\n newScale = this.cameraState.scale * 0.5 * (widthRatio + heightRatio);\n } else if (widthRatio != 1) {\n newScale = this.cameraState.scale * widthRatio;\n } else if (heightRatio != 1) {\n newScale = this.cameraState.scale * heightRatio;\n }\n this.body.view.scale = newScale;\n var currentViewCenter = this.DOMtoCanvas({\n x: 0.5 * this.frame.canvas.clientWidth,\n y: 0.5 * this.frame.canvas.clientHeight\n });\n var distanceFromCenter = {\n x: currentViewCenter.x - this.cameraState.position.x,\n y: currentViewCenter.y - this.cameraState.position.y\n };\n this.body.view.translation.x += distanceFromCenter.x * this.body.view.scale;\n this.body.view.translation.y += distanceFromCenter.y * this.body.view.scale;\n }\n }\n }, {\n key: \"_prepareValue\",\n value: function _prepareValue(value) {\n if (typeof value === \"number\") {\n return value + \"px\";\n } else if (typeof value === \"string\") {\n if (indexOf2(value).call(value, \"%\") !== -1 || indexOf2(value).call(value, \"px\") !== -1) {\n return value;\n } else if (indexOf2(value).call(value, \"%\") === -1) {\n return value + \"px\";\n }\n }\n throw new Error(\"Could not use the value supplied for width or height:\" + value);\n }\n }, {\n key: \"_create\",\n value: function _create() {\n while (this.body.container.hasChildNodes()) {\n this.body.container.removeChild(this.body.container.firstChild);\n }\n this.frame = document.createElement(\"div\");\n this.frame.className = \"vis-network\";\n this.frame.style.position = \"relative\";\n this.frame.style.overflow = \"hidden\";\n this.frame.tabIndex = 0;\n this.frame.canvas = document.createElement(\"canvas\");\n this.frame.canvas.style.position = \"relative\";\n this.frame.appendChild(this.frame.canvas);\n if (!this.frame.canvas.getContext) {\n var noCanvas = document.createElement(\"DIV\");\n noCanvas.style.color = \"red\";\n noCanvas.style.fontWeight = \"bold\";\n noCanvas.style.padding = \"10px\";\n noCanvas.innerText = \"Error: your browser does not support HTML canvas\";\n this.frame.canvas.appendChild(noCanvas);\n } else {\n this._setPixelRatio();\n this.setTransform();\n }\n this.body.container.appendChild(this.frame);\n this.body.view.scale = 1;\n this.body.view.translation = {\n x: 0.5 * this.frame.canvas.clientWidth,\n y: 0.5 * this.frame.canvas.clientHeight\n };\n this._bindHammer();\n }\n }, {\n key: \"_bindHammer\",\n value: function _bindHammer() {\n var _this3 = this;\n if (this.hammer !== void 0) {\n this.hammer.destroy();\n }\n this.drag = {};\n this.pinch = {};\n this.hammer = new Hammer$1(this.frame.canvas);\n this.hammer.get(\"pinch\").set({\n enable: true\n });\n this.hammer.get(\"pan\").set({\n threshold: 5,\n direction: Hammer$1.DIRECTION_ALL\n });\n onTouch(this.hammer, function(event) {\n _this3.body.eventListeners.onTouch(event);\n });\n this.hammer.on(\"tap\", function(event) {\n _this3.body.eventListeners.onTap(event);\n });\n this.hammer.on(\"doubletap\", function(event) {\n _this3.body.eventListeners.onDoubleTap(event);\n });\n this.hammer.on(\"press\", function(event) {\n _this3.body.eventListeners.onHold(event);\n });\n this.hammer.on(\"panstart\", function(event) {\n _this3.body.eventListeners.onDragStart(event);\n });\n this.hammer.on(\"panmove\", function(event) {\n _this3.body.eventListeners.onDrag(event);\n });\n this.hammer.on(\"panend\", function(event) {\n _this3.body.eventListeners.onDragEnd(event);\n });\n this.hammer.on(\"pinch\", function(event) {\n _this3.body.eventListeners.onPinch(event);\n });\n this.frame.canvas.addEventListener(\"wheel\", function(event) {\n _this3.body.eventListeners.onMouseWheel(event);\n });\n this.frame.canvas.addEventListener(\"mousemove\", function(event) {\n _this3.body.eventListeners.onMouseMove(event);\n });\n this.frame.canvas.addEventListener(\"contextmenu\", function(event) {\n _this3.body.eventListeners.onContext(event);\n });\n this.hammerFrame = new Hammer$1(this.frame);\n onRelease(this.hammerFrame, function(event) {\n _this3.body.eventListeners.onRelease(event);\n });\n }\n }, {\n key: \"setSize\",\n value: function setSize() {\n var width = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.options.width;\n var height = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.options.height;\n width = this._prepareValue(width);\n height = this._prepareValue(height);\n var emitEvent = false;\n var oldWidth = this.frame.canvas.width;\n var oldHeight = this.frame.canvas.height;\n var previousRatio = this.pixelRatio;\n this._setPixelRatio();\n if (width != this.options.width || height != this.options.height || this.frame.style.width != width || this.frame.style.height != height) {\n this._getCameraState(previousRatio);\n this.frame.style.width = width;\n this.frame.style.height = height;\n this.frame.canvas.style.width = \"100%\";\n this.frame.canvas.style.height = \"100%\";\n this.frame.canvas.width = Math.round(this.frame.canvas.clientWidth * this.pixelRatio);\n this.frame.canvas.height = Math.round(this.frame.canvas.clientHeight * this.pixelRatio);\n this.options.width = width;\n this.options.height = height;\n this.canvasViewCenter = {\n x: 0.5 * this.frame.clientWidth,\n y: 0.5 * this.frame.clientHeight\n };\n emitEvent = true;\n } else {\n var newWidth = Math.round(this.frame.canvas.clientWidth * this.pixelRatio);\n var newHeight = Math.round(this.frame.canvas.clientHeight * this.pixelRatio);\n if (this.frame.canvas.width !== newWidth || this.frame.canvas.height !== newHeight) {\n this._getCameraState(previousRatio);\n }\n if (this.frame.canvas.width !== newWidth) {\n this.frame.canvas.width = newWidth;\n emitEvent = true;\n }\n if (this.frame.canvas.height !== newHeight) {\n this.frame.canvas.height = newHeight;\n emitEvent = true;\n }\n }\n if (emitEvent === true) {\n this.body.emitter.emit(\"resize\", {\n width: Math.round(this.frame.canvas.width / this.pixelRatio),\n height: Math.round(this.frame.canvas.height / this.pixelRatio),\n oldWidth: Math.round(oldWidth / this.pixelRatio),\n oldHeight: Math.round(oldHeight / this.pixelRatio)\n });\n this._setCameraState();\n }\n this.initialized = true;\n return emitEvent;\n }\n }, {\n key: \"getContext\",\n value: function getContext() {\n return this.frame.canvas.getContext(\"2d\");\n }\n }, {\n key: \"_determinePixelRatio\",\n value: function _determinePixelRatio() {\n var ctx = this.getContext();\n if (ctx === void 0) {\n throw new Error(\"Could not get canvax context\");\n }\n var numerator = 1;\n if (typeof window !== \"undefined\") {\n numerator = window.devicePixelRatio || 1;\n }\n var denominator = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;\n return numerator / denominator;\n }\n }, {\n key: \"_setPixelRatio\",\n value: function _setPixelRatio() {\n this.pixelRatio = this._determinePixelRatio();\n }\n }, {\n key: \"setTransform\",\n value: function setTransform() {\n var ctx = this.getContext();\n if (ctx === void 0) {\n throw new Error(\"Could not get canvax context\");\n }\n ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n }\n }, {\n key: \"_XconvertDOMtoCanvas\",\n value: function _XconvertDOMtoCanvas(x) {\n return (x - this.body.view.translation.x) / this.body.view.scale;\n }\n }, {\n key: \"_XconvertCanvasToDOM\",\n value: function _XconvertCanvasToDOM(x) {\n return x * this.body.view.scale + this.body.view.translation.x;\n }\n }, {\n key: \"_YconvertDOMtoCanvas\",\n value: function _YconvertDOMtoCanvas(y) {\n return (y - this.body.view.translation.y) / this.body.view.scale;\n }\n }, {\n key: \"_YconvertCanvasToDOM\",\n value: function _YconvertCanvasToDOM(y) {\n return y * this.body.view.scale + this.body.view.translation.y;\n }\n }, {\n key: \"canvasToDOM\",\n value: function canvasToDOM(pos) {\n return {\n x: this._XconvertCanvasToDOM(pos.x),\n y: this._YconvertCanvasToDOM(pos.y)\n };\n }\n }, {\n key: \"DOMtoCanvas\",\n value: function DOMtoCanvas(pos) {\n return {\n x: this._XconvertDOMtoCanvas(pos.x),\n y: this._YconvertDOMtoCanvas(pos.y)\n };\n }\n }]);\n return Canvas2;\n}();\nfunction normalizeFitOptions(rawOptions, allNodeIds) {\n var options2 = assign$2({\n nodes: allNodeIds,\n minZoomLevel: Number.MIN_VALUE,\n maxZoomLevel: 1\n }, rawOptions !== null && rawOptions !== void 0 ? rawOptions : {});\n if (!isArray$1(options2.nodes)) {\n throw new TypeError(\"Nodes has to be an array of ids.\");\n }\n if (options2.nodes.length === 0) {\n options2.nodes = allNodeIds;\n }\n if (!(typeof options2.minZoomLevel === \"number\" && options2.minZoomLevel > 0)) {\n throw new TypeError(\"Min zoom level has to be a number higher than zero.\");\n }\n if (!(typeof options2.maxZoomLevel === \"number\" && options2.minZoomLevel <= options2.maxZoomLevel)) {\n throw new TypeError(\"Max zoom level has to be a number higher than min zoom level.\");\n }\n return options2;\n}\nvar View = /* @__PURE__ */ function() {\n function View2(body, canvas) {\n var _context, _this = this, _context2;\n _classCallCheck(this, View2);\n this.body = body;\n this.canvas = canvas;\n this.animationSpeed = 1 / this.renderRefreshRate;\n this.animationEasingFunction = \"easeInOutQuint\";\n this.easingTime = 0;\n this.sourceScale = 0;\n this.targetScale = 0;\n this.sourceTranslation = 0;\n this.targetTranslation = 0;\n this.lockedOnNodeId = void 0;\n this.lockedOnNodeOffset = void 0;\n this.touchTime = 0;\n this.viewFunction = void 0;\n this.body.emitter.on(\"fit\", bind$5(_context = this.fit).call(_context, this));\n this.body.emitter.on(\"animationFinished\", function() {\n _this.body.emitter.emit(\"_stopRendering\");\n });\n this.body.emitter.on(\"unlockNode\", bind$5(_context2 = this.releaseNode).call(_context2, this));\n }\n _createClass(View2, [{\n key: \"setOptions\",\n value: function setOptions() {\n var options2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n this.options = options2;\n }\n }, {\n key: \"fit\",\n value: function fit(options2) {\n var initialZoom = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n options2 = normalizeFitOptions(options2, this.body.nodeIndices);\n var canvasWidth = this.canvas.frame.canvas.clientWidth;\n var canvasHeight = this.canvas.frame.canvas.clientHeight;\n var range;\n var zoomLevel;\n if (canvasWidth === 0 || canvasHeight === 0) {\n zoomLevel = 1;\n range = NetworkUtil.getRange(this.body.nodes, options2.nodes);\n } else if (initialZoom === true) {\n var positionDefined = 0;\n for (var nodeId in this.body.nodes) {\n if (Object.prototype.hasOwnProperty.call(this.body.nodes, nodeId)) {\n var node = this.body.nodes[nodeId];\n if (node.predefinedPosition === true) {\n positionDefined += 1;\n }\n }\n }\n if (positionDefined > 0.5 * this.body.nodeIndices.length) {\n this.fit(options2, false);\n return;\n }\n range = NetworkUtil.getRange(this.body.nodes, options2.nodes);\n var numberOfNodes = this.body.nodeIndices.length;\n zoomLevel = 12.662 / (numberOfNodes + 7.4147) + 0.0964822;\n var factor = Math.min(canvasWidth / 600, canvasHeight / 600);\n zoomLevel *= factor;\n } else {\n this.body.emitter.emit(\"_resizeNodes\");\n range = NetworkUtil.getRange(this.body.nodes, options2.nodes);\n var xDistance = Math.abs(range.maxX - range.minX) * 1.1;\n var yDistance = Math.abs(range.maxY - range.minY) * 1.1;\n var xZoomLevel = canvasWidth / xDistance;\n var yZoomLevel = canvasHeight / yDistance;\n zoomLevel = xZoomLevel <= yZoomLevel ? xZoomLevel : yZoomLevel;\n }\n if (zoomLevel > options2.maxZoomLevel) {\n zoomLevel = options2.maxZoomLevel;\n } else if (zoomLevel < options2.minZoomLevel) {\n zoomLevel = options2.minZoomLevel;\n }\n var center = NetworkUtil.findCenter(range);\n var animationOptions = {\n position: center,\n scale: zoomLevel,\n animation: options2.animation\n };\n this.moveTo(animationOptions);\n }\n }, {\n key: \"focus\",\n value: function focus(nodeId) {\n var options2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (this.body.nodes[nodeId] !== void 0) {\n var nodePosition = {\n x: this.body.nodes[nodeId].x,\n y: this.body.nodes[nodeId].y\n };\n options2.position = nodePosition;\n options2.lockedOnNode = nodeId;\n this.moveTo(options2);\n } else {\n console.error(\"Node: \" + nodeId + \" cannot be found.\");\n }\n }\n }, {\n key: \"moveTo\",\n value: function moveTo(options2) {\n if (options2 === void 0) {\n options2 = {};\n return;\n }\n if (options2.offset != null) {\n if (options2.offset.x != null) {\n options2.offset.x = +options2.offset.x;\n if (!_isFinite(options2.offset.x)) {\n throw new TypeError('The option \"offset.x\" has to be a finite number.');\n }\n } else {\n options2.offset.x = 0;\n }\n if (options2.offset.y != null) {\n options2.offset.y = +options2.offset.y;\n if (!_isFinite(options2.offset.y)) {\n throw new TypeError('The option \"offset.y\" has to be a finite number.');\n }\n } else {\n options2.offset.x = 0;\n }\n } else {\n options2.offset = {\n x: 0,\n y: 0\n };\n }\n if (options2.position != null) {\n if (options2.position.x != null) {\n options2.position.x = +options2.position.x;\n if (!_isFinite(options2.position.x)) {\n throw new TypeError('The option \"position.x\" has to be a finite number.');\n }\n } else {\n options2.position.x = 0;\n }\n if (options2.position.y != null) {\n options2.position.y = +options2.position.y;\n if (!_isFinite(options2.position.y)) {\n throw new TypeError('The option \"position.y\" has to be a finite number.');\n }\n } else {\n options2.position.x = 0;\n }\n } else {\n options2.position = this.getViewPosition();\n }\n if (options2.scale != null) {\n options2.scale = +options2.scale;\n if (!(options2.scale > 0)) {\n throw new TypeError('The option \"scale\" has to be a number greater than zero.');\n }\n } else {\n options2.scale = this.body.view.scale;\n }\n if (options2.animation === void 0) {\n options2.animation = {\n duration: 0\n };\n }\n if (options2.animation === false) {\n options2.animation = {\n duration: 0\n };\n }\n if (options2.animation === true) {\n options2.animation = {};\n }\n if (options2.animation.duration === void 0) {\n options2.animation.duration = 1e3;\n }\n if (options2.animation.easingFunction === void 0) {\n options2.animation.easingFunction = \"easeInOutQuad\";\n }\n this.animateView(options2);\n }\n }, {\n key: \"animateView\",\n value: function animateView(options2) {\n if (options2 === void 0) {\n return;\n }\n this.animationEasingFunction = options2.animation.easingFunction;\n this.releaseNode();\n if (options2.locked === true) {\n this.lockedOnNodeId = options2.lockedOnNode;\n this.lockedOnNodeOffset = options2.offset;\n }\n if (this.easingTime != 0) {\n this._transitionRedraw(true);\n }\n this.sourceScale = this.body.view.scale;\n this.sourceTranslation = this.body.view.translation;\n this.targetScale = options2.scale;\n this.body.view.scale = this.targetScale;\n var viewCenter = this.canvas.DOMtoCanvas({\n x: 0.5 * this.canvas.frame.canvas.clientWidth,\n y: 0.5 * this.canvas.frame.canvas.clientHeight\n });\n var distanceFromCenter = {\n x: viewCenter.x - options2.position.x,\n y: viewCenter.y - options2.position.y\n };\n this.targetTranslation = {\n x: this.sourceTranslation.x + distanceFromCenter.x * this.targetScale + options2.offset.x,\n y: this.sourceTranslation.y + distanceFromCenter.y * this.targetScale + options2.offset.y\n };\n if (options2.animation.duration === 0) {\n if (this.lockedOnNodeId != void 0) {\n var _context3;\n this.viewFunction = bind$5(_context3 = this._lockedRedraw).call(_context3, this);\n this.body.emitter.on(\"initRedraw\", this.viewFunction);\n } else {\n this.body.view.scale = this.targetScale;\n this.body.view.translation = this.targetTranslation;\n this.body.emitter.emit(\"_requestRedraw\");\n }\n } else {\n var _context4;\n this.animationSpeed = 1 / (60 * options2.animation.duration * 1e-3) || 1 / 60;\n this.animationEasingFunction = options2.animation.easingFunction;\n this.viewFunction = bind$5(_context4 = this._transitionRedraw).call(_context4, this);\n this.body.emitter.on(\"initRedraw\", this.viewFunction);\n this.body.emitter.emit(\"_startRendering\");\n }\n }\n }, {\n key: \"_lockedRedraw\",\n value: function _lockedRedraw() {\n var nodePosition = {\n x: this.body.nodes[this.lockedOnNodeId].x,\n y: this.body.nodes[this.lockedOnNodeId].y\n };\n var viewCenter = this.canvas.DOMtoCanvas({\n x: 0.5 * this.canvas.frame.canvas.clientWidth,\n y: 0.5 * this.canvas.frame.canvas.clientHeight\n });\n var distanceFromCenter = {\n x: viewCenter.x - nodePosition.x,\n y: viewCenter.y - nodePosition.y\n };\n var sourceTranslation = this.body.view.translation;\n var targetTranslation = {\n x: sourceTranslation.x + distanceFromCenter.x * this.body.view.scale + this.lockedOnNodeOffset.x,\n y: sourceTranslation.y + distanceFromCenter.y * this.body.view.scale + this.lockedOnNodeOffset.y\n };\n this.body.view.translation = targetTranslation;\n }\n }, {\n key: \"releaseNode\",\n value: function releaseNode() {\n if (this.lockedOnNodeId !== void 0 && this.viewFunction !== void 0) {\n this.body.emitter.off(\"initRedraw\", this.viewFunction);\n this.lockedOnNodeId = void 0;\n this.lockedOnNodeOffset = void 0;\n }\n }\n }, {\n key: \"_transitionRedraw\",\n value: function _transitionRedraw() {\n var finished = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;\n this.easingTime += this.animationSpeed;\n this.easingTime = finished === true ? 1 : this.easingTime;\n var progress = easingFunctions[this.animationEasingFunction](this.easingTime);\n this.body.view.scale = this.sourceScale + (this.targetScale - this.sourceScale) * progress;\n this.body.view.translation = {\n x: this.sourceTranslation.x + (this.targetTranslation.x - this.sourceTranslation.x) * progress,\n y: this.sourceTranslation.y + (this.targetTranslation.y - this.sourceTranslation.y) * progress\n };\n if (this.easingTime >= 1) {\n this.body.emitter.off(\"initRedraw\", this.viewFunction);\n this.easingTime = 0;\n if (this.lockedOnNodeId != void 0) {\n var _context5;\n this.viewFunction = bind$5(_context5 = this._lockedRedraw).call(_context5, this);\n this.body.emitter.on(\"initRedraw\", this.viewFunction);\n }\n this.body.emitter.emit(\"animationFinished\");\n }\n }\n }, {\n key: \"getScale\",\n value: function getScale2() {\n return this.body.view.scale;\n }\n }, {\n key: \"getViewPosition\",\n value: function getViewPosition() {\n return this.canvas.DOMtoCanvas({\n x: 0.5 * this.canvas.frame.canvas.clientWidth,\n y: 0.5 * this.canvas.frame.canvas.clientHeight\n });\n }\n }]);\n return View2;\n}();\nfunction keycharm(options2) {\n var preventDefault = options2 && options2.preventDefault || false;\n var container = options2 && options2.container || window;\n var _exportFunctions = {};\n var _bound = {\n keydown: {},\n keyup: {}\n };\n var _keys = {};\n var i;\n for (i = 97; i <= 122; i++) {\n _keys[String.fromCharCode(i)] = {\n code: 65 + (i - 97),\n shift: false\n };\n }\n for (i = 65; i <= 90; i++) {\n _keys[String.fromCharCode(i)] = {\n code: i,\n shift: true\n };\n }\n for (i = 0; i <= 9; i++) {\n _keys[\"\" + i] = {\n code: 48 + i,\n shift: false\n };\n }\n for (i = 1; i <= 12; i++) {\n _keys[\"F\" + i] = {\n code: 111 + i,\n shift: false\n };\n }\n for (i = 0; i <= 9; i++) {\n _keys[\"num\" + i] = {\n code: 96 + i,\n shift: false\n };\n }\n _keys[\"num*\"] = {\n code: 106,\n shift: false\n };\n _keys[\"num+\"] = {\n code: 107,\n shift: false\n };\n _keys[\"num-\"] = {\n code: 109,\n shift: false\n };\n _keys[\"num/\"] = {\n code: 111,\n shift: false\n };\n _keys[\"num.\"] = {\n code: 110,\n shift: false\n };\n _keys[\"left\"] = {\n code: 37,\n shift: false\n };\n _keys[\"up\"] = {\n code: 38,\n shift: false\n };\n _keys[\"right\"] = {\n code: 39,\n shift: false\n };\n _keys[\"down\"] = {\n code: 40,\n shift: false\n };\n _keys[\"space\"] = {\n code: 32,\n shift: false\n };\n _keys[\"enter\"] = {\n code: 13,\n shift: false\n };\n _keys[\"shift\"] = {\n code: 16,\n shift: void 0\n };\n _keys[\"esc\"] = {\n code: 27,\n shift: false\n };\n _keys[\"backspace\"] = {\n code: 8,\n shift: false\n };\n _keys[\"tab\"] = {\n code: 9,\n shift: false\n };\n _keys[\"ctrl\"] = {\n code: 17,\n shift: false\n };\n _keys[\"alt\"] = {\n code: 18,\n shift: false\n };\n _keys[\"delete\"] = {\n code: 46,\n shift: false\n };\n _keys[\"pageup\"] = {\n code: 33,\n shift: false\n };\n _keys[\"pagedown\"] = {\n code: 34,\n shift: false\n };\n _keys[\"=\"] = {\n code: 187,\n shift: false\n };\n _keys[\"-\"] = {\n code: 189,\n shift: false\n };\n _keys[\"]\"] = {\n code: 221,\n shift: false\n };\n _keys[\"[\"] = {\n code: 219,\n shift: false\n };\n var down = function(event) {\n handleEvent(event, \"keydown\");\n };\n var up = function(event) {\n handleEvent(event, \"keyup\");\n };\n var handleEvent = function(event, type) {\n if (_bound[type][event.keyCode] !== void 0) {\n var bound = _bound[type][event.keyCode];\n for (var i2 = 0; i2 < bound.length; i2++) {\n if (bound[i2].shift === void 0) {\n bound[i2].fn(event);\n } else if (bound[i2].shift == true && event.shiftKey == true) {\n bound[i2].fn(event);\n } else if (bound[i2].shift == false && event.shiftKey == false) {\n bound[i2].fn(event);\n }\n }\n if (preventDefault == true) {\n event.preventDefault();\n }\n }\n };\n _exportFunctions.bind = function(key, callback, type) {\n if (type === void 0) {\n type = \"keydown\";\n }\n if (_keys[key] === void 0) {\n throw new Error(\"unsupported key: \" + key);\n }\n if (_bound[type][_keys[key].code] === void 0) {\n _bound[type][_keys[key].code] = [];\n }\n _bound[type][_keys[key].code].push({\n fn: callback,\n shift: _keys[key].shift\n });\n };\n _exportFunctions.bindAll = function(callback, type) {\n if (type === void 0) {\n type = \"keydown\";\n }\n for (var key in _keys) {\n if (_keys.hasOwnProperty(key)) {\n _exportFunctions.bind(key, callback, type);\n }\n }\n };\n _exportFunctions.getKey = function(event) {\n for (var key in _keys) {\n if (_keys.hasOwnProperty(key)) {\n if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) {\n return key;\n } else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) {\n return key;\n } else if (event.keyCode == _keys[key].code && key == \"shift\") {\n return key;\n }\n }\n }\n return \"unknown key, currently not supported\";\n };\n _exportFunctions.unbind = function(key, callback, type) {\n if (type === void 0) {\n type = \"keydown\";\n }\n if (_keys[key] === void 0) {\n throw new Error(\"unsupported key: \" + key);\n }\n if (callback !== void 0) {\n var newBindings = [];\n var bound = _bound[type][_keys[key].code];\n if (bound !== void 0) {\n for (var i2 = 0; i2 < bound.length; i2++) {\n if (!(bound[i2].fn == callback && bound[i2].shift == _keys[key].shift)) {\n newBindings.push(_bound[type][_keys[key].code][i2]);\n }\n }\n }\n _bound[type][_keys[key].code] = newBindings;\n } else {\n _bound[type][_keys[key].code] = [];\n }\n };\n _exportFunctions.reset = function() {\n _bound = {\n keydown: {},\n keyup: {}\n };\n };\n _exportFunctions.destroy = function() {\n _bound = {\n keydown: {},\n keyup: {}\n };\n container.removeEventListener(\"keydown\", down, true);\n container.removeEventListener(\"keyup\", up, true);\n };\n container.addEventListener(\"keydown\", down, true);\n container.addEventListener(\"keyup\", up, true);\n return _exportFunctions;\n}\nvar NavigationHandler = /* @__PURE__ */ function() {\n function NavigationHandler2(body, canvas) {\n var _this = this;\n _classCallCheck(this, NavigationHandler2);\n this.body = body;\n this.canvas = canvas;\n this.iconsCreated = false;\n this.navigationHammers = [];\n this.boundFunctions = {};\n this.touchTime = 0;\n this.activated = false;\n this.body.emitter.on(\"activate\", function() {\n _this.activated = true;\n _this.configureKeyboardBindings();\n });\n this.body.emitter.on(\"deactivate\", function() {\n _this.activated = false;\n _this.configureKeyboardBindings();\n });\n this.body.emitter.on(\"destroy\", function() {\n if (_this.keycharm !== void 0) {\n _this.keycharm.destroy();\n }\n });\n this.options = {};\n }\n _createClass(NavigationHandler2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n if (options2 !== void 0) {\n this.options = options2;\n this.create();\n }\n }\n }, {\n key: \"create\",\n value: function create5() {\n if (this.options.navigationButtons === true) {\n if (this.iconsCreated === false) {\n this.loadNavigationElements();\n }\n } else if (this.iconsCreated === true) {\n this.cleanNavigation();\n }\n this.configureKeyboardBindings();\n }\n }, {\n key: \"cleanNavigation\",\n value: function cleanNavigation() {\n if (this.navigationHammers.length != 0) {\n for (var i = 0; i < this.navigationHammers.length; i++) {\n this.navigationHammers[i].destroy();\n }\n this.navigationHammers = [];\n }\n if (this.navigationDOM && this.navigationDOM[\"wrapper\"] && this.navigationDOM[\"wrapper\"].parentNode) {\n this.navigationDOM[\"wrapper\"].parentNode.removeChild(this.navigationDOM[\"wrapper\"]);\n }\n this.iconsCreated = false;\n }\n }, {\n key: \"loadNavigationElements\",\n value: function loadNavigationElements() {\n var _this2 = this;\n this.cleanNavigation();\n this.navigationDOM = {};\n var navigationDivs = [\"up\", \"down\", \"left\", \"right\", \"zoomIn\", \"zoomOut\", \"zoomExtends\"];\n var navigationDivActions = [\"_moveUp\", \"_moveDown\", \"_moveLeft\", \"_moveRight\", \"_zoomIn\", \"_zoomOut\", \"_fit\"];\n this.navigationDOM[\"wrapper\"] = document.createElement(\"div\");\n this.navigationDOM[\"wrapper\"].className = \"vis-navigation\";\n this.canvas.frame.appendChild(this.navigationDOM[\"wrapper\"]);\n for (var i = 0; i < navigationDivs.length; i++) {\n this.navigationDOM[navigationDivs[i]] = document.createElement(\"div\");\n this.navigationDOM[navigationDivs[i]].className = \"vis-button vis-\" + navigationDivs[i];\n this.navigationDOM[\"wrapper\"].appendChild(this.navigationDOM[navigationDivs[i]]);\n var hammer = new Hammer$1(this.navigationDOM[navigationDivs[i]]);\n if (navigationDivActions[i] === \"_fit\") {\n var _context;\n onTouch(hammer, bind$5(_context = this._fit).call(_context, this));\n } else {\n var _context2;\n onTouch(hammer, bind$5(_context2 = this.bindToRedraw).call(_context2, this, navigationDivActions[i]));\n }\n this.navigationHammers.push(hammer);\n }\n var hammerFrame = new Hammer$1(this.canvas.frame);\n onRelease(hammerFrame, function() {\n _this2._stopMovement();\n });\n this.navigationHammers.push(hammerFrame);\n this.iconsCreated = true;\n }\n }, {\n key: \"bindToRedraw\",\n value: function bindToRedraw(action) {\n if (this.boundFunctions[action] === void 0) {\n var _context3;\n this.boundFunctions[action] = bind$5(_context3 = this[action]).call(_context3, this);\n this.body.emitter.on(\"initRedraw\", this.boundFunctions[action]);\n this.body.emitter.emit(\"_startRendering\");\n }\n }\n }, {\n key: \"unbindFromRedraw\",\n value: function unbindFromRedraw(action) {\n if (this.boundFunctions[action] !== void 0) {\n this.body.emitter.off(\"initRedraw\", this.boundFunctions[action]);\n this.body.emitter.emit(\"_stopRendering\");\n delete this.boundFunctions[action];\n }\n }\n }, {\n key: \"_fit\",\n value: function _fit() {\n if (new Date().valueOf() - this.touchTime > 700) {\n this.body.emitter.emit(\"fit\", {\n duration: 700\n });\n this.touchTime = new Date().valueOf();\n }\n }\n }, {\n key: \"_stopMovement\",\n value: function _stopMovement() {\n for (var boundAction in this.boundFunctions) {\n if (Object.prototype.hasOwnProperty.call(this.boundFunctions, boundAction)) {\n this.body.emitter.off(\"initRedraw\", this.boundFunctions[boundAction]);\n this.body.emitter.emit(\"_stopRendering\");\n }\n }\n this.boundFunctions = {};\n }\n }, {\n key: \"_moveUp\",\n value: function _moveUp() {\n this.body.view.translation.y += this.options.keyboard.speed.y;\n }\n }, {\n key: \"_moveDown\",\n value: function _moveDown() {\n this.body.view.translation.y -= this.options.keyboard.speed.y;\n }\n }, {\n key: \"_moveLeft\",\n value: function _moveLeft() {\n this.body.view.translation.x += this.options.keyboard.speed.x;\n }\n }, {\n key: \"_moveRight\",\n value: function _moveRight() {\n this.body.view.translation.x -= this.options.keyboard.speed.x;\n }\n }, {\n key: \"_zoomIn\",\n value: function _zoomIn() {\n var scaleOld = this.body.view.scale;\n var scale = this.body.view.scale * (1 + this.options.keyboard.speed.zoom);\n var translation = this.body.view.translation;\n var scaleFrac = scale / scaleOld;\n var tx = (1 - scaleFrac) * this.canvas.canvasViewCenter.x + translation.x * scaleFrac;\n var ty = (1 - scaleFrac) * this.canvas.canvasViewCenter.y + translation.y * scaleFrac;\n this.body.view.scale = scale;\n this.body.view.translation = {\n x: tx,\n y: ty\n };\n this.body.emitter.emit(\"zoom\", {\n direction: \"+\",\n scale: this.body.view.scale,\n pointer: null\n });\n }\n }, {\n key: \"_zoomOut\",\n value: function _zoomOut() {\n var scaleOld = this.body.view.scale;\n var scale = this.body.view.scale / (1 + this.options.keyboard.speed.zoom);\n var translation = this.body.view.translation;\n var scaleFrac = scale / scaleOld;\n var tx = (1 - scaleFrac) * this.canvas.canvasViewCenter.x + translation.x * scaleFrac;\n var ty = (1 - scaleFrac) * this.canvas.canvasViewCenter.y + translation.y * scaleFrac;\n this.body.view.scale = scale;\n this.body.view.translation = {\n x: tx,\n y: ty\n };\n this.body.emitter.emit(\"zoom\", {\n direction: \"-\",\n scale: this.body.view.scale,\n pointer: null\n });\n }\n }, {\n key: \"configureKeyboardBindings\",\n value: function configureKeyboardBindings() {\n var _this3 = this;\n if (this.keycharm !== void 0) {\n this.keycharm.destroy();\n }\n if (this.options.keyboard.enabled === true) {\n if (this.options.keyboard.bindToWindow === true) {\n this.keycharm = keycharm({\n container: window,\n preventDefault: true\n });\n } else {\n this.keycharm = keycharm({\n container: this.canvas.frame,\n preventDefault: true\n });\n }\n this.keycharm.reset();\n if (this.activated === true) {\n var _context4, _context5, _context6, _context7, _context8, _context9, _context10, _context11, _context12, _context13, _context14, _context15, _context16, _context17, _context18, _context19, _context20, _context21, _context22, _context23, _context24, _context25, _context26, _context27;\n bind$5(_context4 = this.keycharm).call(_context4, \"up\", function() {\n _this3.bindToRedraw(\"_moveUp\");\n }, \"keydown\");\n bind$5(_context5 = this.keycharm).call(_context5, \"down\", function() {\n _this3.bindToRedraw(\"_moveDown\");\n }, \"keydown\");\n bind$5(_context6 = this.keycharm).call(_context6, \"left\", function() {\n _this3.bindToRedraw(\"_moveLeft\");\n }, \"keydown\");\n bind$5(_context7 = this.keycharm).call(_context7, \"right\", function() {\n _this3.bindToRedraw(\"_moveRight\");\n }, \"keydown\");\n bind$5(_context8 = this.keycharm).call(_context8, \"=\", function() {\n _this3.bindToRedraw(\"_zoomIn\");\n }, \"keydown\");\n bind$5(_context9 = this.keycharm).call(_context9, \"num+\", function() {\n _this3.bindToRedraw(\"_zoomIn\");\n }, \"keydown\");\n bind$5(_context10 = this.keycharm).call(_context10, \"num-\", function() {\n _this3.bindToRedraw(\"_zoomOut\");\n }, \"keydown\");\n bind$5(_context11 = this.keycharm).call(_context11, \"-\", function() {\n _this3.bindToRedraw(\"_zoomOut\");\n }, \"keydown\");\n bind$5(_context12 = this.keycharm).call(_context12, \"[\", function() {\n _this3.bindToRedraw(\"_zoomOut\");\n }, \"keydown\");\n bind$5(_context13 = this.keycharm).call(_context13, \"]\", function() {\n _this3.bindToRedraw(\"_zoomIn\");\n }, \"keydown\");\n bind$5(_context14 = this.keycharm).call(_context14, \"pageup\", function() {\n _this3.bindToRedraw(\"_zoomIn\");\n }, \"keydown\");\n bind$5(_context15 = this.keycharm).call(_context15, \"pagedown\", function() {\n _this3.bindToRedraw(\"_zoomOut\");\n }, \"keydown\");\n bind$5(_context16 = this.keycharm).call(_context16, \"up\", function() {\n _this3.unbindFromRedraw(\"_moveUp\");\n }, \"keyup\");\n bind$5(_context17 = this.keycharm).call(_context17, \"down\", function() {\n _this3.unbindFromRedraw(\"_moveDown\");\n }, \"keyup\");\n bind$5(_context18 = this.keycharm).call(_context18, \"left\", function() {\n _this3.unbindFromRedraw(\"_moveLeft\");\n }, \"keyup\");\n bind$5(_context19 = this.keycharm).call(_context19, \"right\", function() {\n _this3.unbindFromRedraw(\"_moveRight\");\n }, \"keyup\");\n bind$5(_context20 = this.keycharm).call(_context20, \"=\", function() {\n _this3.unbindFromRedraw(\"_zoomIn\");\n }, \"keyup\");\n bind$5(_context21 = this.keycharm).call(_context21, \"num+\", function() {\n _this3.unbindFromRedraw(\"_zoomIn\");\n }, \"keyup\");\n bind$5(_context22 = this.keycharm).call(_context22, \"num-\", function() {\n _this3.unbindFromRedraw(\"_zoomOut\");\n }, \"keyup\");\n bind$5(_context23 = this.keycharm).call(_context23, \"-\", function() {\n _this3.unbindFromRedraw(\"_zoomOut\");\n }, \"keyup\");\n bind$5(_context24 = this.keycharm).call(_context24, \"[\", function() {\n _this3.unbindFromRedraw(\"_zoomOut\");\n }, \"keyup\");\n bind$5(_context25 = this.keycharm).call(_context25, \"]\", function() {\n _this3.unbindFromRedraw(\"_zoomIn\");\n }, \"keyup\");\n bind$5(_context26 = this.keycharm).call(_context26, \"pageup\", function() {\n _this3.unbindFromRedraw(\"_zoomIn\");\n }, \"keyup\");\n bind$5(_context27 = this.keycharm).call(_context27, \"pagedown\", function() {\n _this3.unbindFromRedraw(\"_zoomOut\");\n }, \"keyup\");\n }\n }\n }\n }]);\n return NavigationHandler2;\n}();\nfunction _createForOfIteratorHelper$4(o, allowArrayLike) {\n var it2 = typeof symbol !== \"undefined\" && getIteratorMethod$1(o) || o[\"@@iterator\"];\n if (!it2) {\n if (isArray$1(o) || (it2 = _unsupportedIterableToArray$4(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it2)\n o = it2;\n var i = 0;\n var F = function F2() {\n };\n return {s: F, n: function n() {\n if (i >= o.length)\n return {done: true};\n return {done: false, value: o[i++]};\n }, e: function e(_e) {\n throw _e;\n }, f: F};\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true, didErr = false, err;\n return {s: function s() {\n it2 = it2.call(o);\n }, n: function n() {\n var step = it2.next();\n normalCompletion = step.done;\n return step;\n }, e: function e(_e2) {\n didErr = true;\n err = _e2;\n }, f: function f() {\n try {\n if (!normalCompletion && it2.return != null)\n it2.return();\n } finally {\n if (didErr)\n throw err;\n }\n }};\n}\nfunction _unsupportedIterableToArray$4(o, minLen) {\n var _context15;\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray$4(o, minLen);\n var n = slice$1(_context15 = Object.prototype.toString.call(o)).call(_context15, 8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return from$2(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray$4(o, minLen);\n}\nfunction _arrayLikeToArray$4(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nvar InteractionHandler = /* @__PURE__ */ function() {\n function InteractionHandler2(body, canvas, selectionHandler) {\n var _context, _context2, _context3, _context4, _context5, _context6, _context7, _context8, _context9, _context10, _context11, _context12, _context13;\n _classCallCheck(this, InteractionHandler2);\n this.body = body;\n this.canvas = canvas;\n this.selectionHandler = selectionHandler;\n this.navigationHandler = new NavigationHandler(body, canvas);\n this.body.eventListeners.onTap = bind$5(_context = this.onTap).call(_context, this);\n this.body.eventListeners.onTouch = bind$5(_context2 = this.onTouch).call(_context2, this);\n this.body.eventListeners.onDoubleTap = bind$5(_context3 = this.onDoubleTap).call(_context3, this);\n this.body.eventListeners.onHold = bind$5(_context4 = this.onHold).call(_context4, this);\n this.body.eventListeners.onDragStart = bind$5(_context5 = this.onDragStart).call(_context5, this);\n this.body.eventListeners.onDrag = bind$5(_context6 = this.onDrag).call(_context6, this);\n this.body.eventListeners.onDragEnd = bind$5(_context7 = this.onDragEnd).call(_context7, this);\n this.body.eventListeners.onMouseWheel = bind$5(_context8 = this.onMouseWheel).call(_context8, this);\n this.body.eventListeners.onPinch = bind$5(_context9 = this.onPinch).call(_context9, this);\n this.body.eventListeners.onMouseMove = bind$5(_context10 = this.onMouseMove).call(_context10, this);\n this.body.eventListeners.onRelease = bind$5(_context11 = this.onRelease).call(_context11, this);\n this.body.eventListeners.onContext = bind$5(_context12 = this.onContext).call(_context12, this);\n this.touchTime = 0;\n this.drag = {};\n this.pinch = {};\n this.popup = void 0;\n this.popupObj = void 0;\n this.popupTimer = void 0;\n this.body.functions.getPointer = bind$5(_context13 = this.getPointer).call(_context13, this);\n this.options = {};\n this.defaultOptions = {\n dragNodes: true,\n dragView: true,\n hover: false,\n keyboard: {\n enabled: false,\n speed: {\n x: 10,\n y: 10,\n zoom: 0.02\n },\n bindToWindow: true,\n autoFocus: true\n },\n navigationButtons: false,\n tooltipDelay: 300,\n zoomView: true,\n zoomSpeed: 1\n };\n assign$2(this.options, this.defaultOptions);\n this.bindEventListeners();\n }\n _createClass(InteractionHandler2, [{\n key: \"bindEventListeners\",\n value: function bindEventListeners() {\n var _this = this;\n this.body.emitter.on(\"destroy\", function() {\n clearTimeout(_this.popupTimer);\n delete _this.body.functions.getPointer;\n });\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options2) {\n if (options2 !== void 0) {\n var fields = [\"hideEdgesOnDrag\", \"hideEdgesOnZoom\", \"hideNodesOnDrag\", \"keyboard\", \"multiselect\", \"selectable\", \"selectConnectedEdges\"];\n selectiveNotDeepExtend(fields, this.options, options2);\n mergeOptions(this.options, options2, \"keyboard\");\n if (options2.tooltip) {\n assign$2(this.options.tooltip, options2.tooltip);\n if (options2.tooltip.color) {\n this.options.tooltip.color = parseColor(options2.tooltip.color);\n }\n }\n }\n this.navigationHandler.setOptions(this.options);\n }\n }, {\n key: \"getPointer\",\n value: function getPointer(touch) {\n return {\n x: touch.x - getAbsoluteLeft(this.canvas.frame.canvas),\n y: touch.y - getAbsoluteTop(this.canvas.frame.canvas)\n };\n }\n }, {\n key: \"onTouch\",\n value: function onTouch2(event) {\n if (new Date().valueOf() - this.touchTime > 50) {\n this.drag.pointer = this.getPointer(event.center);\n this.drag.pinched = false;\n this.pinch.scale = this.body.view.scale;\n this.touchTime = new Date().valueOf();\n }\n }\n }, {\n key: \"onTap\",\n value: function onTap(event) {\n var pointer = this.getPointer(event.center);\n var multiselect = this.selectionHandler.options.multiselect && (event.changedPointers[0].ctrlKey || event.changedPointers[0].metaKey);\n this.checkSelectionChanges(pointer, multiselect);\n this.selectionHandler.commitAndEmit(pointer, event);\n this.selectionHandler.generateClickEvent(\"click\", event, pointer);\n }\n }, {\n key: \"onDoubleTap\",\n value: function onDoubleTap(event) {\n var pointer = this.getPointer(event.center);\n this.selectionHandler.generateClickEvent(\"doubleClick\", event, pointer);\n }\n }, {\n key: \"onHold\",\n value: function onHold(event) {\n var pointer = this.getPointer(event.center);\n var multiselect = this.selectionHandler.options.multiselect;\n this.checkSelectionChanges(pointer, multiselect);\n this.selectionHandler.commitAndEmit(pointer, event);\n this.selectionHandler.generateClickEvent(\"click\", event, pointer);\n this.selectionHandler.generateClickEvent(\"hold\", event, pointer);\n }\n }, {\n key: \"onRelease\",\n value: function onRelease2(event) {\n if (new Date().valueOf() - this.touchTime > 10) {\n var pointer = this.getPointer(event.center);\n this.selectionHandler.generateClickEvent(\"release\", event, pointer);\n this.touchTime = new Date().valueOf();\n }\n }\n }, {\n key: \"onContext\",\n value: function onContext(event) {\n var pointer = this.getPointer({\n x: event.clientX,\n y: event.clientY\n });\n this.selectionHandler.generateClickEvent(\"oncontext\", event, pointer);\n }\n }, {\n key: \"checkSelectionChanges\",\n value: function checkSelectionChanges(pointer) {\n var add = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n if (add === true) {\n this.selectionHandler.selectAdditionalOnPoint(pointer);\n } else {\n this.selectionHandler.selectOnPoint(pointer);\n }\n }\n }, {\n key: \"_determineDifference\",\n value: function _determineDifference(firstSet, secondSet) {\n var arrayDiff = function arrayDiff2(firstArr, secondArr) {\n var result = [];\n for (var i = 0; i < firstArr.length; i++) {\n var value = firstArr[i];\n if (indexOf2(secondArr).call(secondArr, value) === -1) {\n result.push(value);\n }\n }\n return result;\n };\n return {\n nodes: arrayDiff(firstSet.nodes, secondSet.nodes),\n edges: arrayDiff(firstSet.edges, secondSet.edges)\n };\n }\n }, {\n key: \"onDragStart\",\n value: function onDragStart(event) {\n if (this.drag.dragging) {\n return;\n }\n if (this.drag.pointer === void 0) {\n this.onTouch(event);\n }\n var node = this.selectionHandler.getNodeAt(this.drag.pointer);\n this.drag.dragging = true;\n this.drag.selection = [];\n this.drag.translation = assign$2({}, this.body.view.translation);\n this.drag.nodeId = void 0;\n if (event.srcEvent.shiftKey) {\n this.body.selectionBox.show = true;\n var pointer = this.getPointer(event.center);\n this.body.selectionBox.position.start = {\n x: this.canvas._XconvertDOMtoCanvas(pointer.x),\n y: this.canvas._YconvertDOMtoCanvas(pointer.y)\n };\n this.body.selectionBox.position.end = {\n x: this.canvas._XconvertDOMtoCanvas(pointer.x),\n y: this.canvas._YconvertDOMtoCanvas(pointer.y)\n };\n }\n if (node !== void 0 && this.options.dragNodes === true) {\n this.drag.nodeId = node.id;\n if (node.isSelected() === false) {\n this.selectionHandler.unselectAll();\n this.selectionHandler.selectObject(node);\n }\n this.selectionHandler.generateClickEvent(\"dragStart\", event, this.drag.pointer);\n var _iterator = _createForOfIteratorHelper$4(this.selectionHandler.getSelectedNodes()), _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done; ) {\n var _node = _step.value;\n var s = {\n id: _node.id,\n node: _node,\n x: _node.x,\n y: _node.y,\n xFixed: _node.options.fixed.x,\n yFixed: _node.options.fixed.y\n };\n _node.options.fixed.x = true;\n _node.options.fixed.y = true;\n this.drag.selection.push(s);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n this.selectionHandler.generateClickEvent(\"dragStart\", event, this.drag.pointer, void 0, true);\n }\n }\n }, {\n key: \"onDrag\",\n value: function onDrag(event) {\n var _this2 = this;\n if (this.drag.pinched === true) {\n return;\n }\n this.body.emitter.emit(\"unlockNode\");\n var pointer = this.getPointer(event.center);\n var selection = this.drag.selection;\n if (selection && selection.length && this.options.dragNodes === true) {\n this.selectionHandler.generateClickEvent(\"dragging\", event, pointer);\n var deltaX = pointer.x - this.drag.pointer.x;\n var deltaY = pointer.y - this.drag.pointer.y;\n forEach$2(selection).call(selection, function(selection2) {\n var node = selection2.node;\n if (selection2.xFixed === false) {\n node.x = _this2.canvas._XconvertDOMtoCanvas(_this2.canvas._XconvertCanvasToDOM(selection2.x) + deltaX);\n }\n if (selection2.yFixed === false) {\n node.y = _this2.canvas._YconvertDOMtoCanvas(_this2.canvas._YconvertCanvasToDOM(selection2.y) + deltaY);\n }\n });\n this.body.emitter.emit(\"startSimulation\");\n } else {\n if (event.srcEvent.shiftKey) {\n this.selectionHandler.generateClickEvent(\"dragging\", event, pointer, void 0, true);\n if (this.drag.pointer === void 0) {\n this.onDragStart(event);\n return;\n }\n this.body.selectionBox.position.end = {\n x: this.canvas._XconvertDOMtoCanvas(pointer.x),\n y: this.canvas._YconvertDOMtoCanvas(pointer.y)\n };\n this.body.emitter.emit(\"_requestRedraw\");\n }\n if (this.options.dragView === true && !event.srcEvent.shiftKey) {\n this.selectionHandler.generateClickEvent(\"dragging\", event, pointer, void 0, true);\n if (this.drag.pointer === void 0) {\n this.onDragStart(event);\n return;\n }\n var diffX = pointer.x - this.drag.pointer.x;\n var diffY = pointer.y - this.drag.pointer.y;\n this.body.view.translation = {\n x: this.drag.translation.x + diffX,\n y: this.drag.translation.y + diffY\n };\n this.body.emitter.emit(\"_requestRedraw\");\n }\n }\n }\n }, {\n key: \"onDragEnd\",\n value: function onDragEnd(event) {\n var _this3 = this;\n this.drag.dragging = false;\n if (this.body.selectionBox.show) {\n var _context14;\n this.body.selectionBox.show = false;\n var selectionBoxPosition = this.body.selectionBox.position;\n var selectionBoxPositionMinMax = {\n minX: Math.min(selectionBoxPosition.start.x, selectionBoxPosition.end.x),\n minY: Math.min(selectionBoxPosition.start.y, selectionBoxPosition.end.y),\n maxX: Math.max(selectionBoxPosition.start.x, selectionBoxPosition.end.x),\n maxY: Math.max(selectionBoxPosition.start.y, selectionBoxPosition.end.y)\n };\n var toBeSelectedNodes = filter2(_context14 = this.body.nodeIndices).call(_context14, function(nodeId) {\n var node = _this3.body.nodes[nodeId];\n return node.x >= selectionBoxPositionMinMax.minX && node.x <= selectionBoxPositionMinMax.maxX && node.y >= selectionBoxPositionMinMax.minY && node.y <= selectionBoxPositionMinMax.maxY;\n });\n forEach$2(toBeSelectedNodes).call(toBeSelectedNodes, function(nodeId) {\n return _this3.selectionHandler.selectObject(_this3.body.nodes[nodeId]);\n });\n var pointer = this.getPointer(event.center);\n this.selectionHandler.commitAndEmit(pointer, event);\n this.selectionHandler.generateClickEvent(\"dragEnd\", event, this.getPointer(event.center), void 0, true);\n this.body.emitter.emit(\"_requestRedraw\");\n } else {\n var selection = this.drag.selection;\n if (selection && selection.length) {\n forEach$2(selection).call(selection, function(s) {\n s.node.options.fixed.x = s.xFixed;\n s.node.options.fixed.y = s.yFixed;\n });\n this.selectionHandler.generateClickEvent(\"dragEnd\", event, this.getPointer(event.center));\n this.body.emitter.emit(\"startSimulation\");\n } else {\n this.selectionHandler.generateClickEvent(\"dragEnd\", event, this.getPointer(event.center), void 0, true);\n this.body.emitter.emit(\"_requestRedraw\");\n }\n }\n }\n }, {\n key: \"onPinch\",\n value: function onPinch(event) {\n var pointer = this.getPointer(event.center);\n this.drag.pinched = true;\n if (this.pinch[\"scale\"] === void 0) {\n this.pinch.scale = 1;\n }\n var scale = this.pinch.scale * event.scale;\n this.zoom(scale, pointer);\n }\n }, {\n key: \"zoom\",\n value: function zoom(scale, pointer) {\n if (this.options.zoomView === true) {\n var scaleOld = this.body.view.scale;\n if (scale < 1e-5) {\n scale = 1e-5;\n }\n if (scale > 10) {\n scale = 10;\n }\n var preScaleDragPointer = void 0;\n if (this.drag !== void 0) {\n if (this.drag.dragging === true) {\n preScaleDragPointer = this.canvas.DOMtoCanvas(this.drag.pointer);\n }\n }\n var translation = this.body.view.translation;\n var scaleFrac = scale / scaleOld;\n var tx = (1 - scaleFrac) * pointer.x + translation.x * scaleFrac;\n var ty = (1 - scaleFrac) * pointer.y + translation.y * scaleFrac;\n this.body.view.scale = scale;\n this.body.view.translation = {\n x: tx,\n y: ty\n };\n if (preScaleDragPointer != void 0) {\n var postScaleDragPointer = this.canvas.canvasToDOM(preScaleDragPointer);\n this.drag.pointer.x = postScaleDragPointer.x;\n this.drag.pointer.y = postScaleDragPointer.y;\n }\n this.body.emitter.emit(\"_requestRedraw\");\n if (scaleOld < scale) {\n this.body.emitter.emit(\"zoom\", {\n direction: \"+\",\n scale: this.body.view.scale,\n pointer\n });\n } else {\n this.body.emitter.emit(\"zoom\", {\n direction: \"-\",\n scale: this.body.view.scale,\n pointer\n });\n }\n }\n }\n }, {\n key: \"onMouseWheel\",\n value: function onMouseWheel(event) {\n if (this.options.zoomView === true) {\n if (event.deltaY !== 0) {\n var scale = this.body.view.scale;\n scale *= 1 + (event.deltaY < 0 ? 1 : -1) * (this.options.zoomSpeed * 0.1);\n var pointer = this.getPointer({\n x: event.clientX,\n y: event.clientY\n });\n this.zoom(scale, pointer);\n }\n event.preventDefault();\n }\n }\n }, {\n key: \"onMouseMove\",\n value: function onMouseMove(event) {\n var _this4 = this;\n var pointer = this.getPointer({\n x: event.clientX,\n y: event.clientY\n });\n var popupVisible = false;\n if (this.popup !== void 0) {\n if (this.popup.hidden === false) {\n this._checkHidePopup(pointer);\n }\n if (this.popup.hidden === false) {\n popupVisible = true;\n this.popup.setPosition(pointer.x + 3, pointer.y - 5);\n this.popup.show();\n }\n }\n if (this.options.keyboard.autoFocus && this.options.keyboard.bindToWindow === false && this.options.keyboard.enabled === true) {\n this.canvas.frame.focus();\n }\n if (popupVisible === false) {\n if (this.popupTimer !== void 0) {\n clearInterval(this.popupTimer);\n this.popupTimer = void 0;\n }\n if (!this.drag.dragging) {\n this.popupTimer = setTimeout$1(function() {\n return _this4._checkShowPopup(pointer);\n }, this.options.tooltipDelay);\n }\n }\n if (this.options.hover === true) {\n this.selectionHandler.hoverObject(event, pointer);\n }\n }\n }, {\n key: \"_checkShowPopup\",\n value: function _checkShowPopup(pointer) {\n var x = this.canvas._XconvertDOMtoCanvas(pointer.x);\n var y = this.canvas._YconvertDOMtoCanvas(pointer.y);\n var pointerObj = {\n left: x,\n top: y,\n right: x,\n bottom: y\n };\n var previousPopupObjId = this.popupObj === void 0 ? void 0 : this.popupObj.id;\n var nodeUnderCursor = false;\n var popupType = \"node\";\n if (this.popupObj === void 0) {\n var nodeIndices = this.body.nodeIndices;\n var nodes = this.body.nodes;\n var node;\n var overlappingNodes = [];\n for (var i = 0; i < nodeIndices.length; i++) {\n node = nodes[nodeIndices[i]];\n if (node.isOverlappingWith(pointerObj) === true) {\n nodeUnderCursor = true;\n if (node.getTitle() !== void 0) {\n overlappingNodes.push(nodeIndices[i]);\n }\n }\n }\n if (overlappingNodes.length > 0) {\n this.popupObj = nodes[overlappingNodes[overlappingNodes.length - 1]];\n nodeUnderCursor = true;\n }\n }\n if (this.popupObj === void 0 && nodeUnderCursor === false) {\n var edgeIndices = this.body.edgeIndices;\n var edges = this.body.edges;\n var edge;\n var overlappingEdges = [];\n for (var _i = 0; _i < edgeIndices.length; _i++) {\n edge = edges[edgeIndices[_i]];\n if (edge.isOverlappingWith(pointerObj) === true) {\n if (edge.connected === true && edge.getTitle() !== void 0) {\n overlappingEdges.push(edgeIndices[_i]);\n }\n }\n }\n if (overlappingEdges.length > 0) {\n this.popupObj = edges[overlappingEdges[overlappingEdges.length - 1]];\n popupType = \"edge\";\n }\n }\n if (this.popupObj !== void 0) {\n if (this.popupObj.id !== previousPopupObjId) {\n if (this.popup === void 0) {\n this.popup = new Popup$1(this.canvas.frame);\n }\n this.popup.popupTargetType = popupType;\n this.popup.popupTargetId = this.popupObj.id;\n this.popup.setPosition(pointer.x + 3, pointer.y - 5);\n this.popup.setText(this.popupObj.getTitle());\n this.popup.show();\n this.body.emitter.emit(\"showPopup\", this.popupObj.id);\n }\n } else {\n if (this.popup !== void 0) {\n this.popup.hide();\n this.body.emitter.emit(\"hidePopup\");\n }\n }\n }\n }, {\n key: \"_checkHidePopup\",\n value: function _checkHidePopup(pointer) {\n var pointerObj = this.selectionHandler._pointerToPositionObject(pointer);\n var stillOnObj = false;\n if (this.popup.popupTargetType === \"node\") {\n if (this.body.nodes[this.popup.popupTargetId] !== void 0) {\n stillOnObj = this.body.nodes[this.popup.popupTargetId].isOverlappingWith(pointerObj);\n if (stillOnObj === true) {\n var overNode = this.selectionHandler.getNodeAt(pointer);\n stillOnObj = overNode === void 0 ? false : overNode.id === this.popup.popupTargetId;\n }\n }\n } else {\n if (this.selectionHandler.getNodeAt(pointer) === void 0) {\n if (this.body.edges[this.popup.popupTargetId] !== void 0) {\n stillOnObj = this.body.edges[this.popup.popupTargetId].isOverlappingWith(pointerObj);\n }\n }\n }\n if (stillOnObj === false) {\n this.popupObj = void 0;\n this.popup.hide();\n this.body.emitter.emit(\"hidePopup\");\n }\n }\n }]);\n return InteractionHandler2;\n}();\nvar collection$1 = collection$3;\nvar collectionStrong = collectionStrong$2;\ncollection$1(\"Set\", function(init) {\n return function Set() {\n return init(this, arguments.length ? arguments[0] : void 0);\n };\n}, collectionStrong);\nvar path$1 = path$x;\nvar set$2 = path$1.Set;\nvar parent$4 = set$2;\nvar set$1 = parent$4;\nvar set = set$1;\nvar redefineAll$1 = redefineAll$3;\nvar getWeakData = internalMetadata.exports.getWeakData;\nvar anObject = anObject$c;\nvar isObject$1 = isObject$j;\nvar anInstance = anInstance$3;\nvar iterate = iterate$3;\nvar ArrayIterationModule = arrayIteration;\nvar $has = has$c;\nvar InternalStateModule = internalState;\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar id = 0;\nvar uncaughtFrozenStore = function(store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function() {\n this.entries = [];\n};\nvar findUncaughtFrozen = function(store, key) {\n return find(store.entries, function(it2) {\n return it2[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function(key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry)\n 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)\n entry[1] = value;\n else\n this.entries.push([key, value]);\n },\n delete: function(key) {\n var index2 = findIndex(this.entries, function(it2) {\n return it2[0] === key;\n });\n if (~index2)\n this.entries.splice(index2, 1);\n return !!~index2;\n }\n};\nvar collectionWeak$1 = {\n getConstructor: function(wrapper2, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper2(function(that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: void 0\n });\n if (iterable != void 0)\n iterate(iterable, that[ADDER], {\n that,\n AS_ENTRIES: IS_MAP\n });\n });\n var getInternalState2 = internalStateGetterFor(CONSTRUCTOR_NAME);\n var define = function(that, key, value) {\n var state = getInternalState2(that);\n var data2 = getWeakData(anObject(key), true);\n if (data2 === true)\n uncaughtFrozenStore(state).set(key, value);\n else\n data2[state.id] = value;\n return that;\n };\n redefineAll$1(C.prototype, {\n delete: function(key) {\n var state = getInternalState2(this);\n if (!isObject$1(key))\n return false;\n var data2 = getWeakData(key);\n if (data2 === true)\n return uncaughtFrozenStore(state)[\"delete\"](key);\n return data2 && $has(data2, state.id) && delete data2[state.id];\n },\n has: function has2(key) {\n var state = getInternalState2(this);\n if (!isObject$1(key))\n return false;\n var data2 = getWeakData(key);\n if (data2 === true)\n return uncaughtFrozenStore(state).has(key);\n return data2 && $has(data2, state.id);\n }\n });\n redefineAll$1(C.prototype, IS_MAP ? {\n get: function get2(key) {\n var state = getInternalState2(this);\n if (isObject$1(key)) {\n var data2 = getWeakData(key);\n if (data2 === true)\n return uncaughtFrozenStore(state).get(key);\n return data2 ? data2[state.id] : void 0;\n }\n },\n set: function set2(key, value) {\n return define(this, key, value);\n }\n } : {\n add: function add(value) {\n return define(this, value, true);\n }\n });\n return C;\n }\n};\nvar global$2 = global$k;\nvar redefineAll = redefineAll$3;\nvar InternalMetadataModule = internalMetadata.exports;\nvar collection = collection$3;\nvar collectionWeak = collectionWeak$1;\nvar isObject = isObject$j;\nvar enforceIternalState = internalState.enforce;\nvar NATIVE_WEAK_MAP = nativeWeakMap;\nvar IS_IE11 = !global$2.ActiveXObject && \"ActiveXObject\" in global$2;\nvar isExtensible = Object.isExtensible;\nvar InternalWeakMap;\nvar wrapper = function(init) {\n return function WeakMap2() {\n return init(this, arguments.length ? arguments[0] : void 0);\n };\n};\nvar $WeakMap = collection(\"WeakMap\", wrapper, collectionWeak);\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, \"WeakMap\", true);\n InternalMetadataModule.enable();\n var WeakMapPrototype = $WeakMap.prototype;\n var nativeDelete = WeakMapPrototype[\"delete\"];\n var nativeHas = WeakMapPrototype.has;\n var nativeGet = WeakMapPrototype.get;\n var nativeSet = WeakMapPrototype.set;\n redefineAll(WeakMapPrototype, {\n delete: function(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen)\n state.frozen = new InternalWeakMap();\n return nativeDelete.call(this, key) || state.frozen[\"delete\"](key);\n }\n return nativeDelete.call(this, key);\n },\n has: function has2(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen)\n state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) || state.frozen.has(key);\n }\n return nativeHas.call(this, key);\n },\n get: function get2(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen)\n state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);\n }\n return nativeGet.call(this, key);\n },\n set: function set2(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen)\n state.frozen = new InternalWeakMap();\n nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);\n } else\n nativeSet.call(this, key, value);\n return this;\n }\n });\n}\nvar path = path$x;\nvar weakMap$2 = path.WeakMap;\nvar parent$3 = weakMap$2;\nvar weakMap$1 = parent$3;\nvar weakMap = weakMap$1;\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f)\n throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver))\n throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\")\n throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f)\n throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver))\n throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n}\nfunction _createForOfIteratorHelper$3(o, allowArrayLike) {\n var it2 = typeof symbol !== \"undefined\" && getIteratorMethod$1(o) || o[\"@@iterator\"];\n if (!it2) {\n if (isArray$1(o) || (it2 = _unsupportedIterableToArray$3(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it2)\n o = it2;\n var i = 0;\n var F = function F2() {\n };\n return {s: F, n: function n() {\n if (i >= o.length)\n return {done: true};\n return {done: false, value: o[i++]};\n }, e: function e(_e) {\n throw _e;\n }, f: F};\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true, didErr = false, err;\n return {s: function s() {\n it2 = it2.call(o);\n }, n: function n() {\n var step = it2.next();\n normalCompletion = step.done;\n return step;\n }, e: function e(_e2) {\n didErr = true;\n err = _e2;\n }, f: function f() {\n try {\n if (!normalCompletion && it2.return != null)\n it2.return();\n } finally {\n if (didErr)\n throw err;\n }\n }};\n}\nfunction _unsupportedIterableToArray$3(o, minLen) {\n var _context2;\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray$3(o, minLen);\n var n = slice$1(_context2 = Object.prototype.toString.call(o)).call(_context2, 8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return from$2(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray$3(o, minLen);\n}\nfunction _arrayLikeToArray$3(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nvar _SingleTypeSelectionAccumulator_previousSelection, _SingleTypeSelectionAccumulator_selection, _SelectionAccumulator_nodes, _SelectionAccumulator_edges, _SelectionAccumulator_commitHandler;\nfunction diffSets(prev, next3) {\n var diff = new set();\n var _iterator = _createForOfIteratorHelper$3(next3), _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done; ) {\n var item = _step.value;\n if (!prev.has(item)) {\n diff.add(item);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return diff;\n}\nvar SingleTypeSelectionAccumulator = /* @__PURE__ */ function() {\n function SingleTypeSelectionAccumulator2() {\n _classCallCheck(this, SingleTypeSelectionAccumulator2);\n _SingleTypeSelectionAccumulator_previousSelection.set(this, new set());\n _SingleTypeSelectionAccumulator_selection.set(this, new set());\n }\n _createClass(SingleTypeSelectionAccumulator2, [{\n key: \"size\",\n get: function get2() {\n return __classPrivateFieldGet(this, _SingleTypeSelectionAccumulator_selection, \"f\").size;\n }\n }, {\n key: \"add\",\n value: function add() {\n for (var _len = arguments.length, items = new Array(_len), _key = 0; _key < _len; _key++) {\n items[_key] = arguments[_key];\n }\n for (var _i = 0, _items = items; _i < _items.length; _i++) {\n var item = _items[_i];\n __classPrivateFieldGet(this, _SingleTypeSelectionAccumulator_selection, \"f\").add(item);\n }\n }\n }, {\n key: \"delete\",\n value: function _delete() {\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n for (var _i2 = 0, _items2 = items; _i2 < _items2.length; _i2++) {\n var item = _items2[_i2];\n __classPrivateFieldGet(this, _SingleTypeSelectionAccumulator_selection, \"f\").delete(item);\n }\n }\n }, {\n key: \"clear\",\n value: function clear() {\n __classPrivateFieldGet(this, _SingleTypeSelectionAccumulator_selection, \"f\").clear();\n }\n }, {\n key: \"getSelection\",\n value: function getSelection() {\n return _toConsumableArray(__classPrivateFieldGet(this, _SingleTypeSelectionAccumulator_selection, \"f\"));\n }\n }, {\n key: \"getChanges\",\n value: function getChanges() {\n return {\n added: _toConsumableArray(diffSets(__classPrivateFieldGet(this, _SingleTypeSelectionAccumulator_previousSelection, \"f\"), __classPrivateFieldGet(this, _SingleTypeSelectionAccumulator_selection, \"f\"))),\n deleted: _toConsumableArray(diffSets(__classPrivateFieldGet(this, _SingleTypeSelectionAccumulator_selection, \"f\"), __classPrivateFieldGet(this, _SingleTypeSelectionAccumulator_previousSelection, \"f\"))),\n previous: _toConsumableArray(new set(__classPrivateFieldGet(this, _SingleTypeSelectionAccumulator_previousSelection, \"f\"))),\n current: _toConsumableArray(new set(__classPrivateFieldGet(this, _SingleTypeSelectionAccumulator_selection, \"f\")))\n };\n }\n }, {\n key: \"commit\",\n value: function commit() {\n var changes = this.getChanges();\n __classPrivateFieldSet(this, _SingleTypeSelectionAccumulator_previousSelection, __classPrivateFieldGet(this, _SingleTypeSelectionAccumulator_selection, \"f\"), \"f\");\n __classPrivateFieldSet(this, _SingleTypeSelectionAccumulator_selection, new set(__classPrivateFieldGet(this, _SingleTypeSelectionAccumulator_previousSelection, \"f\")), \"f\");\n var _iterator2 = _createForOfIteratorHelper$3(changes.added), _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) {\n var item = _step2.value;\n item.select();\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var _iterator3 = _createForOfIteratorHelper$3(changes.deleted), _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done; ) {\n var _item = _step3.value;\n _item.unselect();\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return changes;\n }\n }]);\n return SingleTypeSelectionAccumulator2;\n}();\n_SingleTypeSelectionAccumulator_previousSelection = new weakMap(), _SingleTypeSelectionAccumulator_selection = new weakMap();\nvar SelectionAccumulator = /* @__PURE__ */ function() {\n function SelectionAccumulator2() {\n var commitHandler = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : function() {\n };\n _classCallCheck(this, SelectionAccumulator2);\n _SelectionAccumulator_nodes.set(this, new SingleTypeSelectionAccumulator());\n _SelectionAccumulator_edges.set(this, new SingleTypeSelectionAccumulator());\n _SelectionAccumulator_commitHandler.set(this, void 0);\n __classPrivateFieldSet(this, _SelectionAccumulator_commitHandler, commitHandler, \"f\");\n }\n _createClass(SelectionAccumulator2, [{\n key: \"sizeNodes\",\n get: function get2() {\n return __classPrivateFieldGet(this, _SelectionAccumulator_nodes, \"f\").size;\n }\n }, {\n key: \"sizeEdges\",\n get: function get2() {\n return __classPrivateFieldGet(this, _SelectionAccumulator_edges, \"f\").size;\n }\n }, {\n key: \"getNodes\",\n value: function getNodes() {\n return __classPrivateFieldGet(this, _SelectionAccumulator_nodes, \"f\").getSelection();\n }\n }, {\n key: \"getEdges\",\n value: function getEdges() {\n return __classPrivateFieldGet(this, _SelectionAccumulator_edges, \"f\").getSelection();\n }\n }, {\n key: \"addNodes\",\n value: function addNodes() {\n var _classPrivateFieldGe;\n (_classPrivateFieldGe = __classPrivateFieldGet(this, _SelectionAccumulator_nodes, \"f\")).add.apply(_classPrivateFieldGe, arguments);\n }\n }, {\n key: \"addEdges\",\n value: function addEdges() {\n var _classPrivateFieldGe2;\n (_classPrivateFieldGe2 = __classPrivateFieldGet(this, _SelectionAccumulator_edges, \"f\")).add.apply(_classPrivateFieldGe2, arguments);\n }\n }, {\n key: \"deleteNodes\",\n value: function deleteNodes(node) {\n __classPrivateFieldGet(this, _SelectionAccumulator_nodes, \"f\").delete(node);\n }\n }, {\n key: \"deleteEdges\",\n value: function deleteEdges(edge) {\n __classPrivateFieldGet(this, _SelectionAccumulator_edges, \"f\").delete(edge);\n }\n }, {\n key: \"clear\",\n value: function clear() {\n __classPrivateFieldGet(this, _SelectionAccumulator_nodes, \"f\").clear();\n __classPrivateFieldGet(this, _SelectionAccumulator_edges, \"f\").clear();\n }\n }, {\n key: \"commit\",\n value: function commit() {\n var _classPrivateFieldGe3, _context;\n var summary = {\n nodes: __classPrivateFieldGet(this, _SelectionAccumulator_nodes, \"f\").commit(),\n edges: __classPrivateFieldGet(this, _SelectionAccumulator_edges, \"f\").commit()\n };\n for (var _len3 = arguments.length, rest = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n rest[_key3] = arguments[_key3];\n }\n (_classPrivateFieldGe3 = __classPrivateFieldGet(this, _SelectionAccumulator_commitHandler, \"f\")).call.apply(_classPrivateFieldGe3, concat2(_context = [this, summary]).call(_context, rest));\n return summary;\n }\n }]);\n return SelectionAccumulator2;\n}();\n_SelectionAccumulator_nodes = new weakMap(), _SelectionAccumulator_edges = new weakMap(), _SelectionAccumulator_commitHandler = new weakMap();\nfunction _createForOfIteratorHelper$2(o, allowArrayLike) {\n var it2 = typeof symbol !== \"undefined\" && getIteratorMethod$1(o) || o[\"@@iterator\"];\n if (!it2) {\n if (isArray$1(o) || (it2 = _unsupportedIterableToArray$2(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it2)\n o = it2;\n var i = 0;\n var F = function F2() {\n };\n return {s: F, n: function n() {\n if (i >= o.length)\n return {done: true};\n return {done: false, value: o[i++]};\n }, e: function e(_e) {\n throw _e;\n }, f: F};\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true, didErr = false, err;\n return {s: function s() {\n it2 = it2.call(o);\n }, n: function n() {\n var step = it2.next();\n normalCompletion = step.done;\n return step;\n }, e: function e(_e2) {\n didErr = true;\n err = _e2;\n }, f: function f() {\n try {\n if (!normalCompletion && it2.return != null)\n it2.return();\n } finally {\n if (didErr)\n throw err;\n }\n }};\n}\nfunction _unsupportedIterableToArray$2(o, minLen) {\n var _context3;\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray$2(o, minLen);\n var n = slice$1(_context3 = Object.prototype.toString.call(o)).call(_context3, 8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return from$2(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray$2(o, minLen);\n}\nfunction _arrayLikeToArray$2(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nvar SelectionHandler = /* @__PURE__ */ function() {\n function SelectionHandler2(body, canvas) {\n var _this = this;\n _classCallCheck(this, SelectionHandler2);\n this.body = body;\n this.canvas = canvas;\n this._selectionAccumulator = new SelectionAccumulator();\n this.hoverObj = {\n nodes: {},\n edges: {}\n };\n this.options = {};\n this.defaultOptions = {\n multiselect: false,\n selectable: true,\n selectConnectedEdges: true,\n hoverConnectedEdges: true\n };\n assign$2(this.options, this.defaultOptions);\n this.body.emitter.on(\"_dataChanged\", function() {\n _this.updateSelection();\n });\n }\n _createClass(SelectionHandler2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n if (options2 !== void 0) {\n var fields = [\"multiselect\", \"hoverConnectedEdges\", \"selectable\", \"selectConnectedEdges\"];\n selectiveDeepExtend(fields, this.options, options2);\n }\n }\n }, {\n key: \"selectOnPoint\",\n value: function selectOnPoint(pointer) {\n var selected = false;\n if (this.options.selectable === true) {\n var obj = this.getNodeAt(pointer) || this.getEdgeAt(pointer);\n this.unselectAll();\n if (obj !== void 0) {\n selected = this.selectObject(obj);\n }\n this.body.emitter.emit(\"_requestRedraw\");\n }\n return selected;\n }\n }, {\n key: \"selectAdditionalOnPoint\",\n value: function selectAdditionalOnPoint(pointer) {\n var selectionChanged = false;\n if (this.options.selectable === true) {\n var obj = this.getNodeAt(pointer) || this.getEdgeAt(pointer);\n if (obj !== void 0) {\n selectionChanged = true;\n if (obj.isSelected() === true) {\n this.deselectObject(obj);\n } else {\n this.selectObject(obj);\n }\n this.body.emitter.emit(\"_requestRedraw\");\n }\n }\n return selectionChanged;\n }\n }, {\n key: \"_initBaseEvent\",\n value: function _initBaseEvent(event, pointer) {\n var properties = {};\n properties[\"pointer\"] = {\n DOM: {\n x: pointer.x,\n y: pointer.y\n },\n canvas: this.canvas.DOMtoCanvas(pointer)\n };\n properties[\"event\"] = event;\n return properties;\n }\n }, {\n key: \"generateClickEvent\",\n value: function generateClickEvent(eventType, event, pointer, oldSelection) {\n var emptySelection = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false;\n var properties = this._initBaseEvent(event, pointer);\n if (emptySelection === true) {\n properties.nodes = [];\n properties.edges = [];\n } else {\n var tmp = this.getSelection();\n properties.nodes = tmp.nodes;\n properties.edges = tmp.edges;\n }\n if (oldSelection !== void 0) {\n properties[\"previousSelection\"] = oldSelection;\n }\n if (eventType == \"click\") {\n properties.items = this.getClickedItems(pointer);\n }\n if (event.controlEdge !== void 0) {\n properties.controlEdge = event.controlEdge;\n }\n this.body.emitter.emit(eventType, properties);\n }\n }, {\n key: \"selectObject\",\n value: function selectObject(obj) {\n var highlightEdges = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.options.selectConnectedEdges;\n if (obj !== void 0) {\n if (obj instanceof Node) {\n if (highlightEdges === true) {\n var _this$_selectionAccum;\n (_this$_selectionAccum = this._selectionAccumulator).addEdges.apply(_this$_selectionAccum, _toConsumableArray(obj.edges));\n }\n this._selectionAccumulator.addNodes(obj);\n } else {\n this._selectionAccumulator.addEdges(obj);\n }\n return true;\n }\n return false;\n }\n }, {\n key: \"deselectObject\",\n value: function deselectObject(obj) {\n if (obj.isSelected() === true) {\n obj.selected = false;\n this._removeFromSelection(obj);\n }\n }\n }, {\n key: \"_getAllNodesOverlappingWith\",\n value: function _getAllNodesOverlappingWith(object2) {\n var overlappingNodes = [];\n var nodes = this.body.nodes;\n for (var i = 0; i < this.body.nodeIndices.length; i++) {\n var nodeId = this.body.nodeIndices[i];\n if (nodes[nodeId].isOverlappingWith(object2)) {\n overlappingNodes.push(nodeId);\n }\n }\n return overlappingNodes;\n }\n }, {\n key: \"_pointerToPositionObject\",\n value: function _pointerToPositionObject(pointer) {\n var canvasPos = this.canvas.DOMtoCanvas(pointer);\n return {\n left: canvasPos.x - 1,\n top: canvasPos.y + 1,\n right: canvasPos.x + 1,\n bottom: canvasPos.y - 1\n };\n }\n }, {\n key: \"getNodeAt\",\n value: function getNodeAt(pointer) {\n var returnNode = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n var positionObject = this._pointerToPositionObject(pointer);\n var overlappingNodes = this._getAllNodesOverlappingWith(positionObject);\n if (overlappingNodes.length > 0) {\n if (returnNode === true) {\n return this.body.nodes[overlappingNodes[overlappingNodes.length - 1]];\n } else {\n return overlappingNodes[overlappingNodes.length - 1];\n }\n } else {\n return void 0;\n }\n }\n }, {\n key: \"_getEdgesOverlappingWith\",\n value: function _getEdgesOverlappingWith(object2, overlappingEdges) {\n var edges = this.body.edges;\n for (var i = 0; i < this.body.edgeIndices.length; i++) {\n var edgeId = this.body.edgeIndices[i];\n if (edges[edgeId].isOverlappingWith(object2)) {\n overlappingEdges.push(edgeId);\n }\n }\n }\n }, {\n key: \"_getAllEdgesOverlappingWith\",\n value: function _getAllEdgesOverlappingWith(object2) {\n var overlappingEdges = [];\n this._getEdgesOverlappingWith(object2, overlappingEdges);\n return overlappingEdges;\n }\n }, {\n key: \"getEdgeAt\",\n value: function getEdgeAt(pointer) {\n var returnEdge = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n var canvasPos = this.canvas.DOMtoCanvas(pointer);\n var mindist = 10;\n var overlappingEdge = null;\n var edges = this.body.edges;\n for (var i = 0; i < this.body.edgeIndices.length; i++) {\n var edgeId = this.body.edgeIndices[i];\n var edge = edges[edgeId];\n if (edge.connected) {\n var xFrom = edge.from.x;\n var yFrom = edge.from.y;\n var xTo = edge.to.x;\n var yTo = edge.to.y;\n var dist = edge.edgeType.getDistanceToEdge(xFrom, yFrom, xTo, yTo, canvasPos.x, canvasPos.y);\n if (dist < mindist) {\n overlappingEdge = edgeId;\n mindist = dist;\n }\n }\n }\n if (overlappingEdge !== null) {\n if (returnEdge === true) {\n return this.body.edges[overlappingEdge];\n } else {\n return overlappingEdge;\n }\n } else {\n return void 0;\n }\n }\n }, {\n key: \"_addToHover\",\n value: function _addToHover(obj) {\n if (obj instanceof Node) {\n this.hoverObj.nodes[obj.id] = obj;\n } else {\n this.hoverObj.edges[obj.id] = obj;\n }\n }\n }, {\n key: \"_removeFromSelection\",\n value: function _removeFromSelection(obj) {\n if (obj instanceof Node) {\n var _this$_selectionAccum2;\n this._selectionAccumulator.deleteNodes(obj);\n (_this$_selectionAccum2 = this._selectionAccumulator).deleteEdges.apply(_this$_selectionAccum2, _toConsumableArray(obj.edges));\n } else {\n this._selectionAccumulator.deleteEdges(obj);\n }\n }\n }, {\n key: \"unselectAll\",\n value: function unselectAll() {\n this._selectionAccumulator.clear();\n }\n }, {\n key: \"getSelectedNodeCount\",\n value: function getSelectedNodeCount() {\n return this._selectionAccumulator.sizeNodes;\n }\n }, {\n key: \"getSelectedEdgeCount\",\n value: function getSelectedEdgeCount() {\n return this._selectionAccumulator.sizeEdges;\n }\n }, {\n key: \"_hoverConnectedEdges\",\n value: function _hoverConnectedEdges(node) {\n for (var i = 0; i < node.edges.length; i++) {\n var edge = node.edges[i];\n edge.hover = true;\n this._addToHover(edge);\n }\n }\n }, {\n key: \"emitBlurEvent\",\n value: function emitBlurEvent(event, pointer, object2) {\n var properties = this._initBaseEvent(event, pointer);\n if (object2.hover === true) {\n object2.hover = false;\n if (object2 instanceof Node) {\n properties.node = object2.id;\n this.body.emitter.emit(\"blurNode\", properties);\n } else {\n properties.edge = object2.id;\n this.body.emitter.emit(\"blurEdge\", properties);\n }\n }\n }\n }, {\n key: \"emitHoverEvent\",\n value: function emitHoverEvent(event, pointer, object2) {\n var properties = this._initBaseEvent(event, pointer);\n var hoverChanged = false;\n if (object2.hover === false) {\n object2.hover = true;\n this._addToHover(object2);\n hoverChanged = true;\n if (object2 instanceof Node) {\n properties.node = object2.id;\n this.body.emitter.emit(\"hoverNode\", properties);\n } else {\n properties.edge = object2.id;\n this.body.emitter.emit(\"hoverEdge\", properties);\n }\n }\n return hoverChanged;\n }\n }, {\n key: \"hoverObject\",\n value: function hoverObject(event, pointer) {\n var object2 = this.getNodeAt(pointer);\n if (object2 === void 0) {\n object2 = this.getEdgeAt(pointer);\n }\n var hoverChanged = false;\n for (var nodeId in this.hoverObj.nodes) {\n if (Object.prototype.hasOwnProperty.call(this.hoverObj.nodes, nodeId)) {\n if (object2 === void 0 || object2 instanceof Node && object2.id != nodeId || object2 instanceof Edge) {\n this.emitBlurEvent(event, pointer, this.hoverObj.nodes[nodeId]);\n delete this.hoverObj.nodes[nodeId];\n hoverChanged = true;\n }\n }\n }\n for (var edgeId in this.hoverObj.edges) {\n if (Object.prototype.hasOwnProperty.call(this.hoverObj.edges, edgeId)) {\n if (hoverChanged === true) {\n this.hoverObj.edges[edgeId].hover = false;\n delete this.hoverObj.edges[edgeId];\n } else if (object2 === void 0 || object2 instanceof Edge && object2.id != edgeId || object2 instanceof Node && !object2.hover) {\n this.emitBlurEvent(event, pointer, this.hoverObj.edges[edgeId]);\n delete this.hoverObj.edges[edgeId];\n hoverChanged = true;\n }\n }\n }\n if (object2 !== void 0) {\n var hoveredEdgesCount = keys3(this.hoverObj.edges).length;\n var hoveredNodesCount = keys3(this.hoverObj.nodes).length;\n var newOnlyHoveredEdge = object2 instanceof Edge && hoveredEdgesCount === 0 && hoveredNodesCount === 0;\n var newOnlyHoveredNode = object2 instanceof Node && hoveredEdgesCount === 0 && hoveredNodesCount === 0;\n if (hoverChanged || newOnlyHoveredEdge || newOnlyHoveredNode) {\n hoverChanged = this.emitHoverEvent(event, pointer, object2);\n }\n if (object2 instanceof Node && this.options.hoverConnectedEdges === true) {\n this._hoverConnectedEdges(object2);\n }\n }\n if (hoverChanged === true) {\n this.body.emitter.emit(\"_requestRedraw\");\n }\n }\n }, {\n key: \"commitWithoutEmitting\",\n value: function commitWithoutEmitting() {\n this._selectionAccumulator.commit();\n }\n }, {\n key: \"commitAndEmit\",\n value: function commitAndEmit(pointer, event) {\n var selected = false;\n var selectionChanges = this._selectionAccumulator.commit();\n var previousSelection = {\n nodes: selectionChanges.nodes.previous,\n edges: selectionChanges.edges.previous\n };\n if (selectionChanges.edges.deleted.length > 0) {\n this.generateClickEvent(\"deselectEdge\", event, pointer, previousSelection);\n selected = true;\n }\n if (selectionChanges.nodes.deleted.length > 0) {\n this.generateClickEvent(\"deselectNode\", event, pointer, previousSelection);\n selected = true;\n }\n if (selectionChanges.nodes.added.length > 0) {\n this.generateClickEvent(\"selectNode\", event, pointer);\n selected = true;\n }\n if (selectionChanges.edges.added.length > 0) {\n this.generateClickEvent(\"selectEdge\", event, pointer);\n selected = true;\n }\n if (selected === true) {\n this.generateClickEvent(\"select\", event, pointer);\n }\n }\n }, {\n key: \"getSelection\",\n value: function getSelection() {\n return {\n nodes: this.getSelectedNodeIds(),\n edges: this.getSelectedEdgeIds()\n };\n }\n }, {\n key: \"getSelectedNodes\",\n value: function getSelectedNodes() {\n return this._selectionAccumulator.getNodes();\n }\n }, {\n key: \"getSelectedEdges\",\n value: function getSelectedEdges() {\n return this._selectionAccumulator.getEdges();\n }\n }, {\n key: \"getSelectedNodeIds\",\n value: function getSelectedNodeIds() {\n var _context;\n return map$3(_context = this._selectionAccumulator.getNodes()).call(_context, function(node) {\n return node.id;\n });\n }\n }, {\n key: \"getSelectedEdgeIds\",\n value: function getSelectedEdgeIds() {\n var _context2;\n return map$3(_context2 = this._selectionAccumulator.getEdges()).call(_context2, function(edge) {\n return edge.id;\n });\n }\n }, {\n key: \"setSelection\",\n value: function setSelection(selection) {\n var options2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!selection || !selection.nodes && !selection.edges) {\n throw new TypeError(\"Selection must be an object with nodes and/or edges properties\");\n }\n if (options2.unselectAll || options2.unselectAll === void 0) {\n this.unselectAll();\n }\n if (selection.nodes) {\n var _iterator = _createForOfIteratorHelper$2(selection.nodes), _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done; ) {\n var id2 = _step.value;\n var node = this.body.nodes[id2];\n if (!node) {\n throw new RangeError('Node with id \"' + id2 + '\" not found');\n }\n this.selectObject(node, options2.highlightEdges);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n if (selection.edges) {\n var _iterator2 = _createForOfIteratorHelper$2(selection.edges), _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) {\n var _id = _step2.value;\n var edge = this.body.edges[_id];\n if (!edge) {\n throw new RangeError('Edge with id \"' + _id + '\" not found');\n }\n this.selectObject(edge);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n this.body.emitter.emit(\"_requestRedraw\");\n this._selectionAccumulator.commit();\n }\n }, {\n key: \"selectNodes\",\n value: function selectNodes(selection) {\n var highlightEdges = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n if (!selection || selection.length === void 0)\n throw \"Selection must be an array with ids\";\n this.setSelection({\n nodes: selection\n }, {\n highlightEdges\n });\n }\n }, {\n key: \"selectEdges\",\n value: function selectEdges(selection) {\n if (!selection || selection.length === void 0)\n throw \"Selection must be an array with ids\";\n this.setSelection({\n edges: selection\n });\n }\n }, {\n key: \"updateSelection\",\n value: function updateSelection() {\n for (var node in this._selectionAccumulator.getNodes()) {\n if (!Object.prototype.hasOwnProperty.call(this.body.nodes, node.id)) {\n this._selectionAccumulator.deleteNodes(node);\n }\n }\n for (var edge in this._selectionAccumulator.getEdges()) {\n if (!Object.prototype.hasOwnProperty.call(this.body.edges, edge.id)) {\n this._selectionAccumulator.deleteEdges(edge);\n }\n }\n }\n }, {\n key: \"getClickedItems\",\n value: function getClickedItems(pointer) {\n var point = this.canvas.DOMtoCanvas(pointer);\n var items = [];\n var nodeIndices = this.body.nodeIndices;\n var nodes = this.body.nodes;\n for (var i = nodeIndices.length - 1; i >= 0; i--) {\n var node = nodes[nodeIndices[i]];\n var ret = node.getItemsOnPoint(point);\n items.push.apply(items, ret);\n }\n var edgeIndices = this.body.edgeIndices;\n var edges = this.body.edges;\n for (var _i = edgeIndices.length - 1; _i >= 0; _i--) {\n var edge = edges[edgeIndices[_i]];\n var _ret = edge.getItemsOnPoint(point);\n items.push.apply(items, _ret);\n }\n return items;\n }\n }]);\n return SelectionHandler2;\n}();\nvar floor = Math.floor;\nvar mergeSort = function(array2, comparefn) {\n var length2 = array2.length;\n var middle = floor(length2 / 2);\n return length2 < 8 ? insertionSort(array2, comparefn) : merge(mergeSort(array2.slice(0, middle), comparefn), mergeSort(array2.slice(middle), comparefn), comparefn);\n};\nvar insertionSort = function(array2, comparefn) {\n var length2 = array2.length;\n var i = 1;\n var element, j;\n while (i < length2) {\n j = i;\n element = array2[i];\n while (j && comparefn(array2[j - 1], element) > 0) {\n array2[j] = array2[--j];\n }\n if (j !== i++)\n array2[j] = element;\n }\n return array2;\n};\nvar merge = function(left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n var result = [];\n while (lindex < llength || rindex < rlength) {\n if (lindex < llength && rindex < rlength) {\n result.push(comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]);\n } else {\n result.push(lindex < llength ? left[lindex++] : right[rindex++]);\n }\n }\n return result;\n};\nvar arraySort = mergeSort;\nvar userAgent$1 = engineUserAgent;\nvar firefox = userAgent$1.match(/firefox\\/(\\d+)/i);\nvar engineFfVersion = !!firefox && +firefox[1];\nvar UA = engineUserAgent;\nvar engineIsIeOrEdge = /MSIE|Trident/.test(UA);\nvar userAgent = engineUserAgent;\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\nvar engineWebkitVersion = !!webkit && +webkit[1];\nvar $$2 = _export;\nvar aFunction$1 = aFunction$5;\nvar toObject$1 = toObject$d;\nvar toLength$1 = toLength$a;\nvar toString2 = toString$9;\nvar fails = fails$m;\nvar internalSort = arraySort;\nvar arrayMethodIsStrict$2 = arrayMethodIsStrict$6;\nvar FF = engineFfVersion;\nvar IE_OR_EDGE = engineIsIeOrEdge;\nvar V8 = engineV8Version;\nvar WEBKIT = engineWebkitVersion;\nvar test = [];\nvar nativeSort = test.sort;\nvar FAILS_ON_UNDEFINED = fails(function() {\n test.sort(void 0);\n});\nvar FAILS_ON_NULL = fails(function() {\n test.sort(null);\n});\nvar STRICT_METHOD$2 = arrayMethodIsStrict$2(\"sort\");\nvar STABLE_SORT = !fails(function() {\n if (V8)\n return V8 < 70;\n if (FF && FF > 3)\n return;\n if (IE_OR_EDGE)\n return true;\n if (WEBKIT)\n return WEBKIT < 603;\n var result = \"\";\n var code, chr, value, index2;\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n switch (code) {\n case 66:\n case 69:\n case 70:\n case 72:\n value = 3;\n break;\n case 68:\n case 71:\n value = 4;\n break;\n default:\n value = 2;\n }\n for (index2 = 0; index2 < 47; index2++) {\n test.push({\n k: chr + index2,\n v: value\n });\n }\n }\n test.sort(function(a, b) {\n return b.v - a.v;\n });\n for (index2 = 0; index2 < test.length; index2++) {\n chr = test[index2].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr)\n result += chr;\n }\n return result !== \"DGBEFHACIJK\";\n});\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD$2 || !STABLE_SORT;\nvar getSortCompare = function(comparefn) {\n return function(x, y) {\n if (y === void 0)\n return -1;\n if (x === void 0)\n return 1;\n if (comparefn !== void 0)\n return +comparefn(x, y) || 0;\n return toString2(x) > toString2(y) ? 1 : -1;\n };\n};\n$$2({\n target: \"Array\",\n proto: true,\n forced: FORCED\n}, {\n sort: function sort(comparefn) {\n if (comparefn !== void 0)\n aFunction$1(comparefn);\n var array2 = toObject$1(this);\n if (STABLE_SORT)\n return comparefn === void 0 ? nativeSort.call(array2) : nativeSort.call(array2, comparefn);\n var items = [];\n var arrayLength = toLength$1(array2.length);\n var itemsLength, index2;\n for (index2 = 0; index2 < arrayLength; index2++) {\n if (index2 in array2)\n items.push(array2[index2]);\n }\n items = internalSort(items, getSortCompare(comparefn));\n itemsLength = items.length;\n index2 = 0;\n while (index2 < itemsLength)\n array2[index2] = items[index2++];\n while (index2 < arrayLength)\n delete array2[index2++];\n return array2;\n }\n});\nvar entryVirtual$2 = entryVirtual$i;\nvar sort$3 = entryVirtual$2(\"Array\").sort;\nvar sort$2 = sort$3;\nvar ArrayPrototype$2 = Array.prototype;\nvar sort_1 = function(it2) {\n var own = it2.sort;\n return it2 === ArrayPrototype$2 || it2 instanceof Array && own === ArrayPrototype$2.sort ? sort$2 : own;\n};\nvar parent$2 = sort_1;\nvar sort$1 = parent$2;\nvar sort2 = sort$1;\nvar aFunction = aFunction$5;\nvar toObject = toObject$d;\nvar IndexedObject = indexedObject;\nvar toLength = toLength$a;\nvar createMethod = function(IS_RIGHT) {\n return function(that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self2 = IndexedObject(O);\n var length2 = toLength(O.length);\n var index2 = IS_RIGHT ? length2 - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2)\n while (true) {\n if (index2 in self2) {\n memo = self2[index2];\n index2 += i;\n break;\n }\n index2 += i;\n if (IS_RIGHT ? index2 < 0 : length2 <= index2) {\n throw TypeError(\"Reduce of empty array with no initial value\");\n }\n }\n for (; IS_RIGHT ? index2 >= 0 : length2 > index2; index2 += i)\n if (index2 in self2) {\n memo = callbackfn(memo, self2[index2], index2, O);\n }\n return memo;\n };\n};\nvar arrayReduce = {\n left: createMethod(false),\n right: createMethod(true)\n};\nvar classof = classofRaw$1;\nvar global$1$1 = global$k;\nvar engineIsNode = classof(global$1$1.process) == \"process\";\nvar $$1 = _export;\nvar $reduce = arrayReduce.left;\nvar arrayMethodIsStrict$1 = arrayMethodIsStrict$6;\nvar CHROME_VERSION = engineV8Version;\nvar IS_NODE = engineIsNode;\nvar STRICT_METHOD$1 = arrayMethodIsStrict$1(\"reduce\");\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n$$1({\n target: \"Array\",\n proto: true,\n forced: !STRICT_METHOD$1 || CHROME_BUG\n}, {\n reduce: function reduce(callbackfn) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar entryVirtual$1 = entryVirtual$i;\nvar reduce$3 = entryVirtual$1(\"Array\").reduce;\nvar reduce$2 = reduce$3;\nvar ArrayPrototype$1 = Array.prototype;\nvar reduce_1 = function(it2) {\n var own = it2.reduce;\n return it2 === ArrayPrototype$1 || it2 instanceof Array && own === ArrayPrototype$1.reduce ? reduce$2 : own;\n};\nvar parent$1 = reduce_1;\nvar reduce$1 = parent$1;\nvar reduce2 = reduce$1;\nvar timsort$1 = {};\n(function(exports) {\n (function(global2, factory) {\n {\n factory(exports);\n }\n })(commonjsGlobal, function(exports2) {\n exports2.__esModule = true;\n exports2.sort = sort3;\n function _classCallCheck2(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n var DEFAULT_MIN_MERGE = 32;\n var DEFAULT_MIN_GALLOPING = 7;\n var DEFAULT_TMP_STORAGE_LENGTH = 256;\n var POWERS_OF_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9];\n function log10(x) {\n if (x < 1e5) {\n if (x < 100) {\n return x < 10 ? 0 : 1;\n }\n if (x < 1e4) {\n return x < 1e3 ? 2 : 3;\n }\n return 4;\n }\n if (x < 1e7) {\n return x < 1e6 ? 5 : 6;\n }\n if (x < 1e9) {\n return x < 1e8 ? 7 : 8;\n }\n return 9;\n }\n function alphabeticalCompare(a, b) {\n if (a === b) {\n return 0;\n }\n if (~~a === a && ~~b === b) {\n if (a === 0 || b === 0) {\n return a < b ? -1 : 1;\n }\n if (a < 0 || b < 0) {\n if (b >= 0) {\n return -1;\n }\n if (a >= 0) {\n return 1;\n }\n a = -a;\n b = -b;\n }\n var al = log10(a);\n var bl = log10(b);\n var t = 0;\n if (al < bl) {\n a *= POWERS_OF_TEN[bl - al - 1];\n b /= 10;\n t = -1;\n } else if (al > bl) {\n b *= POWERS_OF_TEN[al - bl - 1];\n a /= 10;\n t = 1;\n }\n if (a === b) {\n return t;\n }\n return a < b ? -1 : 1;\n }\n var aStr = String(a);\n var bStr = String(b);\n if (aStr === bStr) {\n return 0;\n }\n return aStr < bStr ? -1 : 1;\n }\n function minRunLength(n) {\n var r = 0;\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n return n + r;\n }\n function makeAscendingRun(array2, lo, hi2, compare) {\n var runHi = lo + 1;\n if (runHi === hi2) {\n return 1;\n }\n if (compare(array2[runHi++], array2[lo]) < 0) {\n while (runHi < hi2 && compare(array2[runHi], array2[runHi - 1]) < 0) {\n runHi++;\n }\n reverseRun(array2, lo, runHi);\n } else {\n while (runHi < hi2 && compare(array2[runHi], array2[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n return runHi - lo;\n }\n function reverseRun(array2, lo, hi2) {\n hi2--;\n while (lo < hi2) {\n var t = array2[lo];\n array2[lo++] = array2[hi2];\n array2[hi2--] = t;\n }\n }\n function binaryInsertionSort(array2, lo, hi2, start, compare) {\n if (start === lo) {\n start++;\n }\n for (; start < hi2; start++) {\n var pivot = array2[start];\n var left = lo;\n var right = start;\n while (left < right) {\n var mid = left + right >>> 1;\n if (compare(pivot, array2[mid]) < 0) {\n right = mid;\n } else {\n left = mid + 1;\n }\n }\n var n = start - left;\n switch (n) {\n case 3:\n array2[left + 3] = array2[left + 2];\n case 2:\n array2[left + 2] = array2[left + 1];\n case 1:\n array2[left + 1] = array2[left];\n break;\n default:\n while (n > 0) {\n array2[left + n] = array2[left + n - 1];\n n--;\n }\n }\n array2[left] = pivot;\n }\n }\n function gallopLeft(value, array2, start, length2, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array2[start + hint]) > 0) {\n maxOffset = length2 - hint;\n while (offset < maxOffset && compare(value, array2[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n } else {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array2[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array2[start + m]) > 0) {\n lastOffset = m + 1;\n } else {\n offset = m;\n }\n }\n return offset;\n }\n function gallopRight(value, array2, start, length2, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array2[start + hint]) < 0) {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array2[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n } else {\n maxOffset = length2 - hint;\n while (offset < maxOffset && compare(value, array2[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array2[start + m]) < 0) {\n offset = m;\n } else {\n lastOffset = m + 1;\n }\n }\n return offset;\n }\n var TimSort = function() {\n function TimSort2(array2, compare) {\n _classCallCheck2(this, TimSort2);\n this.array = null;\n this.compare = null;\n this.minGallop = DEFAULT_MIN_GALLOPING;\n this.length = 0;\n this.tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n this.stackLength = 0;\n this.runStart = null;\n this.runLength = null;\n this.stackSize = 0;\n this.array = array2;\n this.compare = compare;\n this.length = array2.length;\n if (this.length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n this.tmpStorageLength = this.length >>> 1;\n }\n this.tmp = new Array(this.tmpStorageLength);\n this.stackLength = this.length < 120 ? 5 : this.length < 1542 ? 10 : this.length < 119151 ? 19 : 40;\n this.runStart = new Array(this.stackLength);\n this.runLength = new Array(this.stackLength);\n }\n TimSort2.prototype.pushRun = function pushRun(runStart, runLength) {\n this.runStart[this.stackSize] = runStart;\n this.runLength[this.stackSize] = runLength;\n this.stackSize += 1;\n };\n TimSort2.prototype.mergeRuns = function mergeRuns() {\n while (this.stackSize > 1) {\n var n = this.stackSize - 2;\n if (n >= 1 && this.runLength[n - 1] <= this.runLength[n] + this.runLength[n + 1] || n >= 2 && this.runLength[n - 2] <= this.runLength[n] + this.runLength[n - 1]) {\n if (this.runLength[n - 1] < this.runLength[n + 1]) {\n n--;\n }\n } else if (this.runLength[n] > this.runLength[n + 1]) {\n break;\n }\n this.mergeAt(n);\n }\n };\n TimSort2.prototype.forceMergeRuns = function forceMergeRuns() {\n while (this.stackSize > 1) {\n var n = this.stackSize - 2;\n if (n > 0 && this.runLength[n - 1] < this.runLength[n + 1]) {\n n--;\n }\n this.mergeAt(n);\n }\n };\n TimSort2.prototype.mergeAt = function mergeAt(i) {\n var compare = this.compare;\n var array2 = this.array;\n var start1 = this.runStart[i];\n var length1 = this.runLength[i];\n var start2 = this.runStart[i + 1];\n var length2 = this.runLength[i + 1];\n this.runLength[i] = length1 + length2;\n if (i === this.stackSize - 3) {\n this.runStart[i + 1] = this.runStart[i + 2];\n this.runLength[i + 1] = this.runLength[i + 2];\n }\n this.stackSize--;\n var k = gallopRight(array2[start2], array2, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n if (length1 === 0) {\n return;\n }\n length2 = gallopLeft(array2[start1 + length1 - 1], array2, start2, length2, length2 - 1, compare);\n if (length2 === 0) {\n return;\n }\n if (length1 <= length2) {\n this.mergeLow(start1, length1, start2, length2);\n } else {\n this.mergeHigh(start1, length1, start2, length2);\n }\n };\n TimSort2.prototype.mergeLow = function mergeLow(start1, length1, start2, length2) {\n var compare = this.compare;\n var array2 = this.array;\n var tmp = this.tmp;\n var i = 0;\n for (i = 0; i < length1; i++) {\n tmp[i] = array2[start1 + i];\n }\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array2[dest++] = array2[cursor2++];\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array2[dest + i] = tmp[cursor1 + i];\n }\n return;\n }\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array2[dest + i] = array2[cursor2 + i];\n }\n array2[dest + length2] = tmp[cursor1];\n return;\n }\n var minGallop = this.minGallop;\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n do {\n if (compare(array2[cursor2], tmp[cursor1]) < 0) {\n array2[dest++] = array2[cursor2++];\n count2++;\n count1 = 0;\n if (--length2 === 0) {\n exit = true;\n break;\n }\n } else {\n array2[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = gallopRight(array2[cursor2], tmp, cursor1, length1, 0, compare);\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array2[dest + i] = tmp[cursor1 + i];\n }\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n array2[dest++] = array2[cursor2++];\n if (--length2 === 0) {\n exit = true;\n break;\n }\n count2 = gallopLeft(tmp[cursor1], array2, cursor2, length2, 0, compare);\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array2[dest + i] = array2[cursor2 + i];\n }\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n array2[dest++] = tmp[cursor1++];\n if (--length1 === 1) {\n exit = true;\n break;\n }\n minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (minGallop < 0) {\n minGallop = 0;\n }\n minGallop += 2;\n }\n this.minGallop = minGallop;\n if (minGallop < 1) {\n this.minGallop = 1;\n }\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array2[dest + i] = array2[cursor2 + i];\n }\n array2[dest + length2] = tmp[cursor1];\n } else if (length1 === 0) {\n throw new Error(\"mergeLow preconditions were not respected\");\n } else {\n for (i = 0; i < length1; i++) {\n array2[dest + i] = tmp[cursor1 + i];\n }\n }\n };\n TimSort2.prototype.mergeHigh = function mergeHigh(start1, length1, start2, length2) {\n var compare = this.compare;\n var array2 = this.array;\n var tmp = this.tmp;\n var i = 0;\n for (i = 0; i < length2; i++) {\n tmp[i] = array2[start2 + i];\n }\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array2[dest--] = array2[cursor1--];\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array2[customCursor + i] = tmp[i];\n }\n return;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array2[customDest + i] = array2[customCursor + i];\n }\n array2[dest] = tmp[cursor2];\n return;\n }\n var minGallop = this.minGallop;\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n do {\n if (compare(tmp[cursor2], array2[cursor1]) < 0) {\n array2[dest--] = array2[cursor1--];\n count1++;\n count2 = 0;\n if (--length1 === 0) {\n exit = true;\n break;\n }\n } else {\n array2[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array2, start1, length1, length1 - 1, compare);\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = count1 - 1; i >= 0; i--) {\n array2[customDest + i] = array2[customCursor + i];\n }\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n array2[dest--] = tmp[cursor2--];\n if (--length2 === 1) {\n exit = true;\n break;\n }\n count2 = length2 - gallopLeft(array2[cursor1], tmp, 0, length2, length2 - 1, compare);\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n for (i = 0; i < count2; i++) {\n array2[customDest + i] = tmp[customCursor + i];\n }\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n array2[dest--] = array2[cursor1--];\n if (--length1 === 0) {\n exit = true;\n break;\n }\n minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (minGallop < 0) {\n minGallop = 0;\n }\n minGallop += 2;\n }\n this.minGallop = minGallop;\n if (minGallop < 1) {\n this.minGallop = 1;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array2[customDest + i] = array2[customCursor + i];\n }\n array2[dest] = tmp[cursor2];\n } else if (length2 === 0) {\n throw new Error(\"mergeHigh preconditions were not respected\");\n } else {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array2[customCursor + i] = tmp[i];\n }\n }\n };\n return TimSort2;\n }();\n function sort3(array2, compare, lo, hi2) {\n if (!Array.isArray(array2)) {\n throw new TypeError(\"Can only sort arrays\");\n }\n if (!compare) {\n compare = alphabeticalCompare;\n } else if (typeof compare !== \"function\") {\n hi2 = lo;\n lo = compare;\n compare = alphabeticalCompare;\n }\n if (!lo) {\n lo = 0;\n }\n if (!hi2) {\n hi2 = array2.length;\n }\n var remaining = hi2 - lo;\n if (remaining < 2) {\n return;\n }\n var runLength = 0;\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array2, lo, hi2, compare);\n binaryInsertionSort(array2, lo, hi2, lo + runLength, compare);\n return;\n }\n var ts = new TimSort(array2, compare);\n var minRun = minRunLength(remaining);\n do {\n runLength = makeAscendingRun(array2, lo, hi2, compare);\n if (runLength < minRun) {\n var force = remaining;\n if (force > minRun) {\n force = minRun;\n }\n binaryInsertionSort(array2, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n ts.forceMergeRuns();\n }\n });\n})(timsort$1);\nvar timsort = timsort$1;\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = construct2(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !construct2)\n return false;\n if (construct2.sham)\n return false;\n if (typeof Proxy === \"function\")\n return true;\n try {\n Boolean.prototype.valueOf.call(construct2(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar DirectionInterface = /* @__PURE__ */ function() {\n function DirectionInterface2() {\n _classCallCheck(this, DirectionInterface2);\n }\n _createClass(DirectionInterface2, [{\n key: \"abstract\",\n value: function abstract() {\n throw new Error(\"Can't instantiate abstract class!\");\n }\n }, {\n key: \"fake_use\",\n value: function fake_use() {\n }\n }, {\n key: \"curveType\",\n value: function curveType() {\n return this.abstract();\n }\n }, {\n key: \"getPosition\",\n value: function getPosition(node) {\n this.fake_use(node);\n return this.abstract();\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(node, position) {\n var level = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : void 0;\n this.fake_use(node, position, level);\n this.abstract();\n }\n }, {\n key: \"getTreeSize\",\n value: function getTreeSize(index2) {\n this.fake_use(index2);\n return this.abstract();\n }\n }, {\n key: \"sort\",\n value: function sort3(nodeArray) {\n this.fake_use(nodeArray);\n this.abstract();\n }\n }, {\n key: \"fix\",\n value: function fix2(node, level) {\n this.fake_use(node, level);\n this.abstract();\n }\n }, {\n key: \"shift\",\n value: function shift(nodeId, diff) {\n this.fake_use(nodeId, diff);\n this.abstract();\n }\n }]);\n return DirectionInterface2;\n}();\nvar VerticalStrategy = /* @__PURE__ */ function(_DirectionInterface) {\n _inherits(VerticalStrategy2, _DirectionInterface);\n var _super = _createSuper(VerticalStrategy2);\n function VerticalStrategy2(layout) {\n var _this;\n _classCallCheck(this, VerticalStrategy2);\n _this = _super.call(this);\n _this.layout = layout;\n return _this;\n }\n _createClass(VerticalStrategy2, [{\n key: \"curveType\",\n value: function curveType() {\n return \"horizontal\";\n }\n }, {\n key: \"getPosition\",\n value: function getPosition(node) {\n return node.x;\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(node, position) {\n var level = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : void 0;\n if (level !== void 0) {\n this.layout.hierarchical.addToOrdering(node, level);\n }\n node.x = position;\n }\n }, {\n key: \"getTreeSize\",\n value: function getTreeSize(index2) {\n var res = this.layout.hierarchical.getTreeSize(this.layout.body.nodes, index2);\n return {\n min: res.min_x,\n max: res.max_x\n };\n }\n }, {\n key: \"sort\",\n value: function sort3(nodeArray) {\n timsort.sort(nodeArray, function(a, b) {\n return a.x - b.x;\n });\n }\n }, {\n key: \"fix\",\n value: function fix2(node, level) {\n node.y = this.layout.options.hierarchical.levelSeparation * level;\n node.options.fixed.y = true;\n }\n }, {\n key: \"shift\",\n value: function shift(nodeId, diff) {\n this.layout.body.nodes[nodeId].x += diff;\n }\n }]);\n return VerticalStrategy2;\n}(DirectionInterface);\nvar HorizontalStrategy = /* @__PURE__ */ function(_DirectionInterface2) {\n _inherits(HorizontalStrategy2, _DirectionInterface2);\n var _super2 = _createSuper(HorizontalStrategy2);\n function HorizontalStrategy2(layout) {\n var _this2;\n _classCallCheck(this, HorizontalStrategy2);\n _this2 = _super2.call(this);\n _this2.layout = layout;\n return _this2;\n }\n _createClass(HorizontalStrategy2, [{\n key: \"curveType\",\n value: function curveType() {\n return \"vertical\";\n }\n }, {\n key: \"getPosition\",\n value: function getPosition(node) {\n return node.y;\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(node, position) {\n var level = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : void 0;\n if (level !== void 0) {\n this.layout.hierarchical.addToOrdering(node, level);\n }\n node.y = position;\n }\n }, {\n key: \"getTreeSize\",\n value: function getTreeSize(index2) {\n var res = this.layout.hierarchical.getTreeSize(this.layout.body.nodes, index2);\n return {\n min: res.min_y,\n max: res.max_y\n };\n }\n }, {\n key: \"sort\",\n value: function sort3(nodeArray) {\n timsort.sort(nodeArray, function(a, b) {\n return a.y - b.y;\n });\n }\n }, {\n key: \"fix\",\n value: function fix2(node, level) {\n node.x = this.layout.options.hierarchical.levelSeparation * level;\n node.options.fixed.x = true;\n }\n }, {\n key: \"shift\",\n value: function shift(nodeId, diff) {\n this.layout.body.nodes[nodeId].y += diff;\n }\n }]);\n return HorizontalStrategy2;\n}(DirectionInterface);\nvar $ = _export;\nvar $every = arrayIteration.every;\nvar arrayMethodIsStrict = arrayMethodIsStrict$6;\nvar STRICT_METHOD = arrayMethodIsStrict(\"every\");\n$({\n target: \"Array\",\n proto: true,\n forced: !STRICT_METHOD\n}, {\n every: function every(callbackfn) {\n return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);\n }\n});\nvar entryVirtual = entryVirtual$i;\nvar every$3 = entryVirtual(\"Array\").every;\nvar every$2 = every$3;\nvar ArrayPrototype = Array.prototype;\nvar every_1 = function(it2) {\n var own = it2.every;\n return it2 === ArrayPrototype || it2 instanceof Array && own === ArrayPrototype.every ? every$2 : own;\n};\nvar parent = every_1;\nvar every$1 = parent;\nvar every2 = every$1;\nfunction _createForOfIteratorHelper$1(o, allowArrayLike) {\n var it2 = typeof symbol !== \"undefined\" && getIteratorMethod$1(o) || o[\"@@iterator\"];\n if (!it2) {\n if (isArray$1(o) || (it2 = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it2)\n o = it2;\n var i = 0;\n var F = function F2() {\n };\n return {s: F, n: function n() {\n if (i >= o.length)\n return {done: true};\n return {done: false, value: o[i++]};\n }, e: function e(_e) {\n throw _e;\n }, f: F};\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true, didErr = false, err;\n return {s: function s() {\n it2 = it2.call(o);\n }, n: function n() {\n var step = it2.next();\n normalCompletion = step.done;\n return step;\n }, e: function e(_e2) {\n didErr = true;\n err = _e2;\n }, f: function f() {\n try {\n if (!normalCompletion && it2.return != null)\n it2.return();\n } finally {\n if (didErr)\n throw err;\n }\n }};\n}\nfunction _unsupportedIterableToArray$1(o, minLen) {\n var _context9;\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray$1(o, minLen);\n var n = slice$1(_context9 = Object.prototype.toString.call(o)).call(_context9, 8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return from$2(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray$1(o, minLen);\n}\nfunction _arrayLikeToArray$1(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction fillLevelsByDirectionCyclic(nodes, levels) {\n var edges = new set();\n forEach$2(nodes).call(nodes, function(node) {\n var _context;\n forEach$2(_context = node.edges).call(_context, function(edge) {\n if (edge.connected) {\n edges.add(edge);\n }\n });\n });\n forEach$2(edges).call(edges, function(edge) {\n var fromId = edge.from.id;\n var toId = edge.to.id;\n if (levels[fromId] == null) {\n levels[fromId] = 0;\n }\n if (levels[toId] == null || levels[fromId] >= levels[toId]) {\n levels[toId] = levels[fromId] + 1;\n }\n });\n return levels;\n}\nfunction fillLevelsByDirectionLeaves(nodes) {\n return fillLevelsByDirection(function(node) {\n var _context2, _context3;\n return every2(_context2 = filter2(_context3 = node.edges).call(_context3, function(edge) {\n return nodes.has(edge.toId);\n })).call(_context2, function(edge) {\n return edge.to === node;\n });\n }, function(newLevel, oldLevel) {\n return oldLevel > newLevel;\n }, \"from\", nodes);\n}\nfunction fillLevelsByDirectionRoots(nodes) {\n return fillLevelsByDirection(function(node) {\n var _context4, _context5;\n return every2(_context4 = filter2(_context5 = node.edges).call(_context5, function(edge) {\n return nodes.has(edge.toId);\n })).call(_context4, function(edge) {\n return edge.from === node;\n });\n }, function(newLevel, oldLevel) {\n return oldLevel < newLevel;\n }, \"to\", nodes);\n}\nfunction fillLevelsByDirection(isEntryNode, shouldLevelBeReplaced, direction, nodes) {\n var _context6;\n var levels = create$4(null);\n var limit = reduce2(_context6 = _toConsumableArray(values2(nodes).call(nodes))).call(_context6, function(acc, node) {\n return acc + 1 + node.edges.length;\n }, 0);\n var edgeIdProp = direction + \"Id\";\n var newLevelDiff = direction === \"to\" ? 1 : -1;\n var _iterator = _createForOfIteratorHelper$1(nodes), _step;\n try {\n var _loop = function _loop2() {\n var _step$value = _slicedToArray(_step.value, 2), entryNodeId = _step$value[0], entryNode = _step$value[1];\n if (!nodes.has(entryNodeId) || !isEntryNode(entryNode)) {\n return \"continue\";\n }\n levels[entryNodeId] = 0;\n var stack = [entryNode];\n var done = 0;\n var node = void 0;\n var _loop22 = function _loop23() {\n var _context7, _context8;\n if (!nodes.has(entryNodeId)) {\n return \"continue\";\n }\n var newLevel = levels[node.id] + newLevelDiff;\n forEach$2(_context7 = filter2(_context8 = node.edges).call(_context8, function(edge) {\n return edge.connected && edge.to !== edge.from && edge[direction] !== node && nodes.has(edge.toId) && nodes.has(edge.fromId);\n })).call(_context7, function(edge) {\n var targetNodeId = edge[edgeIdProp];\n var oldLevel = levels[targetNodeId];\n if (oldLevel == null || shouldLevelBeReplaced(newLevel, oldLevel)) {\n levels[targetNodeId] = newLevel;\n stack.push(edge[direction]);\n }\n });\n if (done > limit) {\n return {\n v: {\n v: fillLevelsByDirectionCyclic(nodes, levels)\n }\n };\n } else {\n ++done;\n }\n };\n while (node = stack.pop()) {\n var _ret2 = _loop22();\n if (_ret2 === \"continue\")\n continue;\n if (_typeof(_ret2) === \"object\")\n return _ret2.v;\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done; ) {\n var _ret = _loop();\n if (_ret === \"continue\")\n continue;\n if (_typeof(_ret) === \"object\")\n return _ret.v;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return levels;\n}\nvar HierarchicalStatus = /* @__PURE__ */ function() {\n function HierarchicalStatus2() {\n _classCallCheck(this, HierarchicalStatus2);\n this.childrenReference = {};\n this.parentReference = {};\n this.trees = {};\n this.distributionOrdering = {};\n this.levels = {};\n this.distributionIndex = {};\n this.isTree = false;\n this.treeIndex = -1;\n }\n _createClass(HierarchicalStatus2, [{\n key: \"addRelation\",\n value: function addRelation(parentNodeId, childNodeId) {\n if (this.childrenReference[parentNodeId] === void 0) {\n this.childrenReference[parentNodeId] = [];\n }\n this.childrenReference[parentNodeId].push(childNodeId);\n if (this.parentReference[childNodeId] === void 0) {\n this.parentReference[childNodeId] = [];\n }\n this.parentReference[childNodeId].push(parentNodeId);\n }\n }, {\n key: \"checkIfTree\",\n value: function checkIfTree() {\n for (var i in this.parentReference) {\n if (this.parentReference[i].length > 1) {\n this.isTree = false;\n return;\n }\n }\n this.isTree = true;\n }\n }, {\n key: \"numTrees\",\n value: function numTrees() {\n return this.treeIndex + 1;\n }\n }, {\n key: \"setTreeIndex\",\n value: function setTreeIndex(node, treeId) {\n if (treeId === void 0)\n return;\n if (this.trees[node.id] === void 0) {\n this.trees[node.id] = treeId;\n this.treeIndex = Math.max(treeId, this.treeIndex);\n }\n }\n }, {\n key: \"ensureLevel\",\n value: function ensureLevel(nodeId) {\n if (this.levels[nodeId] === void 0) {\n this.levels[nodeId] = 0;\n }\n }\n }, {\n key: \"getMaxLevel\",\n value: function getMaxLevel(nodeId) {\n var _this = this;\n var accumulator = {};\n var _getMaxLevel = function _getMaxLevel2(nodeId2) {\n if (accumulator[nodeId2] !== void 0) {\n return accumulator[nodeId2];\n }\n var level = _this.levels[nodeId2];\n if (_this.childrenReference[nodeId2]) {\n var children = _this.childrenReference[nodeId2];\n if (children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n level = Math.max(level, _getMaxLevel2(children[i]));\n }\n }\n }\n accumulator[nodeId2] = level;\n return level;\n };\n return _getMaxLevel(nodeId);\n }\n }, {\n key: \"levelDownstream\",\n value: function levelDownstream(nodeA, nodeB) {\n if (this.levels[nodeB.id] === void 0) {\n if (this.levels[nodeA.id] === void 0) {\n this.levels[nodeA.id] = 0;\n }\n this.levels[nodeB.id] = this.levels[nodeA.id] + 1;\n }\n }\n }, {\n key: \"setMinLevelToZero\",\n value: function setMinLevelToZero(nodes) {\n var minLevel = 1e9;\n for (var nodeId in nodes) {\n if (Object.prototype.hasOwnProperty.call(nodes, nodeId)) {\n if (this.levels[nodeId] !== void 0) {\n minLevel = Math.min(this.levels[nodeId], minLevel);\n }\n }\n }\n for (var _nodeId in nodes) {\n if (Object.prototype.hasOwnProperty.call(nodes, _nodeId)) {\n if (this.levels[_nodeId] !== void 0) {\n this.levels[_nodeId] -= minLevel;\n }\n }\n }\n }\n }, {\n key: \"getTreeSize\",\n value: function getTreeSize(nodes, index2) {\n var min_x = 1e9;\n var max_x = -1e9;\n var min_y = 1e9;\n var max_y = -1e9;\n for (var nodeId in this.trees) {\n if (Object.prototype.hasOwnProperty.call(this.trees, nodeId)) {\n if (this.trees[nodeId] === index2) {\n var node = nodes[nodeId];\n min_x = Math.min(node.x, min_x);\n max_x = Math.max(node.x, max_x);\n min_y = Math.min(node.y, min_y);\n max_y = Math.max(node.y, max_y);\n }\n }\n }\n return {\n min_x,\n max_x,\n min_y,\n max_y\n };\n }\n }, {\n key: \"hasSameParent\",\n value: function hasSameParent(node1, node2) {\n var parents1 = this.parentReference[node1.id];\n var parents2 = this.parentReference[node2.id];\n if (parents1 === void 0 || parents2 === void 0) {\n return false;\n }\n for (var i = 0; i < parents1.length; i++) {\n for (var j = 0; j < parents2.length; j++) {\n if (parents1[i] == parents2[j]) {\n return true;\n }\n }\n }\n return false;\n }\n }, {\n key: \"inSameSubNetwork\",\n value: function inSameSubNetwork(node1, node2) {\n return this.trees[node1.id] === this.trees[node2.id];\n }\n }, {\n key: \"getLevels\",\n value: function getLevels() {\n return keys3(this.distributionOrdering);\n }\n }, {\n key: \"addToOrdering\",\n value: function addToOrdering(node, level) {\n if (this.distributionOrdering[level] === void 0) {\n this.distributionOrdering[level] = [];\n }\n var isPresent = false;\n var curLevel = this.distributionOrdering[level];\n for (var n in curLevel) {\n if (curLevel[n] === node) {\n isPresent = true;\n break;\n }\n }\n if (!isPresent) {\n this.distributionOrdering[level].push(node);\n this.distributionIndex[node.id] = this.distributionOrdering[level].length - 1;\n }\n }\n }]);\n return HierarchicalStatus2;\n}();\nvar LayoutEngine = /* @__PURE__ */ function() {\n function LayoutEngine2(body) {\n _classCallCheck(this, LayoutEngine2);\n this.body = body;\n this._resetRNG(Math.random() + \":\" + now$1());\n this.setPhysics = false;\n this.options = {};\n this.optionsBackup = {\n physics: {}\n };\n this.defaultOptions = {\n randomSeed: void 0,\n improvedLayout: true,\n clusterThreshold: 150,\n hierarchical: {\n enabled: false,\n levelSeparation: 150,\n nodeSpacing: 100,\n treeSpacing: 200,\n blockShifting: true,\n edgeMinimization: true,\n parentCentralization: true,\n direction: \"UD\",\n sortMethod: \"hubsize\"\n }\n };\n assign$2(this.options, this.defaultOptions);\n this.bindEventListeners();\n }\n _createClass(LayoutEngine2, [{\n key: \"bindEventListeners\",\n value: function bindEventListeners() {\n var _this2 = this;\n this.body.emitter.on(\"_dataChanged\", function() {\n _this2.setupHierarchicalLayout();\n });\n this.body.emitter.on(\"_dataLoaded\", function() {\n _this2.layoutNetwork();\n });\n this.body.emitter.on(\"_resetHierarchicalLayout\", function() {\n _this2.setupHierarchicalLayout();\n });\n this.body.emitter.on(\"_adjustEdgesForHierarchicalLayout\", function() {\n if (_this2.options.hierarchical.enabled !== true) {\n return;\n }\n var type = _this2.direction.curveType();\n _this2.body.emitter.emit(\"_forceDisableDynamicCurves\", type, false);\n });\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options2, allOptions2) {\n if (options2 !== void 0) {\n var hierarchical = this.options.hierarchical;\n var prevHierarchicalState = hierarchical.enabled;\n selectiveDeepExtend([\"randomSeed\", \"improvedLayout\", \"clusterThreshold\"], this.options, options2);\n mergeOptions(this.options, options2, \"hierarchical\");\n if (options2.randomSeed !== void 0) {\n this._resetRNG(options2.randomSeed);\n }\n if (hierarchical.enabled === true) {\n if (prevHierarchicalState === true) {\n this.body.emitter.emit(\"refresh\", true);\n }\n if (hierarchical.direction === \"RL\" || hierarchical.direction === \"DU\") {\n if (hierarchical.levelSeparation > 0) {\n hierarchical.levelSeparation *= -1;\n }\n } else {\n if (hierarchical.levelSeparation < 0) {\n hierarchical.levelSeparation *= -1;\n }\n }\n this.setDirectionStrategy();\n this.body.emitter.emit(\"_resetHierarchicalLayout\");\n return this.adaptAllOptionsForHierarchicalLayout(allOptions2);\n } else {\n if (prevHierarchicalState === true) {\n this.body.emitter.emit(\"refresh\");\n return deepExtend(allOptions2, this.optionsBackup);\n }\n }\n }\n return allOptions2;\n }\n }, {\n key: \"_resetRNG\",\n value: function _resetRNG(seed) {\n this.initialRandomSeed = seed;\n this._rng = Alea(this.initialRandomSeed);\n }\n }, {\n key: \"adaptAllOptionsForHierarchicalLayout\",\n value: function adaptAllOptionsForHierarchicalLayout(allOptions2) {\n if (this.options.hierarchical.enabled === true) {\n var backupPhysics = this.optionsBackup.physics;\n if (allOptions2.physics === void 0 || allOptions2.physics === true) {\n allOptions2.physics = {\n enabled: backupPhysics.enabled === void 0 ? true : backupPhysics.enabled,\n solver: \"hierarchicalRepulsion\"\n };\n backupPhysics.enabled = backupPhysics.enabled === void 0 ? true : backupPhysics.enabled;\n backupPhysics.solver = backupPhysics.solver || \"barnesHut\";\n } else if (_typeof(allOptions2.physics) === \"object\") {\n backupPhysics.enabled = allOptions2.physics.enabled === void 0 ? true : allOptions2.physics.enabled;\n backupPhysics.solver = allOptions2.physics.solver || \"barnesHut\";\n allOptions2.physics.solver = \"hierarchicalRepulsion\";\n } else if (allOptions2.physics !== false) {\n backupPhysics.solver = \"barnesHut\";\n allOptions2.physics = {\n solver: \"hierarchicalRepulsion\"\n };\n }\n var type = this.direction.curveType();\n if (allOptions2.edges === void 0) {\n this.optionsBackup.edges = {\n smooth: {\n enabled: true,\n type: \"dynamic\"\n }\n };\n allOptions2.edges = {\n smooth: false\n };\n } else if (allOptions2.edges.smooth === void 0) {\n this.optionsBackup.edges = {\n smooth: {\n enabled: true,\n type: \"dynamic\"\n }\n };\n allOptions2.edges.smooth = false;\n } else {\n if (typeof allOptions2.edges.smooth === \"boolean\") {\n this.optionsBackup.edges = {\n smooth: allOptions2.edges.smooth\n };\n allOptions2.edges.smooth = {\n enabled: allOptions2.edges.smooth,\n type\n };\n } else {\n var smooth = allOptions2.edges.smooth;\n if (smooth.type !== void 0 && smooth.type !== \"dynamic\") {\n type = smooth.type;\n }\n this.optionsBackup.edges = {\n smooth: {\n enabled: smooth.enabled === void 0 ? true : smooth.enabled,\n type: smooth.type === void 0 ? \"dynamic\" : smooth.type,\n roundness: smooth.roundness === void 0 ? 0.5 : smooth.roundness,\n forceDirection: smooth.forceDirection === void 0 ? false : smooth.forceDirection\n }\n };\n allOptions2.edges.smooth = {\n enabled: smooth.enabled === void 0 ? true : smooth.enabled,\n type,\n roundness: smooth.roundness === void 0 ? 0.5 : smooth.roundness,\n forceDirection: smooth.forceDirection === void 0 ? false : smooth.forceDirection\n };\n }\n }\n this.body.emitter.emit(\"_forceDisableDynamicCurves\", type);\n }\n return allOptions2;\n }\n }, {\n key: \"positionInitially\",\n value: function positionInitially(nodesArray) {\n if (this.options.hierarchical.enabled !== true) {\n this._resetRNG(this.initialRandomSeed);\n var radius = nodesArray.length + 50;\n for (var i = 0; i < nodesArray.length; i++) {\n var node = nodesArray[i];\n var angle = 2 * Math.PI * this._rng();\n if (node.x === void 0) {\n node.x = radius * Math.cos(angle);\n }\n if (node.y === void 0) {\n node.y = radius * Math.sin(angle);\n }\n }\n }\n }\n }, {\n key: \"layoutNetwork\",\n value: function layoutNetwork() {\n if (this.options.hierarchical.enabled !== true && this.options.improvedLayout === true) {\n var indices = this.body.nodeIndices;\n var positionDefined = 0;\n for (var i = 0; i < indices.length; i++) {\n var node = this.body.nodes[indices[i]];\n if (node.predefinedPosition === true) {\n positionDefined += 1;\n }\n }\n if (positionDefined < 0.5 * indices.length) {\n var MAX_LEVELS = 10;\n var level = 0;\n var clusterThreshold = this.options.clusterThreshold;\n var clusterOptions = {\n clusterNodeProperties: {\n shape: \"ellipse\",\n label: \"\",\n group: \"\",\n font: {\n multi: false\n }\n },\n clusterEdgeProperties: {\n label: \"\",\n font: {\n multi: false\n },\n smooth: {\n enabled: false\n }\n }\n };\n if (indices.length > clusterThreshold) {\n var startLength = indices.length;\n while (indices.length > clusterThreshold && level <= MAX_LEVELS) {\n level += 1;\n var before = indices.length;\n if (level % 3 === 0) {\n this.body.modules.clustering.clusterBridges(clusterOptions);\n } else {\n this.body.modules.clustering.clusterOutliers(clusterOptions);\n }\n var after = indices.length;\n if (before == after && level % 3 !== 0) {\n this._declusterAll();\n this.body.emitter.emit(\"_layoutFailed\");\n console.info(\"This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.\");\n return;\n }\n }\n this.body.modules.kamadaKawai.setOptions({\n springLength: Math.max(150, 2 * startLength)\n });\n }\n if (level > MAX_LEVELS) {\n console.info(\"The clustering didn't succeed within the amount of interations allowed, progressing with partial result.\");\n }\n this.body.modules.kamadaKawai.solve(indices, this.body.edgeIndices, true);\n this._shiftToCenter();\n var offset = 70;\n for (var _i = 0; _i < indices.length; _i++) {\n var _node = this.body.nodes[indices[_i]];\n if (_node.predefinedPosition === false) {\n _node.x += (0.5 - this._rng()) * offset;\n _node.y += (0.5 - this._rng()) * offset;\n }\n }\n this._declusterAll();\n this.body.emitter.emit(\"_repositionBezierNodes\");\n }\n }\n }\n }, {\n key: \"_shiftToCenter\",\n value: function _shiftToCenter() {\n var range = NetworkUtil.getRangeCore(this.body.nodes, this.body.nodeIndices);\n var center = NetworkUtil.findCenter(range);\n for (var i = 0; i < this.body.nodeIndices.length; i++) {\n var node = this.body.nodes[this.body.nodeIndices[i]];\n node.x -= center.x;\n node.y -= center.y;\n }\n }\n }, {\n key: \"_declusterAll\",\n value: function _declusterAll() {\n var clustersPresent = true;\n while (clustersPresent === true) {\n clustersPresent = false;\n for (var i = 0; i < this.body.nodeIndices.length; i++) {\n if (this.body.nodes[this.body.nodeIndices[i]].isCluster === true) {\n clustersPresent = true;\n this.body.modules.clustering.openCluster(this.body.nodeIndices[i], {}, false);\n }\n }\n if (clustersPresent === true) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n }\n }, {\n key: \"getSeed\",\n value: function getSeed() {\n return this.initialRandomSeed;\n }\n }, {\n key: \"setupHierarchicalLayout\",\n value: function setupHierarchicalLayout() {\n if (this.options.hierarchical.enabled === true && this.body.nodeIndices.length > 0) {\n var node, nodeId;\n var definedLevel = false;\n var undefinedLevel = false;\n this.lastNodeOnLevel = {};\n this.hierarchical = new HierarchicalStatus();\n for (nodeId in this.body.nodes) {\n if (Object.prototype.hasOwnProperty.call(this.body.nodes, nodeId)) {\n node = this.body.nodes[nodeId];\n if (node.options.level !== void 0) {\n definedLevel = true;\n this.hierarchical.levels[nodeId] = node.options.level;\n } else {\n undefinedLevel = true;\n }\n }\n }\n if (undefinedLevel === true && definedLevel === true) {\n throw new Error(\"To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.\");\n } else {\n if (undefinedLevel === true) {\n var sortMethod = this.options.hierarchical.sortMethod;\n if (sortMethod === \"hubsize\") {\n this._determineLevelsByHubsize();\n } else if (sortMethod === \"directed\") {\n this._determineLevelsDirected();\n } else if (sortMethod === \"custom\") {\n this._determineLevelsCustomCallback();\n }\n }\n for (var _nodeId2 in this.body.nodes) {\n if (Object.prototype.hasOwnProperty.call(this.body.nodes, _nodeId2)) {\n this.hierarchical.ensureLevel(_nodeId2);\n }\n }\n var distribution = this._getDistribution();\n this._generateMap();\n this._placeNodesByHierarchy(distribution);\n this._condenseHierarchy();\n this._shiftToCenter();\n }\n }\n }\n }, {\n key: \"_condenseHierarchy\",\n value: function _condenseHierarchy() {\n var _this3 = this;\n var stillShifting = false;\n var branches = {};\n var shiftTrees = function shiftTrees2() {\n var treeSizes = getTreeSizes();\n var shiftBy = 0;\n for (var i = 0; i < treeSizes.length - 1; i++) {\n var diff = treeSizes[i].max - treeSizes[i + 1].min;\n shiftBy += diff + _this3.options.hierarchical.treeSpacing;\n shiftTree(i + 1, shiftBy);\n }\n };\n var shiftTree = function shiftTree2(index2, offset) {\n var trees = _this3.hierarchical.trees;\n for (var nodeId in trees) {\n if (Object.prototype.hasOwnProperty.call(trees, nodeId)) {\n if (trees[nodeId] === index2) {\n _this3.direction.shift(nodeId, offset);\n }\n }\n }\n };\n var getTreeSizes = function getTreeSizes2() {\n var treeWidths = [];\n for (var i = 0; i < _this3.hierarchical.numTrees(); i++) {\n treeWidths.push(_this3.direction.getTreeSize(i));\n }\n return treeWidths;\n };\n var getBranchNodes = function getBranchNodes2(source, map3) {\n if (map3[source.id]) {\n return;\n }\n map3[source.id] = true;\n if (_this3.hierarchical.childrenReference[source.id]) {\n var children = _this3.hierarchical.childrenReference[source.id];\n if (children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n getBranchNodes2(_this3.body.nodes[children[i]], map3);\n }\n }\n }\n };\n var getBranchBoundary = function getBranchBoundary2(branchMap) {\n var maxLevel = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1e9;\n var minSpace = 1e9;\n var maxSpace = 1e9;\n var min2 = 1e9;\n var max2 = -1e9;\n for (var branchNode in branchMap) {\n if (Object.prototype.hasOwnProperty.call(branchMap, branchNode)) {\n var node = _this3.body.nodes[branchNode];\n var level = _this3.hierarchical.levels[node.id];\n var position = _this3.direction.getPosition(node);\n var _this3$_getSpaceAroun = _this3._getSpaceAroundNode(node, branchMap), _this3$_getSpaceAroun2 = _slicedToArray(_this3$_getSpaceAroun, 2), minSpaceNode = _this3$_getSpaceAroun2[0], maxSpaceNode = _this3$_getSpaceAroun2[1];\n minSpace = Math.min(minSpaceNode, minSpace);\n maxSpace = Math.min(maxSpaceNode, maxSpace);\n if (level <= maxLevel) {\n min2 = Math.min(position, min2);\n max2 = Math.max(position, max2);\n }\n }\n }\n return [min2, max2, minSpace, maxSpace];\n };\n var getCollisionLevel = function getCollisionLevel2(node1, node2) {\n var maxLevel1 = _this3.hierarchical.getMaxLevel(node1.id);\n var maxLevel2 = _this3.hierarchical.getMaxLevel(node2.id);\n return Math.min(maxLevel1, maxLevel2);\n };\n var shiftElementsCloser = function shiftElementsCloser2(callback, levels, centerParents) {\n var hier = _this3.hierarchical;\n for (var i = 0; i < levels.length; i++) {\n var level = levels[i];\n var levelNodes = hier.distributionOrdering[level];\n if (levelNodes.length > 1) {\n for (var j = 0; j < levelNodes.length - 1; j++) {\n var node1 = levelNodes[j];\n var node2 = levelNodes[j + 1];\n if (hier.hasSameParent(node1, node2) && hier.inSameSubNetwork(node1, node2)) {\n callback(node1, node2, centerParents);\n }\n }\n }\n }\n };\n var branchShiftCallback = function branchShiftCallback2(node1, node2) {\n var centerParent = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n var pos1 = _this3.direction.getPosition(node1);\n var pos2 = _this3.direction.getPosition(node2);\n var diffAbs = Math.abs(pos2 - pos1);\n var nodeSpacing = _this3.options.hierarchical.nodeSpacing;\n if (diffAbs > nodeSpacing) {\n var branchNodes1 = {};\n var branchNodes2 = {};\n getBranchNodes(node1, branchNodes1);\n getBranchNodes(node2, branchNodes2);\n var maxLevel = getCollisionLevel(node1, node2);\n var branchNodeBoundary1 = getBranchBoundary(branchNodes1, maxLevel);\n var branchNodeBoundary2 = getBranchBoundary(branchNodes2, maxLevel);\n var max1 = branchNodeBoundary1[1];\n var min2 = branchNodeBoundary2[0];\n var minSpace2 = branchNodeBoundary2[2];\n var diffBranch = Math.abs(max1 - min2);\n if (diffBranch > nodeSpacing) {\n var offset = max1 - min2 + nodeSpacing;\n if (offset < -minSpace2 + nodeSpacing) {\n offset = -minSpace2 + nodeSpacing;\n }\n if (offset < 0) {\n _this3._shiftBlock(node2.id, offset);\n stillShifting = true;\n if (centerParent === true)\n _this3._centerParent(node2);\n }\n }\n }\n };\n var minimizeEdgeLength = function minimizeEdgeLength2(iterations, node) {\n var nodeId = node.id;\n var allEdges = node.edges;\n var nodeLevel = _this3.hierarchical.levels[node.id];\n var C2 = _this3.options.hierarchical.levelSeparation * _this3.options.hierarchical.levelSeparation;\n var referenceNodes = {};\n var aboveEdges = [];\n for (var i = 0; i < allEdges.length; i++) {\n var edge = allEdges[i];\n if (edge.toId != edge.fromId) {\n var otherNode = edge.toId == nodeId ? edge.from : edge.to;\n referenceNodes[allEdges[i].id] = otherNode;\n if (_this3.hierarchical.levels[otherNode.id] < nodeLevel) {\n aboveEdges.push(edge);\n }\n }\n }\n var getFx = function getFx2(point, edges) {\n var sum = 0;\n for (var _i2 = 0; _i2 < edges.length; _i2++) {\n if (referenceNodes[edges[_i2].id] !== void 0) {\n var a = _this3.direction.getPosition(referenceNodes[edges[_i2].id]) - point;\n sum += a / Math.sqrt(a * a + C2);\n }\n }\n return sum;\n };\n var getDFx = function getDFx2(point, edges) {\n var sum = 0;\n for (var _i3 = 0; _i3 < edges.length; _i3++) {\n if (referenceNodes[edges[_i3].id] !== void 0) {\n var a = _this3.direction.getPosition(referenceNodes[edges[_i3].id]) - point;\n sum -= C2 * Math.pow(a * a + C2, -1.5);\n }\n }\n return sum;\n };\n var getGuess = function getGuess2(iterations2, edges) {\n var guess2 = _this3.direction.getPosition(node);\n var guessMap = {};\n for (var _i4 = 0; _i4 < iterations2; _i4++) {\n var fx = getFx(guess2, edges);\n var dfx = getDFx(guess2, edges);\n var limit = 40;\n var ratio = Math.max(-limit, Math.min(limit, Math.round(fx / dfx)));\n guess2 = guess2 - ratio;\n if (guessMap[guess2] !== void 0) {\n break;\n }\n guessMap[guess2] = _i4;\n }\n return guess2;\n };\n var moveBranch = function moveBranch2(guess2) {\n var nodePosition = _this3.direction.getPosition(node);\n if (branches[node.id] === void 0) {\n var branchNodes = {};\n getBranchNodes(node, branchNodes);\n branches[node.id] = branchNodes;\n }\n var branchBoundary = getBranchBoundary(branches[node.id]);\n var minSpaceBranch = branchBoundary[2];\n var maxSpaceBranch = branchBoundary[3];\n var diff = guess2 - nodePosition;\n var branchOffset = 0;\n if (diff > 0) {\n branchOffset = Math.min(diff, maxSpaceBranch - _this3.options.hierarchical.nodeSpacing);\n } else if (diff < 0) {\n branchOffset = -Math.min(-diff, minSpaceBranch - _this3.options.hierarchical.nodeSpacing);\n }\n if (branchOffset != 0) {\n _this3._shiftBlock(node.id, branchOffset);\n stillShifting = true;\n }\n };\n var moveNode = function moveNode2(guess2) {\n var nodePosition = _this3.direction.getPosition(node);\n var _this3$_getSpaceAroun3 = _this3._getSpaceAroundNode(node), _this3$_getSpaceAroun4 = _slicedToArray(_this3$_getSpaceAroun3, 2), minSpace = _this3$_getSpaceAroun4[0], maxSpace = _this3$_getSpaceAroun4[1];\n var diff = guess2 - nodePosition;\n var newPosition = nodePosition;\n if (diff > 0) {\n newPosition = Math.min(nodePosition + (maxSpace - _this3.options.hierarchical.nodeSpacing), guess2);\n } else if (diff < 0) {\n newPosition = Math.max(nodePosition - (minSpace - _this3.options.hierarchical.nodeSpacing), guess2);\n }\n if (newPosition !== nodePosition) {\n _this3.direction.setPosition(node, newPosition);\n stillShifting = true;\n }\n };\n var guess = getGuess(iterations, aboveEdges);\n moveBranch(guess);\n guess = getGuess(iterations, allEdges);\n moveNode(guess);\n };\n var minimizeEdgeLengthBottomUp = function minimizeEdgeLengthBottomUp2(iterations) {\n var levels = _this3.hierarchical.getLevels();\n levels = reverse2(levels).call(levels);\n for (var i = 0; i < iterations; i++) {\n stillShifting = false;\n for (var j = 0; j < levels.length; j++) {\n var level = levels[j];\n var levelNodes = _this3.hierarchical.distributionOrdering[level];\n for (var k = 0; k < levelNodes.length; k++) {\n minimizeEdgeLength(1e3, levelNodes[k]);\n }\n }\n if (stillShifting !== true) {\n break;\n }\n }\n };\n var shiftBranchesCloserBottomUp = function shiftBranchesCloserBottomUp2(iterations) {\n var levels = _this3.hierarchical.getLevels();\n levels = reverse2(levels).call(levels);\n for (var i = 0; i < iterations; i++) {\n stillShifting = false;\n shiftElementsCloser(branchShiftCallback, levels, true);\n if (stillShifting !== true) {\n break;\n }\n }\n };\n var centerAllParents = function centerAllParents2() {\n for (var nodeId in _this3.body.nodes) {\n if (Object.prototype.hasOwnProperty.call(_this3.body.nodes, nodeId))\n _this3._centerParent(_this3.body.nodes[nodeId]);\n }\n };\n var centerAllParentsBottomUp = function centerAllParentsBottomUp2() {\n var levels = _this3.hierarchical.getLevels();\n levels = reverse2(levels).call(levels);\n for (var i = 0; i < levels.length; i++) {\n var level = levels[i];\n var levelNodes = _this3.hierarchical.distributionOrdering[level];\n for (var j = 0; j < levelNodes.length; j++) {\n _this3._centerParent(levelNodes[j]);\n }\n }\n };\n if (this.options.hierarchical.blockShifting === true) {\n shiftBranchesCloserBottomUp(5);\n centerAllParents();\n }\n if (this.options.hierarchical.edgeMinimization === true) {\n minimizeEdgeLengthBottomUp(20);\n }\n if (this.options.hierarchical.parentCentralization === true) {\n centerAllParentsBottomUp();\n }\n shiftTrees();\n }\n }, {\n key: \"_getSpaceAroundNode\",\n value: function _getSpaceAroundNode(node, map3) {\n var useMap = true;\n if (map3 === void 0) {\n useMap = false;\n }\n var level = this.hierarchical.levels[node.id];\n if (level !== void 0) {\n var index2 = this.hierarchical.distributionIndex[node.id];\n var position = this.direction.getPosition(node);\n var ordering = this.hierarchical.distributionOrdering[level];\n var minSpace = 1e9;\n var maxSpace = 1e9;\n if (index2 !== 0) {\n var prevNode = ordering[index2 - 1];\n if (useMap === true && map3[prevNode.id] === void 0 || useMap === false) {\n var prevPos = this.direction.getPosition(prevNode);\n minSpace = position - prevPos;\n }\n }\n if (index2 != ordering.length - 1) {\n var nextNode = ordering[index2 + 1];\n if (useMap === true && map3[nextNode.id] === void 0 || useMap === false) {\n var nextPos = this.direction.getPosition(nextNode);\n maxSpace = Math.min(maxSpace, nextPos - position);\n }\n }\n return [minSpace, maxSpace];\n } else {\n return [0, 0];\n }\n }\n }, {\n key: \"_centerParent\",\n value: function _centerParent(node) {\n if (this.hierarchical.parentReference[node.id]) {\n var parents = this.hierarchical.parentReference[node.id];\n for (var i = 0; i < parents.length; i++) {\n var parentId = parents[i];\n var parentNode = this.body.nodes[parentId];\n var children = this.hierarchical.childrenReference[parentId];\n if (children !== void 0) {\n var newPosition = this._getCenterPosition(children);\n var position = this.direction.getPosition(parentNode);\n var _this$_getSpaceAround = this._getSpaceAroundNode(parentNode), _this$_getSpaceAround2 = _slicedToArray(_this$_getSpaceAround, 2), minSpace = _this$_getSpaceAround2[0], maxSpace = _this$_getSpaceAround2[1];\n var diff = position - newPosition;\n if (diff < 0 && Math.abs(diff) < maxSpace - this.options.hierarchical.nodeSpacing || diff > 0 && Math.abs(diff) < minSpace - this.options.hierarchical.nodeSpacing) {\n this.direction.setPosition(parentNode, newPosition);\n }\n }\n }\n }\n }\n }, {\n key: \"_placeNodesByHierarchy\",\n value: function _placeNodesByHierarchy(distribution) {\n this.positionedNodes = {};\n for (var level in distribution) {\n if (Object.prototype.hasOwnProperty.call(distribution, level)) {\n var _context;\n var nodeArray = keys3(distribution[level]);\n nodeArray = this._indexArrayToNodes(nodeArray);\n sort2(_context = this.direction).call(_context, nodeArray);\n var handledNodeCount = 0;\n for (var i = 0; i < nodeArray.length; i++) {\n var node = nodeArray[i];\n if (this.positionedNodes[node.id] === void 0) {\n var spacing = this.options.hierarchical.nodeSpacing;\n var pos = spacing * handledNodeCount;\n if (handledNodeCount > 0) {\n pos = this.direction.getPosition(nodeArray[i - 1]) + spacing;\n }\n this.direction.setPosition(node, pos, level);\n this._validatePositionAndContinue(node, level, pos);\n handledNodeCount++;\n }\n }\n }\n }\n }\n }, {\n key: \"_placeBranchNodes\",\n value: function _placeBranchNodes(parentId, parentLevel) {\n var _context2;\n var childRef = this.hierarchical.childrenReference[parentId];\n if (childRef === void 0) {\n return;\n }\n var childNodes = [];\n for (var i = 0; i < childRef.length; i++) {\n childNodes.push(this.body.nodes[childRef[i]]);\n }\n sort2(_context2 = this.direction).call(_context2, childNodes);\n for (var _i5 = 0; _i5 < childNodes.length; _i5++) {\n var childNode = childNodes[_i5];\n var childNodeLevel = this.hierarchical.levels[childNode.id];\n if (childNodeLevel > parentLevel && this.positionedNodes[childNode.id] === void 0) {\n var spacing = this.options.hierarchical.nodeSpacing;\n var pos = void 0;\n if (_i5 === 0) {\n pos = this.direction.getPosition(this.body.nodes[parentId]);\n } else {\n pos = this.direction.getPosition(childNodes[_i5 - 1]) + spacing;\n }\n this.direction.setPosition(childNode, pos, childNodeLevel);\n this._validatePositionAndContinue(childNode, childNodeLevel, pos);\n } else {\n return;\n }\n }\n var center = this._getCenterPosition(childNodes);\n this.direction.setPosition(this.body.nodes[parentId], center, parentLevel);\n }\n }, {\n key: \"_validatePositionAndContinue\",\n value: function _validatePositionAndContinue(node, level, pos) {\n if (!this.hierarchical.isTree)\n return;\n if (this.lastNodeOnLevel[level] !== void 0) {\n var previousPos = this.direction.getPosition(this.body.nodes[this.lastNodeOnLevel[level]]);\n if (pos - previousPos < this.options.hierarchical.nodeSpacing) {\n var diff = previousPos + this.options.hierarchical.nodeSpacing - pos;\n var sharedParent = this._findCommonParent(this.lastNodeOnLevel[level], node.id);\n this._shiftBlock(sharedParent.withChild, diff);\n }\n }\n this.lastNodeOnLevel[level] = node.id;\n this.positionedNodes[node.id] = true;\n this._placeBranchNodes(node.id, level);\n }\n }, {\n key: \"_indexArrayToNodes\",\n value: function _indexArrayToNodes(idArray) {\n var array2 = [];\n for (var i = 0; i < idArray.length; i++) {\n array2.push(this.body.nodes[idArray[i]]);\n }\n return array2;\n }\n }, {\n key: \"_getDistribution\",\n value: function _getDistribution() {\n var distribution = {};\n var nodeId, node;\n for (nodeId in this.body.nodes) {\n if (Object.prototype.hasOwnProperty.call(this.body.nodes, nodeId)) {\n node = this.body.nodes[nodeId];\n var level = this.hierarchical.levels[nodeId] === void 0 ? 0 : this.hierarchical.levels[nodeId];\n this.direction.fix(node, level);\n if (distribution[level] === void 0) {\n distribution[level] = {};\n }\n distribution[level][nodeId] = node;\n }\n }\n return distribution;\n }\n }, {\n key: \"_getActiveEdges\",\n value: function _getActiveEdges(node) {\n var _this4 = this;\n var result = [];\n forEach$1(node.edges, function(edge) {\n var _context3;\n if (indexOf2(_context3 = _this4.body.edgeIndices).call(_context3, edge.id) !== -1) {\n result.push(edge);\n }\n });\n return result;\n }\n }, {\n key: \"_getHubSizes\",\n value: function _getHubSizes() {\n var _this5 = this;\n var hubSizes = {};\n var nodeIds = this.body.nodeIndices;\n forEach$1(nodeIds, function(nodeId) {\n var node = _this5.body.nodes[nodeId];\n var hubSize = _this5._getActiveEdges(node).length;\n hubSizes[hubSize] = true;\n });\n var result = [];\n forEach$1(hubSizes, function(size) {\n result.push(Number(size));\n });\n sort2(timsort).call(timsort, result, function(a, b) {\n return b - a;\n });\n return result;\n }\n }, {\n key: \"_determineLevelsByHubsize\",\n value: function _determineLevelsByHubsize() {\n var _this6 = this;\n var levelDownstream = function levelDownstream2(nodeA, nodeB) {\n _this6.hierarchical.levelDownstream(nodeA, nodeB);\n };\n var hubSizes = this._getHubSizes();\n var _loop = function _loop2(i2) {\n var hubSize = hubSizes[i2];\n if (hubSize === 0)\n return \"break\";\n forEach$1(_this6.body.nodeIndices, function(nodeId) {\n var node = _this6.body.nodes[nodeId];\n if (hubSize === _this6._getActiveEdges(node).length) {\n _this6._crawlNetwork(levelDownstream, nodeId);\n }\n });\n };\n for (var i = 0; i < hubSizes.length; ++i) {\n var _ret = _loop(i);\n if (_ret === \"break\")\n break;\n }\n }\n }, {\n key: \"_determineLevelsCustomCallback\",\n value: function _determineLevelsCustomCallback() {\n var _this7 = this;\n var minLevel = 1e5;\n var customCallback = function customCallback2(nodeA, nodeB, edge) {\n };\n var levelByDirection = function levelByDirection2(nodeA, nodeB, edge) {\n var levelA = _this7.hierarchical.levels[nodeA.id];\n if (levelA === void 0) {\n levelA = _this7.hierarchical.levels[nodeA.id] = minLevel;\n }\n var diff = customCallback(NetworkUtil.cloneOptions(nodeA, \"node\"), NetworkUtil.cloneOptions(nodeB, \"node\"), NetworkUtil.cloneOptions(edge, \"edge\"));\n _this7.hierarchical.levels[nodeB.id] = levelA + diff;\n };\n this._crawlNetwork(levelByDirection);\n this.hierarchical.setMinLevelToZero(this.body.nodes);\n }\n }, {\n key: \"_determineLevelsDirected\",\n value: function _determineLevelsDirected() {\n var _context4, _this8 = this;\n var nodes = reduce2(_context4 = this.body.nodeIndices).call(_context4, function(acc, id2) {\n acc.set(id2, _this8.body.nodes[id2]);\n return acc;\n }, new map2());\n if (this.options.hierarchical.shakeTowards === \"roots\") {\n this.hierarchical.levels = fillLevelsByDirectionRoots(nodes);\n } else {\n this.hierarchical.levels = fillLevelsByDirectionLeaves(nodes);\n }\n this.hierarchical.setMinLevelToZero(this.body.nodes);\n }\n }, {\n key: \"_generateMap\",\n value: function _generateMap() {\n var _this9 = this;\n var fillInRelations = function fillInRelations2(parentNode, childNode) {\n if (_this9.hierarchical.levels[childNode.id] > _this9.hierarchical.levels[parentNode.id]) {\n _this9.hierarchical.addRelation(parentNode.id, childNode.id);\n }\n };\n this._crawlNetwork(fillInRelations);\n this.hierarchical.checkIfTree();\n }\n }, {\n key: \"_crawlNetwork\",\n value: function _crawlNetwork() {\n var _this10 = this;\n var callback = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : function() {\n };\n var startingNodeId = arguments.length > 1 ? arguments[1] : void 0;\n var progress = {};\n var crawler = function crawler2(node2, tree) {\n if (progress[node2.id] === void 0) {\n _this10.hierarchical.setTreeIndex(node2, tree);\n progress[node2.id] = true;\n var childNode;\n var edges = _this10._getActiveEdges(node2);\n for (var i2 = 0; i2 < edges.length; i2++) {\n var edge = edges[i2];\n if (edge.connected === true) {\n if (edge.toId == node2.id) {\n childNode = edge.from;\n } else {\n childNode = edge.to;\n }\n if (node2.id != childNode.id) {\n callback(node2, childNode, edge);\n crawler2(childNode, tree);\n }\n }\n }\n }\n };\n if (startingNodeId === void 0) {\n var treeIndex = 0;\n for (var i = 0; i < this.body.nodeIndices.length; i++) {\n var nodeId = this.body.nodeIndices[i];\n if (progress[nodeId] === void 0) {\n var node = this.body.nodes[nodeId];\n crawler(node, treeIndex);\n treeIndex += 1;\n }\n }\n } else {\n var _node2 = this.body.nodes[startingNodeId];\n if (_node2 === void 0) {\n console.error(\"Node not found:\", startingNodeId);\n return;\n }\n crawler(_node2);\n }\n }\n }, {\n key: \"_shiftBlock\",\n value: function _shiftBlock(parentId, diff) {\n var _this11 = this;\n var progress = {};\n var shifter = function shifter2(parentId2) {\n if (progress[parentId2]) {\n return;\n }\n progress[parentId2] = true;\n _this11.direction.shift(parentId2, diff);\n var childRef = _this11.hierarchical.childrenReference[parentId2];\n if (childRef !== void 0) {\n for (var i = 0; i < childRef.length; i++) {\n shifter2(childRef[i]);\n }\n }\n };\n shifter(parentId);\n }\n }, {\n key: \"_findCommonParent\",\n value: function _findCommonParent(childA, childB) {\n var _this12 = this;\n var parents = {};\n var iterateParents = function iterateParents2(parents2, child) {\n var parentRef = _this12.hierarchical.parentReference[child];\n if (parentRef !== void 0) {\n for (var i = 0; i < parentRef.length; i++) {\n var parent2 = parentRef[i];\n parents2[parent2] = true;\n iterateParents2(parents2, parent2);\n }\n }\n };\n var findParent = function findParent2(parents2, child) {\n var parentRef = _this12.hierarchical.parentReference[child];\n if (parentRef !== void 0) {\n for (var i = 0; i < parentRef.length; i++) {\n var parent2 = parentRef[i];\n if (parents2[parent2] !== void 0) {\n return {\n foundParent: parent2,\n withChild: child\n };\n }\n var branch = findParent2(parents2, parent2);\n if (branch.foundParent !== null) {\n return branch;\n }\n }\n }\n return {\n foundParent: null,\n withChild: child\n };\n };\n iterateParents(parents, childA);\n return findParent(parents, childB);\n }\n }, {\n key: \"setDirectionStrategy\",\n value: function setDirectionStrategy() {\n var isVertical = this.options.hierarchical.direction === \"UD\" || this.options.hierarchical.direction === \"DU\";\n if (isVertical) {\n this.direction = new VerticalStrategy(this);\n } else {\n this.direction = new HorizontalStrategy(this);\n }\n }\n }, {\n key: \"_getCenterPosition\",\n value: function _getCenterPosition(childNodes) {\n var minPos = 1e9;\n var maxPos = -1e9;\n for (var i = 0; i < childNodes.length; i++) {\n var childNode = void 0;\n if (childNodes[i].id !== void 0) {\n childNode = childNodes[i];\n } else {\n var childNodeId = childNodes[i];\n childNode = this.body.nodes[childNodeId];\n }\n var position = this.direction.getPosition(childNode);\n minPos = Math.min(minPos, position);\n maxPos = Math.max(maxPos, position);\n }\n return 0.5 * (minPos + maxPos);\n }\n }]);\n return LayoutEngine2;\n}();\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it2 = typeof symbol !== \"undefined\" && getIteratorMethod$1(o) || o[\"@@iterator\"];\n if (!it2) {\n if (isArray$1(o) || (it2 = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it2)\n o = it2;\n var i = 0;\n var F = function F2() {\n };\n return {s: F, n: function n() {\n if (i >= o.length)\n return {done: true};\n return {done: false, value: o[i++]};\n }, e: function e(_e) {\n throw _e;\n }, f: F};\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true, didErr = false, err;\n return {s: function s() {\n it2 = it2.call(o);\n }, n: function n() {\n var step = it2.next();\n normalCompletion = step.done;\n return step;\n }, e: function e(_e2) {\n didErr = true;\n err = _e2;\n }, f: function f() {\n try {\n if (!normalCompletion && it2.return != null)\n it2.return();\n } finally {\n if (didErr)\n throw err;\n }\n }};\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n var _context32;\n if (!o)\n return;\n if (typeof o === \"string\")\n return _arrayLikeToArray(o, minLen);\n var n = slice$1(_context32 = Object.prototype.toString.call(o)).call(_context32, 8, -1);\n if (n === \"Object\" && o.constructor)\n n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\")\n return from$2(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length)\n len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nvar ManipulationSystem = /* @__PURE__ */ function() {\n function ManipulationSystem2(body, canvas, selectionHandler, interactionHandler) {\n var _this = this, _context, _context2;\n _classCallCheck(this, ManipulationSystem2);\n this.body = body;\n this.canvas = canvas;\n this.selectionHandler = selectionHandler;\n this.interactionHandler = interactionHandler;\n this.editMode = false;\n this.manipulationDiv = void 0;\n this.editModeDiv = void 0;\n this.closeDiv = void 0;\n this._domEventListenerCleanupQueue = [];\n this.temporaryUIFunctions = {};\n this.temporaryEventFunctions = [];\n this.touchTime = 0;\n this.temporaryIds = {\n nodes: [],\n edges: []\n };\n this.guiEnabled = false;\n this.inMode = false;\n this.selectedControlNode = void 0;\n this.options = {};\n this.defaultOptions = {\n enabled: false,\n initiallyActive: false,\n addNode: true,\n addEdge: true,\n editNode: void 0,\n editEdge: true,\n deleteNode: true,\n deleteEdge: true,\n controlNodeStyle: {\n shape: \"dot\",\n size: 6,\n color: {\n background: \"#ff0000\",\n border: \"#3c3c3c\",\n highlight: {\n background: \"#07f968\",\n border: \"#3c3c3c\"\n }\n },\n borderWidth: 2,\n borderWidthSelected: 2\n }\n };\n assign$2(this.options, this.defaultOptions);\n this.body.emitter.on(\"destroy\", function() {\n _this._clean();\n });\n this.body.emitter.on(\"_dataChanged\", bind$5(_context = this._restore).call(_context, this));\n this.body.emitter.on(\"_resetData\", bind$5(_context2 = this._restore).call(_context2, this));\n }\n _createClass(ManipulationSystem2, [{\n key: \"_restore\",\n value: function _restore() {\n if (this.inMode !== false) {\n if (this.options.initiallyActive === true) {\n this.enableEditMode();\n } else {\n this.disableEditMode();\n }\n }\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options2, allOptions2, globalOptions) {\n if (allOptions2 !== void 0) {\n if (allOptions2.locale !== void 0) {\n this.options.locale = allOptions2.locale;\n } else {\n this.options.locale = globalOptions.locale;\n }\n if (allOptions2.locales !== void 0) {\n this.options.locales = allOptions2.locales;\n } else {\n this.options.locales = globalOptions.locales;\n }\n }\n if (options2 !== void 0) {\n if (typeof options2 === \"boolean\") {\n this.options.enabled = options2;\n } else {\n this.options.enabled = true;\n deepExtend(this.options, options2);\n }\n if (this.options.initiallyActive === true) {\n this.editMode = true;\n }\n this._setup();\n }\n }\n }, {\n key: \"toggleEditMode\",\n value: function toggleEditMode() {\n if (this.editMode === true) {\n this.disableEditMode();\n } else {\n this.enableEditMode();\n }\n }\n }, {\n key: \"enableEditMode\",\n value: function enableEditMode() {\n this.editMode = true;\n this._clean();\n if (this.guiEnabled === true) {\n this.manipulationDiv.style.display = \"block\";\n this.closeDiv.style.display = \"block\";\n this.editModeDiv.style.display = \"none\";\n this.showManipulatorToolbar();\n }\n }\n }, {\n key: \"disableEditMode\",\n value: function disableEditMode() {\n this.editMode = false;\n this._clean();\n if (this.guiEnabled === true) {\n this.manipulationDiv.style.display = \"none\";\n this.closeDiv.style.display = \"none\";\n this.editModeDiv.style.display = \"block\";\n this._createEditButton();\n }\n }\n }, {\n key: \"showManipulatorToolbar\",\n value: function showManipulatorToolbar() {\n this._clean();\n this.manipulationDOM = {};\n if (this.guiEnabled === true) {\n var _context3, _context4;\n this.editMode = true;\n this.manipulationDiv.style.display = \"block\";\n this.closeDiv.style.display = \"block\";\n var selectedNodeCount = this.selectionHandler.getSelectedNodeCount();\n var selectedEdgeCount = this.selectionHandler.getSelectedEdgeCount();\n var selectedTotalCount = selectedNodeCount + selectedEdgeCount;\n var locale = this.options.locales[this.options.locale];\n var needSeperator = false;\n if (this.options.addNode !== false) {\n this._createAddNodeButton(locale);\n needSeperator = true;\n }\n if (this.options.addEdge !== false) {\n if (needSeperator === true) {\n this._createSeperator(1);\n } else {\n needSeperator = true;\n }\n this._createAddEdgeButton(locale);\n }\n if (selectedNodeCount === 1 && typeof this.options.editNode === \"function\") {\n if (needSeperator === true) {\n this._createSeperator(2);\n } else {\n needSeperator = true;\n }\n this._createEditNodeButton(locale);\n } else if (selectedEdgeCount === 1 && selectedNodeCount === 0 && this.options.editEdge !== false) {\n if (needSeperator === true) {\n this._createSeperator(3);\n } else {\n needSeperator = true;\n }\n this._createEditEdgeButton(locale);\n }\n if (selectedTotalCount !== 0) {\n if (selectedNodeCount > 0 && this.options.deleteNode !== false) {\n if (needSeperator === true) {\n this._createSeperator(4);\n }\n this._createDeleteButton(locale);\n } else if (selectedNodeCount === 0 && this.options.deleteEdge !== false) {\n if (needSeperator === true) {\n this._createSeperator(4);\n }\n this._createDeleteButton(locale);\n }\n }\n this._bindElementEvents(this.closeDiv, bind$5(_context3 = this.toggleEditMode).call(_context3, this));\n this._temporaryBindEvent(\"select\", bind$5(_context4 = this.showManipulatorToolbar).call(_context4, this));\n }\n this.body.emitter.emit(\"_redraw\");\n }\n }, {\n key: \"addNodeMode\",\n value: function addNodeMode() {\n var _context6;\n if (this.editMode !== true) {\n this.enableEditMode();\n }\n this._clean();\n this.inMode = \"addNode\";\n if (this.guiEnabled === true) {\n var _context5;\n var locale = this.options.locales[this.options.locale];\n this.manipulationDOM = {};\n this._createBackButton(locale);\n this._createSeperator();\n this._createDescription(locale[\"addDescription\"] || this.options.locales[\"en\"][\"addDescription\"]);\n this._bindElementEvents(this.closeDiv, bind$5(_context5 = this.toggleEditMode).call(_context5, this));\n }\n this._temporaryBindEvent(\"click\", bind$5(_context6 = this._performAddNode).call(_context6, this));\n }\n }, {\n key: \"editNode\",\n value: function editNode() {\n var _this2 = this;\n if (this.editMode !== true) {\n this.enableEditMode();\n }\n this._clean();\n var node = this.selectionHandler.getSelectedNodes()[0];\n if (node !== void 0) {\n this.inMode = \"editNode\";\n if (typeof this.options.editNode === \"function\") {\n if (node.isCluster !== true) {\n var data2 = deepExtend({}, node.options, false);\n data2.x = node.x;\n data2.y = node.y;\n if (this.options.editNode.length === 2) {\n this.options.editNode(data2, function(finalizedData) {\n if (finalizedData !== null && finalizedData !== void 0 && _this2.inMode === \"editNode\") {\n _this2.body.data.nodes.getDataSet().update(finalizedData);\n }\n _this2.showManipulatorToolbar();\n });\n } else {\n throw new Error(\"The function for edit does not support two arguments (data, callback)\");\n }\n } else {\n alert(this.options.locales[this.options.locale][\"editClusterError\"] || this.options.locales[\"en\"][\"editClusterError\"]);\n }\n } else {\n throw new Error(\"No function has been configured to handle the editing of nodes.\");\n }\n } else {\n this.showManipulatorToolbar();\n }\n }\n }, {\n key: \"addEdgeMode\",\n value: function addEdgeMode() {\n var _context8, _context9, _context10, _context11, _context12;\n if (this.editMode !== true) {\n this.enableEditMode();\n }\n this._clean();\n this.inMode = \"addEdge\";\n if (this.guiEnabled === true) {\n var _context7;\n var locale = this.options.locales[this.options.locale];\n this.manipulationDOM = {};\n this._createBackButton(locale);\n this._createSeperator();\n this._createDescription(locale[\"edgeDescription\"] || this.options.locales[\"en\"][\"edgeDescription\"]);\n this._bindElementEvents(this.closeDiv, bind$5(_context7 = this.toggleEditMode).call(_context7, this));\n }\n this._temporaryBindUI(\"onTouch\", bind$5(_context8 = this._handleConnect).call(_context8, this));\n this._temporaryBindUI(\"onDragEnd\", bind$5(_context9 = this._finishConnect).call(_context9, this));\n this._temporaryBindUI(\"onDrag\", bind$5(_context10 = this._dragControlNode).call(_context10, this));\n this._temporaryBindUI(\"onRelease\", bind$5(_context11 = this._finishConnect).call(_context11, this));\n this._temporaryBindUI(\"onDragStart\", bind$5(_context12 = this._dragStartEdge).call(_context12, this));\n this._temporaryBindUI(\"onHold\", function() {\n });\n }\n }, {\n key: \"editEdgeMode\",\n value: function editEdgeMode() {\n if (this.editMode !== true) {\n this.enableEditMode();\n }\n this._clean();\n this.inMode = \"editEdge\";\n if (_typeof(this.options.editEdge) === \"object\" && typeof this.options.editEdge.editWithoutDrag === \"function\") {\n this.edgeBeingEditedId = this.selectionHandler.getSelectedEdgeIds()[0];\n if (this.edgeBeingEditedId !== void 0) {\n var edge = this.body.edges[this.edgeBeingEditedId];\n this._performEditEdge(edge.from.id, edge.to.id);\n return;\n }\n }\n if (this.guiEnabled === true) {\n var _context13;\n var locale = this.options.locales[this.options.locale];\n this.manipulationDOM = {};\n this._createBackButton(locale);\n this._createSeperator();\n this._createDescription(locale[\"editEdgeDescription\"] || this.options.locales[\"en\"][\"editEdgeDescription\"]);\n this._bindElementEvents(this.closeDiv, bind$5(_context13 = this.toggleEditMode).call(_context13, this));\n }\n this.edgeBeingEditedId = this.selectionHandler.getSelectedEdgeIds()[0];\n if (this.edgeBeingEditedId !== void 0) {\n var _context14, _context15, _context16, _context17;\n var _edge = this.body.edges[this.edgeBeingEditedId];\n var controlNodeFrom = this._getNewTargetNode(_edge.from.x, _edge.from.y);\n var controlNodeTo = this._getNewTargetNode(_edge.to.x, _edge.to.y);\n this.temporaryIds.nodes.push(controlNodeFrom.id);\n this.temporaryIds.nodes.push(controlNodeTo.id);\n this.body.nodes[controlNodeFrom.id] = controlNodeFrom;\n this.body.nodeIndices.push(controlNodeFrom.id);\n this.body.nodes[controlNodeTo.id] = controlNodeTo;\n this.body.nodeIndices.push(controlNodeTo.id);\n this._temporaryBindUI(\"onTouch\", bind$5(_context14 = this._controlNodeTouch).call(_context14, this));\n this._temporaryBindUI(\"onTap\", function() {\n });\n this._temporaryBindUI(\"onHold\", function() {\n });\n this._temporaryBindUI(\"onDragStart\", bind$5(_context15 = this._controlNodeDragStart).call(_context15, this));\n this._temporaryBindUI(\"onDrag\", bind$5(_context16 = this._controlNodeDrag).call(_context16, this));\n this._temporaryBindUI(\"onDragEnd\", bind$5(_context17 = this._controlNodeDragEnd).call(_context17, this));\n this._temporaryBindUI(\"onMouseMove\", function() {\n });\n this._temporaryBindEvent(\"beforeDrawing\", function(ctx) {\n var positions = _edge.edgeType.findBorderPositions(ctx);\n if (controlNodeFrom.selected === false) {\n controlNodeFrom.x = positions.from.x;\n controlNodeFrom.y = positions.from.y;\n }\n if (controlNodeTo.selected === false) {\n controlNodeTo.x = positions.to.x;\n controlNodeTo.y = positions.to.y;\n }\n });\n this.body.emitter.emit(\"_redraw\");\n } else {\n this.showManipulatorToolbar();\n }\n }\n }, {\n key: \"deleteSelected\",\n value: function deleteSelected() {\n var _this3 = this;\n if (this.editMode !== true) {\n this.enableEditMode();\n }\n this._clean();\n this.inMode = \"delete\";\n var selectedNodes = this.selectionHandler.getSelectedNodeIds();\n var selectedEdges = this.selectionHandler.getSelectedEdgeIds();\n var deleteFunction = void 0;\n if (selectedNodes.length > 0) {\n for (var i = 0; i < selectedNodes.length; i++) {\n if (this.body.nodes[selectedNodes[i]].isCluster === true) {\n alert(this.options.locales[this.options.locale][\"deleteClusterError\"] || this.options.locales[\"en\"][\"deleteClusterError\"]);\n return;\n }\n }\n if (typeof this.options.deleteNode === \"function\") {\n deleteFunction = this.options.deleteNode;\n }\n } else if (selectedEdges.length > 0) {\n if (typeof this.options.deleteEdge === \"function\") {\n deleteFunction = this.options.deleteEdge;\n }\n }\n if (typeof deleteFunction === \"function\") {\n var data2 = {\n nodes: selectedNodes,\n edges: selectedEdges\n };\n if (deleteFunction.length === 2) {\n deleteFunction(data2, function(finalizedData) {\n if (finalizedData !== null && finalizedData !== void 0 && _this3.inMode === \"delete\") {\n _this3.body.data.edges.getDataSet().remove(finalizedData.edges);\n _this3.body.data.nodes.getDataSet().remove(finalizedData.nodes);\n _this3.body.emitter.emit(\"startSimulation\");\n _this3.showManipulatorToolbar();\n } else {\n _this3.body.emitter.emit(\"startSimulation\");\n _this3.showManipulatorToolbar();\n }\n });\n } else {\n throw new Error(\"The function for delete does not support two arguments (data, callback)\");\n }\n } else {\n this.body.data.edges.getDataSet().remove(selectedEdges);\n this.body.data.nodes.getDataSet().remove(selectedNodes);\n this.body.emitter.emit(\"startSimulation\");\n this.showManipulatorToolbar();\n }\n }\n }, {\n key: \"_setup\",\n value: function _setup() {\n if (this.options.enabled === true) {\n this.guiEnabled = true;\n this._createWrappers();\n if (this.editMode === false) {\n this._createEditButton();\n } else {\n this.showManipulatorToolbar();\n }\n } else {\n this._removeManipulationDOM();\n this.guiEnabled = false;\n }\n }\n }, {\n key: \"_createWrappers\",\n value: function _createWrappers() {\n if (this.manipulationDiv === void 0) {\n this.manipulationDiv = document.createElement(\"div\");\n this.manipulationDiv.className = \"vis-manipulation\";\n if (this.editMode === true) {\n this.manipulationDiv.style.display = \"block\";\n } else {\n this.manipulationDiv.style.display = \"none\";\n }\n this.canvas.frame.appendChild(this.manipulationDiv);\n }\n if (this.editModeDiv === void 0) {\n this.editModeDiv = document.createElement(\"div\");\n this.editModeDiv.className = \"vis-edit-mode\";\n if (this.editMode === true) {\n this.editModeDiv.style.display = \"none\";\n } else {\n this.editModeDiv.style.display = \"block\";\n }\n this.canvas.frame.appendChild(this.editModeDiv);\n }\n if (this.closeDiv === void 0) {\n var _this$options$locales, _this$options$locales2;\n this.closeDiv = document.createElement(\"button\");\n this.closeDiv.className = \"vis-close\";\n this.closeDiv.setAttribute(\"aria-label\", (_this$options$locales = (_this$options$locales2 = this.options.locales[this.options.locale]) === null || _this$options$locales2 === void 0 ? void 0 : _this$options$locales2[\"close\"]) !== null && _this$options$locales !== void 0 ? _this$options$locales : this.options.locales[\"en\"][\"close\"]);\n this.closeDiv.style.display = this.manipulationDiv.style.display;\n this.canvas.frame.appendChild(this.closeDiv);\n }\n }\n }, {\n key: \"_getNewTargetNode\",\n value: function _getNewTargetNode(x, y) {\n var controlNodeStyle = deepExtend({}, this.options.controlNodeStyle);\n controlNodeStyle.id = \"targetNode\" + v4();\n controlNodeStyle.hidden = false;\n controlNodeStyle.physics = false;\n controlNodeStyle.x = x;\n controlNodeStyle.y = y;\n var node = this.body.functions.createNode(controlNodeStyle);\n node.shape.boundingBox = {\n left: x,\n right: x,\n top: y,\n bottom: y\n };\n return node;\n }\n }, {\n key: \"_createEditButton\",\n value: function _createEditButton() {\n var _context18;\n this._clean();\n this.manipulationDOM = {};\n recursiveDOMDelete(this.editModeDiv);\n var locale = this.options.locales[this.options.locale];\n var button = this._createButton(\"editMode\", \"vis-edit vis-edit-mode\", locale[\"edit\"] || this.options.locales[\"en\"][\"edit\"]);\n this.editModeDiv.appendChild(button);\n this._bindElementEvents(button, bind$5(_context18 = this.toggleEditMode).call(_context18, this));\n }\n }, {\n key: \"_clean\",\n value: function _clean() {\n this.inMode = false;\n if (this.guiEnabled === true) {\n recursiveDOMDelete(this.editModeDiv);\n recursiveDOMDelete(this.manipulationDiv);\n this._cleanupDOMEventListeners();\n }\n this._cleanupTemporaryNodesAndEdges();\n this._unbindTemporaryUIs();\n this._unbindTemporaryEvents();\n this.body.emitter.emit(\"restorePhysics\");\n }\n }, {\n key: \"_cleanupDOMEventListeners\",\n value: function _cleanupDOMEventListeners() {\n var _context19;\n var _iterator = _createForOfIteratorHelper(splice2(_context19 = this._domEventListenerCleanupQueue).call(_context19, 0)), _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done; ) {\n var callback = _step.value;\n callback();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"_removeManipulationDOM\",\n value: function _removeManipulationDOM() {\n this._clean();\n recursiveDOMDelete(this.manipulationDiv);\n recursiveDOMDelete(this.editModeDiv);\n recursiveDOMDelete(this.closeDiv);\n if (this.manipulationDiv) {\n this.canvas.frame.removeChild(this.manipulationDiv);\n }\n if (this.editModeDiv) {\n this.canvas.frame.removeChild(this.editModeDiv);\n }\n if (this.closeDiv) {\n this.canvas.frame.removeChild(this.closeDiv);\n }\n this.manipulationDiv = void 0;\n this.editModeDiv = void 0;\n this.closeDiv = void 0;\n }\n }, {\n key: \"_createSeperator\",\n value: function _createSeperator() {\n var index2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 1;\n this.manipulationDOM[\"seperatorLineDiv\" + index2] = document.createElement(\"div\");\n this.manipulationDOM[\"seperatorLineDiv\" + index2].className = \"vis-separator-line\";\n this.manipulationDiv.appendChild(this.manipulationDOM[\"seperatorLineDiv\" + index2]);\n }\n }, {\n key: \"_createAddNodeButton\",\n value: function _createAddNodeButton(locale) {\n var _context20;\n var button = this._createButton(\"addNode\", \"vis-add\", locale[\"addNode\"] || this.options.locales[\"en\"][\"addNode\"]);\n this.manipulationDiv.appendChild(button);\n this._bindElementEvents(button, bind$5(_context20 = this.addNodeMode).call(_context20, this));\n }\n }, {\n key: \"_createAddEdgeButton\",\n value: function _createAddEdgeButton(locale) {\n var _context21;\n var button = this._createButton(\"addEdge\", \"vis-connect\", locale[\"addEdge\"] || this.options.locales[\"en\"][\"addEdge\"]);\n this.manipulationDiv.appendChild(button);\n this._bindElementEvents(button, bind$5(_context21 = this.addEdgeMode).call(_context21, this));\n }\n }, {\n key: \"_createEditNodeButton\",\n value: function _createEditNodeButton(locale) {\n var _context22;\n var button = this._createButton(\"editNode\", \"vis-edit\", locale[\"editNode\"] || this.options.locales[\"en\"][\"editNode\"]);\n this.manipulationDiv.appendChild(button);\n this._bindElementEvents(button, bind$5(_context22 = this.editNode).call(_context22, this));\n }\n }, {\n key: \"_createEditEdgeButton\",\n value: function _createEditEdgeButton(locale) {\n var _context23;\n var button = this._createButton(\"editEdge\", \"vis-edit\", locale[\"editEdge\"] || this.options.locales[\"en\"][\"editEdge\"]);\n this.manipulationDiv.appendChild(button);\n this._bindElementEvents(button, bind$5(_context23 = this.editEdgeMode).call(_context23, this));\n }\n }, {\n key: \"_createDeleteButton\",\n value: function _createDeleteButton(locale) {\n var _context24;\n var deleteBtnClass;\n if (this.options.rtl) {\n deleteBtnClass = \"vis-delete-rtl\";\n } else {\n deleteBtnClass = \"vis-delete\";\n }\n var button = this._createButton(\"delete\", deleteBtnClass, locale[\"del\"] || this.options.locales[\"en\"][\"del\"]);\n this.manipulationDiv.appendChild(button);\n this._bindElementEvents(button, bind$5(_context24 = this.deleteSelected).call(_context24, this));\n }\n }, {\n key: \"_createBackButton\",\n value: function _createBackButton(locale) {\n var _context25;\n var button = this._createButton(\"back\", \"vis-back\", locale[\"back\"] || this.options.locales[\"en\"][\"back\"]);\n this.manipulationDiv.appendChild(button);\n this._bindElementEvents(button, bind$5(_context25 = this.showManipulatorToolbar).call(_context25, this));\n }\n }, {\n key: \"_createButton\",\n value: function _createButton(id2, className, label) {\n var labelClassName = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : \"vis-label\";\n this.manipulationDOM[id2 + \"Div\"] = document.createElement(\"button\");\n this.manipulationDOM[id2 + \"Div\"].className = \"vis-button \" + className;\n this.manipulationDOM[id2 + \"Label\"] = document.createElement(\"div\");\n this.manipulationDOM[id2 + \"Label\"].className = labelClassName;\n this.manipulationDOM[id2 + \"Label\"].innerText = label;\n this.manipulationDOM[id2 + \"Div\"].appendChild(this.manipulationDOM[id2 + \"Label\"]);\n return this.manipulationDOM[id2 + \"Div\"];\n }\n }, {\n key: \"_createDescription\",\n value: function _createDescription(label) {\n this.manipulationDOM[\"descriptionLabel\"] = document.createElement(\"div\");\n this.manipulationDOM[\"descriptionLabel\"].className = \"vis-none\";\n this.manipulationDOM[\"descriptionLabel\"].innerText = label;\n this.manipulationDiv.appendChild(this.manipulationDOM[\"descriptionLabel\"]);\n }\n }, {\n key: \"_temporaryBindEvent\",\n value: function _temporaryBindEvent(event, newFunction) {\n this.temporaryEventFunctions.push({\n event,\n boundFunction: newFunction\n });\n this.body.emitter.on(event, newFunction);\n }\n }, {\n key: \"_temporaryBindUI\",\n value: function _temporaryBindUI(UIfunctionName, newFunction) {\n if (this.body.eventListeners[UIfunctionName] !== void 0) {\n this.temporaryUIFunctions[UIfunctionName] = this.body.eventListeners[UIfunctionName];\n this.body.eventListeners[UIfunctionName] = newFunction;\n } else {\n throw new Error(\"This UI function does not exist. Typo? You tried: \" + UIfunctionName + \" possible are: \" + stringify$1(keys3(this.body.eventListeners)));\n }\n }\n }, {\n key: \"_unbindTemporaryUIs\",\n value: function _unbindTemporaryUIs() {\n for (var functionName in this.temporaryUIFunctions) {\n if (Object.prototype.hasOwnProperty.call(this.temporaryUIFunctions, functionName)) {\n this.body.eventListeners[functionName] = this.temporaryUIFunctions[functionName];\n delete this.temporaryUIFunctions[functionName];\n }\n }\n this.temporaryUIFunctions = {};\n }\n }, {\n key: \"_unbindTemporaryEvents\",\n value: function _unbindTemporaryEvents() {\n for (var i = 0; i < this.temporaryEventFunctions.length; i++) {\n var eventName = this.temporaryEventFunctions[i].event;\n var boundFunction = this.temporaryEventFunctions[i].boundFunction;\n this.body.emitter.off(eventName, boundFunction);\n }\n this.temporaryEventFunctions = [];\n }\n }, {\n key: \"_bindElementEvents\",\n value: function _bindElementEvents(domElement, boundFunction) {\n var hammer = new Hammer$1(domElement, {});\n onTouch(hammer, boundFunction);\n this._domEventListenerCleanupQueue.push(function() {\n hammer.destroy();\n });\n var keyupListener = function keyupListener2(_ref) {\n var keyCode = _ref.keyCode, key = _ref.key;\n if (key === \"Enter\" || key === \" \" || keyCode === 13 || keyCode === 32) {\n boundFunction();\n }\n };\n domElement.addEventListener(\"keyup\", keyupListener, false);\n this._domEventListenerCleanupQueue.push(function() {\n domElement.removeEventListener(\"keyup\", keyupListener, false);\n });\n }\n }, {\n key: \"_cleanupTemporaryNodesAndEdges\",\n value: function _cleanupTemporaryNodesAndEdges() {\n for (var i = 0; i < this.temporaryIds.edges.length; i++) {\n var _context26;\n this.body.edges[this.temporaryIds.edges[i]].disconnect();\n delete this.body.edges[this.temporaryIds.edges[i]];\n var indexTempEdge = indexOf2(_context26 = this.body.edgeIndices).call(_context26, this.temporaryIds.edges[i]);\n if (indexTempEdge !== -1) {\n var _context27;\n splice2(_context27 = this.body.edgeIndices).call(_context27, indexTempEdge, 1);\n }\n }\n for (var _i = 0; _i < this.temporaryIds.nodes.length; _i++) {\n var _context28;\n delete this.body.nodes[this.temporaryIds.nodes[_i]];\n var indexTempNode = indexOf2(_context28 = this.body.nodeIndices).call(_context28, this.temporaryIds.nodes[_i]);\n if (indexTempNode !== -1) {\n var _context29;\n splice2(_context29 = this.body.nodeIndices).call(_context29, indexTempNode, 1);\n }\n }\n this.temporaryIds = {\n nodes: [],\n edges: []\n };\n }\n }, {\n key: \"_controlNodeTouch\",\n value: function _controlNodeTouch(event) {\n this.selectionHandler.unselectAll();\n this.lastTouch = this.body.functions.getPointer(event.center);\n this.lastTouch.translation = assign$2({}, this.body.view.translation);\n }\n }, {\n key: \"_controlNodeDragStart\",\n value: function _controlNodeDragStart() {\n var pointer = this.lastTouch;\n var pointerObj = this.selectionHandler._pointerToPositionObject(pointer);\n var from3 = this.body.nodes[this.temporaryIds.nodes[0]];\n var to = this.body.nodes[this.temporaryIds.nodes[1]];\n var edge = this.body.edges[this.edgeBeingEditedId];\n this.selectedControlNode = void 0;\n var fromSelect = from3.isOverlappingWith(pointerObj);\n var toSelect = to.isOverlappingWith(pointerObj);\n if (fromSelect === true) {\n this.selectedControlNode = from3;\n edge.edgeType.from = from3;\n } else if (toSelect === true) {\n this.selectedControlNode = to;\n edge.edgeType.to = to;\n }\n if (this.selectedControlNode !== void 0) {\n this.selectionHandler.selectObject(this.selectedControlNode);\n }\n this.body.emitter.emit(\"_redraw\");\n }\n }, {\n key: \"_controlNodeDrag\",\n value: function _controlNodeDrag(event) {\n this.body.emitter.emit(\"disablePhysics\");\n var pointer = this.body.functions.getPointer(event.center);\n var pos = this.canvas.DOMtoCanvas(pointer);\n if (this.selectedControlNode !== void 0) {\n this.selectedControlNode.x = pos.x;\n this.selectedControlNode.y = pos.y;\n } else {\n this.interactionHandler.onDrag(event);\n }\n this.body.emitter.emit(\"_redraw\");\n }\n }, {\n key: \"_controlNodeDragEnd\",\n value: function _controlNodeDragEnd(event) {\n var pointer = this.body.functions.getPointer(event.center);\n var pointerObj = this.selectionHandler._pointerToPositionObject(pointer);\n var edge = this.body.edges[this.edgeBeingEditedId];\n if (this.selectedControlNode === void 0) {\n return;\n }\n this.selectionHandler.unselectAll();\n var overlappingNodeIds = this.selectionHandler._getAllNodesOverlappingWith(pointerObj);\n var node = void 0;\n for (var i = overlappingNodeIds.length - 1; i >= 0; i--) {\n if (overlappingNodeIds[i] !== this.selectedControlNode.id) {\n node = this.body.nodes[overlappingNodeIds[i]];\n break;\n }\n }\n if (node !== void 0 && this.selectedControlNode !== void 0) {\n if (node.isCluster === true) {\n alert(this.options.locales[this.options.locale][\"createEdgeError\"] || this.options.locales[\"en\"][\"createEdgeError\"]);\n } else {\n var from3 = this.body.nodes[this.temporaryIds.nodes[0]];\n if (this.selectedControlNode.id === from3.id) {\n this._performEditEdge(node.id, edge.to.id);\n } else {\n this._performEditEdge(edge.from.id, node.id);\n }\n }\n } else {\n edge.updateEdgeType();\n this.body.emitter.emit(\"restorePhysics\");\n }\n this.body.emitter.emit(\"_redraw\");\n }\n }, {\n key: \"_handleConnect\",\n value: function _handleConnect(event) {\n if (new Date().valueOf() - this.touchTime > 100) {\n this.lastTouch = this.body.functions.getPointer(event.center);\n this.lastTouch.translation = assign$2({}, this.body.view.translation);\n this.interactionHandler.drag.pointer = this.lastTouch;\n this.interactionHandler.drag.translation = this.lastTouch.translation;\n var pointer = this.lastTouch;\n var node = this.selectionHandler.getNodeAt(pointer);\n if (node !== void 0) {\n if (node.isCluster === true) {\n alert(this.options.locales[this.options.locale][\"createEdgeError\"] || this.options.locales[\"en\"][\"createEdgeError\"]);\n } else {\n var targetNode = this._getNewTargetNode(node.x, node.y);\n this.body.nodes[targetNode.id] = targetNode;\n this.body.nodeIndices.push(targetNode.id);\n var connectionEdge = this.body.functions.createEdge({\n id: \"connectionEdge\" + v4(),\n from: node.id,\n to: targetNode.id,\n physics: false,\n smooth: {\n enabled: true,\n type: \"continuous\",\n roundness: 0.5\n }\n });\n this.body.edges[connectionEdge.id] = connectionEdge;\n this.body.edgeIndices.push(connectionEdge.id);\n this.temporaryIds.nodes.push(targetNode.id);\n this.temporaryIds.edges.push(connectionEdge.id);\n }\n }\n this.touchTime = new Date().valueOf();\n }\n }\n }, {\n key: \"_dragControlNode\",\n value: function _dragControlNode(event) {\n var pointer = this.body.functions.getPointer(event.center);\n var pointerObj = this.selectionHandler._pointerToPositionObject(pointer);\n var connectFromId = void 0;\n if (this.temporaryIds.edges[0] !== void 0) {\n connectFromId = this.body.edges[this.temporaryIds.edges[0]].fromId;\n }\n var overlappingNodeIds = this.selectionHandler._getAllNodesOverlappingWith(pointerObj);\n var node = void 0;\n for (var i = overlappingNodeIds.length - 1; i >= 0; i--) {\n var _context30;\n if (indexOf2(_context30 = this.temporaryIds.nodes).call(_context30, overlappingNodeIds[i]) === -1) {\n node = this.body.nodes[overlappingNodeIds[i]];\n break;\n }\n }\n event.controlEdge = {\n from: connectFromId,\n to: node ? node.id : void 0\n };\n this.selectionHandler.generateClickEvent(\"controlNodeDragging\", event, pointer);\n if (this.temporaryIds.nodes[0] !== void 0) {\n var targetNode = this.body.nodes[this.temporaryIds.nodes[0]];\n targetNode.x = this.canvas._XconvertDOMtoCanvas(pointer.x);\n targetNode.y = this.canvas._YconvertDOMtoCanvas(pointer.y);\n this.body.emitter.emit(\"_redraw\");\n } else {\n this.interactionHandler.onDrag(event);\n }\n }\n }, {\n key: \"_finishConnect\",\n value: function _finishConnect(event) {\n var pointer = this.body.functions.getPointer(event.center);\n var pointerObj = this.selectionHandler._pointerToPositionObject(pointer);\n var connectFromId = void 0;\n if (this.temporaryIds.edges[0] !== void 0) {\n connectFromId = this.body.edges[this.temporaryIds.edges[0]].fromId;\n }\n var overlappingNodeIds = this.selectionHandler._getAllNodesOverlappingWith(pointerObj);\n var node = void 0;\n for (var i = overlappingNodeIds.length - 1; i >= 0; i--) {\n var _context31;\n if (indexOf2(_context31 = this.temporaryIds.nodes).call(_context31, overlappingNodeIds[i]) === -1) {\n node = this.body.nodes[overlappingNodeIds[i]];\n break;\n }\n }\n this._cleanupTemporaryNodesAndEdges();\n if (node !== void 0) {\n if (node.isCluster === true) {\n alert(this.options.locales[this.options.locale][\"createEdgeError\"] || this.options.locales[\"en\"][\"createEdgeError\"]);\n } else {\n if (this.body.nodes[connectFromId] !== void 0 && this.body.nodes[node.id] !== void 0) {\n this._performAddEdge(connectFromId, node.id);\n }\n }\n }\n event.controlEdge = {\n from: connectFromId,\n to: node ? node.id : void 0\n };\n this.selectionHandler.generateClickEvent(\"controlNodeDragEnd\", event, pointer);\n this.body.emitter.emit(\"_redraw\");\n }\n }, {\n key: \"_dragStartEdge\",\n value: function _dragStartEdge(event) {\n var pointer = this.lastTouch;\n this.selectionHandler.generateClickEvent(\"dragStart\", event, pointer, void 0, true);\n }\n }, {\n key: \"_performAddNode\",\n value: function _performAddNode(clickData) {\n var _this4 = this;\n var defaultData = {\n id: v4(),\n x: clickData.pointer.canvas.x,\n y: clickData.pointer.canvas.y,\n label: \"new\"\n };\n if (typeof this.options.addNode === \"function\") {\n if (this.options.addNode.length === 2) {\n this.options.addNode(defaultData, function(finalizedData) {\n if (finalizedData !== null && finalizedData !== void 0 && _this4.inMode === \"addNode\") {\n _this4.body.data.nodes.getDataSet().add(finalizedData);\n }\n _this4.showManipulatorToolbar();\n });\n } else {\n this.showManipulatorToolbar();\n throw new Error(\"The function for add does not support two arguments (data,callback)\");\n }\n } else {\n this.body.data.nodes.getDataSet().add(defaultData);\n this.showManipulatorToolbar();\n }\n }\n }, {\n key: \"_performAddEdge\",\n value: function _performAddEdge(sourceNodeId, targetNodeId) {\n var _this5 = this;\n var defaultData = {\n from: sourceNodeId,\n to: targetNodeId\n };\n if (typeof this.options.addEdge === \"function\") {\n if (this.options.addEdge.length === 2) {\n this.options.addEdge(defaultData, function(finalizedData) {\n if (finalizedData !== null && finalizedData !== void 0 && _this5.inMode === \"addEdge\") {\n _this5.body.data.edges.getDataSet().add(finalizedData);\n _this5.selectionHandler.unselectAll();\n _this5.showManipulatorToolbar();\n }\n });\n } else {\n throw new Error(\"The function for connect does not support two arguments (data,callback)\");\n }\n } else {\n this.body.data.edges.getDataSet().add(defaultData);\n this.selectionHandler.unselectAll();\n this.showManipulatorToolbar();\n }\n }\n }, {\n key: \"_performEditEdge\",\n value: function _performEditEdge(sourceNodeId, targetNodeId) {\n var _this6 = this;\n var defaultData = {\n id: this.edgeBeingEditedId,\n from: sourceNodeId,\n to: targetNodeId,\n label: this.body.data.edges.get(this.edgeBeingEditedId).label\n };\n var eeFunct = this.options.editEdge;\n if (_typeof(eeFunct) === \"object\") {\n eeFunct = eeFunct.editWithoutDrag;\n }\n if (typeof eeFunct === \"function\") {\n if (eeFunct.length === 2) {\n eeFunct(defaultData, function(finalizedData) {\n if (finalizedData === null || finalizedData === void 0 || _this6.inMode !== \"editEdge\") {\n _this6.body.edges[defaultData.id].updateEdgeType();\n _this6.body.emitter.emit(\"_redraw\");\n _this6.showManipulatorToolbar();\n } else {\n _this6.body.data.edges.getDataSet().update(finalizedData);\n _this6.selectionHandler.unselectAll();\n _this6.showManipulatorToolbar();\n }\n });\n } else {\n throw new Error(\"The function for edit does not support two arguments (data, callback)\");\n }\n } else {\n this.body.data.edges.getDataSet().update(defaultData);\n this.selectionHandler.unselectAll();\n this.showManipulatorToolbar();\n }\n }\n }]);\n return ManipulationSystem2;\n}();\nvar string = \"string\";\nvar bool = \"boolean\";\nvar number = \"number\";\nvar array = \"array\";\nvar object = \"object\";\nvar dom = \"dom\";\nvar any = \"any\";\nvar endPoints = [\"arrow\", \"bar\", \"box\", \"circle\", \"crow\", \"curve\", \"diamond\", \"image\", \"inv_curve\", \"inv_triangle\", \"triangle\", \"vee\"];\nvar nodeOptions = {\n borderWidth: {\n number\n },\n borderWidthSelected: {\n number,\n undefined: \"undefined\"\n },\n brokenImage: {\n string,\n undefined: \"undefined\"\n },\n chosen: {\n label: {\n boolean: bool,\n function: \"function\"\n },\n node: {\n boolean: bool,\n function: \"function\"\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n color: {\n border: {\n string\n },\n background: {\n string\n },\n highlight: {\n border: {\n string\n },\n background: {\n string\n },\n __type__: {\n object,\n string\n }\n },\n hover: {\n border: {\n string\n },\n background: {\n string\n },\n __type__: {\n object,\n string\n }\n },\n __type__: {\n object,\n string\n }\n },\n opacity: {\n number,\n undefined: \"undefined\"\n },\n fixed: {\n x: {\n boolean: bool\n },\n y: {\n boolean: bool\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n font: {\n align: {\n string\n },\n color: {\n string\n },\n size: {\n number\n },\n face: {\n string\n },\n background: {\n string\n },\n strokeWidth: {\n number\n },\n strokeColor: {\n string\n },\n vadjust: {\n number\n },\n multi: {\n boolean: bool,\n string\n },\n bold: {\n color: {\n string\n },\n size: {\n number\n },\n face: {\n string\n },\n mod: {\n string\n },\n vadjust: {\n number\n },\n __type__: {\n object,\n string\n }\n },\n boldital: {\n color: {\n string\n },\n size: {\n number\n },\n face: {\n string\n },\n mod: {\n string\n },\n vadjust: {\n number\n },\n __type__: {\n object,\n string\n }\n },\n ital: {\n color: {\n string\n },\n size: {\n number\n },\n face: {\n string\n },\n mod: {\n string\n },\n vadjust: {\n number\n },\n __type__: {\n object,\n string\n }\n },\n mono: {\n color: {\n string\n },\n size: {\n number\n },\n face: {\n string\n },\n mod: {\n string\n },\n vadjust: {\n number\n },\n __type__: {\n object,\n string\n }\n },\n __type__: {\n object,\n string\n }\n },\n group: {\n string,\n number,\n undefined: \"undefined\"\n },\n heightConstraint: {\n minimum: {\n number\n },\n valign: {\n string\n },\n __type__: {\n object,\n boolean: bool,\n number\n }\n },\n hidden: {\n boolean: bool\n },\n icon: {\n face: {\n string\n },\n code: {\n string\n },\n size: {\n number\n },\n color: {\n string\n },\n weight: {\n string,\n number\n },\n __type__: {\n object\n }\n },\n id: {\n string,\n number\n },\n image: {\n selected: {\n string,\n undefined: \"undefined\"\n },\n unselected: {\n string,\n undefined: \"undefined\"\n },\n __type__: {\n object,\n string\n }\n },\n imagePadding: {\n top: {\n number\n },\n right: {\n number\n },\n bottom: {\n number\n },\n left: {\n number\n },\n __type__: {\n object,\n number\n }\n },\n label: {\n string,\n undefined: \"undefined\"\n },\n labelHighlightBold: {\n boolean: bool\n },\n level: {\n number,\n undefined: \"undefined\"\n },\n margin: {\n top: {\n number\n },\n right: {\n number\n },\n bottom: {\n number\n },\n left: {\n number\n },\n __type__: {\n object,\n number\n }\n },\n mass: {\n number\n },\n physics: {\n boolean: bool\n },\n scaling: {\n min: {\n number\n },\n max: {\n number\n },\n label: {\n enabled: {\n boolean: bool\n },\n min: {\n number\n },\n max: {\n number\n },\n maxVisible: {\n number\n },\n drawThreshold: {\n number\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n customScalingFunction: {\n function: \"function\"\n },\n __type__: {\n object\n }\n },\n shadow: {\n enabled: {\n boolean: bool\n },\n color: {\n string\n },\n size: {\n number\n },\n x: {\n number\n },\n y: {\n number\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n shape: {\n string: [\"custom\", \"ellipse\", \"circle\", \"database\", \"box\", \"text\", \"image\", \"circularImage\", \"diamond\", \"dot\", \"star\", \"triangle\", \"triangleDown\", \"square\", \"icon\", \"hexagon\"]\n },\n ctxRenderer: {\n function: \"function\"\n },\n shapeProperties: {\n borderDashes: {\n boolean: bool,\n array\n },\n borderRadius: {\n number\n },\n interpolation: {\n boolean: bool\n },\n useImageSize: {\n boolean: bool\n },\n useBorderWithImage: {\n boolean: bool\n },\n coordinateOrigin: {\n string: [\"center\", \"top-left\"]\n },\n __type__: {\n object\n }\n },\n size: {\n number\n },\n title: {\n string,\n dom,\n undefined: \"undefined\"\n },\n value: {\n number,\n undefined: \"undefined\"\n },\n widthConstraint: {\n minimum: {\n number\n },\n maximum: {\n number\n },\n __type__: {\n object,\n boolean: bool,\n number\n }\n },\n x: {\n number\n },\n y: {\n number\n },\n __type__: {\n object\n }\n};\nvar allOptions = {\n configure: {\n enabled: {\n boolean: bool\n },\n filter: {\n boolean: bool,\n string,\n array,\n function: \"function\"\n },\n container: {\n dom\n },\n showButton: {\n boolean: bool\n },\n __type__: {\n object,\n boolean: bool,\n string,\n array,\n function: \"function\"\n }\n },\n edges: {\n arrows: {\n to: {\n enabled: {\n boolean: bool\n },\n scaleFactor: {\n number\n },\n type: {\n string: endPoints\n },\n imageHeight: {\n number\n },\n imageWidth: {\n number\n },\n src: {\n string\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n middle: {\n enabled: {\n boolean: bool\n },\n scaleFactor: {\n number\n },\n type: {\n string: endPoints\n },\n imageWidth: {\n number\n },\n imageHeight: {\n number\n },\n src: {\n string\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n from: {\n enabled: {\n boolean: bool\n },\n scaleFactor: {\n number\n },\n type: {\n string: endPoints\n },\n imageWidth: {\n number\n },\n imageHeight: {\n number\n },\n src: {\n string\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n __type__: {\n string: [\"from\", \"to\", \"middle\"],\n object\n }\n },\n endPointOffset: {\n from: {\n number\n },\n to: {\n number\n },\n __type__: {\n object,\n number\n }\n },\n arrowStrikethrough: {\n boolean: bool\n },\n background: {\n enabled: {\n boolean: bool\n },\n color: {\n string\n },\n size: {\n number\n },\n dashes: {\n boolean: bool,\n array\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n chosen: {\n label: {\n boolean: bool,\n function: \"function\"\n },\n edge: {\n boolean: bool,\n function: \"function\"\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n color: {\n color: {\n string\n },\n highlight: {\n string\n },\n hover: {\n string\n },\n inherit: {\n string: [\"from\", \"to\", \"both\"],\n boolean: bool\n },\n opacity: {\n number\n },\n __type__: {\n object,\n string\n }\n },\n dashes: {\n boolean: bool,\n array\n },\n font: {\n color: {\n string\n },\n size: {\n number\n },\n face: {\n string\n },\n background: {\n string\n },\n strokeWidth: {\n number\n },\n strokeColor: {\n string\n },\n align: {\n string: [\"horizontal\", \"top\", \"middle\", \"bottom\"]\n },\n vadjust: {\n number\n },\n multi: {\n boolean: bool,\n string\n },\n bold: {\n color: {\n string\n },\n size: {\n number\n },\n face: {\n string\n },\n mod: {\n string\n },\n vadjust: {\n number\n },\n __type__: {\n object,\n string\n }\n },\n boldital: {\n color: {\n string\n },\n size: {\n number\n },\n face: {\n string\n },\n mod: {\n string\n },\n vadjust: {\n number\n },\n __type__: {\n object,\n string\n }\n },\n ital: {\n color: {\n string\n },\n size: {\n number\n },\n face: {\n string\n },\n mod: {\n string\n },\n vadjust: {\n number\n },\n __type__: {\n object,\n string\n }\n },\n mono: {\n color: {\n string\n },\n size: {\n number\n },\n face: {\n string\n },\n mod: {\n string\n },\n vadjust: {\n number\n },\n __type__: {\n object,\n string\n }\n },\n __type__: {\n object,\n string\n }\n },\n hidden: {\n boolean: bool\n },\n hoverWidth: {\n function: \"function\",\n number\n },\n label: {\n string,\n undefined: \"undefined\"\n },\n labelHighlightBold: {\n boolean: bool\n },\n length: {\n number,\n undefined: \"undefined\"\n },\n physics: {\n boolean: bool\n },\n scaling: {\n min: {\n number\n },\n max: {\n number\n },\n label: {\n enabled: {\n boolean: bool\n },\n min: {\n number\n },\n max: {\n number\n },\n maxVisible: {\n number\n },\n drawThreshold: {\n number\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n customScalingFunction: {\n function: \"function\"\n },\n __type__: {\n object\n }\n },\n selectionWidth: {\n function: \"function\",\n number\n },\n selfReferenceSize: {\n number\n },\n selfReference: {\n size: {\n number\n },\n angle: {\n number\n },\n renderBehindTheNode: {\n boolean: bool\n },\n __type__: {\n object\n }\n },\n shadow: {\n enabled: {\n boolean: bool\n },\n color: {\n string\n },\n size: {\n number\n },\n x: {\n number\n },\n y: {\n number\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n smooth: {\n enabled: {\n boolean: bool\n },\n type: {\n string: [\"dynamic\", \"continuous\", \"discrete\", \"diagonalCross\", \"straightCross\", \"horizontal\", \"vertical\", \"curvedCW\", \"curvedCCW\", \"cubicBezier\"]\n },\n roundness: {\n number\n },\n forceDirection: {\n string: [\"horizontal\", \"vertical\", \"none\"],\n boolean: bool\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n title: {\n string,\n undefined: \"undefined\"\n },\n width: {\n number\n },\n widthConstraint: {\n maximum: {\n number\n },\n __type__: {\n object,\n boolean: bool,\n number\n }\n },\n value: {\n number,\n undefined: \"undefined\"\n },\n __type__: {\n object\n }\n },\n groups: {\n useDefaultGroups: {\n boolean: bool\n },\n __any__: nodeOptions,\n __type__: {\n object\n }\n },\n interaction: {\n dragNodes: {\n boolean: bool\n },\n dragView: {\n boolean: bool\n },\n hideEdgesOnDrag: {\n boolean: bool\n },\n hideEdgesOnZoom: {\n boolean: bool\n },\n hideNodesOnDrag: {\n boolean: bool\n },\n hover: {\n boolean: bool\n },\n keyboard: {\n enabled: {\n boolean: bool\n },\n speed: {\n x: {\n number\n },\n y: {\n number\n },\n zoom: {\n number\n },\n __type__: {\n object\n }\n },\n bindToWindow: {\n boolean: bool\n },\n autoFocus: {\n boolean: bool\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n multiselect: {\n boolean: bool\n },\n navigationButtons: {\n boolean: bool\n },\n selectable: {\n boolean: bool\n },\n selectConnectedEdges: {\n boolean: bool\n },\n hoverConnectedEdges: {\n boolean: bool\n },\n tooltipDelay: {\n number\n },\n zoomView: {\n boolean: bool\n },\n zoomSpeed: {\n number\n },\n __type__: {\n object\n }\n },\n layout: {\n randomSeed: {\n undefined: \"undefined\",\n number,\n string\n },\n improvedLayout: {\n boolean: bool\n },\n clusterThreshold: {\n number\n },\n hierarchical: {\n enabled: {\n boolean: bool\n },\n levelSeparation: {\n number\n },\n nodeSpacing: {\n number\n },\n treeSpacing: {\n number\n },\n blockShifting: {\n boolean: bool\n },\n edgeMinimization: {\n boolean: bool\n },\n parentCentralization: {\n boolean: bool\n },\n direction: {\n string: [\"UD\", \"DU\", \"LR\", \"RL\"]\n },\n sortMethod: {\n string: [\"hubsize\", \"directed\"]\n },\n shakeTowards: {\n string: [\"leaves\", \"roots\"]\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n __type__: {\n object\n }\n },\n manipulation: {\n enabled: {\n boolean: bool\n },\n initiallyActive: {\n boolean: bool\n },\n addNode: {\n boolean: bool,\n function: \"function\"\n },\n addEdge: {\n boolean: bool,\n function: \"function\"\n },\n editNode: {\n function: \"function\"\n },\n editEdge: {\n editWithoutDrag: {\n function: \"function\"\n },\n __type__: {\n object,\n boolean: bool,\n function: \"function\"\n }\n },\n deleteNode: {\n boolean: bool,\n function: \"function\"\n },\n deleteEdge: {\n boolean: bool,\n function: \"function\"\n },\n controlNodeStyle: nodeOptions,\n __type__: {\n object,\n boolean: bool\n }\n },\n nodes: nodeOptions,\n physics: {\n enabled: {\n boolean: bool\n },\n barnesHut: {\n theta: {\n number\n },\n gravitationalConstant: {\n number\n },\n centralGravity: {\n number\n },\n springLength: {\n number\n },\n springConstant: {\n number\n },\n damping: {\n number\n },\n avoidOverlap: {\n number\n },\n __type__: {\n object\n }\n },\n forceAtlas2Based: {\n theta: {\n number\n },\n gravitationalConstant: {\n number\n },\n centralGravity: {\n number\n },\n springLength: {\n number\n },\n springConstant: {\n number\n },\n damping: {\n number\n },\n avoidOverlap: {\n number\n },\n __type__: {\n object\n }\n },\n repulsion: {\n centralGravity: {\n number\n },\n springLength: {\n number\n },\n springConstant: {\n number\n },\n nodeDistance: {\n number\n },\n damping: {\n number\n },\n __type__: {\n object\n }\n },\n hierarchicalRepulsion: {\n centralGravity: {\n number\n },\n springLength: {\n number\n },\n springConstant: {\n number\n },\n nodeDistance: {\n number\n },\n damping: {\n number\n },\n avoidOverlap: {\n number\n },\n __type__: {\n object\n }\n },\n maxVelocity: {\n number\n },\n minVelocity: {\n number\n },\n solver: {\n string: [\"barnesHut\", \"repulsion\", \"hierarchicalRepulsion\", \"forceAtlas2Based\"]\n },\n stabilization: {\n enabled: {\n boolean: bool\n },\n iterations: {\n number\n },\n updateInterval: {\n number\n },\n onlyDynamicEdges: {\n boolean: bool\n },\n fit: {\n boolean: bool\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n timestep: {\n number\n },\n adaptiveTimestep: {\n boolean: bool\n },\n wind: {\n x: {\n number\n },\n y: {\n number\n },\n __type__: {\n object\n }\n },\n __type__: {\n object,\n boolean: bool\n }\n },\n autoResize: {\n boolean: bool\n },\n clickToUse: {\n boolean: bool\n },\n locale: {\n string\n },\n locales: {\n __any__: {\n any\n },\n __type__: {\n object\n }\n },\n height: {\n string\n },\n width: {\n string\n },\n __type__: {\n object\n }\n};\nvar configureOptions = {\n nodes: {\n borderWidth: [1, 0, 10, 1],\n borderWidthSelected: [2, 0, 10, 1],\n color: {\n border: [\"color\", \"#2B7CE9\"],\n background: [\"color\", \"#97C2FC\"],\n highlight: {\n border: [\"color\", \"#2B7CE9\"],\n background: [\"color\", \"#D2E5FF\"]\n },\n hover: {\n border: [\"color\", \"#2B7CE9\"],\n background: [\"color\", \"#D2E5FF\"]\n }\n },\n opacity: [0, 0, 1, 0.1],\n fixed: {\n x: false,\n y: false\n },\n font: {\n color: [\"color\", \"#343434\"],\n size: [14, 0, 100, 1],\n face: [\"arial\", \"verdana\", \"tahoma\"],\n background: [\"color\", \"none\"],\n strokeWidth: [0, 0, 50, 1],\n strokeColor: [\"color\", \"#ffffff\"]\n },\n hidden: false,\n labelHighlightBold: true,\n physics: true,\n scaling: {\n min: [10, 0, 200, 1],\n max: [30, 0, 200, 1],\n label: {\n enabled: false,\n min: [14, 0, 200, 1],\n max: [30, 0, 200, 1],\n maxVisible: [30, 0, 200, 1],\n drawThreshold: [5, 0, 20, 1]\n }\n },\n shadow: {\n enabled: false,\n color: \"rgba(0,0,0,0.5)\",\n size: [10, 0, 20, 1],\n x: [5, -30, 30, 1],\n y: [5, -30, 30, 1]\n },\n shape: [\"ellipse\", \"box\", \"circle\", \"database\", \"diamond\", \"dot\", \"square\", \"star\", \"text\", \"triangle\", \"triangleDown\", \"hexagon\"],\n shapeProperties: {\n borderDashes: false,\n borderRadius: [6, 0, 20, 1],\n interpolation: true,\n useImageSize: false\n },\n size: [25, 0, 200, 1]\n },\n edges: {\n arrows: {\n to: {\n enabled: false,\n scaleFactor: [1, 0, 3, 0.05],\n type: \"arrow\"\n },\n middle: {\n enabled: false,\n scaleFactor: [1, 0, 3, 0.05],\n type: \"arrow\"\n },\n from: {\n enabled: false,\n scaleFactor: [1, 0, 3, 0.05],\n type: \"arrow\"\n }\n },\n endPointOffset: {\n from: [0, -10, 10, 1],\n to: [0, -10, 10, 1]\n },\n arrowStrikethrough: true,\n color: {\n color: [\"color\", \"#848484\"],\n highlight: [\"color\", \"#848484\"],\n hover: [\"color\", \"#848484\"],\n inherit: [\"from\", \"to\", \"both\", true, false],\n opacity: [1, 0, 1, 0.05]\n },\n dashes: false,\n font: {\n color: [\"color\", \"#343434\"],\n size: [14, 0, 100, 1],\n face: [\"arial\", \"verdana\", \"tahoma\"],\n background: [\"color\", \"none\"],\n strokeWidth: [2, 0, 50, 1],\n strokeColor: [\"color\", \"#ffffff\"],\n align: [\"horizontal\", \"top\", \"middle\", \"bottom\"]\n },\n hidden: false,\n hoverWidth: [1.5, 0, 5, 0.1],\n labelHighlightBold: true,\n physics: true,\n scaling: {\n min: [1, 0, 100, 1],\n max: [15, 0, 100, 1],\n label: {\n enabled: true,\n min: [14, 0, 200, 1],\n max: [30, 0, 200, 1],\n maxVisible: [30, 0, 200, 1],\n drawThreshold: [5, 0, 20, 1]\n }\n },\n selectionWidth: [1.5, 0, 5, 0.1],\n selfReferenceSize: [20, 0, 200, 1],\n selfReference: {\n size: [20, 0, 200, 1],\n angle: [Math.PI / 2, -6 * Math.PI, 6 * Math.PI, Math.PI / 8],\n renderBehindTheNode: true\n },\n shadow: {\n enabled: false,\n color: \"rgba(0,0,0,0.5)\",\n size: [10, 0, 20, 1],\n x: [5, -30, 30, 1],\n y: [5, -30, 30, 1]\n },\n smooth: {\n enabled: true,\n type: [\"dynamic\", \"continuous\", \"discrete\", \"diagonalCross\", \"straightCross\", \"horizontal\", \"vertical\", \"curvedCW\", \"curvedCCW\", \"cubicBezier\"],\n forceDirection: [\"horizontal\", \"vertical\", \"none\"],\n roundness: [0.5, 0, 1, 0.05]\n },\n width: [1, 0, 30, 1]\n },\n layout: {\n hierarchical: {\n enabled: false,\n levelSeparation: [150, 20, 500, 5],\n nodeSpacing: [100, 20, 500, 5],\n treeSpacing: [200, 20, 500, 5],\n blockShifting: true,\n edgeMinimization: true,\n parentCentralization: true,\n direction: [\"UD\", \"DU\", \"LR\", \"RL\"],\n sortMethod: [\"hubsize\", \"directed\"],\n shakeTowards: [\"leaves\", \"roots\"]\n }\n },\n interaction: {\n dragNodes: true,\n dragView: true,\n hideEdgesOnDrag: false,\n hideEdgesOnZoom: false,\n hideNodesOnDrag: false,\n hover: false,\n keyboard: {\n enabled: false,\n speed: {\n x: [10, 0, 40, 1],\n y: [10, 0, 40, 1],\n zoom: [0.02, 0, 0.1, 5e-3]\n },\n bindToWindow: true,\n autoFocus: true\n },\n multiselect: false,\n navigationButtons: false,\n selectable: true,\n selectConnectedEdges: true,\n hoverConnectedEdges: true,\n tooltipDelay: [300, 0, 1e3, 25],\n zoomView: true,\n zoomSpeed: [1, 0.1, 2, 0.1]\n },\n manipulation: {\n enabled: false,\n initiallyActive: false\n },\n physics: {\n enabled: true,\n barnesHut: {\n theta: [0.5, 0.1, 1, 0.05],\n gravitationalConstant: [-2e3, -3e4, 0, 50],\n centralGravity: [0.3, 0, 10, 0.05],\n springLength: [95, 0, 500, 5],\n springConstant: [0.04, 0, 1.2, 5e-3],\n damping: [0.09, 0, 1, 0.01],\n avoidOverlap: [0, 0, 1, 0.01]\n },\n forceAtlas2Based: {\n theta: [0.5, 0.1, 1, 0.05],\n gravitationalConstant: [-50, -500, 0, 1],\n centralGravity: [0.01, 0, 1, 5e-3],\n springLength: [95, 0, 500, 5],\n springConstant: [0.08, 0, 1.2, 5e-3],\n damping: [0.4, 0, 1, 0.01],\n avoidOverlap: [0, 0, 1, 0.01]\n },\n repulsion: {\n centralGravity: [0.2, 0, 10, 0.05],\n springLength: [200, 0, 500, 5],\n springConstant: [0.05, 0, 1.2, 5e-3],\n nodeDistance: [100, 0, 500, 5],\n damping: [0.09, 0, 1, 0.01]\n },\n hierarchicalRepulsion: {\n centralGravity: [0.2, 0, 10, 0.05],\n springLength: [100, 0, 500, 5],\n springConstant: [0.01, 0, 1.2, 5e-3],\n nodeDistance: [120, 0, 500, 5],\n damping: [0.09, 0, 1, 0.01],\n avoidOverlap: [0, 0, 1, 0.01]\n },\n maxVelocity: [50, 0, 150, 1],\n minVelocity: [0.1, 0.01, 0.5, 0.01],\n solver: [\"barnesHut\", \"forceAtlas2Based\", \"repulsion\", \"hierarchicalRepulsion\"],\n timestep: [0.5, 0.01, 1, 0.01],\n wind: {\n x: [0, -10, 10, 0.1],\n y: [0, -10, 10, 0.1]\n }\n }\n};\nvar configuratorHideOption = function configuratorHideOption2(parentPath, optionName, options2) {\n var _context;\n if (includes3(parentPath).call(parentPath, \"physics\") && includes3(_context = configureOptions.physics.solver).call(_context, optionName) && options2.physics.solver !== optionName && optionName !== \"wind\") {\n return true;\n }\n return false;\n};\nvar options = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n configuratorHideOption,\n allOptions,\n configureOptions\n});\nvar FloydWarshall = /* @__PURE__ */ function() {\n function FloydWarshall2() {\n _classCallCheck(this, FloydWarshall2);\n }\n _createClass(FloydWarshall2, [{\n key: \"getDistances\",\n value: function getDistances(body, nodesArray, edgesArray) {\n var D_matrix = {};\n var edges = body.edges;\n for (var i = 0; i < nodesArray.length; i++) {\n var node = nodesArray[i];\n var cell = {};\n D_matrix[node] = cell;\n for (var j = 0; j < nodesArray.length; j++) {\n cell[nodesArray[j]] = i == j ? 0 : 1e9;\n }\n }\n for (var _i = 0; _i < edgesArray.length; _i++) {\n var edge = edges[edgesArray[_i]];\n if (edge.connected === true && D_matrix[edge.fromId] !== void 0 && D_matrix[edge.toId] !== void 0) {\n D_matrix[edge.fromId][edge.toId] = 1;\n D_matrix[edge.toId][edge.fromId] = 1;\n }\n }\n var nodeCount = nodesArray.length;\n for (var k = 0; k < nodeCount; k++) {\n var knode = nodesArray[k];\n var kcolm = D_matrix[knode];\n for (var _i2 = 0; _i2 < nodeCount - 1; _i2++) {\n var inode = nodesArray[_i2];\n var icolm = D_matrix[inode];\n for (var _j = _i2 + 1; _j < nodeCount; _j++) {\n var jnode = nodesArray[_j];\n var jcolm = D_matrix[jnode];\n var val = Math.min(icolm[jnode], icolm[knode] + kcolm[jnode]);\n icolm[jnode] = val;\n jcolm[inode] = val;\n }\n }\n }\n return D_matrix;\n }\n }]);\n return FloydWarshall2;\n}();\nvar KamadaKawai = /* @__PURE__ */ function() {\n function KamadaKawai2(body, edgeLength, edgeStrength) {\n _classCallCheck(this, KamadaKawai2);\n this.body = body;\n this.springLength = edgeLength;\n this.springConstant = edgeStrength;\n this.distanceSolver = new FloydWarshall();\n }\n _createClass(KamadaKawai2, [{\n key: \"setOptions\",\n value: function setOptions(options2) {\n if (options2) {\n if (options2.springLength) {\n this.springLength = options2.springLength;\n }\n if (options2.springConstant) {\n this.springConstant = options2.springConstant;\n }\n }\n }\n }, {\n key: \"solve\",\n value: function solve(nodesArray, edgesArray) {\n var ignoreClusters = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n var D_matrix = this.distanceSolver.getDistances(this.body, nodesArray, edgesArray);\n this._createL_matrix(D_matrix);\n this._createK_matrix(D_matrix);\n this._createE_matrix();\n var threshold = 0.01;\n var innerThreshold = 1;\n var iterations = 0;\n var maxIterations = Math.max(1e3, Math.min(10 * this.body.nodeIndices.length, 6e3));\n var maxInnerIterations = 5;\n var maxEnergy = 1e9;\n var highE_nodeId = 0, dE_dx = 0, dE_dy = 0, delta_m = 0, subIterations = 0;\n while (maxEnergy > threshold && iterations < maxIterations) {\n iterations += 1;\n var _this$_getHighestEner = this._getHighestEnergyNode(ignoreClusters);\n var _this$_getHighestEner2 = _slicedToArray(_this$_getHighestEner, 4);\n highE_nodeId = _this$_getHighestEner2[0];\n maxEnergy = _this$_getHighestEner2[1];\n dE_dx = _this$_getHighestEner2[2];\n dE_dy = _this$_getHighestEner2[3];\n delta_m = maxEnergy;\n subIterations = 0;\n while (delta_m > innerThreshold && subIterations < maxInnerIterations) {\n subIterations += 1;\n this._moveNode(highE_nodeId, dE_dx, dE_dy);\n var _this$_getEnergy = this._getEnergy(highE_nodeId);\n var _this$_getEnergy2 = _slicedToArray(_this$_getEnergy, 3);\n delta_m = _this$_getEnergy2[0];\n dE_dx = _this$_getEnergy2[1];\n dE_dy = _this$_getEnergy2[2];\n }\n }\n }\n }, {\n key: \"_getHighestEnergyNode\",\n value: function _getHighestEnergyNode(ignoreClusters) {\n var nodesArray = this.body.nodeIndices;\n var nodes = this.body.nodes;\n var maxEnergy = 0;\n var maxEnergyNodeId = nodesArray[0];\n var dE_dx_max = 0, dE_dy_max = 0;\n for (var nodeIdx = 0; nodeIdx < nodesArray.length; nodeIdx++) {\n var m = nodesArray[nodeIdx];\n if (nodes[m].predefinedPosition !== true || nodes[m].isCluster === true && ignoreClusters === true || nodes[m].options.fixed.x !== true || nodes[m].options.fixed.y !== true) {\n var _this$_getEnergy3 = this._getEnergy(m), _this$_getEnergy4 = _slicedToArray(_this$_getEnergy3, 3), delta_m = _this$_getEnergy4[0], dE_dx = _this$_getEnergy4[1], dE_dy = _this$_getEnergy4[2];\n if (maxEnergy < delta_m) {\n maxEnergy = delta_m;\n maxEnergyNodeId = m;\n dE_dx_max = dE_dx;\n dE_dy_max = dE_dy;\n }\n }\n }\n return [maxEnergyNodeId, maxEnergy, dE_dx_max, dE_dy_max];\n }\n }, {\n key: \"_getEnergy\",\n value: function _getEnergy(m) {\n var _this$E_sums$m = _slicedToArray(this.E_sums[m], 2), dE_dx = _this$E_sums$m[0], dE_dy = _this$E_sums$m[1];\n var delta_m = Math.sqrt(Math.pow(dE_dx, 2) + Math.pow(dE_dy, 2));\n return [delta_m, dE_dx, dE_dy];\n }\n }, {\n key: \"_moveNode\",\n value: function _moveNode(m, dE_dx, dE_dy) {\n var nodesArray = this.body.nodeIndices;\n var nodes = this.body.nodes;\n var d2E_dx2 = 0;\n var d2E_dxdy = 0;\n var d2E_dy2 = 0;\n var x_m = nodes[m].x;\n var y_m = nodes[m].y;\n var km = this.K_matrix[m];\n var lm = this.L_matrix[m];\n for (var iIdx = 0; iIdx < nodesArray.length; iIdx++) {\n var i = nodesArray[iIdx];\n if (i !== m) {\n var x_i = nodes[i].x;\n var y_i = nodes[i].y;\n var kmat = km[i];\n var lmat = lm[i];\n var denominator = 1 / Math.pow(Math.pow(x_m - x_i, 2) + Math.pow(y_m - y_i, 2), 1.5);\n d2E_dx2 += kmat * (1 - lmat * Math.pow(y_m - y_i, 2) * denominator);\n d2E_dxdy += kmat * (lmat * (x_m - x_i) * (y_m - y_i) * denominator);\n d2E_dy2 += kmat * (1 - lmat * Math.pow(x_m - x_i, 2) * denominator);\n }\n }\n var A = d2E_dx2, B = d2E_dxdy, C = dE_dx, D = d2E_dy2, E = dE_dy;\n var dy = (C / A + E / B) / (B / A - D / B);\n var dx = -(B * dy + C) / A;\n nodes[m].x += dx;\n nodes[m].y += dy;\n this._updateE_matrix(m);\n }\n }, {\n key: \"_createL_matrix\",\n value: function _createL_matrix(D_matrix) {\n var nodesArray = this.body.nodeIndices;\n var edgeLength = this.springLength;\n this.L_matrix = [];\n for (var i = 0; i < nodesArray.length; i++) {\n this.L_matrix[nodesArray[i]] = {};\n for (var j = 0; j < nodesArray.length; j++) {\n this.L_matrix[nodesArray[i]][nodesArray[j]] = edgeLength * D_matrix[nodesArray[i]][nodesArray[j]];\n }\n }\n }\n }, {\n key: \"_createK_matrix\",\n value: function _createK_matrix(D_matrix) {\n var nodesArray = this.body.nodeIndices;\n var edgeStrength = this.springConstant;\n this.K_matrix = [];\n for (var i = 0; i < nodesArray.length; i++) {\n this.K_matrix[nodesArray[i]] = {};\n for (var j = 0; j < nodesArray.length; j++) {\n this.K_matrix[nodesArray[i]][nodesArray[j]] = edgeStrength * Math.pow(D_matrix[nodesArray[i]][nodesArray[j]], -2);\n }\n }\n }\n }, {\n key: \"_createE_matrix\",\n value: function _createE_matrix() {\n var nodesArray = this.body.nodeIndices;\n var nodes = this.body.nodes;\n this.E_matrix = {};\n this.E_sums = {};\n for (var mIdx = 0; mIdx < nodesArray.length; mIdx++) {\n this.E_matrix[nodesArray[mIdx]] = [];\n }\n for (var _mIdx = 0; _mIdx < nodesArray.length; _mIdx++) {\n var m = nodesArray[_mIdx];\n var x_m = nodes[m].x;\n var y_m = nodes[m].y;\n var dE_dx = 0;\n var dE_dy = 0;\n for (var iIdx = _mIdx; iIdx < nodesArray.length; iIdx++) {\n var i = nodesArray[iIdx];\n if (i !== m) {\n var x_i = nodes[i].x;\n var y_i = nodes[i].y;\n var denominator = 1 / Math.sqrt(Math.pow(x_m - x_i, 2) + Math.pow(y_m - y_i, 2));\n this.E_matrix[m][iIdx] = [this.K_matrix[m][i] * (x_m - x_i - this.L_matrix[m][i] * (x_m - x_i) * denominator), this.K_matrix[m][i] * (y_m - y_i - this.L_matrix[m][i] * (y_m - y_i) * denominator)];\n this.E_matrix[i][_mIdx] = this.E_matrix[m][iIdx];\n dE_dx += this.E_matrix[m][iIdx][0];\n dE_dy += this.E_matrix[m][iIdx][1];\n }\n }\n this.E_sums[m] = [dE_dx, dE_dy];\n }\n }\n }, {\n key: \"_updateE_matrix\",\n value: function _updateE_matrix(m) {\n var nodesArray = this.body.nodeIndices;\n var nodes = this.body.nodes;\n var colm = this.E_matrix[m];\n var kcolm = this.K_matrix[m];\n var lcolm = this.L_matrix[m];\n var x_m = nodes[m].x;\n var y_m = nodes[m].y;\n var dE_dx = 0;\n var dE_dy = 0;\n for (var iIdx = 0; iIdx < nodesArray.length; iIdx++) {\n var i = nodesArray[iIdx];\n if (i !== m) {\n var cell = colm[iIdx];\n var oldDx = cell[0];\n var oldDy = cell[1];\n var x_i = nodes[i].x;\n var y_i = nodes[i].y;\n var denominator = 1 / Math.sqrt(Math.pow(x_m - x_i, 2) + Math.pow(y_m - y_i, 2));\n var dx = kcolm[i] * (x_m - x_i - lcolm[i] * (x_m - x_i) * denominator);\n var dy = kcolm[i] * (y_m - y_i - lcolm[i] * (y_m - y_i) * denominator);\n colm[iIdx] = [dx, dy];\n dE_dx += dx;\n dE_dy += dy;\n var sum = this.E_sums[i];\n sum[0] += dx - oldDx;\n sum[1] += dy - oldDy;\n }\n }\n this.E_sums[m] = [dE_dx, dE_dy];\n }\n }]);\n return KamadaKawai2;\n}();\nfunction Network(container, data2, options2) {\n var _context, _context2, _context3, _context4, _this = this;\n if (!(this instanceof Network)) {\n throw new SyntaxError(\"Constructor must be called with the new operator\");\n }\n this.options = {};\n this.defaultOptions = {\n locale: \"en\",\n locales,\n clickToUse: false\n };\n assign$2(this.options, this.defaultOptions);\n this.body = {\n container,\n nodes: {},\n nodeIndices: [],\n edges: {},\n edgeIndices: [],\n emitter: {\n on: bind$5(_context = this.on).call(_context, this),\n off: bind$5(_context2 = this.off).call(_context2, this),\n emit: bind$5(_context3 = this.emit).call(_context3, this),\n once: bind$5(_context4 = this.once).call(_context4, this)\n },\n eventListeners: {\n onTap: function onTap() {\n },\n onTouch: function onTouch2() {\n },\n onDoubleTap: function onDoubleTap() {\n },\n onHold: function onHold() {\n },\n onDragStart: function onDragStart() {\n },\n onDrag: function onDrag() {\n },\n onDragEnd: function onDragEnd() {\n },\n onMouseWheel: function onMouseWheel() {\n },\n onPinch: function onPinch() {\n },\n onMouseMove: function onMouseMove() {\n },\n onRelease: function onRelease2() {\n },\n onContext: function onContext() {\n }\n },\n data: {\n nodes: null,\n edges: null\n },\n functions: {\n createNode: function createNode() {\n },\n createEdge: function createEdge2() {\n },\n getPointer: function getPointer() {\n }\n },\n modules: {},\n view: {\n scale: 1,\n translation: {\n x: 0,\n y: 0\n }\n },\n selectionBox: {\n show: false,\n position: {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 0,\n y: 0\n }\n }\n }\n };\n this.bindEventListeners();\n this.images = new Images(function() {\n return _this.body.emitter.emit(\"_requestRedraw\");\n });\n this.groups = new Groups();\n this.canvas = new Canvas(this.body);\n this.selectionHandler = new SelectionHandler(this.body, this.canvas);\n this.interactionHandler = new InteractionHandler(this.body, this.canvas, this.selectionHandler);\n this.view = new View(this.body, this.canvas);\n this.renderer = new CanvasRenderer(this.body, this.canvas);\n this.physics = new PhysicsEngine(this.body);\n this.layoutEngine = new LayoutEngine(this.body);\n this.clustering = new ClusterEngine(this.body);\n this.manipulation = new ManipulationSystem(this.body, this.canvas, this.selectionHandler, this.interactionHandler);\n this.nodesHandler = new NodesHandler(this.body, this.images, this.groups, this.layoutEngine);\n this.edgesHandler = new EdgesHandler(this.body, this.images, this.groups);\n this.body.modules[\"kamadaKawai\"] = new KamadaKawai(this.body, 150, 0.05);\n this.body.modules[\"clustering\"] = this.clustering;\n this.canvas._create();\n this.setOptions(options2);\n this.setData(data2);\n}\nEmitter(Network.prototype);\nNetwork.prototype.setOptions = function(options2) {\n var _this2 = this;\n if (options2 === null) {\n options2 = void 0;\n }\n if (options2 !== void 0) {\n var errorFound2 = Validator$1.validate(options2, allOptions);\n if (errorFound2 === true) {\n console.error(\"%cErrors have been found in the supplied options object.\", VALIDATOR_PRINT_STYLE$1);\n }\n var fields = [\"locale\", \"locales\", \"clickToUse\"];\n selectiveDeepExtend(fields, this.options, options2);\n if (options2.locale !== void 0) {\n options2.locale = normalizeLanguageCode(options2.locales || this.options.locales, options2.locale);\n }\n options2 = this.layoutEngine.setOptions(options2.layout, options2);\n this.canvas.setOptions(options2);\n this.groups.setOptions(options2.groups);\n this.nodesHandler.setOptions(options2.nodes);\n this.edgesHandler.setOptions(options2.edges);\n this.physics.setOptions(options2.physics);\n this.manipulation.setOptions(options2.manipulation, options2, this.options);\n this.interactionHandler.setOptions(options2.interaction);\n this.renderer.setOptions(options2.interaction);\n this.selectionHandler.setOptions(options2.interaction);\n if (options2.groups !== void 0) {\n this.body.emitter.emit(\"refreshNodes\");\n }\n if (\"configure\" in options2) {\n if (!this.configurator) {\n this.configurator = new Configurator$1(this, this.body.container, configureOptions, this.canvas.pixelRatio, configuratorHideOption);\n }\n this.configurator.setOptions(options2.configure);\n }\n if (this.configurator && this.configurator.options.enabled === true) {\n var networkOptions = {\n nodes: {},\n edges: {},\n layout: {},\n interaction: {},\n manipulation: {},\n physics: {},\n global: {}\n };\n deepExtend(networkOptions.nodes, this.nodesHandler.options);\n deepExtend(networkOptions.edges, this.edgesHandler.options);\n deepExtend(networkOptions.layout, this.layoutEngine.options);\n deepExtend(networkOptions.interaction, this.selectionHandler.options);\n deepExtend(networkOptions.interaction, this.renderer.options);\n deepExtend(networkOptions.interaction, this.interactionHandler.options);\n deepExtend(networkOptions.manipulation, this.manipulation.options);\n deepExtend(networkOptions.physics, this.physics.options);\n deepExtend(networkOptions.global, this.canvas.options);\n deepExtend(networkOptions.global, this.options);\n this.configurator.setModuleOptions(networkOptions);\n }\n if (options2.clickToUse !== void 0) {\n if (options2.clickToUse === true) {\n if (this.activator === void 0) {\n this.activator = new Activator$1(this.canvas.frame);\n this.activator.on(\"change\", function() {\n _this2.body.emitter.emit(\"activate\");\n });\n }\n } else {\n if (this.activator !== void 0) {\n this.activator.destroy();\n delete this.activator;\n }\n this.body.emitter.emit(\"activate\");\n }\n } else {\n this.body.emitter.emit(\"activate\");\n }\n this.canvas.setSize();\n this.body.emitter.emit(\"startSimulation\");\n }\n};\nNetwork.prototype._updateVisibleIndices = function() {\n var nodes = this.body.nodes;\n var edges = this.body.edges;\n this.body.nodeIndices = [];\n this.body.edgeIndices = [];\n for (var nodeId in nodes) {\n if (Object.prototype.hasOwnProperty.call(nodes, nodeId)) {\n if (!this.clustering._isClusteredNode(nodeId) && nodes[nodeId].options.hidden === false) {\n this.body.nodeIndices.push(nodes[nodeId].id);\n }\n }\n }\n for (var edgeId in edges) {\n if (Object.prototype.hasOwnProperty.call(edges, edgeId)) {\n var edge = edges[edgeId];\n var fromNode = nodes[edge.fromId];\n var toNode = nodes[edge.toId];\n var edgeNodesPresent = fromNode !== void 0 && toNode !== void 0;\n var isVisible = !this.clustering._isClusteredEdge(edgeId) && edge.options.hidden === false && edgeNodesPresent && fromNode.options.hidden === false && toNode.options.hidden === false;\n if (isVisible) {\n this.body.edgeIndices.push(edge.id);\n }\n }\n }\n};\nNetwork.prototype.bindEventListeners = function() {\n var _this3 = this;\n this.body.emitter.on(\"_dataChanged\", function() {\n _this3.edgesHandler._updateState();\n _this3.body.emitter.emit(\"_dataUpdated\");\n });\n this.body.emitter.on(\"_dataUpdated\", function() {\n _this3.clustering._updateState();\n _this3._updateVisibleIndices();\n _this3._updateValueRange(_this3.body.nodes);\n _this3._updateValueRange(_this3.body.edges);\n _this3.body.emitter.emit(\"startSimulation\");\n _this3.body.emitter.emit(\"_requestRedraw\");\n });\n};\nNetwork.prototype.setData = function(data2) {\n this.body.emitter.emit(\"resetPhysics\");\n this.body.emitter.emit(\"_resetData\");\n this.selectionHandler.unselectAll();\n if (data2 && data2.dot && (data2.nodes || data2.edges)) {\n throw new SyntaxError('Data must contain either parameter \"dot\" or parameter pair \"nodes\" and \"edges\", but not both.');\n }\n this.setOptions(data2 && data2.options);\n if (data2 && data2.dot) {\n console.warn(\"The dot property has been deprecated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);\");\n var dotData = DOTToGraph(data2.dot);\n this.setData(dotData);\n return;\n } else if (data2 && data2.gephi) {\n console.warn(\"The gephi property has been deprecated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);\");\n var gephiData = parseGephi(data2.gephi);\n this.setData(gephiData);\n return;\n } else {\n this.nodesHandler.setData(data2 && data2.nodes, true);\n this.edgesHandler.setData(data2 && data2.edges, true);\n }\n this.body.emitter.emit(\"_dataChanged\");\n this.body.emitter.emit(\"_dataLoaded\");\n this.body.emitter.emit(\"initPhysics\");\n};\nNetwork.prototype.destroy = function() {\n this.body.emitter.emit(\"destroy\");\n this.body.emitter.off();\n this.off();\n delete this.groups;\n delete this.canvas;\n delete this.selectionHandler;\n delete this.interactionHandler;\n delete this.view;\n delete this.renderer;\n delete this.physics;\n delete this.layoutEngine;\n delete this.clustering;\n delete this.manipulation;\n delete this.nodesHandler;\n delete this.edgesHandler;\n delete this.configurator;\n delete this.images;\n for (var nodeId in this.body.nodes) {\n if (!Object.prototype.hasOwnProperty.call(this.body.nodes, nodeId))\n continue;\n delete this.body.nodes[nodeId];\n }\n for (var edgeId in this.body.edges) {\n if (!Object.prototype.hasOwnProperty.call(this.body.edges, edgeId))\n continue;\n delete this.body.edges[edgeId];\n }\n recursiveDOMDelete(this.body.container);\n};\nNetwork.prototype._updateValueRange = function(obj) {\n var id2;\n var valueMin = void 0;\n var valueMax = void 0;\n var valueTotal = 0;\n for (id2 in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, id2)) {\n var value = obj[id2].getValue();\n if (value !== void 0) {\n valueMin = valueMin === void 0 ? value : Math.min(value, valueMin);\n valueMax = valueMax === void 0 ? value : Math.max(value, valueMax);\n valueTotal += value;\n }\n }\n }\n if (valueMin !== void 0 && valueMax !== void 0) {\n for (id2 in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, id2)) {\n obj[id2].setValueRange(valueMin, valueMax, valueTotal);\n }\n }\n }\n};\nNetwork.prototype.isActive = function() {\n return !this.activator || this.activator.active;\n};\nNetwork.prototype.setSize = function() {\n return this.canvas.setSize.apply(this.canvas, arguments);\n};\nNetwork.prototype.canvasToDOM = function() {\n return this.canvas.canvasToDOM.apply(this.canvas, arguments);\n};\nNetwork.prototype.DOMtoCanvas = function() {\n return this.canvas.DOMtoCanvas.apply(this.canvas, arguments);\n};\nNetwork.prototype.findNode = function() {\n return this.clustering.findNode.apply(this.clustering, arguments);\n};\nNetwork.prototype.isCluster = function() {\n return this.clustering.isCluster.apply(this.clustering, arguments);\n};\nNetwork.prototype.openCluster = function() {\n return this.clustering.openCluster.apply(this.clustering, arguments);\n};\nNetwork.prototype.cluster = function() {\n return this.clustering.cluster.apply(this.clustering, arguments);\n};\nNetwork.prototype.getNodesInCluster = function() {\n return this.clustering.getNodesInCluster.apply(this.clustering, arguments);\n};\nNetwork.prototype.clusterByConnection = function() {\n return this.clustering.clusterByConnection.apply(this.clustering, arguments);\n};\nNetwork.prototype.clusterByHubsize = function() {\n return this.clustering.clusterByHubsize.apply(this.clustering, arguments);\n};\nNetwork.prototype.updateClusteredNode = function() {\n return this.clustering.updateClusteredNode.apply(this.clustering, arguments);\n};\nNetwork.prototype.getClusteredEdges = function() {\n return this.clustering.getClusteredEdges.apply(this.clustering, arguments);\n};\nNetwork.prototype.getBaseEdge = function() {\n return this.clustering.getBaseEdge.apply(this.clustering, arguments);\n};\nNetwork.prototype.getBaseEdges = function() {\n return this.clustering.getBaseEdges.apply(this.clustering, arguments);\n};\nNetwork.prototype.updateEdge = function() {\n return this.clustering.updateEdge.apply(this.clustering, arguments);\n};\nNetwork.prototype.clusterOutliers = function() {\n return this.clustering.clusterOutliers.apply(this.clustering, arguments);\n};\nNetwork.prototype.getSeed = function() {\n return this.layoutEngine.getSeed.apply(this.layoutEngine, arguments);\n};\nNetwork.prototype.enableEditMode = function() {\n return this.manipulation.enableEditMode.apply(this.manipulation, arguments);\n};\nNetwork.prototype.disableEditMode = function() {\n return this.manipulation.disableEditMode.apply(this.manipulation, arguments);\n};\nNetwork.prototype.addNodeMode = function() {\n return this.manipulation.addNodeMode.apply(this.manipulation, arguments);\n};\nNetwork.prototype.editNode = function() {\n return this.manipulation.editNode.apply(this.manipulation, arguments);\n};\nNetwork.prototype.editNodeMode = function() {\n console.warn(\"Deprecated: Please use editNode instead of editNodeMode.\");\n return this.manipulation.editNode.apply(this.manipulation, arguments);\n};\nNetwork.prototype.addEdgeMode = function() {\n return this.manipulation.addEdgeMode.apply(this.manipulation, arguments);\n};\nNetwork.prototype.editEdgeMode = function() {\n return this.manipulation.editEdgeMode.apply(this.manipulation, arguments);\n};\nNetwork.prototype.deleteSelected = function() {\n return this.manipulation.deleteSelected.apply(this.manipulation, arguments);\n};\nNetwork.prototype.getPositions = function() {\n return this.nodesHandler.getPositions.apply(this.nodesHandler, arguments);\n};\nNetwork.prototype.getPosition = function() {\n return this.nodesHandler.getPosition.apply(this.nodesHandler, arguments);\n};\nNetwork.prototype.storePositions = function() {\n return this.nodesHandler.storePositions.apply(this.nodesHandler, arguments);\n};\nNetwork.prototype.moveNode = function() {\n return this.nodesHandler.moveNode.apply(this.nodesHandler, arguments);\n};\nNetwork.prototype.getBoundingBox = function() {\n return this.nodesHandler.getBoundingBox.apply(this.nodesHandler, arguments);\n};\nNetwork.prototype.getConnectedNodes = function(objectId) {\n if (this.body.nodes[objectId] !== void 0) {\n return this.nodesHandler.getConnectedNodes.apply(this.nodesHandler, arguments);\n } else {\n return this.edgesHandler.getConnectedNodes.apply(this.edgesHandler, arguments);\n }\n};\nNetwork.prototype.getConnectedEdges = function() {\n return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler, arguments);\n};\nNetwork.prototype.startSimulation = function() {\n return this.physics.startSimulation.apply(this.physics, arguments);\n};\nNetwork.prototype.stopSimulation = function() {\n return this.physics.stopSimulation.apply(this.physics, arguments);\n};\nNetwork.prototype.stabilize = function() {\n return this.physics.stabilize.apply(this.physics, arguments);\n};\nNetwork.prototype.getSelection = function() {\n return this.selectionHandler.getSelection.apply(this.selectionHandler, arguments);\n};\nNetwork.prototype.setSelection = function() {\n return this.selectionHandler.setSelection.apply(this.selectionHandler, arguments);\n};\nNetwork.prototype.getSelectedNodes = function() {\n return this.selectionHandler.getSelectedNodeIds.apply(this.selectionHandler, arguments);\n};\nNetwork.prototype.getSelectedEdges = function() {\n return this.selectionHandler.getSelectedEdgeIds.apply(this.selectionHandler, arguments);\n};\nNetwork.prototype.getNodeAt = function() {\n var node = this.selectionHandler.getNodeAt.apply(this.selectionHandler, arguments);\n if (node !== void 0 && node.id !== void 0) {\n return node.id;\n }\n return node;\n};\nNetwork.prototype.getEdgeAt = function() {\n var edge = this.selectionHandler.getEdgeAt.apply(this.selectionHandler, arguments);\n if (edge !== void 0 && edge.id !== void 0) {\n return edge.id;\n }\n return edge;\n};\nNetwork.prototype.selectNodes = function() {\n return this.selectionHandler.selectNodes.apply(this.selectionHandler, arguments);\n};\nNetwork.prototype.selectEdges = function() {\n return this.selectionHandler.selectEdges.apply(this.selectionHandler, arguments);\n};\nNetwork.prototype.unselectAll = function() {\n this.selectionHandler.unselectAll.apply(this.selectionHandler, arguments);\n this.selectionHandler.commitWithoutEmitting.apply(this.selectionHandler);\n this.redraw();\n};\nNetwork.prototype.redraw = function() {\n return this.renderer.redraw.apply(this.renderer, arguments);\n};\nNetwork.prototype.getScale = function() {\n return this.view.getScale.apply(this.view, arguments);\n};\nNetwork.prototype.getViewPosition = function() {\n return this.view.getViewPosition.apply(this.view, arguments);\n};\nNetwork.prototype.fit = function() {\n return this.view.fit.apply(this.view, arguments);\n};\nNetwork.prototype.moveTo = function() {\n return this.view.moveTo.apply(this.view, arguments);\n};\nNetwork.prototype.focus = function() {\n return this.view.focus.apply(this.view, arguments);\n};\nNetwork.prototype.releaseNode = function() {\n return this.view.releaseNode.apply(this.view, arguments);\n};\nNetwork.prototype.getOptionsFromConfigurator = function() {\n var options2 = {};\n if (this.configurator) {\n options2 = this.configurator.getOptions.apply(this.configurator);\n }\n return options2;\n};\nvar parseDOTNetwork = DOTToGraph;\nexport {Network, Images as NetworkImages, dotparser as networkDOTParser, gephiParser as networkGephiParser, options as networkOptions, parseDOTNetwork, parseGephi as parseGephiNetwork};\nexport default null;\n", "function debounce(func, wait, immediate) {\n var timeout, args, context, timestamp, result;\n if (wait == null)\n wait = 100;\n function later() {\n var last = Date.now() - timestamp;\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n }\n var debounced = function() {\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout)\n timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n return result;\n };\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n clearTimeout(timeout);\n timeout = null;\n }\n };\n return debounced;\n}\ndebounce.debounce = debounce;\nvar debounce_1 = debounce;\nvar debounce$1 = debounce_1.debounce;\nexport default debounce_1;\nexport {debounce_1 as __moduleExports, debounce$1 as debounce};\n", "var top = \"top\";\nvar bottom = \"bottom\";\nvar right = \"right\";\nvar left = \"left\";\nvar auto = \"auto\";\nvar basePlacements = [top, bottom, right, left];\nvar start = \"start\";\nvar end = \"end\";\nvar clippingParents = \"clippingParents\";\nvar viewport = \"viewport\";\nvar popper = \"popper\";\nvar reference = \"reference\";\nvar variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nvar placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nvar beforeRead = \"beforeRead\";\nvar read = \"read\";\nvar afterRead = \"afterRead\";\nvar beforeMain = \"beforeMain\";\nvar main = \"main\";\nvar afterMain = \"afterMain\";\nvar beforeWrite = \"beforeWrite\";\nvar write = \"write\";\nvar afterWrite = \"afterWrite\";\nvar modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];\nfunction getNodeName(element) {\n return element ? (element.nodeName || \"\").toLowerCase() : null;\n}\nfunction getWindow(node) {\n if (node == null) {\n return window;\n }\n if (node.toString() !== \"[object Window]\") {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n return node;\n}\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\nfunction isShadowRoot(node) {\n if (typeof ShadowRoot === \"undefined\") {\n return false;\n }\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function(name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name];\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function(name2) {\n var value = attributes[name2];\n if (value === false) {\n element.removeAttribute(name2);\n } else {\n element.setAttribute(name2, value === true ? \"\" : value);\n }\n });\n });\n}\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: \"0\",\n top: \"0\",\n margin: \"0\"\n },\n arrow: {\n position: \"absolute\"\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n return function() {\n Object.keys(state.elements).forEach(function(name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);\n var style = styleProperties.reduce(function(style2, property) {\n style2[property] = \"\";\n return style2;\n }, {});\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function(attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n}\nvar applyStyles$1 = {\n name: \"applyStyles\",\n enabled: true,\n phase: \"write\",\n fn: applyStyles,\n effect,\n requires: [\"computeStyles\"]\n};\nfunction getBasePlacement(placement) {\n return placement.split(\"-\")[0];\n}\nvar max = Math.max;\nvar min = Math.min;\nvar round = Math.round;\nfunction getBoundingClientRect(element, includeScale) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n var rect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n if (isHTMLElement(element) && includeScale) {\n var offsetHeight = element.offsetHeight;\n var offsetWidth = element.offsetWidth;\n if (offsetWidth > 0) {\n scaleX = round(rect.width) / offsetWidth || 1;\n }\n if (offsetHeight > 0) {\n scaleY = round(rect.height) / offsetHeight || 1;\n }\n }\n return {\n width: rect.width / scaleX,\n height: rect.height / scaleY,\n top: rect.top / scaleY,\n right: rect.right / scaleX,\n bottom: rect.bottom / scaleY,\n left: rect.left / scaleX,\n x: rect.left / scaleX,\n y: rect.top / scaleY\n };\n}\nfunction getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element);\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width,\n height\n };\n}\nfunction contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode();\n if (parent.contains(child)) {\n return true;\n } else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n }\n next = next.parentNode || next.host;\n } while (next);\n }\n return false;\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction isTableElement(element) {\n return [\"table\", \"td\", \"th\"].indexOf(getNodeName(element)) >= 0;\n}\nfunction getDocumentElement(element) {\n return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;\n}\nfunction getParentNode(element) {\n if (getNodeName(element) === \"html\") {\n return element;\n }\n return element.assignedSlot || element.parentNode || (isShadowRoot(element) ? element.host : null) || getDocumentElement(element);\n}\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === \"fixed\") {\n return null;\n }\n return element.offsetParent;\n}\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf(\"firefox\") !== -1;\n var isIE = navigator.userAgent.indexOf(\"Trident\") !== -1;\n if (isIE && isHTMLElement(element)) {\n var elementCss = getComputedStyle(element);\n if (elementCss.position === \"fixed\") {\n return null;\n }\n }\n var currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && [\"html\", \"body\"].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode);\n if (css.transform !== \"none\" || css.perspective !== \"none\" || css.contain === \"paint\" || [\"transform\", \"perspective\"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === \"filter\" || isFirefox && css.filter && css.filter !== \"none\") {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n return null;\n}\nfunction getOffsetParent(element) {\n var window2 = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === \"static\") {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n if (offsetParent && (getNodeName(offsetParent) === \"html\" || getNodeName(offsetParent) === \"body\" && getComputedStyle(offsetParent).position === \"static\")) {\n return window2;\n }\n return offsetParent || getContainingBlock(element) || window2;\n}\nfunction getMainAxisFromPlacement(placement) {\n return [\"top\", \"bottom\"].indexOf(placement) >= 0 ? \"x\" : \"y\";\n}\nfunction within(min$1, value, max$1) {\n return max(min$1, min(value, max$1));\n}\nfunction withinMaxClamp(min2, value, max2) {\n var v = within(min2, value, max2);\n return v > max2 ? max2 : v;\n}\nfunction getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}\nfunction mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}\nfunction expandToHashMap(value, keys) {\n return keys.reduce(function(hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}\nvar toPaddingObject = function toPaddingObject2(padding, state) {\n padding = typeof padding === \"function\" ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== \"number\" ? padding : expandToHashMap(padding, basePlacements));\n};\nfunction arrow(_ref) {\n var _state$modifiersData$;\n var state = _ref.state, name = _ref.name, options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets2 = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? \"height\" : \"width\";\n if (!arrowElement || !popperOffsets2) {\n return;\n }\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === \"y\" ? top : left;\n var maxProp = axis === \"y\" ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];\n var startDiff = popperOffsets2[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === \"y\" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2;\n var min2 = paddingObject[minProp];\n var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset2 = within(min2, center, max2);\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);\n}\nfunction effect$1(_ref2) {\n var state = _ref2.state, options = _ref2.options;\n var _options$element = options.element, arrowElement = _options$element === void 0 ? \"[data-popper-arrow]\" : _options$element;\n if (arrowElement == null) {\n return;\n }\n if (typeof arrowElement === \"string\") {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n if (!arrowElement) {\n return;\n }\n }\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n state.elements.arrow = arrowElement;\n}\nvar arrow$1 = {\n name: \"arrow\",\n enabled: true,\n phase: \"main\",\n fn: arrow,\n effect: effect$1,\n requires: [\"popperOffsets\"],\n requiresIfExists: [\"preventOverflow\"]\n};\nfunction getVariation(placement) {\n return placement.split(\"-\")[1];\n}\nvar unsetSides = {\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n left: \"auto\"\n};\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x, y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\nfunction mapToStyles(_ref2) {\n var _Object$assign2;\n var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;\n var _ref3 = typeof roundOffsets === \"function\" ? roundOffsets({\n x,\n y\n }) : {\n x,\n y\n };\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty(\"x\");\n var hasY = offsets.hasOwnProperty(\"y\");\n var sideX = left;\n var sideY = top;\n var win = window;\n if (adaptive) {\n var offsetParent = getOffsetParent(popper2);\n var heightProp = \"clientHeight\";\n var widthProp = \"clientWidth\";\n if (offsetParent === getWindow(popper2)) {\n offsetParent = getDocumentElement(popper2);\n if (getComputedStyle(offsetParent).position !== \"static\" && position === \"absolute\") {\n heightProp = \"scrollHeight\";\n widthProp = \"scrollWidth\";\n }\n }\n offsetParent = offsetParent;\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n var commonStyles = Object.assign({\n position\n }, adaptive && unsetSides);\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x,\n y\n }) : {\n x,\n y\n };\n x = _ref4.x;\n y = _ref4.y;\n if (gpuAcceleration) {\n var _Object$assign;\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? \"0\" : \"\", _Object$assign[sideX] = hasX ? \"0\" : \"\", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : \"\", _Object$assign2[sideX] = hasX ? x + \"px\" : \"\", _Object$assign2.transform = \"\", _Object$assign2));\n}\nfunction computeStyles(_ref5) {\n var state = _ref5.state, options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration,\n isFixed: state.options.strategy === \"fixed\"\n };\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive,\n roundOffsets\n })));\n }\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: \"absolute\",\n adaptive: false,\n roundOffsets\n })));\n }\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n \"data-popper-placement\": state.placement\n });\n}\nvar computeStyles$1 = {\n name: \"computeStyles\",\n enabled: true,\n phase: \"beforeWrite\",\n fn: computeStyles,\n data: {}\n};\nvar passive = {\n passive: true\n};\nfunction effect$2(_ref) {\n var state = _ref.state, instance = _ref.instance, options = _ref.options;\n var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;\n var window2 = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n if (scroll) {\n scrollParents.forEach(function(scrollParent) {\n scrollParent.addEventListener(\"scroll\", instance.update, passive);\n });\n }\n if (resize) {\n window2.addEventListener(\"resize\", instance.update, passive);\n }\n return function() {\n if (scroll) {\n scrollParents.forEach(function(scrollParent) {\n scrollParent.removeEventListener(\"scroll\", instance.update, passive);\n });\n }\n if (resize) {\n window2.removeEventListener(\"resize\", instance.update, passive);\n }\n };\n}\nvar eventListeners = {\n name: \"eventListeners\",\n enabled: true,\n phase: \"write\",\n fn: function fn() {\n },\n effect: effect$2,\n data: {}\n};\nvar hash = {\n left: \"right\",\n right: \"left\",\n bottom: \"top\",\n top: \"bottom\"\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function(matched) {\n return hash[matched];\n });\n}\nvar hash$1 = {\n start: \"end\",\n end: \"start\"\n};\nfunction getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function(matched) {\n return hash$1[matched];\n });\n}\nfunction getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft,\n scrollTop\n };\n}\nfunction getWindowScrollBarX(element) {\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}\nfunction getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x: x + getWindowScrollBarX(element),\n y\n };\n}\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n if (getComputedStyle(body || html).direction === \"rtl\") {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction isScrollParent(element) {\n var _getComputedStyle = getComputedStyle(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\nfunction getScrollParent(node) {\n if ([\"html\", \"body\", \"#document\"].indexOf(getNodeName(node)) >= 0) {\n return node.ownerDocument.body;\n }\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n return getScrollParent(getParentNode(node));\n}\nfunction listScrollParents(element, list) {\n var _element$ownerDocumen;\n if (list === void 0) {\n list = [];\n }\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : updatedList.concat(listScrollParents(getParentNode(target)));\n}\nfunction rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n}\nfunction getClippingParents(element) {\n var clippingParents2 = listScrollParents(getParentNode(element));\n var canEscapeClipping = [\"absolute\", \"fixed\"].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n if (!isElement(clipperElement)) {\n return [];\n }\n return clippingParents2.filter(function(clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== \"body\";\n });\n}\nfunction getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === \"clippingParents\" ? getClippingParents(element) : [].concat(boundary);\n var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents2[0];\n var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}\nfunction computeOffsets(_ref) {\n var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference2.x + reference2.width / 2 - element.width / 2;\n var commonY = reference2.y + reference2.height / 2 - element.height / 2;\n var offsets;\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference2.y - element.height\n };\n break;\n case bottom:\n offsets = {\n x: commonX,\n y: reference2.y + reference2.height\n };\n break;\n case right:\n offsets = {\n x: reference2.x + reference2.width,\n y: commonY\n };\n break;\n case left:\n offsets = {\n x: reference2.x - element.width,\n y: commonY\n };\n break;\n default:\n offsets = {\n x: reference2.x,\n y: reference2.y\n };\n }\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n if (mainAxis != null) {\n var len = mainAxis === \"y\" ? \"height\" : \"width\";\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);\n break;\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);\n break;\n }\n }\n return offsets;\n}\nfunction detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== \"number\" ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets2 = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: \"absolute\",\n placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset;\n if (elementContext === popper && offsetData) {\n var offset2 = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function(key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? \"y\" : \"x\";\n overflowOffsets[key] += offset2[axis] * multiply;\n });\n }\n return overflowOffsets;\n}\nfunction computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {\n return getVariation(placement2) === variation;\n }) : basePlacements;\n var allowedPlacements = placements$1.filter(function(placement2) {\n return allowedAutoPlacements.indexOf(placement2) >= 0;\n });\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements$1;\n }\n var overflows = allowedPlacements.reduce(function(acc, placement2) {\n acc[placement2] = detectOverflow(state, {\n placement: placement2,\n boundary,\n rootBoundary,\n padding\n })[getBasePlacement(placement2)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function(a, b) {\n return overflows[a] - overflows[b];\n });\n}\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\nfunction flip(_ref) {\n var state = _ref.state, options = _ref.options, name = _ref.name;\n if (state.modifiersData[name]._skip) {\n return;\n }\n var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {\n return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {\n placement: placement2,\n boundary,\n rootBoundary,\n padding,\n flipVariations,\n allowedAutoPlacements\n }) : placement2);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements2[0];\n for (var i = 0; i < placements2.length; i++) {\n var placement = placements2[i];\n var _basePlacement = getBasePlacement(placement);\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? \"width\" : \"height\";\n var overflow = detectOverflow(state, {\n placement,\n boundary,\n rootBoundary,\n altBoundary,\n padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n if (checks.every(function(check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n checksMap.set(placement, checks);\n }\n if (makeFallbackChecks) {\n var numberOfChecks = flipVariations ? 3 : 1;\n var _loop = function _loop2(_i2) {\n var fittingPlacement = placements2.find(function(placement2) {\n var checks2 = checksMap.get(placement2);\n if (checks2) {\n return checks2.slice(0, _i2).every(function(check) {\n return check;\n });\n }\n });\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n if (_ret === \"break\")\n break;\n }\n }\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n}\nvar flip$1 = {\n name: \"flip\",\n enabled: true,\n phase: \"main\",\n fn: flip,\n requiresIfExists: [\"offset\"],\n data: {\n _skip: false\n }\n};\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function(side) {\n return overflow[side] >= 0;\n });\n}\nfunction hide(_ref) {\n var state = _ref.state, name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: \"reference\"\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets,\n popperEscapeOffsets,\n isReferenceHidden,\n hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n \"data-popper-reference-hidden\": isReferenceHidden,\n \"data-popper-escaped\": hasPopperEscaped\n });\n}\nvar hide$1 = {\n name: \"hide\",\n enabled: true,\n phase: \"main\",\n requiresIfExists: [\"preventOverflow\"],\n fn: hide\n};\nfunction distanceAndSkiddingToXY(placement, rects, offset2) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n var _ref = typeof offset2 === \"function\" ? offset2(Object.assign({}, rects, {\n placement\n })) : offset2, skidding = _ref[0], distance = _ref[1];\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\nfunction offset(_ref2) {\n var state = _ref2.state, options = _ref2.options, name = _ref2.name;\n var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function(acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n state.modifiersData[name] = data;\n}\nvar offset$1 = {\n name: \"offset\",\n enabled: true,\n phase: \"main\",\n requires: [\"popperOffsets\"],\n fn: offset\n};\nfunction popperOffsets(_ref) {\n var state = _ref.state, name = _ref.name;\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: \"absolute\",\n placement: state.placement\n });\n}\nvar popperOffsets$1 = {\n name: \"popperOffsets\",\n enabled: true,\n phase: \"read\",\n fn: popperOffsets,\n data: {}\n};\nfunction getAltAxis(axis) {\n return axis === \"x\" ? \"y\" : \"x\";\n}\nfunction preventOverflow(_ref) {\n var state = _ref.state, options = _ref.options, name = _ref.name;\n var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary,\n rootBoundary,\n padding,\n altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets2 = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === \"function\" ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === \"number\" ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n if (!popperOffsets2) {\n return;\n }\n if (checkMainAxis) {\n var _offsetModifierState$;\n var mainSide = mainAxis === \"y\" ? top : left;\n var altSide = mainAxis === \"y\" ? bottom : right;\n var len = mainAxis === \"y\" ? \"height\" : \"width\";\n var offset2 = popperOffsets2[mainAxis];\n var min$1 = offset2 + overflow[mainSide];\n var max$1 = offset2 - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData[\"arrow#persistent\"] ? state.modifiersData[\"arrow#persistent\"].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide];\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === \"y\" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset2 + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1);\n popperOffsets2[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset2;\n }\n if (checkAltAxis) {\n var _offsetModifierState$2;\n var _mainSide = mainAxis === \"x\" ? top : left;\n var _altSide = mainAxis === \"x\" ? bottom : right;\n var _offset = popperOffsets2[altAxis];\n var _len = altAxis === \"y\" ? \"height\" : \"width\";\n var _min = _offset + overflow[_mainSide];\n var _max = _offset - overflow[_altSide];\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n popperOffsets2[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n state.modifiersData[name] = data;\n}\nvar preventOverflow$1 = {\n name: \"preventOverflow\",\n enabled: true,\n phase: \"main\",\n fn: preventOverflow,\n requiresIfExists: [\"offset\"]\n};\nfunction getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}\nfunction getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n}\nfunction getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== \"body\" || isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function(modifier) {\n map.set(modifier.name, modifier);\n });\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function(dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n modifiers.forEach(function(modifier) {\n if (!visited.has(modifier.name)) {\n sort(modifier);\n }\n });\n return result;\n}\nfunction orderModifiers(modifiers) {\n var orderedModifiers = order(modifiers);\n return modifierPhases.reduce(function(acc, phase) {\n return acc.concat(orderedModifiers.filter(function(modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}\nfunction debounce(fn2) {\n var pending;\n return function() {\n if (!pending) {\n pending = new Promise(function(resolve) {\n Promise.resolve().then(function() {\n pending = void 0;\n resolve(fn2());\n });\n });\n }\n return pending;\n };\n}\nfunction mergeByName(modifiers) {\n var merged = modifiers.reduce(function(merged2, current) {\n var existing = merged2[current.name];\n merged2[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged2;\n }, {});\n return Object.keys(merged).map(function(key) {\n return merged[key];\n });\n}\nvar DEFAULT_OPTIONS = {\n placement: \"bottom\",\n modifiers: [],\n strategy: \"absolute\"\n};\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return !args.some(function(element) {\n return !(element && typeof element.getBoundingClientRect === \"function\");\n });\n}\nfunction popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper2(reference2, popper2, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n var state = {\n placement: \"bottom\",\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference2,\n popper: popper2\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state,\n setOptions: function setOptions(setOptionsAction) {\n var options2 = typeof setOptionsAction === \"function\" ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options2);\n state.scrollParents = {\n reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],\n popper: listScrollParents(popper2)\n };\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers)));\n state.orderedModifiers = orderedModifiers.filter(function(m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;\n if (!areValidElements(reference3, popper3)) {\n return;\n }\n state.rects = {\n reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === \"fixed\"),\n popper: getLayoutRect(popper3)\n };\n state.reset = false;\n state.placement = state.options.placement;\n state.orderedModifiers.forEach(function(modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n var _state$orderedModifie = state.orderedModifiers[index], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;\n if (typeof fn2 === \"function\") {\n state = fn2({\n state,\n options: _options,\n name,\n instance\n }) || state;\n }\n }\n },\n update: debounce(function() {\n return new Promise(function(resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n if (!areValidElements(reference2, popper2)) {\n return instance;\n }\n instance.setOptions(options).then(function(state2) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state2);\n }\n });\n function runModifierEffects() {\n state.orderedModifiers.forEach(function(_ref3) {\n var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect2 = _ref3.effect;\n if (typeof effect2 === \"function\") {\n var cleanupFn = effect2({\n state,\n name,\n instance,\n options: options2\n });\n var noopFn = function noopFn2() {\n };\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function(fn2) {\n return fn2();\n });\n effectCleanupFns = [];\n }\n return instance;\n };\n}\nvar createPopper = /* @__PURE__ */ popperGenerator();\nvar defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];\nvar createPopper$1 = /* @__PURE__ */ popperGenerator({\n defaultModifiers\n});\nvar defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];\nvar createPopper$2 = /* @__PURE__ */ popperGenerator({\n defaultModifiers: defaultModifiers$1\n});\nexport {afterMain, afterRead, afterWrite, applyStyles$1 as applyStyles, arrow$1 as arrow, auto, basePlacements, beforeMain, beforeRead, beforeWrite, bottom, clippingParents, computeStyles$1 as computeStyles, createPopper$2 as createPopper, createPopper as createPopperBase, createPopper$1 as createPopperLite, detectOverflow, end, eventListeners, flip$1 as flip, hide$1 as hide, left, main, modifierPhases, offset$1 as offset, placements, popper, popperGenerator, popperOffsets$1 as popperOffsets, preventOverflow$1 as preventOverflow, read, reference, right, start, top, variationPlacements, viewport, write};\nexport default null;\n", "import {applyStyles, createPopper} from \"/-/@popperjs/core@v2.11.2-7HHj50CzBHDvkIAwMPdO/dist=es2019,mode=imports/optimized/@popperjs/core.js\";\nvar ROUND_ARROW = '';\nvar BOX_CLASS = \"tippy-box\";\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar SVG_ARROW_CLASS = \"tippy-svg-arrow\";\nvar TOUCH_OPTIONS = {\n passive: true,\n capture: true\n};\nvar TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO2() {\n return document.body;\n};\nfunction getValueAtIndexOrReturn(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;\n }\n return value;\n}\nfunction isType(value, type) {\n var str = {}.toString.call(value);\n return str.indexOf(\"[object\") === 0 && str.indexOf(type + \"]\") > -1;\n}\nfunction invokeWithArgsOrReturn(value, args) {\n return typeof value === \"function\" ? value.apply(void 0, args) : value;\n}\nfunction debounce(fn5, ms) {\n if (ms === 0) {\n return fn5;\n }\n var timeout;\n return function(arg) {\n clearTimeout(timeout);\n timeout = setTimeout(function() {\n fn5(arg);\n }, ms);\n };\n}\nfunction removeProperties(obj, keys) {\n var clone = Object.assign({}, obj);\n keys.forEach(function(key) {\n delete clone[key];\n });\n return clone;\n}\nfunction splitBySpaces(value) {\n return value.split(/\\s+/).filter(Boolean);\n}\nfunction normalizeToArray(value) {\n return [].concat(value);\n}\nfunction pushIfUnique(arr, value) {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\nfunction unique(arr) {\n return arr.filter(function(item, index) {\n return arr.indexOf(item) === index;\n });\n}\nfunction getBasePlacement(placement) {\n return placement.split(\"-\")[0];\n}\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\nfunction removeUndefinedProps(obj) {\n return Object.keys(obj).reduce(function(acc, key) {\n if (obj[key] !== void 0) {\n acc[key] = obj[key];\n }\n return acc;\n }, {});\n}\nfunction div() {\n return document.createElement(\"div\");\n}\nfunction isElement(value) {\n return [\"Element\", \"Fragment\"].some(function(type) {\n return isType(value, type);\n });\n}\nfunction isNodeList(value) {\n return isType(value, \"NodeList\");\n}\nfunction isMouseEvent(value) {\n return isType(value, \"MouseEvent\");\n}\nfunction isReferenceElement(value) {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\nfunction getArrayOfElements(value) {\n if (isElement(value)) {\n return [value];\n }\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n if (Array.isArray(value)) {\n return value;\n }\n return arrayFrom(document.querySelectorAll(value));\n}\nfunction setTransitionDuration(els, value) {\n els.forEach(function(el) {\n if (el) {\n el.style.transitionDuration = value + \"ms\";\n }\n });\n}\nfunction setVisibilityState(els, state) {\n els.forEach(function(el) {\n if (el) {\n el.setAttribute(\"data-state\", state);\n }\n });\n}\nfunction getOwnerDocument(elementOrElements) {\n var _element$ownerDocumen;\n var _normalizeToArray = normalizeToArray(elementOrElements), element = _normalizeToArray[0];\n return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;\n}\nfunction isCursorOutsideInteractiveBorder(popperTreeData, event) {\n var clientX = event.clientX, clientY = event.clientY;\n return popperTreeData.every(function(_ref) {\n var popperRect = _ref.popperRect, popperState = _ref.popperState, props = _ref.props;\n var interactiveBorder = props.interactiveBorder;\n var basePlacement = getBasePlacement(popperState.placement);\n var offsetData = popperState.modifiersData.offset;\n if (!offsetData) {\n return true;\n }\n var topDistance = basePlacement === \"bottom\" ? offsetData.top.y : 0;\n var bottomDistance = basePlacement === \"top\" ? offsetData.bottom.y : 0;\n var leftDistance = basePlacement === \"right\" ? offsetData.left.x : 0;\n var rightDistance = basePlacement === \"left\" ? offsetData.right.x : 0;\n var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;\n var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;\n var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;\n return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n });\n}\nfunction updateTransitionEndListener(box, action, listener) {\n var method = action + \"EventListener\";\n [\"transitionend\", \"webkitTransitionEnd\"].forEach(function(event) {\n box[method](event, listener);\n });\n}\nfunction actualContains(parent, child) {\n var target = child;\n while (target) {\n var _target$getRootNode;\n if (parent.contains(target)) {\n return true;\n }\n target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;\n }\n return false;\n}\nvar currentInput = {\n isTouch: false\n};\nvar lastMouseMoveTime = 0;\nfunction onDocumentTouchStart() {\n if (currentInput.isTouch) {\n return;\n }\n currentInput.isTouch = true;\n if (window.performance) {\n document.addEventListener(\"mousemove\", onDocumentMouseMove);\n }\n}\nfunction onDocumentMouseMove() {\n var now = performance.now();\n if (now - lastMouseMoveTime < 20) {\n currentInput.isTouch = false;\n document.removeEventListener(\"mousemove\", onDocumentMouseMove);\n }\n lastMouseMoveTime = now;\n}\nfunction onWindowBlur() {\n var activeElement = document.activeElement;\n if (isReferenceElement(activeElement)) {\n var instance = activeElement._tippy;\n if (activeElement.blur && !instance.state.isVisible) {\n activeElement.blur();\n }\n }\n}\nfunction bindGlobalEventListeners() {\n document.addEventListener(\"touchstart\", onDocumentTouchStart, TOUCH_OPTIONS);\n window.addEventListener(\"blur\", onWindowBlur);\n}\nvar isBrowser = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nvar isIE11 = isBrowser ? !!window.msCrypto : false;\nvar pluginProps = {\n animateFill: false,\n followCursor: false,\n inlinePositioning: false,\n sticky: false\n};\nvar renderProps = {\n allowHTML: false,\n animation: \"fade\",\n arrow: true,\n content: \"\",\n inertia: false,\n maxWidth: 350,\n role: \"tooltip\",\n theme: \"\",\n zIndex: 9999\n};\nvar defaultProps = Object.assign({\n appendTo: TIPPY_DEFAULT_APPEND_TO,\n aria: {\n content: \"auto\",\n expanded: \"auto\"\n },\n delay: 0,\n duration: [300, 250],\n getReferenceClientRect: null,\n hideOnClick: true,\n ignoreAttributes: false,\n interactive: false,\n interactiveBorder: 2,\n interactiveDebounce: 0,\n moveTransition: \"\",\n offset: [0, 10],\n onAfterUpdate: function onAfterUpdate() {\n },\n onBeforeUpdate: function onBeforeUpdate() {\n },\n onCreate: function onCreate() {\n },\n onDestroy: function onDestroy() {\n },\n onHidden: function onHidden() {\n },\n onHide: function onHide() {\n },\n onMount: function onMount() {\n },\n onShow: function onShow() {\n },\n onShown: function onShown() {\n },\n onTrigger: function onTrigger() {\n },\n onUntrigger: function onUntrigger() {\n },\n onClickOutside: function onClickOutside() {\n },\n placement: \"top\",\n plugins: [],\n popperOptions: {},\n render: null,\n showOnCreate: false,\n touch: true,\n trigger: \"mouseenter focus\",\n triggerTarget: null\n}, pluginProps, renderProps);\nvar defaultKeys = Object.keys(defaultProps);\nvar setDefaultProps = function setDefaultProps2(partialProps) {\n var keys = Object.keys(partialProps);\n keys.forEach(function(key) {\n defaultProps[key] = partialProps[key];\n });\n};\nfunction getExtendedPassedProps(passedProps) {\n var plugins = passedProps.plugins || [];\n var pluginProps2 = plugins.reduce(function(acc, plugin) {\n var name = plugin.name, defaultValue = plugin.defaultValue;\n if (name) {\n var _name;\n acc[name] = passedProps[name] !== void 0 ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;\n }\n return acc;\n }, {});\n return Object.assign({}, passedProps, pluginProps2);\n}\nfunction getDataAttributeProps(reference, plugins) {\n var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {\n plugins\n }))) : defaultKeys;\n var props = propKeys.reduce(function(acc, key) {\n var valueAsString = (reference.getAttribute(\"data-tippy-\" + key) || \"\").trim();\n if (!valueAsString) {\n return acc;\n }\n if (key === \"content\") {\n acc[key] = valueAsString;\n } else {\n try {\n acc[key] = JSON.parse(valueAsString);\n } catch (e) {\n acc[key] = valueAsString;\n }\n }\n return acc;\n }, {});\n return props;\n}\nfunction evaluateProps(reference, props) {\n var out = Object.assign({}, props, {\n content: invokeWithArgsOrReturn(props.content, [reference])\n }, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));\n out.aria = Object.assign({}, defaultProps.aria, out.aria);\n out.aria = {\n expanded: out.aria.expanded === \"auto\" ? props.interactive : out.aria.expanded,\n content: out.aria.content === \"auto\" ? props.interactive ? null : \"describedby\" : out.aria.content\n };\n return out;\n}\nvar innerHTML = function innerHTML2() {\n return \"innerHTML\";\n};\nfunction dangerouslySetInnerHTML(element, html) {\n element[innerHTML()] = html;\n}\nfunction createArrowElement(value) {\n var arrow = div();\n if (value === true) {\n arrow.className = ARROW_CLASS;\n } else {\n arrow.className = SVG_ARROW_CLASS;\n if (isElement(value)) {\n arrow.appendChild(value);\n } else {\n dangerouslySetInnerHTML(arrow, value);\n }\n }\n return arrow;\n}\nfunction setContent(content, props) {\n if (isElement(props.content)) {\n dangerouslySetInnerHTML(content, \"\");\n content.appendChild(props.content);\n } else if (typeof props.content !== \"function\") {\n if (props.allowHTML) {\n dangerouslySetInnerHTML(content, props.content);\n } else {\n content.textContent = props.content;\n }\n }\n}\nfunction getChildren(popper) {\n var box = popper.firstElementChild;\n var boxChildren = arrayFrom(box.children);\n return {\n box,\n content: boxChildren.find(function(node) {\n return node.classList.contains(CONTENT_CLASS);\n }),\n arrow: boxChildren.find(function(node) {\n return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);\n }),\n backdrop: boxChildren.find(function(node) {\n return node.classList.contains(BACKDROP_CLASS);\n })\n };\n}\nfunction render(instance) {\n var popper = div();\n var box = div();\n box.className = BOX_CLASS;\n box.setAttribute(\"data-state\", \"hidden\");\n box.setAttribute(\"tabindex\", \"-1\");\n var content = div();\n content.className = CONTENT_CLASS;\n content.setAttribute(\"data-state\", \"hidden\");\n setContent(content, instance.props);\n popper.appendChild(box);\n box.appendChild(content);\n onUpdate(instance.props, instance.props);\n function onUpdate(prevProps, nextProps) {\n var _getChildren = getChildren(popper), box2 = _getChildren.box, content2 = _getChildren.content, arrow = _getChildren.arrow;\n if (nextProps.theme) {\n box2.setAttribute(\"data-theme\", nextProps.theme);\n } else {\n box2.removeAttribute(\"data-theme\");\n }\n if (typeof nextProps.animation === \"string\") {\n box2.setAttribute(\"data-animation\", nextProps.animation);\n } else {\n box2.removeAttribute(\"data-animation\");\n }\n if (nextProps.inertia) {\n box2.setAttribute(\"data-inertia\", \"\");\n } else {\n box2.removeAttribute(\"data-inertia\");\n }\n box2.style.maxWidth = typeof nextProps.maxWidth === \"number\" ? nextProps.maxWidth + \"px\" : nextProps.maxWidth;\n if (nextProps.role) {\n box2.setAttribute(\"role\", nextProps.role);\n } else {\n box2.removeAttribute(\"role\");\n }\n if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) {\n setContent(content2, instance.props);\n }\n if (nextProps.arrow) {\n if (!arrow) {\n box2.appendChild(createArrowElement(nextProps.arrow));\n } else if (prevProps.arrow !== nextProps.arrow) {\n box2.removeChild(arrow);\n box2.appendChild(createArrowElement(nextProps.arrow));\n }\n } else if (arrow) {\n box2.removeChild(arrow);\n }\n }\n return {\n popper,\n onUpdate\n };\n}\nrender.$$tippy = true;\nvar idCounter = 1;\nvar mouseMoveListeners = [];\nvar mountedInstances = [];\nfunction createTippy(reference, passedProps) {\n var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps))));\n var showTimeout;\n var hideTimeout;\n var scheduleHideAnimationFrame;\n var isVisibleFromClick = false;\n var didHideDueToDocumentMouseDown = false;\n var didTouchMove = false;\n var ignoreOnFirstUpdate = false;\n var lastTriggerEvent;\n var currentTransitionEndListener;\n var onFirstUpdate;\n var listeners = [];\n var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n var currentTarget;\n var id = idCounter++;\n var popperInstance = null;\n var plugins = unique(props.plugins);\n var state = {\n isEnabled: true,\n isVisible: false,\n isDestroyed: false,\n isMounted: false,\n isShown: false\n };\n var instance = {\n id,\n reference,\n popper: div(),\n popperInstance,\n props,\n state,\n plugins,\n clearDelayTimeouts,\n setProps,\n setContent: setContent2,\n show,\n hide,\n hideWithInteractivity,\n enable,\n disable,\n unmount,\n destroy\n };\n if (!props.render) {\n return instance;\n }\n var _props$render = props.render(instance), popper = _props$render.popper, onUpdate = _props$render.onUpdate;\n popper.setAttribute(\"data-tippy-root\", \"\");\n popper.id = \"tippy-\" + instance.id;\n instance.popper = popper;\n reference._tippy = instance;\n popper._tippy = instance;\n var pluginsHooks = plugins.map(function(plugin) {\n return plugin.fn(instance);\n });\n var hasAriaExpanded = reference.hasAttribute(\"aria-expanded\");\n addListeners();\n handleAriaExpandedAttribute();\n handleStyles();\n invokeHook(\"onCreate\", [instance]);\n if (props.showOnCreate) {\n scheduleShow();\n }\n popper.addEventListener(\"mouseenter\", function() {\n if (instance.props.interactive && instance.state.isVisible) {\n instance.clearDelayTimeouts();\n }\n });\n popper.addEventListener(\"mouseleave\", function() {\n if (instance.props.interactive && instance.props.trigger.indexOf(\"mouseenter\") >= 0) {\n getDocument().addEventListener(\"mousemove\", debouncedOnMouseMove);\n }\n });\n return instance;\n function getNormalizedTouchSettings() {\n var touch = instance.props.touch;\n return Array.isArray(touch) ? touch : [touch, 0];\n }\n function getIsCustomTouchBehavior() {\n return getNormalizedTouchSettings()[0] === \"hold\";\n }\n function getIsDefaultRenderFn() {\n var _instance$props$rende;\n return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);\n }\n function getCurrentTarget() {\n return currentTarget || reference;\n }\n function getDocument() {\n var parent = getCurrentTarget().parentNode;\n return parent ? getOwnerDocument(parent) : document;\n }\n function getDefaultTemplateChildren() {\n return getChildren(popper);\n }\n function getDelay(isShow) {\n if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === \"focus\") {\n return 0;\n }\n return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);\n }\n function handleStyles(fromHide) {\n if (fromHide === void 0) {\n fromHide = false;\n }\n popper.style.pointerEvents = instance.props.interactive && !fromHide ? \"\" : \"none\";\n popper.style.zIndex = \"\" + instance.props.zIndex;\n }\n function invokeHook(hook, args, shouldInvokePropsHook) {\n if (shouldInvokePropsHook === void 0) {\n shouldInvokePropsHook = true;\n }\n pluginsHooks.forEach(function(pluginHooks) {\n if (pluginHooks[hook]) {\n pluginHooks[hook].apply(pluginHooks, args);\n }\n });\n if (shouldInvokePropsHook) {\n var _instance$props;\n (_instance$props = instance.props)[hook].apply(_instance$props, args);\n }\n }\n function handleAriaContentAttribute() {\n var aria = instance.props.aria;\n if (!aria.content) {\n return;\n }\n var attr = \"aria-\" + aria.content;\n var id2 = popper.id;\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function(node) {\n var currentValue = node.getAttribute(attr);\n if (instance.state.isVisible) {\n node.setAttribute(attr, currentValue ? currentValue + \" \" + id2 : id2);\n } else {\n var nextValue = currentValue && currentValue.replace(id2, \"\").trim();\n if (nextValue) {\n node.setAttribute(attr, nextValue);\n } else {\n node.removeAttribute(attr);\n }\n }\n });\n }\n function handleAriaExpandedAttribute() {\n if (hasAriaExpanded || !instance.props.aria.expanded) {\n return;\n }\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function(node) {\n if (instance.props.interactive) {\n node.setAttribute(\"aria-expanded\", instance.state.isVisible && node === getCurrentTarget() ? \"true\" : \"false\");\n } else {\n node.removeAttribute(\"aria-expanded\");\n }\n });\n }\n function cleanupInteractiveMouseListeners() {\n getDocument().removeEventListener(\"mousemove\", debouncedOnMouseMove);\n mouseMoveListeners = mouseMoveListeners.filter(function(listener) {\n return listener !== debouncedOnMouseMove;\n });\n }\n function onDocumentPress(event) {\n if (currentInput.isTouch) {\n if (didTouchMove || event.type === \"mousedown\") {\n return;\n }\n }\n var actualTarget = event.composedPath && event.composedPath()[0] || event.target;\n if (instance.props.interactive && actualContains(popper, actualTarget)) {\n return;\n }\n if (normalizeToArray(instance.props.triggerTarget || reference).some(function(el) {\n return actualContains(el, actualTarget);\n })) {\n if (currentInput.isTouch) {\n return;\n }\n if (instance.state.isVisible && instance.props.trigger.indexOf(\"click\") >= 0) {\n return;\n }\n } else {\n invokeHook(\"onClickOutside\", [instance, event]);\n }\n if (instance.props.hideOnClick === true) {\n instance.clearDelayTimeouts();\n instance.hide();\n didHideDueToDocumentMouseDown = true;\n setTimeout(function() {\n didHideDueToDocumentMouseDown = false;\n });\n if (!instance.state.isMounted) {\n removeDocumentPress();\n }\n }\n }\n function onTouchMove() {\n didTouchMove = true;\n }\n function onTouchStart() {\n didTouchMove = false;\n }\n function addDocumentPress() {\n var doc = getDocument();\n doc.addEventListener(\"mousedown\", onDocumentPress, true);\n doc.addEventListener(\"touchend\", onDocumentPress, TOUCH_OPTIONS);\n doc.addEventListener(\"touchstart\", onTouchStart, TOUCH_OPTIONS);\n doc.addEventListener(\"touchmove\", onTouchMove, TOUCH_OPTIONS);\n }\n function removeDocumentPress() {\n var doc = getDocument();\n doc.removeEventListener(\"mousedown\", onDocumentPress, true);\n doc.removeEventListener(\"touchend\", onDocumentPress, TOUCH_OPTIONS);\n doc.removeEventListener(\"touchstart\", onTouchStart, TOUCH_OPTIONS);\n doc.removeEventListener(\"touchmove\", onTouchMove, TOUCH_OPTIONS);\n }\n function onTransitionedOut(duration, callback) {\n onTransitionEnd(duration, function() {\n if (!instance.state.isVisible && popper.parentNode && popper.parentNode.contains(popper)) {\n callback();\n }\n });\n }\n function onTransitionedIn(duration, callback) {\n onTransitionEnd(duration, callback);\n }\n function onTransitionEnd(duration, callback) {\n var box = getDefaultTemplateChildren().box;\n function listener(event) {\n if (event.target === box) {\n updateTransitionEndListener(box, \"remove\", listener);\n callback();\n }\n }\n if (duration === 0) {\n return callback();\n }\n updateTransitionEndListener(box, \"remove\", currentTransitionEndListener);\n updateTransitionEndListener(box, \"add\", listener);\n currentTransitionEndListener = listener;\n }\n function on(eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function(node) {\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node,\n eventType,\n handler,\n options\n });\n });\n }\n function addListeners() {\n if (getIsCustomTouchBehavior()) {\n on(\"touchstart\", onTrigger2, {\n passive: true\n });\n on(\"touchend\", onMouseLeave, {\n passive: true\n });\n }\n splitBySpaces(instance.props.trigger).forEach(function(eventType) {\n if (eventType === \"manual\") {\n return;\n }\n on(eventType, onTrigger2);\n switch (eventType) {\n case \"mouseenter\":\n on(\"mouseleave\", onMouseLeave);\n break;\n case \"focus\":\n on(isIE11 ? \"focusout\" : \"blur\", onBlurOrFocusOut);\n break;\n case \"focusin\":\n on(\"focusout\", onBlurOrFocusOut);\n break;\n }\n });\n }\n function removeListeners() {\n listeners.forEach(function(_ref) {\n var node = _ref.node, eventType = _ref.eventType, handler = _ref.handler, options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n function onTrigger2(event) {\n var _lastTriggerEvent;\n var shouldScheduleClickHide = false;\n if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {\n return;\n }\n var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === \"focus\";\n lastTriggerEvent = event;\n currentTarget = event.currentTarget;\n handleAriaExpandedAttribute();\n if (!instance.state.isVisible && isMouseEvent(event)) {\n mouseMoveListeners.forEach(function(listener) {\n return listener(event);\n });\n }\n if (event.type === \"click\" && (instance.props.trigger.indexOf(\"mouseenter\") < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {\n shouldScheduleClickHide = true;\n } else {\n scheduleShow(event);\n }\n if (event.type === \"click\") {\n isVisibleFromClick = !shouldScheduleClickHide;\n }\n if (shouldScheduleClickHide && !wasFocused) {\n scheduleHide(event);\n }\n }\n function onMouseMove(event) {\n var target = event.target;\n var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);\n if (event.type === \"mousemove\" && isCursorOverReferenceOrPopper) {\n return;\n }\n var popperTreeData = getNestedPopperTree().concat(popper).map(function(popper2) {\n var _instance$popperInsta;\n var instance2 = popper2._tippy;\n var state2 = (_instance$popperInsta = instance2.popperInstance) == null ? void 0 : _instance$popperInsta.state;\n if (state2) {\n return {\n popperRect: popper2.getBoundingClientRect(),\n popperState: state2,\n props\n };\n }\n return null;\n }).filter(Boolean);\n if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n cleanupInteractiveMouseListeners();\n scheduleHide(event);\n }\n }\n function onMouseLeave(event) {\n var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf(\"click\") >= 0 && isVisibleFromClick;\n if (shouldBail) {\n return;\n }\n if (instance.props.interactive) {\n instance.hideWithInteractivity(event);\n return;\n }\n scheduleHide(event);\n }\n function onBlurOrFocusOut(event) {\n if (instance.props.trigger.indexOf(\"focusin\") < 0 && event.target !== getCurrentTarget()) {\n return;\n }\n if (instance.props.interactive && event.relatedTarget && popper.contains(event.relatedTarget)) {\n return;\n }\n scheduleHide(event);\n }\n function isEventListenerStopped(event) {\n return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf(\"touch\") >= 0 : false;\n }\n function createPopperInstance() {\n destroyPopperInstance();\n var _instance$props2 = instance.props, popperOptions = _instance$props2.popperOptions, placement = _instance$props2.placement, offset = _instance$props2.offset, getReferenceClientRect = _instance$props2.getReferenceClientRect, moveTransition = _instance$props2.moveTransition;\n var arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n var computedReference = getReferenceClientRect ? {\n getBoundingClientRect: getReferenceClientRect,\n contextElement: getReferenceClientRect.contextElement || getCurrentTarget()\n } : reference;\n var tippyModifier = {\n name: \"$$tippy\",\n enabled: true,\n phase: \"beforeWrite\",\n requires: [\"computeStyles\"],\n fn: function fn5(_ref2) {\n var state2 = _ref2.state;\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh = getDefaultTemplateChildren(), box = _getDefaultTemplateCh.box;\n [\"placement\", \"reference-hidden\", \"escaped\"].forEach(function(attr) {\n if (attr === \"placement\") {\n box.setAttribute(\"data-placement\", state2.placement);\n } else {\n if (state2.attributes.popper[\"data-popper-\" + attr]) {\n box.setAttribute(\"data-\" + attr, \"\");\n } else {\n box.removeAttribute(\"data-\" + attr);\n }\n }\n });\n state2.attributes.popper = {};\n }\n }\n };\n var modifiers = [{\n name: \"offset\",\n options: {\n offset\n }\n }, {\n name: \"preventOverflow\",\n options: {\n padding: {\n top: 2,\n bottom: 2,\n left: 5,\n right: 5\n }\n }\n }, {\n name: \"flip\",\n options: {\n padding: 5\n }\n }, {\n name: \"computeStyles\",\n options: {\n adaptive: !moveTransition\n }\n }, tippyModifier];\n if (getIsDefaultRenderFn() && arrow) {\n modifiers.push({\n name: \"arrow\",\n options: {\n element: arrow,\n padding: 3\n }\n });\n }\n modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);\n instance.popperInstance = createPopper(computedReference, popper, Object.assign({}, popperOptions, {\n placement,\n onFirstUpdate,\n modifiers\n }));\n }\n function destroyPopperInstance() {\n if (instance.popperInstance) {\n instance.popperInstance.destroy();\n instance.popperInstance = null;\n }\n }\n function mount() {\n var appendTo = instance.props.appendTo;\n var parentNode;\n var node = getCurrentTarget();\n if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === \"parent\") {\n parentNode = node.parentNode;\n } else {\n parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n }\n if (!parentNode.contains(popper)) {\n parentNode.appendChild(popper);\n }\n instance.state.isMounted = true;\n createPopperInstance();\n }\n function getNestedPopperTree() {\n return arrayFrom(popper.querySelectorAll(\"[data-tippy-root]\"));\n }\n function scheduleShow(event) {\n instance.clearDelayTimeouts();\n if (event) {\n invokeHook(\"onTrigger\", [instance, event]);\n }\n addDocumentPress();\n var delay = getDelay(true);\n var _getNormalizedTouchSe = getNormalizedTouchSettings(), touchValue = _getNormalizedTouchSe[0], touchDelay = _getNormalizedTouchSe[1];\n if (currentInput.isTouch && touchValue === \"hold\" && touchDelay) {\n delay = touchDelay;\n }\n if (delay) {\n showTimeout = setTimeout(function() {\n instance.show();\n }, delay);\n } else {\n instance.show();\n }\n }\n function scheduleHide(event) {\n instance.clearDelayTimeouts();\n invokeHook(\"onUntrigger\", [instance, event]);\n if (!instance.state.isVisible) {\n removeDocumentPress();\n return;\n }\n if (instance.props.trigger.indexOf(\"mouseenter\") >= 0 && instance.props.trigger.indexOf(\"click\") >= 0 && [\"mouseleave\", \"mousemove\"].indexOf(event.type) >= 0 && isVisibleFromClick) {\n return;\n }\n var delay = getDelay(false);\n if (delay) {\n hideTimeout = setTimeout(function() {\n if (instance.state.isVisible) {\n instance.hide();\n }\n }, delay);\n } else {\n scheduleHideAnimationFrame = requestAnimationFrame(function() {\n instance.hide();\n });\n }\n }\n function enable() {\n instance.state.isEnabled = true;\n }\n function disable() {\n instance.hide();\n instance.state.isEnabled = false;\n }\n function clearDelayTimeouts() {\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n cancelAnimationFrame(scheduleHideAnimationFrame);\n }\n function setProps(partialProps) {\n if (instance.state.isDestroyed) {\n return;\n }\n invokeHook(\"onBeforeUpdate\", [instance, partialProps]);\n removeListeners();\n var prevProps = instance.props;\n var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {\n ignoreAttributes: true\n }));\n instance.props = nextProps;\n addListeners();\n if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n cleanupInteractiveMouseListeners();\n debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce);\n }\n if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n normalizeToArray(prevProps.triggerTarget).forEach(function(node) {\n node.removeAttribute(\"aria-expanded\");\n });\n } else if (nextProps.triggerTarget) {\n reference.removeAttribute(\"aria-expanded\");\n }\n handleAriaExpandedAttribute();\n handleStyles();\n if (onUpdate) {\n onUpdate(prevProps, nextProps);\n }\n if (instance.popperInstance) {\n createPopperInstance();\n getNestedPopperTree().forEach(function(nestedPopper) {\n requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);\n });\n }\n invokeHook(\"onAfterUpdate\", [instance, partialProps]);\n }\n function setContent2(content) {\n instance.setProps({\n content\n });\n }\n function show() {\n var isAlreadyVisible = instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);\n if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {\n return;\n }\n if (getCurrentTarget().hasAttribute(\"disabled\")) {\n return;\n }\n invokeHook(\"onShow\", [instance], false);\n if (instance.props.onShow(instance) === false) {\n return;\n }\n instance.state.isVisible = true;\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = \"visible\";\n }\n handleStyles();\n addDocumentPress();\n if (!instance.state.isMounted) {\n popper.style.transition = \"none\";\n }\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh2 = getDefaultTemplateChildren(), box = _getDefaultTemplateCh2.box, content = _getDefaultTemplateCh2.content;\n setTransitionDuration([box, content], 0);\n }\n onFirstUpdate = function onFirstUpdate2() {\n var _instance$popperInsta2;\n if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n return;\n }\n ignoreOnFirstUpdate = true;\n void popper.offsetHeight;\n popper.style.transition = instance.props.moveTransition;\n if (getIsDefaultRenderFn() && instance.props.animation) {\n var _getDefaultTemplateCh3 = getDefaultTemplateChildren(), _box = _getDefaultTemplateCh3.box, _content = _getDefaultTemplateCh3.content;\n setTransitionDuration([_box, _content], duration);\n setVisibilityState([_box, _content], \"visible\");\n }\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n pushIfUnique(mountedInstances, instance);\n (_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();\n invokeHook(\"onMount\", [instance]);\n if (instance.props.animation && getIsDefaultRenderFn()) {\n onTransitionedIn(duration, function() {\n instance.state.isShown = true;\n invokeHook(\"onShown\", [instance]);\n });\n }\n };\n mount();\n }\n function hide() {\n var isAlreadyHidden = !instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);\n if (isAlreadyHidden || isDestroyed || isDisabled) {\n return;\n }\n invokeHook(\"onHide\", [instance], false);\n if (instance.props.onHide(instance) === false) {\n return;\n }\n instance.state.isVisible = false;\n instance.state.isShown = false;\n ignoreOnFirstUpdate = false;\n isVisibleFromClick = false;\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = \"hidden\";\n }\n cleanupInteractiveMouseListeners();\n removeDocumentPress();\n handleStyles(true);\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh4 = getDefaultTemplateChildren(), box = _getDefaultTemplateCh4.box, content = _getDefaultTemplateCh4.content;\n if (instance.props.animation) {\n setTransitionDuration([box, content], duration);\n setVisibilityState([box, content], \"hidden\");\n }\n }\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n if (instance.props.animation) {\n if (getIsDefaultRenderFn()) {\n onTransitionedOut(duration, instance.unmount);\n }\n } else {\n instance.unmount();\n }\n }\n function hideWithInteractivity(event) {\n getDocument().addEventListener(\"mousemove\", debouncedOnMouseMove);\n pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n function unmount() {\n if (instance.state.isVisible) {\n instance.hide();\n }\n if (!instance.state.isMounted) {\n return;\n }\n destroyPopperInstance();\n getNestedPopperTree().forEach(function(nestedPopper) {\n nestedPopper._tippy.unmount();\n });\n if (popper.parentNode) {\n popper.parentNode.removeChild(popper);\n }\n mountedInstances = mountedInstances.filter(function(i) {\n return i !== instance;\n });\n instance.state.isMounted = false;\n invokeHook(\"onHidden\", [instance]);\n }\n function destroy() {\n if (instance.state.isDestroyed) {\n return;\n }\n instance.clearDelayTimeouts();\n instance.unmount();\n removeListeners();\n delete reference._tippy;\n instance.state.isDestroyed = true;\n invokeHook(\"onDestroy\", [instance]);\n }\n}\nfunction tippy(targets, optionalProps) {\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n bindGlobalEventListeners();\n var passedProps = Object.assign({}, optionalProps, {\n plugins\n });\n var elements = getArrayOfElements(targets);\n var instances = elements.reduce(function(acc, reference) {\n var instance = reference && createTippy(reference, passedProps);\n if (instance) {\n acc.push(instance);\n }\n return acc;\n }, []);\n return isElement(targets) ? instances[0] : instances;\n}\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\nvar hideAll = function hideAll2(_temp) {\n var _ref = _temp === void 0 ? {} : _temp, excludedReferenceOrInstance = _ref.exclude, duration = _ref.duration;\n mountedInstances.forEach(function(instance) {\n var isExcluded = false;\n if (excludedReferenceOrInstance) {\n isExcluded = isReferenceElement(excludedReferenceOrInstance) ? instance.reference === excludedReferenceOrInstance : instance.popper === excludedReferenceOrInstance.popper;\n }\n if (!isExcluded) {\n var originalDuration = instance.props.duration;\n instance.setProps({\n duration\n });\n instance.hide();\n if (!instance.state.isDestroyed) {\n instance.setProps({\n duration: originalDuration\n });\n }\n }\n });\n};\nvar applyStylesModifier = Object.assign({}, applyStyles, {\n effect: function effect(_ref) {\n var state = _ref.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: \"0\",\n top: \"0\",\n margin: \"0\"\n },\n arrow: {\n position: \"absolute\"\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n }\n});\nvar createSingleton = function createSingleton2(tippyInstances, optionalProps) {\n var _optionalProps$popper;\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n var individualInstances = tippyInstances;\n var references = [];\n var triggerTargets = [];\n var currentTarget;\n var overrides = optionalProps.overrides;\n var interceptSetPropsCleanups = [];\n var shownOnCreate = false;\n function setTriggerTargets() {\n triggerTargets = individualInstances.map(function(instance) {\n return normalizeToArray(instance.props.triggerTarget || instance.reference);\n }).reduce(function(acc, item) {\n return acc.concat(item);\n }, []);\n }\n function setReferences() {\n references = individualInstances.map(function(instance) {\n return instance.reference;\n });\n }\n function enableInstances(isEnabled) {\n individualInstances.forEach(function(instance) {\n if (isEnabled) {\n instance.enable();\n } else {\n instance.disable();\n }\n });\n }\n function interceptSetProps(singleton2) {\n return individualInstances.map(function(instance) {\n var originalSetProps2 = instance.setProps;\n instance.setProps = function(props) {\n originalSetProps2(props);\n if (instance.reference === currentTarget) {\n singleton2.setProps(props);\n }\n };\n return function() {\n instance.setProps = originalSetProps2;\n };\n });\n }\n function prepareInstance(singleton2, target) {\n var index = triggerTargets.indexOf(target);\n if (target === currentTarget) {\n return;\n }\n currentTarget = target;\n var overrideProps = (overrides || []).concat(\"content\").reduce(function(acc, prop) {\n acc[prop] = individualInstances[index].props[prop];\n return acc;\n }, {});\n singleton2.setProps(Object.assign({}, overrideProps, {\n getReferenceClientRect: typeof overrideProps.getReferenceClientRect === \"function\" ? overrideProps.getReferenceClientRect : function() {\n var _references$index;\n return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect();\n }\n }));\n }\n enableInstances(false);\n setReferences();\n setTriggerTargets();\n var plugin = {\n fn: function fn5() {\n return {\n onDestroy: function onDestroy2() {\n enableInstances(true);\n },\n onHidden: function onHidden2() {\n currentTarget = null;\n },\n onClickOutside: function onClickOutside2(instance) {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n currentTarget = null;\n }\n },\n onShow: function onShow2(instance) {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n prepareInstance(instance, references[0]);\n }\n },\n onTrigger: function onTrigger2(instance, event) {\n prepareInstance(instance, event.currentTarget);\n }\n };\n }\n };\n var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, [\"overrides\"]), {\n plugins: [plugin].concat(optionalProps.plugins || []),\n triggerTarget: triggerTargets,\n popperOptions: Object.assign({}, optionalProps.popperOptions, {\n modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])\n })\n }));\n var originalShow = singleton.show;\n singleton.show = function(target) {\n originalShow();\n if (!currentTarget && target == null) {\n return prepareInstance(singleton, references[0]);\n }\n if (currentTarget && target == null) {\n return;\n }\n if (typeof target === \"number\") {\n return references[target] && prepareInstance(singleton, references[target]);\n }\n if (individualInstances.indexOf(target) >= 0) {\n var ref = target.reference;\n return prepareInstance(singleton, ref);\n }\n if (references.indexOf(target) >= 0) {\n return prepareInstance(singleton, target);\n }\n };\n singleton.showNext = function() {\n var first = references[0];\n if (!currentTarget) {\n return singleton.show(0);\n }\n var index = references.indexOf(currentTarget);\n singleton.show(references[index + 1] || first);\n };\n singleton.showPrevious = function() {\n var last = references[references.length - 1];\n if (!currentTarget) {\n return singleton.show(last);\n }\n var index = references.indexOf(currentTarget);\n var target = references[index - 1] || last;\n singleton.show(target);\n };\n var originalSetProps = singleton.setProps;\n singleton.setProps = function(props) {\n overrides = props.overrides || overrides;\n originalSetProps(props);\n };\n singleton.setInstances = function(nextInstances) {\n enableInstances(true);\n interceptSetPropsCleanups.forEach(function(fn5) {\n return fn5();\n });\n individualInstances = nextInstances;\n enableInstances(false);\n setReferences();\n setTriggerTargets();\n interceptSetPropsCleanups = interceptSetProps(singleton);\n singleton.setProps({\n triggerTarget: triggerTargets\n });\n };\n interceptSetPropsCleanups = interceptSetProps(singleton);\n return singleton;\n};\nvar BUBBLING_EVENTS_MAP = {\n mouseover: \"mouseenter\",\n focusin: \"focus\",\n click: \"click\"\n};\nfunction delegate(targets, props) {\n var listeners = [];\n var childTippyInstances = [];\n var disabled = false;\n var target = props.target;\n var nativeProps = removeProperties(props, [\"target\"]);\n var parentProps = Object.assign({}, nativeProps, {\n trigger: \"manual\",\n touch: false\n });\n var childProps = Object.assign({\n touch: defaultProps.touch\n }, nativeProps, {\n showOnCreate: true\n });\n var returnValue = tippy(targets, parentProps);\n var normalizedReturnValue = normalizeToArray(returnValue);\n function onTrigger2(event) {\n if (!event.target || disabled) {\n return;\n }\n var targetNode = event.target.closest(target);\n if (!targetNode) {\n return;\n }\n var trigger = targetNode.getAttribute(\"data-tippy-trigger\") || props.trigger || defaultProps.trigger;\n if (targetNode._tippy) {\n return;\n }\n if (event.type === \"touchstart\" && typeof childProps.touch === \"boolean\") {\n return;\n }\n if (event.type !== \"touchstart\" && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {\n return;\n }\n var instance = tippy(targetNode, childProps);\n if (instance) {\n childTippyInstances = childTippyInstances.concat(instance);\n }\n }\n function on(node, eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node,\n eventType,\n handler,\n options\n });\n }\n function addEventListeners(instance) {\n var reference = instance.reference;\n on(reference, \"touchstart\", onTrigger2, TOUCH_OPTIONS);\n on(reference, \"mouseover\", onTrigger2);\n on(reference, \"focusin\", onTrigger2);\n on(reference, \"click\", onTrigger2);\n }\n function removeEventListeners() {\n listeners.forEach(function(_ref) {\n var node = _ref.node, eventType = _ref.eventType, handler = _ref.handler, options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n function applyMutations(instance) {\n var originalDestroy = instance.destroy;\n var originalEnable = instance.enable;\n var originalDisable = instance.disable;\n instance.destroy = function(shouldDestroyChildInstances) {\n if (shouldDestroyChildInstances === void 0) {\n shouldDestroyChildInstances = true;\n }\n if (shouldDestroyChildInstances) {\n childTippyInstances.forEach(function(instance2) {\n instance2.destroy();\n });\n }\n childTippyInstances = [];\n removeEventListeners();\n originalDestroy();\n };\n instance.enable = function() {\n originalEnable();\n childTippyInstances.forEach(function(instance2) {\n return instance2.enable();\n });\n disabled = false;\n };\n instance.disable = function() {\n originalDisable();\n childTippyInstances.forEach(function(instance2) {\n return instance2.disable();\n });\n disabled = true;\n };\n addEventListeners(instance);\n }\n normalizedReturnValue.forEach(applyMutations);\n return returnValue;\n}\nvar animateFill = {\n name: \"animateFill\",\n defaultValue: false,\n fn: function fn(instance) {\n var _instance$props$rende;\n if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {\n return {};\n }\n var _getChildren = getChildren(instance.popper), box = _getChildren.box, content = _getChildren.content;\n var backdrop = instance.props.animateFill ? createBackdropElement() : null;\n return {\n onCreate: function onCreate2() {\n if (backdrop) {\n box.insertBefore(backdrop, box.firstElementChild);\n box.setAttribute(\"data-animatefill\", \"\");\n box.style.overflow = \"hidden\";\n instance.setProps({\n arrow: false,\n animation: \"shift-away\"\n });\n }\n },\n onMount: function onMount2() {\n if (backdrop) {\n var transitionDuration = box.style.transitionDuration;\n var duration = Number(transitionDuration.replace(\"ms\", \"\"));\n content.style.transitionDelay = Math.round(duration / 10) + \"ms\";\n backdrop.style.transitionDuration = transitionDuration;\n setVisibilityState([backdrop], \"visible\");\n }\n },\n onShow: function onShow2() {\n if (backdrop) {\n backdrop.style.transitionDuration = \"0ms\";\n }\n },\n onHide: function onHide2() {\n if (backdrop) {\n setVisibilityState([backdrop], \"hidden\");\n }\n }\n };\n }\n};\nfunction createBackdropElement() {\n var backdrop = div();\n backdrop.className = BACKDROP_CLASS;\n setVisibilityState([backdrop], \"hidden\");\n return backdrop;\n}\nvar mouseCoords = {\n clientX: 0,\n clientY: 0\n};\nvar activeInstances = [];\nfunction storeMouseCoords(_ref) {\n var clientX = _ref.clientX, clientY = _ref.clientY;\n mouseCoords = {\n clientX,\n clientY\n };\n}\nfunction addMouseCoordsListener(doc) {\n doc.addEventListener(\"mousemove\", storeMouseCoords);\n}\nfunction removeMouseCoordsListener(doc) {\n doc.removeEventListener(\"mousemove\", storeMouseCoords);\n}\nvar followCursor = {\n name: \"followCursor\",\n defaultValue: false,\n fn: function fn2(instance) {\n var reference = instance.reference;\n var doc = getOwnerDocument(instance.props.triggerTarget || reference);\n var isInternalUpdate = false;\n var wasFocusEvent = false;\n var isUnmounted = true;\n var prevProps = instance.props;\n function getIsInitialBehavior() {\n return instance.props.followCursor === \"initial\" && instance.state.isVisible;\n }\n function addListener() {\n doc.addEventListener(\"mousemove\", onMouseMove);\n }\n function removeListener() {\n doc.removeEventListener(\"mousemove\", onMouseMove);\n }\n function unsetGetReferenceClientRect() {\n isInternalUpdate = true;\n instance.setProps({\n getReferenceClientRect: null\n });\n isInternalUpdate = false;\n }\n function onMouseMove(event) {\n var isCursorOverReference = event.target ? reference.contains(event.target) : true;\n var followCursor2 = instance.props.followCursor;\n var clientX = event.clientX, clientY = event.clientY;\n var rect = reference.getBoundingClientRect();\n var relativeX = clientX - rect.left;\n var relativeY = clientY - rect.top;\n if (isCursorOverReference || !instance.props.interactive) {\n instance.setProps({\n getReferenceClientRect: function getReferenceClientRect() {\n var rect2 = reference.getBoundingClientRect();\n var x = clientX;\n var y = clientY;\n if (followCursor2 === \"initial\") {\n x = rect2.left + relativeX;\n y = rect2.top + relativeY;\n }\n var top = followCursor2 === \"horizontal\" ? rect2.top : y;\n var right = followCursor2 === \"vertical\" ? rect2.right : x;\n var bottom = followCursor2 === \"horizontal\" ? rect2.bottom : y;\n var left = followCursor2 === \"vertical\" ? rect2.left : x;\n return {\n width: right - left,\n height: bottom - top,\n top,\n right,\n bottom,\n left\n };\n }\n });\n }\n }\n function create() {\n if (instance.props.followCursor) {\n activeInstances.push({\n instance,\n doc\n });\n addMouseCoordsListener(doc);\n }\n }\n function destroy() {\n activeInstances = activeInstances.filter(function(data) {\n return data.instance !== instance;\n });\n if (activeInstances.filter(function(data) {\n return data.doc === doc;\n }).length === 0) {\n removeMouseCoordsListener(doc);\n }\n }\n return {\n onCreate: create,\n onDestroy: destroy,\n onBeforeUpdate: function onBeforeUpdate2() {\n prevProps = instance.props;\n },\n onAfterUpdate: function onAfterUpdate2(_, _ref2) {\n var followCursor2 = _ref2.followCursor;\n if (isInternalUpdate) {\n return;\n }\n if (followCursor2 !== void 0 && prevProps.followCursor !== followCursor2) {\n destroy();\n if (followCursor2) {\n create();\n if (instance.state.isMounted && !wasFocusEvent && !getIsInitialBehavior()) {\n addListener();\n }\n } else {\n removeListener();\n unsetGetReferenceClientRect();\n }\n }\n },\n onMount: function onMount2() {\n if (instance.props.followCursor && !wasFocusEvent) {\n if (isUnmounted) {\n onMouseMove(mouseCoords);\n isUnmounted = false;\n }\n if (!getIsInitialBehavior()) {\n addListener();\n }\n }\n },\n onTrigger: function onTrigger2(_, event) {\n if (isMouseEvent(event)) {\n mouseCoords = {\n clientX: event.clientX,\n clientY: event.clientY\n };\n }\n wasFocusEvent = event.type === \"focus\";\n },\n onHidden: function onHidden2() {\n if (instance.props.followCursor) {\n unsetGetReferenceClientRect();\n removeListener();\n isUnmounted = true;\n }\n }\n };\n }\n};\nfunction getProps(props, modifier) {\n var _props$popperOptions;\n return {\n popperOptions: Object.assign({}, props.popperOptions, {\n modifiers: [].concat((((_props$popperOptions = props.popperOptions) == null ? void 0 : _props$popperOptions.modifiers) || []).filter(function(_ref) {\n var name = _ref.name;\n return name !== modifier.name;\n }), [modifier])\n })\n };\n}\nvar inlinePositioning = {\n name: \"inlinePositioning\",\n defaultValue: false,\n fn: function fn3(instance) {\n var reference = instance.reference;\n function isEnabled() {\n return !!instance.props.inlinePositioning;\n }\n var placement;\n var cursorRectIndex = -1;\n var isInternalUpdate = false;\n var triedPlacements = [];\n var modifier = {\n name: \"tippyInlinePositioning\",\n enabled: true,\n phase: \"afterWrite\",\n fn: function fn5(_ref2) {\n var state = _ref2.state;\n if (isEnabled()) {\n if (triedPlacements.indexOf(state.placement) !== -1) {\n triedPlacements = [];\n }\n if (placement !== state.placement && triedPlacements.indexOf(state.placement) === -1) {\n triedPlacements.push(state.placement);\n instance.setProps({\n getReferenceClientRect: function getReferenceClientRect() {\n return _getReferenceClientRect(state.placement);\n }\n });\n }\n placement = state.placement;\n }\n }\n };\n function _getReferenceClientRect(placement2) {\n return getInlineBoundingClientRect(getBasePlacement(placement2), reference.getBoundingClientRect(), arrayFrom(reference.getClientRects()), cursorRectIndex);\n }\n function setInternalProps(partialProps) {\n isInternalUpdate = true;\n instance.setProps(partialProps);\n isInternalUpdate = false;\n }\n function addModifier() {\n if (!isInternalUpdate) {\n setInternalProps(getProps(instance.props, modifier));\n }\n }\n return {\n onCreate: addModifier,\n onAfterUpdate: addModifier,\n onTrigger: function onTrigger2(_, event) {\n if (isMouseEvent(event)) {\n var rects = arrayFrom(instance.reference.getClientRects());\n var cursorRect = rects.find(function(rect) {\n return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;\n });\n var index = rects.indexOf(cursorRect);\n cursorRectIndex = index > -1 ? index : cursorRectIndex;\n }\n },\n onHidden: function onHidden2() {\n cursorRectIndex = -1;\n }\n };\n }\n};\nfunction getInlineBoundingClientRect(currentBasePlacement, boundingRect, clientRects, cursorRectIndex) {\n if (clientRects.length < 2 || currentBasePlacement === null) {\n return boundingRect;\n }\n if (clientRects.length === 2 && cursorRectIndex >= 0 && clientRects[0].left > clientRects[1].right) {\n return clientRects[cursorRectIndex] || boundingRect;\n }\n switch (currentBasePlacement) {\n case \"top\":\n case \"bottom\": {\n var firstRect = clientRects[0];\n var lastRect = clientRects[clientRects.length - 1];\n var isTop = currentBasePlacement === \"top\";\n var top = firstRect.top;\n var bottom = lastRect.bottom;\n var left = isTop ? firstRect.left : lastRect.left;\n var right = isTop ? firstRect.right : lastRect.right;\n var width = right - left;\n var height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height\n };\n }\n case \"left\":\n case \"right\": {\n var minLeft = Math.min.apply(Math, clientRects.map(function(rects) {\n return rects.left;\n }));\n var maxRight = Math.max.apply(Math, clientRects.map(function(rects) {\n return rects.right;\n }));\n var measureRects = clientRects.filter(function(rect) {\n return currentBasePlacement === \"left\" ? rect.left === minLeft : rect.right === maxRight;\n });\n var _top = measureRects[0].top;\n var _bottom = measureRects[measureRects.length - 1].bottom;\n var _left = minLeft;\n var _right = maxRight;\n var _width = _right - _left;\n var _height = _bottom - _top;\n return {\n top: _top,\n bottom: _bottom,\n left: _left,\n right: _right,\n width: _width,\n height: _height\n };\n }\n default: {\n return boundingRect;\n }\n }\n}\nvar sticky = {\n name: \"sticky\",\n defaultValue: false,\n fn: function fn4(instance) {\n var reference = instance.reference, popper = instance.popper;\n function getReference() {\n return instance.popperInstance ? instance.popperInstance.state.elements.reference : reference;\n }\n function shouldCheck(value) {\n return instance.props.sticky === true || instance.props.sticky === value;\n }\n var prevRefRect = null;\n var prevPopRect = null;\n function updatePosition() {\n var currentRefRect = shouldCheck(\"reference\") ? getReference().getBoundingClientRect() : null;\n var currentPopRect = shouldCheck(\"popper\") ? popper.getBoundingClientRect() : null;\n if (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect) || currentPopRect && areRectsDifferent(prevPopRect, currentPopRect)) {\n if (instance.popperInstance) {\n instance.popperInstance.update();\n }\n }\n prevRefRect = currentRefRect;\n prevPopRect = currentPopRect;\n if (instance.state.isMounted) {\n requestAnimationFrame(updatePosition);\n }\n }\n return {\n onMount: function onMount2() {\n if (instance.props.sticky) {\n updatePosition();\n }\n }\n };\n }\n};\nfunction areRectsDifferent(rectA, rectB) {\n if (rectA && rectB) {\n return rectA.top !== rectB.top || rectA.right !== rectB.right || rectA.bottom !== rectB.bottom || rectA.left !== rectB.left;\n }\n return true;\n}\ntippy.setDefaultProps({\n render\n});\nexport default tippy;\nexport {animateFill, createSingleton, delegate, followCursor, hideAll, inlinePositioning, ROUND_ARROW as roundArrow, sticky};\n", "\nclass Debug {\n static enabled = false;\n static superEnabled = false;\n}\n\n(window as any).Debug = Debug;\n\nexport { Debug }", "import { Debug } from './Debug.ts';\n\ntype IndividualAllocData = {\n name: string;\n source: string;\n line: number;\n quantity: number;\n}\n\ntype AllocData = {\n num: number,\n map: Map\n sources: {\n [key: string]: IndividualAllocData;\n }\n dump: any\n}\n\nconst allocData: AllocData = {\n\tnum: 0,\n\tmap: new Map(),\n\tsources: {},\n\tdump: () => {\n\t\tconsole.log(allocData.num);\n\t\tconsole.log(allocData.map);\n\t\tconst sortedSources = Object.keys(allocData.sources).sort((a, b) =>\n\t\t\tallocData.sources[b].quantity - allocData.sources[a].quantity\n\t\t).filter(x => allocData.sources[x].quantity > 1);\n for (const source of sortedSources) {\n console.log(`${allocData.sources[source].quantity} allocations of ${allocData.sources[source].name} at\\n${source}`);\n }\n\t},\n};\n\n(window as any).alloc = allocData;\n\nexport const alloc = (obj: T): T => {\n\tif (Debug.enabled) {\n\t\t// @ts-ignore this should be ok\n\t\tconst objName = obj && obj.constructor && obj.constructor.name;\n\n if (Debug.superEnabled) {\n const err = new Error();\n const callStack = err.stack!.split('\\n').slice(2).join('\\n')\n const entry = allocData.sources[callStack];\n if (entry != null) {\n entry.quantity = entry.quantity + 1;\n } else {\n allocData.sources[callStack] = {\n name: objName,\n source: callStack,\n line: 0,\n quantity: 1,\n }\n }\n }\n\n // Record to the map\n\t\tconst entry = allocData.map.get(objName);\n\t\tif (entry != null) {\n\t\t\tallocData.map.set(objName, entry + 1);\n\t\t} else {\n\t\t\tallocData.map.set(objName, 0);\n\t\t}\n\t}\n\n\t// TODO: do something better with allocations\n\tallocData && allocData.num++;\n\treturn obj;\n};\n", "export type Observer = (...args: any[]) => void;\n\nexport type IObservable = {\n subscribe(event: T, observer: Observer): void;\n unsubscribe(event: T, observer: Observer): void;\n unsubscribeAll(event?: T): void;\n emit(event: T, ...args: any[]): void;\n};\n\nexport class Observable implements IObservable {\n observers: Map = new Map();\n\n subscribe(event: T, observer: Observer) {\n if (!this.observers.has(event)) {\n this.observers.set(event, []);\n }\n this.observers.get(event)?.push(observer);\n }\n\n unsubscribe(event: T, observer: Observer) {\n if (this.observers.has(event)) {\n const observers = this.observers.get(event);\n observers?.splice(observers.indexOf(observer), 1);\n }\n }\n\n unsubscribeAll(event?: T) {\n if (event) {\n this.observers.delete(event);\n } else {\n this.observers.clear();\n }\n }\n\n emit(event: T, ...args: any[]) {\n if (this.observers.has(event)) {\n const observers = this.observers.get(event);\n if (!observers) {\n return;\n }\n for (let i = 0; i < observers.length; i++) {\n observers[i](...args);\n }\n }\n }\n}\n", "// generate a uuid\nexport const uuidShort = () =>\n base64(crypto.getRandomValues(new Uint8Array(4)));\nexport const uuidLong = () =>\n base64(crypto.getRandomValues(new Uint8Array(16)));\n\n const chars =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nconst base64 = (bytes: Uint8Array): string => {\n const len = bytes.length;\n let i = 0;\n let result = \"\";\n while (i < len) {\n const c1 = bytes[i++];\n const c2 = i < len ? bytes[i++] : 0;\n const c3 = i < len ? bytes[i++] : 0;\n const c4 = i < len ? bytes[i++] : 0;\n const b1 = c1 >> 2;\n const b2 = ((c1 & 3) << 4) | (c2 >> 4);\n let b3 = ((c2 & 15) << 2) | (c3 >> 6);\n let b4 = c3 & 63;\n if (isNaN(c2)) {\n b3 = b4 = 64;\n } else if (isNaN(c3)) {\n b4 = 64;\n }\n result += chars[b1] + chars[b2] + chars[b3] + chars[b4];\n }\n return result;\n};\n\nexport const checkCollision = (id: string, ...otherIds: string[]) => {\n return otherIds.some((otherId) => id === otherId);\n};\n", "import { alloc } from '../../Helpers/Alloc.ts';\nimport { Observable } from '../../Helpers/Observable.ts';\nimport { uuidShort } from '../../Helpers/Uuid.ts';\nimport type {\n\tComponentBlueprintData,\n\tComponentEvents,\n\tIComponent,\n\tIEntity,\n} from '../API.ts';\nimport { meta } from '../Meta.ts';\n\nexport class Component extends Observable\n\timplements IComponent {\n\tname: string | undefined;\n\tprivacy: 'public' | 'private' = 'public';\n\tstate: 'alive' | 'dead' = 'dead';\n\n\tdata: TData | undefined;\n\tid: string | undefined;\n\tentity: IEntity | undefined;\n\tupdating = false;\n\tisOwner = true;\n\n\tsuper: Component;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.super = {\n\t\t\t...this,\n\t\t};\n\t}\n\n\t// Override me\n\tcreate = () => {};\n\tmutateOverride = (data: TData): TData => data;\n\tdestroy = (propagator: unknown = undefined) => {\n\t\tthis._internal_Destroy(propagator);\n\t};\n\n\t_internal_Create = (\n\t\tentity: IEntity,\n\t\tblueprint: ComponentBlueprintData | null,\n\t\tpropagator: unknown | undefined,\n\t): IComponent => {\n\t\tthis.id = uuidShort();\n\t\tthis.entity = entity;\n\t\tthis.name = this.constructor.name;\n\t\tthis.privacy = blueprint?.privacy ?? 'public';\n\t\t// ISSUE: Creates garbage, may want to update\n\t\tthis.data = {\n\t\t\t...this.getDefaultData(),\n\t\t\t...(blueprint?.data || {}),\n\t\t};\n\t\tthis.state = 'alive';\n\t\tthis.create();\n\t\tthis.emit('create', this, propagator);\n\t\treturn this;\n\t};\n\n\tmutate_ALLOC = (\n\t\tfn: (data: TData) => TData,\n\t\tpropagator: unknown | undefined = undefined,\n\t): void => {\n\t\tthis.data = this.mutateOverride(alloc(fn(this.data!)));\n\t\tthis.emit('mutate', this, this.data, propagator);\n\t};\n\n\tmutateImmediate = (propagator: unknown | undefined = undefined): void => {\n\t\tthis.emit('mutate', this, this.data, propagator);\n\t};\n\n\t_internal_Destroy = (propagator: unknown): IComponent => {\n\t\t// this.destroy();\n\t\tthis.emit('destroy', this, propagator);\n\t\tthis.id = '';\n\t\tthis.entity = undefined;\n\t\tthis.data = undefined;\n\t\tthis.state = 'dead';\n\t\tthis.unsubscribeAll();\n\t\tmeta.getPool(this.constructor as any)!.release(this);\n\t\treturn this;\n\t};\n\n\tupdate;\n\ttags = undefined;\n\n\tdescribe = () => {\n\t\treturn this.data!;\n\t};\n\n\tgetDefaultData = (): TData => {\n\t\treturn alloc({}) as TData;\n\t};\n\n\tsend = (message: any) => {\n\t\tthis.emit('send-message', this, message);\n\t};\n\n\treceive = (message: any) => {\n\t\tthis.emit('receive-message', this, message);\n\t};\n}\n", "import { Component } from \"../Ontology/Entity/Component.ts\";\n\ntype Empty = {};\n\nexport class GaiaNode extends Component {\n privacy: \"private\" | \"public\" = \"private\";\n\n create = () => {\n this.drawNodes();\n };\n\n drawNodes = () => {\n };\n}\n\n// old\n\n// const input = {\n// \"nodes\": [\n// {\n// \"id\": \"id1\",\n// \"name\": \"name1\",\n// \"val\": 1,\n// },\n// {\n// \"id\": \"id2\",\n// \"name\": \"name2\",\n// \"val\": 10,\n// },\n// ],\n// \"links\": [\n// {\n// \"source\": \"id1\",\n// \"target\": \"id2\",\n// },\n// ],\n// };\n// const graph = new ThreeForceGraph();\n// graph.graphData(input);\n// console.log(graph)\n// const scene = new three.Scene();\n// scene.add(graph);\n// scene.add(new three.AmbientLight(0xbbbbbb));\n\n// // add a red sphere at (0, 0, 0)\n// // const geometry = new three.SphereGeometry(0.5, 32, 32);\n// // const material = new three.MeshBasicMaterial({ color: 0xff0000 });\n// // const sphere = new three.Mesh(geometry, material);\n// // scene.add(sphere);\n\n// const camera = new three.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.001, 10000 );\n// camera.aspect = window.innerWidth/window.innerHeight;\n// camera.updateProjectionMatrix();\n// camera.lookAt(graph.position);\n// camera.position.z = 100;\n\n// const renderer = new three.WebGLRenderer();\n// renderer.setSize( window.innerWidth, window.innerHeight );\n\n// document.body.appendChild( renderer.domElement );\n\n// (function animate() { // IIFE\n// graph.tickFrame();\n\n// // Frame cycle\n// renderer.render(scene, camera);\n// requestAnimationFrame(animate);\n// })();\n", "import { IEntity, IWorld } from \"../Ontology/API.ts\";\nimport * as vis from \"https://cdn.skypack.dev/vis-network\";\nimport debounce from \"https://cdn.skypack.dev/debounce?dts\";\nimport tippy, {\n followCursor,\n Instance as TippyInstance,\n} from \"https://cdn.skypack.dev/tippy.js?dts\";\nimport { GaiaNode } from \"./GaiaNode.ts\";\n\nexport class GaiaScene {\n world: IWorld;\n entities: IEntity[] = [];\n network: vis.Network | null = null;\n tooltip: TippyInstance | null = null;\n hidden = false;\n\n constructor(world: IWorld) {\n this.world = world;\n this.world.entities.forEach(this.onSpawn);\n this.world.subscribe(\"entity-create\", this.onSpawn);\n this.world.subscribe(\"entity-destroy\", this.onDestroy);\n }\n\n onSpawn = (entity: IEntity) => {\n entity.addComponent(GaiaNode, { privacy: \"private\" }, this);\n this.entities.push(entity);\n this.updateNetwork();\n };\n onDestroy = (entity: IEntity) => {\n this.entities = this.entities.filter((e) => e !== entity);\n this.updateNetwork();\n };\n\n updateNetwork = debounce(() => {\n if (this.hidden) {\n return;\n }\n // { id: 0, label: \"0\", group: 0 },\n const nodes = [\n ...this.entities.flatMap((x) => [\n {\n id: x.id,\n label: x.name,\n group: x.privacy === \"public\" ? 1 : 3,\n },\n ...x.components.flatMap((c) =>\n c.name === \"GaiaNode\" ? [] : [{\n id: `${x.id}-${c.name}`,\n label: c.name,\n group: (x.privacy === \"public\" && c.privacy === \"public\") ? 1 : 3,\n size: 16,\n font: {\n size: 16,\n },\n }]\n ),\n ]),\n ];\n // { from: 1, to: 0 },\n const edges = [\n ...this.entities.flatMap((x) =>\n x.components.flatMap((c) => [{\n from: `${x.id}-${c.constructor.name}`,\n to: x.id,\n }])\n ),\n ];\n\n // create a network\n const data = {\n nodes: nodes,\n edges: edges,\n };\n\n if (this.network) {\n this.network.setData(data);\n } else {\n const container = document.getElementById(\"scene\");\n this.tooltip = tippy(container!, {\n plugins: [followCursor],\n theme: \"light\",\n placement: \"top\",\n trigger: \"manual\",\n });\n const options = {\n nodes: {\n shape: \"dot\",\n size: 30,\n font: {\n size: 32,\n color: \"#ccc\",\n },\n borderWidth: 2,\n shadow: true,\n },\n edges: {\n width: 2,\n shadow: true,\n },\n layout: {\n improvedLayout: false,\n },\n physics: {\n stabilization: false,\n },\n interaction: {\n hover: true,\n },\n };\n this.network = new vis.Network(container!, data, options);\n\n // @ts-ignore yes it does\n this.network.on(\"blurNode\", (params) => {\n this.tooltip!.hide();\n });\n\n // @ts-ignore yes it does\n this.network.on(\"hoverNode\", (params) => {\n // const {x, y} = params.pointer.DOM\n const nodeId = params.node;\n const nodePos = this.network!.getPosition(nodeId);\n const { x, y } = this.network!.canvasToDOM({\n x: nodePos.x,\n y: nodePos.y,\n });\n\n // split node id\n const [entityId, componentId] = nodeId.split(\"-\");\n const entity = this.entities.find((e) => e.id === entityId);\n if (!entity) {\n return;\n }\n if (componentId === undefined) {\n // is entity\n this.updateTooltip(x, y, {\n privacy: entity.privacy,\n name: entity.name,\n id: entity.id,\n });\n } else {\n // is component\n const component = entity.getComponent(componentId);\n if (!component) {\n return;\n }\n\n this.updateTooltip(x, y, component.describe());\n }\n });\n }\n }, 500);\n\n updateTooltip = debounce(\n (x, y, data) => {\n this.tooltip!.enable();\n this.tooltip!.show();\n this.tooltip!.setProps({\n content: `${JSON.stringify(data)}`,\n // @ts-ignore\n getReferenceClientRect: () => ({\n left: x,\n top: y,\n width: 0,\n height: 0,\n x,\n y,\n bottom: y,\n right: x,\n }),\n });\n },\n 100,\n true,\n );\n\n show = () => {\n this.hidden = false;\n this.updateNetwork();\n };\n\n hide = () => {\n this.hidden = true;\n this.network?.destroy();\n };\n}\n", "import { alloc } from \"../Helpers/Alloc.ts\";\nimport {\n\tComponentBlueprintInstance,\n\tEntityBlueprintInstance,\n\tIComponent,\n\tIEntity,\n\tIWorld,\n\tStringifiedComponentBlueprint,\n\tStringifiedEntityBlueprint,\n} from './API.ts';\nimport { meta } from './Meta.ts';\n\nexport const serializeEntity = (\n\tentity: IEntity,\n): StringifiedEntityBlueprint => {\n\treturn alloc({\n\t\tid: entity.id,\n\t\tentity: entity.constructor.name,\n\t\tparentId: entity.parent ? entity.parent.id : null,\n\t\tcomponents: entity.describe().components?.map(\n\t\t\tserializeComponentBlueprint,\n\t\t) || undefined,\n\t});\n};\n\nexport const serializeComponent = (\n\tcomponent: IComponent,\n): StringifiedComponentBlueprint => {\n\treturn alloc({\n\t\tcomponent: component.constructor.name,\n\t\tdata: component.describe(),\n\t});\n};\n\nexport const serializeComponentBlueprint = (\n\tblueprint: ComponentBlueprintInstance,\n): StringifiedComponentBlueprint => (alloc({\n\tcomponent: blueprint.component.constructor.name,\n\tdata: blueprint.data,\n}));\n\nexport const deserializeEntityBlueprint = (\n\tblueprint: StringifiedEntityBlueprint,\n\tworld: IWorld,\n): EntityBlueprintInstance => {\n\t// ISSUE: allows anything to be spawned, no error handling\n\tconst constructor = meta.getClass(blueprint.entity)!;\n\tconst pool = meta.getPool(constructor)!;\n\treturn alloc({\n\t\tentity: pool.take() as IEntity,\n\t\tid: blueprint.id,\n\t\tparent: blueprint.parentId ? world.get(blueprint.parentId) : null,\n\t\tprivacy: blueprint.privacy,\n\t\tcomponents: blueprint.components?.map(\n\t\t\tdeserializeComponentBlueprint,\n\t\t) || undefined,\n\t});\n};\n\nexport const deserializeComponentBlueprint = (\n\tblueprint: StringifiedComponentBlueprint,\n): ComponentBlueprintInstance => {\n\t// ISSUE: allows anything to be spawned, no error handling\n\tconst constructor = meta.getClass(blueprint.component)!;\n\tconst pool = meta.getPool(constructor)!;\n\treturn alloc({\n\t\tcomponent: pool.take() as IComponent,\n\t\tprivacy: blueprint.privacy,\n\t\tdata: blueprint.data,\n\t});\n};\n\n// export const serializeComponent = (\n// component: IComponent,\n// ): StringifiedComponentBlueprint => {\n// return {\n// component: component.constructor.name,\n// data: component.describe()!,\n// };\n// };\n", "import {\n\tComponentBlueprintInstance,\n\tIEntity,\n\tIWorld,\n\tPrivacy,\n\tStringifiedComponentBlueprint,\n} from '../Ontology/API.ts';\nimport { IGaia, IGaiaScene } from './API.ts';\nimport { IAxon } from '../Axon/API.ts';\nimport { meta } from '../Ontology/Meta.ts';\nimport { GaiaScene } from './GaiaScene.ts';\nimport { deserializeComponentBlueprint } from '../Ontology/Helpers.ts';\nimport { IScene } from '../Animus/API.ts';\nimport { Constructor } from '../Helpers/Types.ts';\n\nclass Gaia implements IGaia {\n\t_scene: IGaiaScene | null = null;\n\n\tconstructor(\n\t\tpublic world: IWorld,\n\t\tpublic scene: IScene,\n\t\tpublic axon: IAxon,\n\t) {\n\t}\n\tshowDebugScene = () => {\n\t\tif (this._scene) {\n\t\t\tthis._scene.show();\n\t\t} else {\n\t\t\tthis._scene = this.createScene();\n\t\t}\n\t};\n\thideDebugScene = () => {\n\t\tif (this._scene) {\n\t\t\tthis._scene.hide();\n\t\t}\n\t};\n\n\tspawn3d = (\n\t\t...components: string[]\n\t): IEntity => {\n\t\treturn this.spawn('UpdatingEntity', 'ThreeJSTransform', ...components);\n\t};\n\n\t// params components\n\tspawn = (\n\t\tobject: string | Constructor,\n\t\t...components: string[] | Constructor[]\n\t): IEntity => {\n\t\tconst constructor = typeof object === 'string'\n\t\t\t? meta.getClass(object as string)!\n\t\t\t: object as Constructor;\n\t\tconst pool = meta.getPool(constructor)!;\n\n\t\tlet blueprints: ComponentBlueprintInstance[] | null = null;\n\t\tif (components.length > 0 && typeof components[0] === 'string') {\n\t\t\t// @ts-ignore a\n\t\t\tblueprints = components.map((component) => ({\n\t\t\t\tcomponent,\n\t\t\t\tdata: null,\n\t\t\t}))\n\t\t\t\t.map(deserializeComponentBlueprint);\n\t\t} else if (components.length > 0) {\n\t\t\tblueprints = components.map((component) => ({\n\t\t\t\tcomponent: new component(),\n\t\t\t\tdata: null,\n\t\t\t}));\n\t\t} else {\n\t\t\tblueprints = null;\n\t\t}\n\n\t\tconst entity = this.world.spawn(\n\t\t\tpool.take() as IEntity,\n\t\t\tthis.scene,\n\t\t\t(blueprints) ? { components: blueprints, parent: null } : null,\n\t\t\tthis,\n\t\t);\n\t\treturn entity;\n\t};\n\n\tspawn2 = (\n\t\tobject: string | Constructor,\n\t\tprivacy: Privacy | undefined,\n\t\tblueprint:\n\t\t\t| StringifiedComponentBlueprint[]\n\t\t\t| ComponentBlueprintInstance<\n\t\t\t\tany\n\t\t\t>[],\n\t): IEntity => {\n\t\tconst nonNullPrivacy = privacy || 'public';\n\t\tif (typeof object === 'string') {\n\t\t\tconst constructor = meta.getClass(object as string)!;\n\t\t\tconst pool = meta.getPool(constructor)!;\n\t\t\tconst entity = this.world.spawn(\n\t\t\t\tpool.take() as IEntity,\n\t\t\t\tthis.scene,\n\t\t\t\tblueprint\n\t\t\t\t\t? {\n\t\t\t\t\t\tprivacy: nonNullPrivacy,\n\t\t\t\t\t\t// @ts-ignore assumptions\n\t\t\t\t\t\tdata: blueprint.map(deserializeComponentBlueprint),\n\t\t\t\t\t}\n\t\t\t\t\t: null,\n\t\t\t\tthis,\n\t\t\t);\n\t\t\treturn entity;\n\t\t} else {\n\t\t\tconst constructor = object as Constructor;\n\t\t\tconst pool = meta.getPool(constructor)!;\n\t\t\tconst entity = this.world.spawn(\n\t\t\t\tpool.take() as IEntity,\n\t\t\t\tthis.scene,\n\t\t\t\tblueprint\n\t\t\t\t\t? {\n\t\t\t\t\t\tprivacy: nonNullPrivacy,\n\t\t\t\t\t\tcomponents: blueprint as ComponentBlueprintInstance<\n\t\t\t\t\t\t\tunknown\n\t\t\t\t\t\t>[],\n\t\t\t\t\t\tparent: null,\n\t\t\t\t\t}\n\t\t\t\t\t: null,\n\t\t\t\tthis,\n\t\t\t);\n\t\t\treturn entity;\n\t\t}\n\t};\n\n\tprintEntity = (entity: IEntity) => {\n\t\tconsole.log(entity.id);\n\n\t\tconsole.log(entity.components.map((x) => ({\n\t\t\tname: x.constructor.name,\n\t\t\tprivacy: x.privacy,\n\t\t\tdata: x.data,\n\t\t})));\n\t};\n\n\tget = (id: string): IEntity | undefined => {\n\t\treturn this.world.entities.find((entity) => entity.id === id);\n\t};\n\n\tgetByName = (name: string): IEntity | IEntity[] | null => {\n\t\tconst results = this.world.entities.filter((entity) =>\n\t\t\tentity.name === name\n\t\t);\n\t\tif (results.length === 1) {\n\t\t\treturn results[0];\n\t\t} else if (results.length > 0) {\n\t\t\treturn results;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t};\n\n\tdestroy = (entity: IEntity) => {\n\t\tentity.destroy(this);\n\t};\n\n\tcreateScene = (): IGaiaScene => {\n\t\treturn new GaiaScene(this.world);\n\t};\n}\n\nexport { Gaia };\n", "import { meta } from '../Ontology/Meta.ts';\nimport { alloc } from './Alloc.ts';\n\nexport type Vector3Like = { x: number; y: number; z: number };\n\nexport class Vector3 implements Vector3Like {\n\tstatic get zero(): Vector3 {\n\t\treturn alloc(new Vector3(0, 0, 0));\n\t}\n\tstatic get one(): Vector3 {\n\t\treturn alloc(new Vector3(1, 1, 1));\n\t}\n\tstatic get up(): Vector3 {\n\t\treturn alloc(new Vector3(0, 1, 0));\n\t}\n\tstatic get down(): Vector3 {\n\t\treturn alloc(new Vector3(0, -1, 0));\n\t}\n\tstatic get left(): Vector3 {\n\t\treturn alloc(new Vector3(-1, 0, 0));\n\t}\n\tstatic get right(): Vector3 {\n\t\treturn alloc(new Vector3(1, 0, 0));\n\t}\n\tstatic get forward(): Vector3 {\n\t\treturn alloc(new Vector3(0, 0, 1));\n\t}\n\tstatic get backward(): Vector3 {\n\t\treturn alloc(new Vector3(0, 0, -1));\n\t}\n\n\tstatic staticZero = Object.freeze(Vector3.zero);\n\tstatic staticOne = Object.freeze(Vector3.one);\n\tstatic staticUp = Object.freeze(Vector3.up);\n\tstatic staticDown = Object.freeze(Vector3.down);\n\tstatic staticLeft = Object.freeze(Vector3.left);\n\tstatic staticRight = Object.freeze(Vector3.right);\n\tstatic staticForward = Object.freeze(Vector3.forward);\n\tstatic staticBackward = Object.freeze(Vector3.backward);\n\n\tx: number;\n\ty: number;\n\tz: number;\n\n\tconstructor(\n\t\tx: number | Vector3Like | undefined = undefined,\n\t\ty: number | undefined = 0,\n\t\tz: number | undefined = 0,\n\t) {\n\t\tif (x != null && typeof x === 'object') {\n\t\t\tthis.x = x.x;\n\t\t\tthis.y = x.y;\n\t\t\tthis.z = x.z;\n\t\t} else if (x != null) {\n\t\t\tthis.x = x as number;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\t\t} else {\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\t\t}\n\t}\n\n\tclone(): Vector3 {\n\t\treturn new Vector3(this);\n\t}\n\n\tset(\n\t\tx: number | Vector3Like,\n\t\ty: number | undefined = 0,\n\t\tz: number | undefined = 0,\n\t): Vector3 {\n\t\tif (x != null && typeof x === 'object') {\n\t\t\tthis.x = x.x;\n\t\t\tthis.y = x.y;\n\t\t\tthis.z = x.z;\n\t\t} else {\n\t\t\tthis.x = x as number;\n\t\t\tthis.y = y!;\n\t\t\tthis.z = z!;\n\t\t}\n\t\treturn this;\n\t}\n\n\tstatic fromPool(x: number, y: number, z: number): Vector3 {\n\t\tconst vec = (meta.getPool(Vector3)!).take() as unknown as Vector3;\n\t\tvec.x = x;\n\t\tvec.y = y;\n\t\tvec.z = z;\n\t\treturn vec;\n\t}\n\n\tstatic add(a: Vector3Like, b: Vector3Like): Vector3Like {\n\t\treturn alloc({\n\t\t\tx: a.x + b.x,\n\t\t\ty: a.y + b.y,\n\t\t\tz: a.z + b.z,\n\t\t});\n\t}\n\n\tstatic subtract(a: Vector3Like, b: Vector3Like): Vector3Like {\n\t\treturn alloc({\n\t\t\tx: a.x - b.x,\n\t\t\ty: a.y - b.y,\n\t\t\tz: a.z - b.z,\n\t\t});\n\t}\n\n\tstatic dot(a: Vector3Like, b: Vector3Like): number {\n\t\treturn a.x * b.x + a.y * b.y + a.z * b.z;\n\t}\n\n\tstatic cross(a: Vector3Like, b: Vector3Like): Vector3Like {\n\t\treturn alloc({\n\t\t\tx: (a.y * b.z) - (a.z * b.y),\n\t\t\ty: (a.z * b.x) - (a.x * b.z),\n\t\t\tz: (a.x * b.y) - (a.y * b.x),\n\t\t});\n\t}\n\n\tstatic distance(a: Vector3Like, b: Vector3Like): number {\n\t\tconst dx = a.x - b.x;\n\t\tconst dy = a.y - b.y;\n\t\tconst dz = a.z - b.z;\n\t\treturn Math.sqrt(dx * dx + dy * dy + dz * dz);\n\t}\n\n\tstatic set(\n\t\tv: Vector3Like,\n\t\tx: number | Vector3Like,\n\t\ty: number | undefined = undefined,\n\t\tz: number | undefined = undefined,\n\t): Vector3Like {\n\t\tif (x != null && typeof x === 'number') {\n\t\t\tv.x = x;\n\t\t\tv.y = y!;\n\t\t\tv.z = z!;\n\t\t} else if ((x as unknown as Vector3Like).x != null) {\n\t\t\tconst vv: Vector3Like = x as Vector3Like;\n\t\t\tv.x = vv.x;\n\t\t\tv.y = vv.y;\n\t\t\tv.z = vv.z;\n\t\t}\n\t\treturn v;\n\t}\n\n\tnormalize(): Vector3 {\n\t\tconst norm = this.x * this.x + this.y * this.y + this.z * this.z;\n\t\treturn this.set(\n\t\t\tthis.x / norm,\n\t\t\tthis.y / norm,\n\t\t\tthis.z / norm,\n\t\t);\n\t}\n\n\tcross(v: Vector3Like): Vector3 {\n\t\tthis.x = (this.y * v.z) - (this.z * v.y);\n\t\tthis.y = (this.z * v.x) - (this.x * v.z);\n\t\tthis.z = (this.x * v.y) - (this.y * v.x);\n\t\treturn this;\n\t}\n\n\tdot(v: Vector3Like): number {\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\t}\n\n\tadd(v: Vector3Like): Vector3 {\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\treturn this;\n\t}\n\n\tsubtract(v: Vector3Like): Vector3 {\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\treturn this;\n\t}\n\n\tmultiply(scalar: number): Vector3 {\n\t\treturn this.set(\n\t\t\tthis.x * scalar,\n\t\t\tthis.y * scalar,\n\t\t\tthis.z * scalar,\n\t\t);\n\t}\n\n\tstatic toXRotation(forward: Vector3Like) {\n\t\treturn Math.atan2(forward.z, forward.y);\n\t}\n\n\tstatic toYRotation(forward: Vector3Like) {\n\t\treturn Math.atan2(forward.z, forward.x);\n\t}\n\n\tstatic toZRotation(forward: Vector3Like) {\n\t\treturn Math.atan2(forward.y, forward.x);\n\t}\n\n\tpublic getRotatedVector(v: Vector3, radians: number, target: Vector3Like) {\n\t\ttarget.x = v.x * Math.cos(radians) - v.z * Math.sin(radians);\n\t\ttarget.y = v.y;\n\t\ttarget.z = v.x * Math.sin(radians) + v.z * Math.cos(radians);\n\t\treturn target;\n\t}\n\n\tpublic getRotatedVector_ALLOC(v: Vector3, radians: number) {\n\t\tconst result = this.getRotatedVector(v, radians, alloc(new Vector3()));\n\t\treturn result;\n\t}\n}\n\n// applyQuaternion(q: QuaternionLike): Vector3 {\n// \tconst x = this.x;\n// \tconst y = this.y;\n// \tconst z = this.z;\n// \tconst qx = q.x;\n// \tconst qy = q.y;\n// \tconst qz = q.z;\n// \tconst qw = q.w;\n\n// \t//\n// \t// v' = q * v * q^-1\n// \t// q = [w, x, y, z]\n// \t// v = [x, y, z, w]\n\n// \t// calculate quat * vector\n// \tconst ix = qw * x + qy * z - qz * y;\n// \tconst iy = qw * y + qz * x - qx * z;\n// \tconst iz = qw * z + qx * y - qy * x;\n\n// \t// calculate result * inverse quat\n// \tthis.x = ix * qw + iy * -qz + iz * -qy - qx * -qx;\n// \tthis.y = iy * qw + iz * -qx + ix * -qz - qy * -qy;\n// \tthis.z = iz * qw + ix * -qy + iy * -qx - qz * -qz;\n// \treturn this;\n// }\n", "import { meta } from '../Ontology/Meta.ts';\nimport { alloc } from './Alloc.ts';\nimport { Matrix4 } from './Matrix4.ts';\nimport { Vector3, Vector3Like } from './Vector3.ts';\n\nexport type QuaternionLike = { x: number; y: number; z: number; w: number };\n\nexport class Quaternion {\n\tx: number;\n\ty: number;\n\tz: number;\n\tw: number;\n\n\tstatic get identity(): Quaternion {\n\t\treturn alloc(new Quaternion(0, 0, 0, 1));\n\t}\n\n\tstatic staticIdentity = Object.freeze(Quaternion.identity);\n\n\tconstructor(\n\t\tx: QuaternionLike | Vector3Like | number | undefined = undefined,\n\t\ty = 0,\n\t\tz = 0,\n\t\tw = 0,\n\t) {\n\t\tif (x != null && typeof x === 'number') {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\t\t\tthis.w = w;\n\t\t} else if (x != null && (x as QuaternionLike).w !== undefined) {\n\t\t\tconst qq: QuaternionLike = x as QuaternionLike;\n\t\t\tthis.x = qq.x;\n\t\t\tthis.y = qq.y;\n\t\t\tthis.z = qq.z;\n\t\t\tthis.w = qq.w;\n\t\t} else {\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\t\t}\n\t}\n\n\tclone(): Quaternion {\n\t\treturn alloc(new Quaternion(this));\n\t}\n\n\tstatic fromQuaternionLike(quat: QuaternionLike): Quaternion {\n\t\treturn alloc(new Quaternion(quat.x, quat.y, quat.z, quat.w));\n\t}\n\n\tstatic fromEuler(\n\t\tq: QuaternionLike,\n\t\troll: number | Vector3Like, // roll=x\n\t\tpitch: number | undefined = undefined, // pitch=y\n\t\tyaw: number | undefined = undefined, // yaw=z\n\t): QuaternionLike {\n\t\tconst isNumber = typeof roll === 'number';\n\t\tconst x = isNumber ? roll : roll.x;\n\t\tconst y = isNumber ? pitch! : roll.y;\n\t\tconst z = isNumber ? yaw! : roll.z;\n\n\t\tconst cy = Math.cos(z * 0.5);\n\t\tconst sy = Math.sin(z * 0.5);\n\t\tconst cp = Math.cos(y * 0.5);\n\t\tconst sp = Math.sin(y * 0.5);\n\t\tconst cr = Math.cos(x * 0.5);\n\t\tconst sr = Math.sin(x * 0.5);\n\n\t\tq.x = sr * cp * cy - cr * sp * sy;\n\t\tq.y = cr * sp * cy + sr * cp * sy;\n\t\tq.z = cr * cp * sy - sr * sp * cy;\n\t\tq.w = cr * cp * cy + sr * sp * sy;\n\t\treturn q\n\t}\n\n\tstatic fromEuler_ALLOC(\n\t\tx: number | Vector3Like,\n\t\ty: number | undefined = undefined,\n\t\tz: number | undefined = undefined,\n\t): Quaternion {\n\t\tconst newQuat = alloc(new Quaternion())\n\t\tQuaternion.fromEuler(newQuat, x, y, z)\n\t\treturn newQuat\n\t}\n\n\tstatic fromPool(x: number, y: number, z: number, w: number): Quaternion {\n\t\tconst quat = (meta.getPool(Quaternion)!)\n\t\t\t.take() as unknown as Quaternion;\n\t\tquat.x = x;\n\t\tquat.y = y;\n\t\tquat.z = z;\n\t\tquat.w = w;\n\t\treturn quat;\n\t}\n\n\tidentity(): Quaternion {\n\t\treturn this.set(0, 0, 0, 1);\n\t}\n\n\t// https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles\n\tfromEuler_ALLOC(\n\t\troll: number | Vector3Like, // roll=x\n\t\tpitch: number | undefined = undefined, // pitch=y\n\t\tyaw: number | undefined = undefined, // yaw=z\n\t): Quaternion {\n\t\tconst q = new Quaternion();\n\t\tQuaternion.fromEuler(q, roll, pitch, yaw);\n\t\treturn q\n\t}\n\n\tfromAxisAngle(axis: Vector3Like, angle: number): Quaternion {\n\t\tconst halfAngle = angle * 0.5;\n\t\tconst s = Math.sin(halfAngle);\n\t\treturn this.set(\n\t\t\tMath.cos(halfAngle),\n\t\t\ts * Math.cos(axis.x),\n\t\t\ts * Math.cos(axis.y),\n\t\t\ts * Math.cos(axis.z),\n\t\t);\n\t}\n\n\teuler(): Vector3 {\n\t\treturn alloc(\n\t\t\tnew Vector3(\n\t\t\t\tMath.atan2(\n\t\t\t\t\t2 * (this.x * this.y + this.z * this.w),\n\t\t\t\t\t1 - 2 * (this.y * this.y + this.z * this.z),\n\t\t\t\t),\n\t\t\t\tMath.atan2(\n\t\t\t\t\t2 * (this.y * this.z + this.x * this.w),\n\t\t\t\t\t1 - 2 * (this.z * this.z + this.x * this.x),\n\t\t\t\t),\n\t\t\t\tMath.asin(2 * (this.x * this.z - this.y * this.w)),\n\t\t\t),\n\t\t); //.multiply(180 / Math.PI);\n\t}\n\n\taxis(): Vector3 {\n\t\tconst halfTheta = Math.acos(this.w);\n\t\tconst sinHalfTheta = Math.sin(halfTheta);\n\t\treturn alloc(\n\t\t\tnew Vector3(\n\t\t\t\tthis.x / sinHalfTheta,\n\t\t\t\tthis.y / sinHalfTheta,\n\t\t\t\tthis.z / sinHalfTheta,\n\t\t\t),\n\t\t);\n\t}\n\n\tangle(): number {\n\t\treturn Math.acos(this.w) * 2;\n\t}\n\n\tconjugate(): Quaternion {\n\t\treturn this.set(\n\t\t\t-this.x,\n\t\t\t-this.y,\n\t\t\t-this.z,\n\t\t\tthis.w,\n\t\t);\n\t}\n\n\tinvert(): Quaternion {\n\t\tconst norm = this.x * this.x + this.y * this.y + this.z * this.z +\n\t\t\tthis.w * this.w;\n\t\treturn this.set(\n\t\t\t-this.x / norm,\n\t\t\t-this.y / norm,\n\t\t\t-this.z / norm,\n\t\t\tthis.w / norm,\n\t\t);\n\t}\n\n\tnormalize(): Quaternion {\n\t\tconst norm = this.x * this.x + this.y * this.y + this.z * this.z +\n\t\t\tthis.w * this.w;\n\t\treturn this.set(\n\t\t\tthis.x / norm,\n\t\t\tthis.y / norm,\n\t\t\tthis.z / norm,\n\t\t\tthis.w / norm,\n\t\t);\n\t}\n\n\t__cachedQuaternionForRotate = {\n\t\tx: 0,\n\t\ty: 0,\n\t\tz: 0,\n\t\tw: 1,\n\t};\n\trotate(axis: Vector3, angle: number) {\n\t\tconst otherQ = Quaternion.fromEuler(\n\t\t\tthis.__cachedQuaternionForRotate,\n\t\t\taxis.x * angle,\n\t\t\taxis.y * angle,\n\t\t\taxis.z * angle,\n\t\t);\n\t\treturn this.multiply(otherQ);\n\t}\n\n\tset(\n\t\tx: QuaternionLike | number | undefined = undefined,\n\t\ty = 0,\n\t\tz = 0,\n\t\tw = 0,\n\t): Quaternion {\n\t\tif (x != null && typeof x === 'number') {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\t\t\tthis.w = w;\n\t\t} else if (x != null && (x as QuaternionLike).w != null) {\n\t\t\tconst qq: QuaternionLike = x as QuaternionLike;\n\t\t\tthis.x = qq.x;\n\t\t\tthis.y = qq.y;\n\t\t\tthis.z = qq.z;\n\t\t\tthis.w = qq.w;\n\t\t} else {\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\t\t}\n\t\treturn this;\n\t}\n\n\trotateX(angle: number) {\n\t\treturn this.rotate(Vector3.staticRight, angle);\n\t}\n\n\trotateY(angle: number) {\n\t\treturn this.rotate(Vector3.staticUp, angle);\n\t}\n\n\trotateZ(angle: number) {\n\t\treturn this.rotate(Vector3.staticForward, angle);\n\t}\n\n\tlookRotation(forward: Vector3, up: Vector3) {\n\t\tconst fwd = forward.normalize();\n\t\tconst right = up.cross(fwd).normalize();\n\t\tconst up2 = fwd.clone().cross(right).normalize();\n\t\tconst m00 = right.x;\n\t\tconst m01 = right.y;\n\t\tconst m02 = right.z;\n\t\tconst m10 = up2.x;\n\t\tconst m11 = up2.y;\n\t\tconst m12 = up2.z;\n\t\tconst m20 = fwd.x;\n\t\tconst m21 = fwd.y;\n\t\tconst m22 = fwd.z;\n\n\t\tconst num8 = (m00 + m11) + m22;\n\t\tlet q: Quaternion = new Quaternion();\n\t\tif (num8 > 0) {\n\t\t\tlet num = Math.sqrt(num8 + 1);\n\t\t\tq.w = num * 0.5;\n\t\t\tnum = 0.5 / num;\n\t\t\tq.x = (m12 - m21) * num;\n\t\t\tq.y = (m20 - m02) * num;\n\t\t\tq.z = (m01 - m10) * num;\n\t\t\treturn q;\n\t\t}\n\t\tif ((m00 >= m11) && (m00 >= m22)) {\n\t\t\tconst num7 = Math.sqrt(((1 + m00) - m11) - m22);\n\t\t\tconst num4 = 0.5 / num7;\n\t\t\tq.x = 0.5 * num7;\n\t\t\tq.y = (m01 + m10) * num4;\n\t\t\tq.z = (m02 + m20) * num4;\n\t\t\tq.w = (m12 - m21) * num4;\n\t\t\treturn q;\n\t\t}\n\t\tif (m11 > m22) {\n\t\t\tconst num6 = Math.sqrt(((1 + m11) - m00) - m22);\n\t\t\tconst num3 = 0.5 / num6;\n\t\t\tq.x = (m10 + m01) * num3;\n\t\t\tq.y = 0.5 * num6;\n\t\t\tq.z = (m21 + m12) * num3;\n\t\t\tq.w = (m20 - m02) * num3;\n\t\t\treturn q;\n\t\t}\n\t\tconst num5 = Math.sqrt(((1 + m22) - m00) - m11);\n\t\tconst num2 = 0.5 / num5;\n\t\tq.x = (m20 + m02) * num2;\n\t\tq.y = (m21 + m12) * num2;\n\t\tq.z = 0.5 * num5;\n\t\tq.w = (m01 - m10) * num2;\n\t\treturn q;\n\t}\n\n\tmultiply(q: QuaternionLike): Quaternion {\n\t\treturn this.set(\n\t\t\tthis.w * q.x + this.x * q.w + this.y * q.z - this.z * q.y,\n\t\t\tthis.w * q.y + this.y * q.w + this.z * q.x - this.x * q.z,\n\t\t\tthis.w * q.z + this.z * q.w + this.x * q.y - this.y * q.x,\n\t\t\tthis.w * q.w - this.x * q.x - this.y * q.y - this.z * q.z,\n\t\t);\n\t}\n\n\tmultiplyVec3_ALLOC(v: Vector3Like): Vector3 {\n\t\tconst q = alloc(new Quaternion())\n\t\t\t.set(v.x, v.y, v.z, 0)\n\t\t\t.multiply(this.conjugate());\n\t\treturn alloc(new Vector3(q.x, q.y, q.z));\n\t}\n\n\t// creates garbage\n\tstatic get_ALLOC(\n\t\tx: number | undefined = undefined,\n\t\ty: number | undefined = undefined,\n\t\tz: number | undefined = undefined,\n\t\tw: number | undefined = undefined,\n\t): QuaternionLike {\n\t\tif (x != null && typeof x === 'number') {\n\t\t\treturn alloc({ x, y: y!, z: z!, w: w! });\n\t\t}\n\t\treturn alloc({ x: 0, y: 0, z: 0, w: 1 });\n\t}\n\n\tstatic set(\n\t\tq: QuaternionLike,\n\t\tx: number | QuaternionLike,\n\t\ty: number | undefined = undefined,\n\t\tz: number | undefined = undefined,\n\t\tw: number | undefined = undefined,\n\t): QuaternionLike {\n\t\tif (x != null && typeof x === 'number') {\n\t\t\tq.x = x;\n\t\t\tq.y = y!;\n\t\t\tq.z = z!;\n\t\t\tq.w = w!;\n\t\t} else if ((x as unknown as QuaternionLike).x != null) {\n\t\t\tconst qq: QuaternionLike = x as QuaternionLike;\n\t\t\tq.x = qq.x;\n\t\t\tq.y = qq.y;\n\t\t\tq.z = qq.z;\n\t\t\tq.w = qq.w;\n\t\t}\n\t\treturn q;\n\t}\n\n\t// can create garbage\n\tstatic multiply(\n\t\ta: QuaternionLike,\n\t\tb: QuaternionLike,\n\t\toverwrite: QuaternionLike | boolean = false,\n\t): QuaternionLike {\n\t\tconst x = a.w * b.x + a.x * b.w + a.y * b.z - a.z * b.y;\n\t\tconst y = a.w * b.y + a.y * b.w + a.z * b.x - a.x * b.z;\n\t\tconst z = a.w * b.z + a.z * b.w + a.x * b.y - a.y * b.x;\n\t\tconst w = a.w * b.w - a.x * b.x - a.y * b.y - a.z * b.z;\n\t\treturn Quaternion.newOrOverwrite(a, overwrite, x, y, z, w);\n\t}\n\n\tstatic vectorize(a: QuaternionLike) {\n\t\ta.w = 0;\n\t\treturn a;\n\t}\n\n\t// can create garbage\n\tstatic invert(\n\t\ta: QuaternionLike,\n\t\toverwrite: QuaternionLike | boolean = false,\n\t): QuaternionLike {\n\t\tconst norm = a.x * a.x + a.y * a.y + a.z * a.z + a.w * a.w;\n\t\tconst x = -a.x / norm;\n\t\tconst y = -a.y / norm;\n\t\tconst z = -a.z / norm;\n\t\tconst w = a.w / norm;\n\t\treturn Quaternion.newOrOverwrite(a, overwrite, x, y, z, w);\n\t}\n\n\t// creates garbage\n\tprivate static newOrOverwrite(\n\t\ta: QuaternionLike,\n\t\toverwrite: QuaternionLike | boolean,\n\t\tx: number,\n\t\ty: number,\n\t\tz: number,\n\t\tw: number,\n\t): QuaternionLike {\n\t\tif (overwrite === true) {\n\t\t\ta.x = x;\n\t\t\ta.y = y;\n\t\t\ta.z = z;\n\t\t\ta.w = w;\n\t\t\treturn a;\n\t\t} else if (overwrite) {\n\t\t\toverwrite.x = x;\n\t\t\toverwrite.y = y;\n\t\t\toverwrite.z = z;\n\t\t\toverwrite.w = w;\n\t\t\treturn overwrite;\n\t\t} else {\n\t\t\treturn alloc({ x, y, z, w });\n\t\t}\n\t}\n\n\t// allow quaternino pool\n\t// creates garbage\n\tstatic hamiltonMultiply_ALLOC(v: Vector3Like, q: QuaternionLike): QuaternionLike {\n\t\t// q v q'\n\t\tconst q1 = Quaternion.invert(q);\n\t\tconst p = Quaternion.get_ALLOC(v.x, v.y, v.z, 0);\n\t\tconst qv = Quaternion.multiply(q, p);\n\t\tconst qvq1 = Quaternion.multiply(qv, q1);\n\t\treturn Quaternion.vectorize(qvq1);\n\t}\n\t\n\tstatic hamiltonMultiply(v: Vector3Like, q: QuaternionLike, dummy: QuaternionLike) {\n\t\tconst q1 = Quaternion.invert(q);\n\t\tconst p = dummy\n\t\tp.w = 0;\n\t\tp.x = v.x;\n\t\tp.y = v.y;\n\t\tp.z = v.z;\n\t\tconst qv = Quaternion.multiply(q, p);\n\t\tconst qvq1 = Quaternion.multiply(qv, q1);\n\t\treturn Quaternion.vectorize(qvq1);\n\t}\n}\n", "import { Debug } from './Debug.ts';\n\ntype Files =\n\t| 'ontology'\n\t| 'meta'\n\t| 'animus'\n\t| 'axon'\n\t| 'ontology-axon'\n\t| 'pool'\n\t| 'world'\n\t| '_';\n\nconst emoji: Record = {\n\t_: '\uD83D\uDCA9',\n\tontology: '\uD83D\uDCE6',\n\tmeta: '\uD83D\uDCDD',\n\tanimus: '\uD83C\uDF3F',\n\taxon: '\uD83E\uDDE0',\n\t'ontology-axon': '\uD83E\uDDE0\uD83D\uDCE6',\n\tpool: '\uD83C\uDFCA\u200D\u2640\uFE0F',\n\tworld: '\uD83C\uDF0E',\n};\n\nconst silencedLogs = ['axon'];\nconst silenceQuick = true;\n\nexport class Note {\n\tprivate static _internal_preamble = (\n\t\tfile: Files,\n\t\tlevel: 'info' | 'warn' | 'error',\n\t): string[] => {\n\t\tconst timestamp = new Date().toLocaleTimeString();\n\t\tlet suffix: string[] = [];\n\t\tif (level === 'warn') {\n\t\t\tsuffix = ['color: #ffa500', '\u26A0\uFE0F'];\n\t\t} else if (level === 'error') {\n\t\t\tsuffix = ['color: #ff0000', '\uD83D\uDEA8'];\n\t\t} else {\n\t\t\tsuffix = ['|'];\n\t\t}\n\t\treturn [`%c[${timestamp}] ${emoji[file]} ${file}`, ...suffix];\n\t};\n\n\tprivate static _internal_log(\n\t\tmethod: (...args: any[]) => any,\n\t\t...args: any[]\n\t) {\n\t\tmethod(...args);\n\t}\n\n\tstatic quick(...data: any[]) {\n\t\tif (silenceQuick) {\n\t\t\treturn;\n\t\t}\n\t\tif (!Debug.enabled) return;\n\t\tthis._internal_log(\n\t\t\tconsole.groupCollapsed,\n\t\t\t...this._internal_preamble('_', 'info'),\n\t\t\t...data,\n\t\t);\n\t\tconsole.trace();\n\t\tconsole.groupEnd();\n\t}\n\n\tstatic info(file: Files, ...data: any[]) {\n\t\tif (silencedLogs.includes(file)) {\n\t\t\treturn;\n\t\t}\n\t\tif (!Debug.enabled) {\n\t\t\tthis._internal_log(\n\t\t\t\tconsole.log,\n\t\t\t\t...this._internal_preamble(file, 'info'),\n\t\t\t\t...data,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tthis._internal_log(\n\t\t\tconsole.groupCollapsed,\n\t\t\t...this._internal_preamble(file, 'info'),\n\t\t\t...data,\n\t\t);\n\t\tconsole.trace();\n\t\tconsole.groupEnd();\n\t}\n\n\tstatic warn(file: Files, ...data: any[]) {\n\t\tif (silencedLogs.includes(file)) {\n\t\t\treturn;\n\t\t}\n\t\tthis._internal_log(\n\t\t\tconsole.groupCollapsed,\n\t\t\t...this._internal_preamble(file, 'warn'),\n\t\t\t...data,\n\t\t);\n\t\tconsole.trace();\n\t\tconsole.groupEnd();\n\t}\n\n\tstatic error(file: Files, ...data: any[]) {\n\t\tif (silencedLogs.includes(file)) {\n\t\t\treturn;\n\t\t}\n\t\tthis._internal_log(\n\t\t\tconsole.groupCollapsed,\n\t\t\t...this._internal_preamble(file, 'error'),\n\t\t\t...data,\n\t\t);\n\t\tconsole.trace();\n\t\tconsole.groupEnd();\n\t}\n\n\tstatic trace(file: Files, ...data: any[]) {\n\t\tif (silencedLogs.includes(file)) {\n\t\t\treturn;\n\t\t}\n\t\tNote.info(file, ...data);\n\t}\n}\n\nexport const qnote = (...data: any[]) => Note.quick(...data);\n", "/*\n * Skypack CDN - three@0.135.0\n *\n * Learn more:\n * \uD83D\uDCD9 Package Documentation: https://www.skypack.dev/view/three\n * \uD83D\uDCD8 Skypack Documentation: https://www.skypack.dev/docs\n *\n * Pinned URL: (Optimized for Production)\n * \u25B6\uFE0F Normal: https://cdn.skypack.dev/pin/three@v0.135.0-pjGUcRG9Xt70OdXl97VF/mode=imports/optimized/three.js\n * \u23E9 Minified: https://cdn.skypack.dev/pin/three@v0.135.0-pjGUcRG9Xt70OdXl97VF/mode=imports,min/optimized/three.js\n *\n */\n\n// Browser-Optimized Imports (Don't directly import the URLs below in your application!)\nexport * from '/-/three@v0.135.0-pjGUcRG9Xt70OdXl97VF/dist=es2019,mode=imports/optimized/three.js';\nexport {default} from '/-/three@v0.135.0-pjGUcRG9Xt70OdXl97VF/dist=es2019,mode=imports/optimized/three.js';\n", "/**\n * @license\n * Copyright 2010-2021 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = \"135\";\nconst MOUSE = {LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2};\nconst TOUCH = {ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3};\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1e3;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3e3;\nconst sRGBEncoding = 3001;\nconst GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\nconst GLSL1 = \"100\";\nconst GLSL3 = \"300 es\";\nclass EventDispatcher {\n addEventListener(type, listener) {\n if (this._listeners === void 0)\n this._listeners = {};\n const listeners = this._listeners;\n if (listeners[type] === void 0) {\n listeners[type] = [];\n }\n if (listeners[type].indexOf(listener) === -1) {\n listeners[type].push(listener);\n }\n }\n hasEventListener(type, listener) {\n if (this._listeners === void 0)\n return false;\n const listeners = this._listeners;\n return listeners[type] !== void 0 && listeners[type].indexOf(listener) !== -1;\n }\n removeEventListener(type, listener) {\n if (this._listeners === void 0)\n return;\n const listeners = this._listeners;\n const listenerArray = listeners[type];\n if (listenerArray !== void 0) {\n const index = listenerArray.indexOf(listener);\n if (index !== -1) {\n listenerArray.splice(index, 1);\n }\n }\n }\n dispatchEvent(event) {\n if (this._listeners === void 0)\n return;\n const listeners = this._listeners;\n const listenerArray = listeners[event.type];\n if (listenerArray !== void 0) {\n event.target = this;\n const array = listenerArray.slice(0);\n for (let i = 0, l = array.length; i < l; i++) {\n array[i].call(this, event);\n }\n event.target = null;\n }\n }\n}\nconst _lut = [];\nfor (let i = 0; i < 256; i++) {\n _lut[i] = (i < 16 ? \"0\" : \"\") + i.toString(16);\n}\nlet _seed = 1234567;\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\nfunction generateUUID() {\n const d0 = Math.random() * 4294967295 | 0;\n const d1 = Math.random() * 4294967295 | 0;\n const d2 = Math.random() * 4294967295 | 0;\n const d3 = Math.random() * 4294967295 | 0;\n const uuid = _lut[d0 & 255] + _lut[d0 >> 8 & 255] + _lut[d0 >> 16 & 255] + _lut[d0 >> 24 & 255] + \"-\" + _lut[d1 & 255] + _lut[d1 >> 8 & 255] + \"-\" + _lut[d1 >> 16 & 15 | 64] + _lut[d1 >> 24 & 255] + \"-\" + _lut[d2 & 63 | 128] + _lut[d2 >> 8 & 255] + \"-\" + _lut[d2 >> 16 & 255] + _lut[d2 >> 24 & 255] + _lut[d3 & 255] + _lut[d3 >> 8 & 255] + _lut[d3 >> 16 & 255] + _lut[d3 >> 24 & 255];\n return uuid.toUpperCase();\n}\nfunction clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction euclideanModulo(n, m) {\n return (n % m + m) % m;\n}\nfunction mapLinear(x, a1, a2, b1, b2) {\n return b1 + (x - a1) * (b2 - b1) / (a2 - a1);\n}\nfunction inverseLerp(x, y, value) {\n if (x !== y) {\n return (value - x) / (y - x);\n } else {\n return 0;\n }\n}\nfunction lerp(x, y, t) {\n return (1 - t) * x + t * y;\n}\nfunction damp(x, y, lambda, dt) {\n return lerp(x, y, 1 - Math.exp(-lambda * dt));\n}\nfunction pingpong(x, length = 1) {\n return length - Math.abs(euclideanModulo(x, length * 2) - length);\n}\nfunction smoothstep(x, min, max) {\n if (x <= min)\n return 0;\n if (x >= max)\n return 1;\n x = (x - min) / (max - min);\n return x * x * (3 - 2 * x);\n}\nfunction smootherstep(x, min, max) {\n if (x <= min)\n return 0;\n if (x >= max)\n return 1;\n x = (x - min) / (max - min);\n return x * x * x * (x * (x * 6 - 15) + 10);\n}\nfunction randInt(low, high) {\n return low + Math.floor(Math.random() * (high - low + 1));\n}\nfunction randFloat(low, high) {\n return low + Math.random() * (high - low);\n}\nfunction randFloatSpread(range) {\n return range * (0.5 - Math.random());\n}\nfunction seededRandom(s) {\n if (s !== void 0)\n _seed = s % 2147483647;\n _seed = _seed * 16807 % 2147483647;\n return (_seed - 1) / 2147483646;\n}\nfunction degToRad(degrees) {\n return degrees * DEG2RAD;\n}\nfunction radToDeg(radians) {\n return radians * RAD2DEG;\n}\nfunction isPowerOfTwo(value) {\n return (value & value - 1) === 0 && value !== 0;\n}\nfunction ceilPowerOfTwo(value) {\n return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2));\n}\nfunction floorPowerOfTwo(value) {\n return Math.pow(2, Math.floor(Math.log(value) / Math.LN2));\n}\nfunction setQuaternionFromProperEuler(q, a, b, c, order) {\n const cos = Math.cos;\n const sin = Math.sin;\n const c2 = cos(b / 2);\n const s2 = sin(b / 2);\n const c13 = cos((a + c) / 2);\n const s13 = sin((a + c) / 2);\n const c1_3 = cos((a - c) / 2);\n const s1_3 = sin((a - c) / 2);\n const c3_1 = cos((c - a) / 2);\n const s3_1 = sin((c - a) / 2);\n switch (order) {\n case \"XYX\":\n q.set(c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13);\n break;\n case \"YZY\":\n q.set(s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13);\n break;\n case \"ZXZ\":\n q.set(s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13);\n break;\n case \"XZX\":\n q.set(c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13);\n break;\n case \"YXY\":\n q.set(s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13);\n break;\n case \"ZYZ\":\n q.set(s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13);\n break;\n default:\n console.warn(\"THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: \" + order);\n }\n}\nvar MathUtils = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n DEG2RAD,\n RAD2DEG,\n generateUUID,\n clamp,\n euclideanModulo,\n mapLinear,\n inverseLerp,\n lerp,\n damp,\n pingpong,\n smoothstep,\n smootherstep,\n randInt,\n randFloat,\n randFloatSpread,\n seededRandom,\n degToRad,\n radToDeg,\n isPowerOfTwo,\n ceilPowerOfTwo,\n floorPowerOfTwo,\n setQuaternionFromProperEuler\n});\nclass Vector2 {\n constructor(x = 0, y = 0) {\n this.x = x;\n this.y = y;\n }\n get width() {\n return this.x;\n }\n set width(value) {\n this.x = value;\n }\n get height() {\n return this.y;\n }\n set height(value) {\n this.y = value;\n }\n set(x, y) {\n this.x = x;\n this.y = y;\n return this;\n }\n setScalar(scalar) {\n this.x = scalar;\n this.y = scalar;\n return this;\n }\n setX(x) {\n this.x = x;\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n setComponent(index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n default:\n throw new Error(\"index is out of range: \" + index);\n }\n return this;\n }\n getComponent(index) {\n switch (index) {\n case 0:\n return this.x;\n case 1:\n return this.y;\n default:\n throw new Error(\"index is out of range: \" + index);\n }\n }\n clone() {\n return new this.constructor(this.x, this.y);\n }\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n return this;\n }\n add(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.\");\n return this.addVectors(v, w);\n }\n this.x += v.x;\n this.y += v.y;\n return this;\n }\n addScalar(s) {\n this.x += s;\n this.y += s;\n return this;\n }\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n return this;\n }\n addScaledVector(v, s) {\n this.x += v.x * s;\n this.y += v.y * s;\n return this;\n }\n sub(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\");\n return this.subVectors(v, w);\n }\n this.x -= v.x;\n this.y -= v.y;\n return this;\n }\n subScalar(s) {\n this.x -= s;\n this.y -= s;\n return this;\n }\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n return this;\n }\n multiply(v) {\n this.x *= v.x;\n this.y *= v.y;\n return this;\n }\n multiplyScalar(scalar) {\n this.x *= scalar;\n this.y *= scalar;\n return this;\n }\n divide(v) {\n this.x /= v.x;\n this.y /= v.y;\n return this;\n }\n divideScalar(scalar) {\n return this.multiplyScalar(1 / scalar);\n }\n applyMatrix3(m) {\n const x = this.x, y = this.y;\n const e = m.elements;\n this.x = e[0] * x + e[3] * y + e[6];\n this.y = e[1] * x + e[4] * y + e[7];\n return this;\n }\n min(v) {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n return this;\n }\n max(v) {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n return this;\n }\n clamp(min, max) {\n this.x = Math.max(min.x, Math.min(max.x, this.x));\n this.y = Math.max(min.y, Math.min(max.y, this.y));\n return this;\n }\n clampScalar(minVal, maxVal) {\n this.x = Math.max(minVal, Math.min(maxVal, this.x));\n this.y = Math.max(minVal, Math.min(maxVal, this.y));\n return this;\n }\n clampLength(min, max) {\n const length = this.length();\n return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n }\n floor() {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n return this;\n }\n ceil() {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n return this;\n }\n round() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n }\n roundToZero() {\n this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n return this;\n }\n negate() {\n this.x = -this.x;\n this.y = -this.y;\n return this;\n }\n dot(v) {\n return this.x * v.x + this.y * v.y;\n }\n cross(v) {\n return this.x * v.y - this.y * v.x;\n }\n lengthSq() {\n return this.x * this.x + this.y * this.y;\n }\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n manhattanLength() {\n return Math.abs(this.x) + Math.abs(this.y);\n }\n normalize() {\n return this.divideScalar(this.length() || 1);\n }\n angle() {\n const angle = Math.atan2(-this.y, -this.x) + Math.PI;\n return angle;\n }\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n distanceToSquared(v) {\n const dx = this.x - v.x, dy = this.y - v.y;\n return dx * dx + dy * dy;\n }\n manhattanDistanceTo(v) {\n return Math.abs(this.x - v.x) + Math.abs(this.y - v.y);\n }\n setLength(length) {\n return this.normalize().multiplyScalar(length);\n }\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n return this;\n }\n lerpVectors(v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n return this;\n }\n equals(v) {\n return v.x === this.x && v.y === this.y;\n }\n fromArray(array, offset = 0) {\n this.x = array[offset];\n this.y = array[offset + 1];\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this.x;\n array[offset + 1] = this.y;\n return array;\n }\n fromBufferAttribute(attribute, index, offset) {\n if (offset !== void 0) {\n console.warn(\"THREE.Vector2: offset has been removed from .fromBufferAttribute().\");\n }\n this.x = attribute.getX(index);\n this.y = attribute.getY(index);\n return this;\n }\n rotateAround(center, angle) {\n const c = Math.cos(angle), s = Math.sin(angle);\n const x = this.x - center.x;\n const y = this.y - center.y;\n this.x = x * c - y * s + center.x;\n this.y = x * s + y * c + center.y;\n return this;\n }\n random() {\n this.x = Math.random();\n this.y = Math.random();\n return this;\n }\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n }\n}\nVector2.prototype.isVector2 = true;\nclass Matrix3 {\n constructor() {\n this.elements = [\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ];\n if (arguments.length > 0) {\n console.error(\"THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.\");\n }\n }\n set(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n const te = this.elements;\n te[0] = n11;\n te[1] = n21;\n te[2] = n31;\n te[3] = n12;\n te[4] = n22;\n te[5] = n32;\n te[6] = n13;\n te[7] = n23;\n te[8] = n33;\n return this;\n }\n identity() {\n this.set(1, 0, 0, 0, 1, 0, 0, 0, 1);\n return this;\n }\n copy(m) {\n const te = this.elements;\n const me = m.elements;\n te[0] = me[0];\n te[1] = me[1];\n te[2] = me[2];\n te[3] = me[3];\n te[4] = me[4];\n te[5] = me[5];\n te[6] = me[6];\n te[7] = me[7];\n te[8] = me[8];\n return this;\n }\n extractBasis(xAxis, yAxis, zAxis) {\n xAxis.setFromMatrix3Column(this, 0);\n yAxis.setFromMatrix3Column(this, 1);\n zAxis.setFromMatrix3Column(this, 2);\n return this;\n }\n setFromMatrix4(m) {\n const me = m.elements;\n this.set(me[0], me[4], me[8], me[1], me[5], me[9], me[2], me[6], me[10]);\n return this;\n }\n multiply(m) {\n return this.multiplyMatrices(this, m);\n }\n premultiply(m) {\n return this.multiplyMatrices(m, this);\n }\n multiplyMatrices(a, b) {\n const ae = a.elements;\n const be = b.elements;\n const te = this.elements;\n const a11 = ae[0], a12 = ae[3], a13 = ae[6];\n const a21 = ae[1], a22 = ae[4], a23 = ae[7];\n const a31 = ae[2], a32 = ae[5], a33 = ae[8];\n const b11 = be[0], b12 = be[3], b13 = be[6];\n const b21 = be[1], b22 = be[4], b23 = be[7];\n const b31 = be[2], b32 = be[5], b33 = be[8];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n return this;\n }\n multiplyScalar(s) {\n const te = this.elements;\n te[0] *= s;\n te[3] *= s;\n te[6] *= s;\n te[1] *= s;\n te[4] *= s;\n te[7] *= s;\n te[2] *= s;\n te[5] *= s;\n te[8] *= s;\n return this;\n }\n determinant() {\n const te = this.elements;\n const a = te[0], b = te[1], c = te[2], d = te[3], e = te[4], f = te[5], g = te[6], h = te[7], i = te[8];\n return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n }\n invert() {\n const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n12 = te[3], n22 = te[4], n32 = te[5], n13 = te[6], n23 = te[7], n33 = te[8], t11 = n33 * n22 - n32 * n23, t12 = n32 * n13 - n33 * n12, t13 = n23 * n12 - n22 * n13, det = n11 * t11 + n21 * t12 + n31 * t13;\n if (det === 0)\n return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n const detInv = 1 / det;\n te[0] = t11 * detInv;\n te[1] = (n31 * n23 - n33 * n21) * detInv;\n te[2] = (n32 * n21 - n31 * n22) * detInv;\n te[3] = t12 * detInv;\n te[4] = (n33 * n11 - n31 * n13) * detInv;\n te[5] = (n31 * n12 - n32 * n11) * detInv;\n te[6] = t13 * detInv;\n te[7] = (n21 * n13 - n23 * n11) * detInv;\n te[8] = (n22 * n11 - n21 * n12) * detInv;\n return this;\n }\n transpose() {\n let tmp2;\n const m = this.elements;\n tmp2 = m[1];\n m[1] = m[3];\n m[3] = tmp2;\n tmp2 = m[2];\n m[2] = m[6];\n m[6] = tmp2;\n tmp2 = m[5];\n m[5] = m[7];\n m[7] = tmp2;\n return this;\n }\n getNormalMatrix(matrix4) {\n return this.setFromMatrix4(matrix4).invert().transpose();\n }\n transposeIntoArray(r) {\n const m = this.elements;\n r[0] = m[0];\n r[1] = m[3];\n r[2] = m[6];\n r[3] = m[1];\n r[4] = m[4];\n r[5] = m[7];\n r[6] = m[2];\n r[7] = m[5];\n r[8] = m[8];\n return this;\n }\n setUvTransform(tx, ty, sx, sy, rotation, cx, cy) {\n const c = Math.cos(rotation);\n const s = Math.sin(rotation);\n this.set(sx * c, sx * s, -sx * (c * cx + s * cy) + cx + tx, -sy * s, sy * c, -sy * (-s * cx + c * cy) + cy + ty, 0, 0, 1);\n return this;\n }\n scale(sx, sy) {\n const te = this.elements;\n te[0] *= sx;\n te[3] *= sx;\n te[6] *= sx;\n te[1] *= sy;\n te[4] *= sy;\n te[7] *= sy;\n return this;\n }\n rotate(theta) {\n const c = Math.cos(theta);\n const s = Math.sin(theta);\n const te = this.elements;\n const a11 = te[0], a12 = te[3], a13 = te[6];\n const a21 = te[1], a22 = te[4], a23 = te[7];\n te[0] = c * a11 + s * a21;\n te[3] = c * a12 + s * a22;\n te[6] = c * a13 + s * a23;\n te[1] = -s * a11 + c * a21;\n te[4] = -s * a12 + c * a22;\n te[7] = -s * a13 + c * a23;\n return this;\n }\n translate(tx, ty) {\n const te = this.elements;\n te[0] += tx * te[2];\n te[3] += tx * te[5];\n te[6] += tx * te[8];\n te[1] += ty * te[2];\n te[4] += ty * te[5];\n te[7] += ty * te[8];\n return this;\n }\n equals(matrix) {\n const te = this.elements;\n const me = matrix.elements;\n for (let i = 0; i < 9; i++) {\n if (te[i] !== me[i])\n return false;\n }\n return true;\n }\n fromArray(array, offset = 0) {\n for (let i = 0; i < 9; i++) {\n this.elements[i] = array[i + offset];\n }\n return this;\n }\n toArray(array = [], offset = 0) {\n const te = this.elements;\n array[offset] = te[0];\n array[offset + 1] = te[1];\n array[offset + 2] = te[2];\n array[offset + 3] = te[3];\n array[offset + 4] = te[4];\n array[offset + 5] = te[5];\n array[offset + 6] = te[6];\n array[offset + 7] = te[7];\n array[offset + 8] = te[8];\n return array;\n }\n clone() {\n return new this.constructor().fromArray(this.elements);\n }\n}\nMatrix3.prototype.isMatrix3 = true;\nfunction arrayMax(array) {\n if (array.length === 0)\n return -Infinity;\n let max = array[0];\n for (let i = 1, l = array.length; i < l; ++i) {\n if (array[i] > max)\n max = array[i];\n }\n return max;\n}\nconst TYPED_ARRAYS = {\n Int8Array,\n Uint8Array,\n Uint8ClampedArray,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array\n};\nfunction getTypedArray(type, buffer) {\n return new TYPED_ARRAYS[type](buffer);\n}\nfunction createElementNS(name) {\n return document.createElementNS(\"http://www.w3.org/1999/xhtml\", name);\n}\nfunction hashString(str, seed = 0) {\n let h1 = 3735928559 ^ seed, h2 = 1103547991 ^ seed;\n for (let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ h1 >>> 16, 2246822507) ^ Math.imul(h2 ^ h2 >>> 13, 3266489909);\n h2 = Math.imul(h2 ^ h2 >>> 16, 2246822507) ^ Math.imul(h1 ^ h1 >>> 13, 3266489909);\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n}\nlet _canvas;\nclass ImageUtils {\n static getDataURL(image) {\n if (/^data:/i.test(image.src)) {\n return image.src;\n }\n if (typeof HTMLCanvasElement == \"undefined\") {\n return image.src;\n }\n let canvas;\n if (image instanceof HTMLCanvasElement) {\n canvas = image;\n } else {\n if (_canvas === void 0)\n _canvas = createElementNS(\"canvas\");\n _canvas.width = image.width;\n _canvas.height = image.height;\n const context = _canvas.getContext(\"2d\");\n if (image instanceof ImageData) {\n context.putImageData(image, 0, 0);\n } else {\n context.drawImage(image, 0, 0, image.width, image.height);\n }\n canvas = _canvas;\n }\n if (canvas.width > 2048 || canvas.height > 2048) {\n console.warn(\"THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons\", image);\n return canvas.toDataURL(\"image/jpeg\", 0.6);\n } else {\n return canvas.toDataURL(\"image/png\");\n }\n }\n}\nlet textureId = 0;\nclass Texture extends EventDispatcher {\n constructor(image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding) {\n super();\n Object.defineProperty(this, \"id\", {value: textureId++});\n this.uuid = generateUUID();\n this.name = \"\";\n this.image = image;\n this.mipmaps = [];\n this.mapping = mapping;\n this.wrapS = wrapS;\n this.wrapT = wrapT;\n this.magFilter = magFilter;\n this.minFilter = minFilter;\n this.anisotropy = anisotropy;\n this.format = format;\n this.internalFormat = null;\n this.type = type;\n this.offset = new Vector2(0, 0);\n this.repeat = new Vector2(1, 1);\n this.center = new Vector2(0, 0);\n this.rotation = 0;\n this.matrixAutoUpdate = true;\n this.matrix = new Matrix3();\n this.generateMipmaps = true;\n this.premultiplyAlpha = false;\n this.flipY = true;\n this.unpackAlignment = 4;\n this.encoding = encoding;\n this.userData = {};\n this.version = 0;\n this.onUpdate = null;\n this.isRenderTargetTexture = false;\n }\n updateMatrix() {\n this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y);\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(source) {\n this.name = source.name;\n this.image = source.image;\n this.mipmaps = source.mipmaps.slice(0);\n this.mapping = source.mapping;\n this.wrapS = source.wrapS;\n this.wrapT = source.wrapT;\n this.magFilter = source.magFilter;\n this.minFilter = source.minFilter;\n this.anisotropy = source.anisotropy;\n this.format = source.format;\n this.internalFormat = source.internalFormat;\n this.type = source.type;\n this.offset.copy(source.offset);\n this.repeat.copy(source.repeat);\n this.center.copy(source.center);\n this.rotation = source.rotation;\n this.matrixAutoUpdate = source.matrixAutoUpdate;\n this.matrix.copy(source.matrix);\n this.generateMipmaps = source.generateMipmaps;\n this.premultiplyAlpha = source.premultiplyAlpha;\n this.flipY = source.flipY;\n this.unpackAlignment = source.unpackAlignment;\n this.encoding = source.encoding;\n this.userData = JSON.parse(JSON.stringify(source.userData));\n return this;\n }\n toJSON(meta) {\n const isRootObject = meta === void 0 || typeof meta === \"string\";\n if (!isRootObject && meta.textures[this.uuid] !== void 0) {\n return meta.textures[this.uuid];\n }\n const output = {\n metadata: {\n version: 4.5,\n type: \"Texture\",\n generator: \"Texture.toJSON\"\n },\n uuid: this.uuid,\n name: this.name,\n mapping: this.mapping,\n repeat: [this.repeat.x, this.repeat.y],\n offset: [this.offset.x, this.offset.y],\n center: [this.center.x, this.center.y],\n rotation: this.rotation,\n wrap: [this.wrapS, this.wrapT],\n format: this.format,\n type: this.type,\n encoding: this.encoding,\n minFilter: this.minFilter,\n magFilter: this.magFilter,\n anisotropy: this.anisotropy,\n flipY: this.flipY,\n premultiplyAlpha: this.premultiplyAlpha,\n unpackAlignment: this.unpackAlignment\n };\n if (this.image !== void 0) {\n const image = this.image;\n if (image.uuid === void 0) {\n image.uuid = generateUUID();\n }\n if (!isRootObject && meta.images[image.uuid] === void 0) {\n let url;\n if (Array.isArray(image)) {\n url = [];\n for (let i = 0, l = image.length; i < l; i++) {\n if (image[i].isDataTexture) {\n url.push(serializeImage(image[i].image));\n } else {\n url.push(serializeImage(image[i]));\n }\n }\n } else {\n url = serializeImage(image);\n }\n meta.images[image.uuid] = {\n uuid: image.uuid,\n url\n };\n }\n output.image = image.uuid;\n }\n if (JSON.stringify(this.userData) !== \"{}\")\n output.userData = this.userData;\n if (!isRootObject) {\n meta.textures[this.uuid] = output;\n }\n return output;\n }\n dispose() {\n this.dispatchEvent({type: \"dispose\"});\n }\n transformUv(uv) {\n if (this.mapping !== UVMapping)\n return uv;\n uv.applyMatrix3(this.matrix);\n if (uv.x < 0 || uv.x > 1) {\n switch (this.wrapS) {\n case RepeatWrapping:\n uv.x = uv.x - Math.floor(uv.x);\n break;\n case ClampToEdgeWrapping:\n uv.x = uv.x < 0 ? 0 : 1;\n break;\n case MirroredRepeatWrapping:\n if (Math.abs(Math.floor(uv.x) % 2) === 1) {\n uv.x = Math.ceil(uv.x) - uv.x;\n } else {\n uv.x = uv.x - Math.floor(uv.x);\n }\n break;\n }\n }\n if (uv.y < 0 || uv.y > 1) {\n switch (this.wrapT) {\n case RepeatWrapping:\n uv.y = uv.y - Math.floor(uv.y);\n break;\n case ClampToEdgeWrapping:\n uv.y = uv.y < 0 ? 0 : 1;\n break;\n case MirroredRepeatWrapping:\n if (Math.abs(Math.floor(uv.y) % 2) === 1) {\n uv.y = Math.ceil(uv.y) - uv.y;\n } else {\n uv.y = uv.y - Math.floor(uv.y);\n }\n break;\n }\n }\n if (this.flipY) {\n uv.y = 1 - uv.y;\n }\n return uv;\n }\n set needsUpdate(value) {\n if (value === true)\n this.version++;\n }\n}\nTexture.DEFAULT_IMAGE = void 0;\nTexture.DEFAULT_MAPPING = UVMapping;\nTexture.prototype.isTexture = true;\nfunction serializeImage(image) {\n if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n return ImageUtils.getDataURL(image);\n } else {\n if (image.data) {\n return {\n data: Array.prototype.slice.call(image.data),\n width: image.width,\n height: image.height,\n type: image.data.constructor.name\n };\n } else {\n console.warn(\"THREE.Texture: Unable to serialize Texture.\");\n return {};\n }\n }\n}\nclass Vector4 {\n constructor(x = 0, y = 0, z = 0, w = 1) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n get width() {\n return this.z;\n }\n set width(value) {\n this.z = value;\n }\n get height() {\n return this.w;\n }\n set height(value) {\n this.w = value;\n }\n set(x, y, z, w) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n }\n setScalar(scalar) {\n this.x = scalar;\n this.y = scalar;\n this.z = scalar;\n this.w = scalar;\n return this;\n }\n setX(x) {\n this.x = x;\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n setZ(z) {\n this.z = z;\n return this;\n }\n setW(w) {\n this.w = w;\n return this;\n }\n setComponent(index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n case 3:\n this.w = value;\n break;\n default:\n throw new Error(\"index is out of range: \" + index);\n }\n return this;\n }\n getComponent(index) {\n switch (index) {\n case 0:\n return this.x;\n case 1:\n return this.y;\n case 2:\n return this.z;\n case 3:\n return this.w;\n default:\n throw new Error(\"index is out of range: \" + index);\n }\n }\n clone() {\n return new this.constructor(this.x, this.y, this.z, this.w);\n }\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n this.w = v.w !== void 0 ? v.w : 1;\n return this;\n }\n add(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.\");\n return this.addVectors(v, w);\n }\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n this.w += v.w;\n return this;\n }\n addScalar(s) {\n this.x += s;\n this.y += s;\n this.z += s;\n this.w += s;\n return this;\n }\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n this.z = a.z + b.z;\n this.w = a.w + b.w;\n return this;\n }\n addScaledVector(v, s) {\n this.x += v.x * s;\n this.y += v.y * s;\n this.z += v.z * s;\n this.w += v.w * s;\n return this;\n }\n sub(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\");\n return this.subVectors(v, w);\n }\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n this.w -= v.w;\n return this;\n }\n subScalar(s) {\n this.x -= s;\n this.y -= s;\n this.z -= s;\n this.w -= s;\n return this;\n }\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n this.z = a.z - b.z;\n this.w = a.w - b.w;\n return this;\n }\n multiply(v) {\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n this.w *= v.w;\n return this;\n }\n multiplyScalar(scalar) {\n this.x *= scalar;\n this.y *= scalar;\n this.z *= scalar;\n this.w *= scalar;\n return this;\n }\n applyMatrix4(m) {\n const x = this.x, y = this.y, z = this.z, w = this.w;\n const e = m.elements;\n this.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w;\n this.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w;\n this.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w;\n this.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w;\n return this;\n }\n divideScalar(scalar) {\n return this.multiplyScalar(1 / scalar);\n }\n setAxisAngleFromQuaternion(q) {\n this.w = 2 * Math.acos(q.w);\n const s = Math.sqrt(1 - q.w * q.w);\n if (s < 1e-4) {\n this.x = 1;\n this.y = 0;\n this.z = 0;\n } else {\n this.x = q.x / s;\n this.y = q.y / s;\n this.z = q.z / s;\n }\n return this;\n }\n setAxisAngleFromRotationMatrix(m) {\n let angle, x, y, z;\n const epsilon = 0.01, epsilon2 = 0.1, te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10];\n if (Math.abs(m12 - m21) < epsilon && Math.abs(m13 - m31) < epsilon && Math.abs(m23 - m32) < epsilon) {\n if (Math.abs(m12 + m21) < epsilon2 && Math.abs(m13 + m31) < epsilon2 && Math.abs(m23 + m32) < epsilon2 && Math.abs(m11 + m22 + m33 - 3) < epsilon2) {\n this.set(1, 0, 0, 0);\n return this;\n }\n angle = Math.PI;\n const xx = (m11 + 1) / 2;\n const yy = (m22 + 1) / 2;\n const zz = (m33 + 1) / 2;\n const xy = (m12 + m21) / 4;\n const xz = (m13 + m31) / 4;\n const yz = (m23 + m32) / 4;\n if (xx > yy && xx > zz) {\n if (xx < epsilon) {\n x = 0;\n y = 0.707106781;\n z = 0.707106781;\n } else {\n x = Math.sqrt(xx);\n y = xy / x;\n z = xz / x;\n }\n } else if (yy > zz) {\n if (yy < epsilon) {\n x = 0.707106781;\n y = 0;\n z = 0.707106781;\n } else {\n y = Math.sqrt(yy);\n x = xy / y;\n z = yz / y;\n }\n } else {\n if (zz < epsilon) {\n x = 0.707106781;\n y = 0.707106781;\n z = 0;\n } else {\n z = Math.sqrt(zz);\n x = xz / z;\n y = yz / z;\n }\n }\n this.set(x, y, z, angle);\n return this;\n }\n let s = Math.sqrt((m32 - m23) * (m32 - m23) + (m13 - m31) * (m13 - m31) + (m21 - m12) * (m21 - m12));\n if (Math.abs(s) < 1e-3)\n s = 1;\n this.x = (m32 - m23) / s;\n this.y = (m13 - m31) / s;\n this.z = (m21 - m12) / s;\n this.w = Math.acos((m11 + m22 + m33 - 1) / 2);\n return this;\n }\n min(v) {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n this.w = Math.min(this.w, v.w);\n return this;\n }\n max(v) {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n this.w = Math.max(this.w, v.w);\n return this;\n }\n clamp(min, max) {\n this.x = Math.max(min.x, Math.min(max.x, this.x));\n this.y = Math.max(min.y, Math.min(max.y, this.y));\n this.z = Math.max(min.z, Math.min(max.z, this.z));\n this.w = Math.max(min.w, Math.min(max.w, this.w));\n return this;\n }\n clampScalar(minVal, maxVal) {\n this.x = Math.max(minVal, Math.min(maxVal, this.x));\n this.y = Math.max(minVal, Math.min(maxVal, this.y));\n this.z = Math.max(minVal, Math.min(maxVal, this.z));\n this.w = Math.max(minVal, Math.min(maxVal, this.w));\n return this;\n }\n clampLength(min, max) {\n const length = this.length();\n return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n }\n floor() {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n this.w = Math.floor(this.w);\n return this;\n }\n ceil() {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n this.w = Math.ceil(this.w);\n return this;\n }\n round() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n this.w = Math.round(this.w);\n return this;\n }\n roundToZero() {\n this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z);\n this.w = this.w < 0 ? Math.ceil(this.w) : Math.floor(this.w);\n return this;\n }\n negate() {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n this.w = -this.w;\n return this;\n }\n dot(v) {\n return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n }\n lengthSq() {\n return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n }\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n }\n manhattanLength() {\n return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w);\n }\n normalize() {\n return this.divideScalar(this.length() || 1);\n }\n setLength(length) {\n return this.normalize().multiplyScalar(length);\n }\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n this.z += (v.z - this.z) * alpha;\n this.w += (v.w - this.w) * alpha;\n return this;\n }\n lerpVectors(v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n this.w = v1.w + (v2.w - v1.w) * alpha;\n return this;\n }\n equals(v) {\n return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w;\n }\n fromArray(array, offset = 0) {\n this.x = array[offset];\n this.y = array[offset + 1];\n this.z = array[offset + 2];\n this.w = array[offset + 3];\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n array[offset + 3] = this.w;\n return array;\n }\n fromBufferAttribute(attribute, index, offset) {\n if (offset !== void 0) {\n console.warn(\"THREE.Vector4: offset has been removed from .fromBufferAttribute().\");\n }\n this.x = attribute.getX(index);\n this.y = attribute.getY(index);\n this.z = attribute.getZ(index);\n this.w = attribute.getW(index);\n return this;\n }\n random() {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n this.w = Math.random();\n return this;\n }\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n yield this.z;\n yield this.w;\n }\n}\nVector4.prototype.isVector4 = true;\nclass WebGLRenderTarget extends EventDispatcher {\n constructor(width, height, options = {}) {\n super();\n this.width = width;\n this.height = height;\n this.depth = 1;\n this.scissor = new Vector4(0, 0, width, height);\n this.scissorTest = false;\n this.viewport = new Vector4(0, 0, width, height);\n this.texture = new Texture(void 0, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding);\n this.texture.isRenderTargetTexture = true;\n this.texture.image = {width, height, depth: 1};\n this.texture.generateMipmaps = options.generateMipmaps !== void 0 ? options.generateMipmaps : false;\n this.texture.internalFormat = options.internalFormat !== void 0 ? options.internalFormat : null;\n this.texture.minFilter = options.minFilter !== void 0 ? options.minFilter : LinearFilter;\n this.depthBuffer = options.depthBuffer !== void 0 ? options.depthBuffer : true;\n this.stencilBuffer = options.stencilBuffer !== void 0 ? options.stencilBuffer : false;\n this.depthTexture = options.depthTexture !== void 0 ? options.depthTexture : null;\n }\n setTexture(texture) {\n texture.image = {\n width: this.width,\n height: this.height,\n depth: this.depth\n };\n this.texture = texture;\n }\n setSize(width, height, depth = 1) {\n if (this.width !== width || this.height !== height || this.depth !== depth) {\n this.width = width;\n this.height = height;\n this.depth = depth;\n this.texture.image.width = width;\n this.texture.image.height = height;\n this.texture.image.depth = depth;\n this.dispose();\n }\n this.viewport.set(0, 0, width, height);\n this.scissor.set(0, 0, width, height);\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(source) {\n this.width = source.width;\n this.height = source.height;\n this.depth = source.depth;\n this.viewport.copy(source.viewport);\n this.texture = source.texture.clone();\n this.texture.image = {...this.texture.image};\n this.depthBuffer = source.depthBuffer;\n this.stencilBuffer = source.stencilBuffer;\n this.depthTexture = source.depthTexture;\n return this;\n }\n dispose() {\n this.dispatchEvent({type: \"dispose\"});\n }\n}\nWebGLRenderTarget.prototype.isWebGLRenderTarget = true;\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n constructor(width, height, count) {\n super(width, height);\n const texture = this.texture;\n this.texture = [];\n for (let i = 0; i < count; i++) {\n this.texture[i] = texture.clone();\n }\n }\n setSize(width, height, depth = 1) {\n if (this.width !== width || this.height !== height || this.depth !== depth) {\n this.width = width;\n this.height = height;\n this.depth = depth;\n for (let i = 0, il = this.texture.length; i < il; i++) {\n this.texture[i].image.width = width;\n this.texture[i].image.height = height;\n this.texture[i].image.depth = depth;\n }\n this.dispose();\n }\n this.viewport.set(0, 0, width, height);\n this.scissor.set(0, 0, width, height);\n return this;\n }\n copy(source) {\n this.dispose();\n this.width = source.width;\n this.height = source.height;\n this.depth = source.depth;\n this.viewport.set(0, 0, this.width, this.height);\n this.scissor.set(0, 0, this.width, this.height);\n this.depthBuffer = source.depthBuffer;\n this.stencilBuffer = source.stencilBuffer;\n this.depthTexture = source.depthTexture;\n this.texture.length = 0;\n for (let i = 0, il = source.texture.length; i < il; i++) {\n this.texture[i] = source.texture[i].clone();\n }\n return this;\n }\n}\nWebGLMultipleRenderTargets.prototype.isWebGLMultipleRenderTargets = true;\nclass WebGLMultisampleRenderTarget extends WebGLRenderTarget {\n constructor(width, height, options = {}) {\n super(width, height, options);\n this.samples = 4;\n this.ignoreDepthForMultisampleCopy = options.ignoreDepth !== void 0 ? options.ignoreDepth : true;\n this.useRenderToTexture = options.useRenderToTexture !== void 0 ? options.useRenderToTexture : false;\n this.useRenderbuffer = this.useRenderToTexture === false;\n }\n copy(source) {\n super.copy.call(this, source);\n this.samples = source.samples;\n this.useRenderToTexture = source.useRenderToTexture;\n this.useRenderbuffer = source.useRenderbuffer;\n return this;\n }\n}\nWebGLMultisampleRenderTarget.prototype.isWebGLMultisampleRenderTarget = true;\nclass Quaternion {\n constructor(x = 0, y = 0, z = 0, w = 1) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._w = w;\n }\n static slerp(qa, qb, qm, t) {\n console.warn(\"THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead.\");\n return qm.slerpQuaternions(qa, qb, t);\n }\n static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) {\n let x0 = src0[srcOffset0 + 0], y0 = src0[srcOffset0 + 1], z0 = src0[srcOffset0 + 2], w0 = src0[srcOffset0 + 3];\n const x1 = src1[srcOffset1 + 0], y1 = src1[srcOffset1 + 1], z1 = src1[srcOffset1 + 2], w1 = src1[srcOffset1 + 3];\n if (t === 0) {\n dst[dstOffset + 0] = x0;\n dst[dstOffset + 1] = y0;\n dst[dstOffset + 2] = z0;\n dst[dstOffset + 3] = w0;\n return;\n }\n if (t === 1) {\n dst[dstOffset + 0] = x1;\n dst[dstOffset + 1] = y1;\n dst[dstOffset + 2] = z1;\n dst[dstOffset + 3] = w1;\n return;\n }\n if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\n let s = 1 - t;\n const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, dir = cos >= 0 ? 1 : -1, sqrSin = 1 - cos * cos;\n if (sqrSin > Number.EPSILON) {\n const sin = Math.sqrt(sqrSin), len = Math.atan2(sin, cos * dir);\n s = Math.sin(s * len) / sin;\n t = Math.sin(t * len) / sin;\n }\n const tDir = t * dir;\n x0 = x0 * s + x1 * tDir;\n y0 = y0 * s + y1 * tDir;\n z0 = z0 * s + z1 * tDir;\n w0 = w0 * s + w1 * tDir;\n if (s === 1 - t) {\n const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\n x0 *= f;\n y0 *= f;\n z0 *= f;\n w0 *= f;\n }\n }\n dst[dstOffset] = x0;\n dst[dstOffset + 1] = y0;\n dst[dstOffset + 2] = z0;\n dst[dstOffset + 3] = w0;\n }\n static multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) {\n const x0 = src0[srcOffset0];\n const y0 = src0[srcOffset0 + 1];\n const z0 = src0[srcOffset0 + 2];\n const w0 = src0[srcOffset0 + 3];\n const x1 = src1[srcOffset1];\n const y1 = src1[srcOffset1 + 1];\n const z1 = src1[srcOffset1 + 2];\n const w1 = src1[srcOffset1 + 3];\n dst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n dst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n dst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n dst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n return dst;\n }\n get x() {\n return this._x;\n }\n set x(value) {\n this._x = value;\n this._onChangeCallback();\n }\n get y() {\n return this._y;\n }\n set y(value) {\n this._y = value;\n this._onChangeCallback();\n }\n get z() {\n return this._z;\n }\n set z(value) {\n this._z = value;\n this._onChangeCallback();\n }\n get w() {\n return this._w;\n }\n set w(value) {\n this._w = value;\n this._onChangeCallback();\n }\n set(x, y, z, w) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._w = w;\n this._onChangeCallback();\n return this;\n }\n clone() {\n return new this.constructor(this._x, this._y, this._z, this._w);\n }\n copy(quaternion) {\n this._x = quaternion.x;\n this._y = quaternion.y;\n this._z = quaternion.z;\n this._w = quaternion.w;\n this._onChangeCallback();\n return this;\n }\n setFromEuler(euler, update) {\n if (!(euler && euler.isEuler)) {\n throw new Error(\"THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.\");\n }\n const x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n const cos = Math.cos;\n const sin = Math.sin;\n const c1 = cos(x / 2);\n const c2 = cos(y / 2);\n const c3 = cos(z / 2);\n const s1 = sin(x / 2);\n const s2 = sin(y / 2);\n const s3 = sin(z / 2);\n switch (order) {\n case \"XYZ\":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case \"YXZ\":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n case \"ZXY\":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case \"ZYX\":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n case \"YZX\":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case \"XZY\":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n default:\n console.warn(\"THREE.Quaternion: .setFromEuler() encountered an unknown order: \" + order);\n }\n if (update !== false)\n this._onChangeCallback();\n return this;\n }\n setFromAxisAngle(axis, angle) {\n const halfAngle = angle / 2, s = Math.sin(halfAngle);\n this._x = axis.x * s;\n this._y = axis.y * s;\n this._z = axis.z * s;\n this._w = Math.cos(halfAngle);\n this._onChangeCallback();\n return this;\n }\n setFromRotationMatrix(m) {\n const te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10], trace = m11 + m22 + m33;\n if (trace > 0) {\n const s = 0.5 / Math.sqrt(trace + 1);\n this._w = 0.25 / s;\n this._x = (m32 - m23) * s;\n this._y = (m13 - m31) * s;\n this._z = (m21 - m12) * s;\n } else if (m11 > m22 && m11 > m33) {\n const s = 2 * Math.sqrt(1 + m11 - m22 - m33);\n this._w = (m32 - m23) / s;\n this._x = 0.25 * s;\n this._y = (m12 + m21) / s;\n this._z = (m13 + m31) / s;\n } else if (m22 > m33) {\n const s = 2 * Math.sqrt(1 + m22 - m11 - m33);\n this._w = (m13 - m31) / s;\n this._x = (m12 + m21) / s;\n this._y = 0.25 * s;\n this._z = (m23 + m32) / s;\n } else {\n const s = 2 * Math.sqrt(1 + m33 - m11 - m22);\n this._w = (m21 - m12) / s;\n this._x = (m13 + m31) / s;\n this._y = (m23 + m32) / s;\n this._z = 0.25 * s;\n }\n this._onChangeCallback();\n return this;\n }\n setFromUnitVectors(vFrom, vTo) {\n let r = vFrom.dot(vTo) + 1;\n if (r < Number.EPSILON) {\n r = 0;\n if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\n this._x = -vFrom.y;\n this._y = vFrom.x;\n this._z = 0;\n this._w = r;\n } else {\n this._x = 0;\n this._y = -vFrom.z;\n this._z = vFrom.y;\n this._w = r;\n }\n } else {\n this._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n this._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n this._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n this._w = r;\n }\n return this.normalize();\n }\n angleTo(q) {\n return 2 * Math.acos(Math.abs(clamp(this.dot(q), -1, 1)));\n }\n rotateTowards(q, step) {\n const angle = this.angleTo(q);\n if (angle === 0)\n return this;\n const t = Math.min(1, step / angle);\n this.slerp(q, t);\n return this;\n }\n identity() {\n return this.set(0, 0, 0, 1);\n }\n invert() {\n return this.conjugate();\n }\n conjugate() {\n this._x *= -1;\n this._y *= -1;\n this._z *= -1;\n this._onChangeCallback();\n return this;\n }\n dot(v) {\n return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n }\n lengthSq() {\n return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n }\n length() {\n return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);\n }\n normalize() {\n let l = this.length();\n if (l === 0) {\n this._x = 0;\n this._y = 0;\n this._z = 0;\n this._w = 1;\n } else {\n l = 1 / l;\n this._x = this._x * l;\n this._y = this._y * l;\n this._z = this._z * l;\n this._w = this._w * l;\n }\n this._onChangeCallback();\n return this;\n }\n multiply(q, p) {\n if (p !== void 0) {\n console.warn(\"THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.\");\n return this.multiplyQuaternions(q, p);\n }\n return this.multiplyQuaternions(this, q);\n }\n premultiply(q) {\n return this.multiplyQuaternions(q, this);\n }\n multiplyQuaternions(a, b) {\n const qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n const qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n this._onChangeCallback();\n return this;\n }\n slerp(qb, t) {\n if (t === 0)\n return this;\n if (t === 1)\n return this.copy(qb);\n const x = this._x, y = this._y, z = this._z, w = this._w;\n let cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n if (cosHalfTheta < 0) {\n this._w = -qb._w;\n this._x = -qb._x;\n this._y = -qb._y;\n this._z = -qb._z;\n cosHalfTheta = -cosHalfTheta;\n } else {\n this.copy(qb);\n }\n if (cosHalfTheta >= 1) {\n this._w = w;\n this._x = x;\n this._y = y;\n this._z = z;\n return this;\n }\n const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta;\n if (sqrSinHalfTheta <= Number.EPSILON) {\n const s = 1 - t;\n this._w = s * w + t * this._w;\n this._x = s * x + t * this._x;\n this._y = s * y + t * this._y;\n this._z = s * z + t * this._z;\n this.normalize();\n this._onChangeCallback();\n return this;\n }\n const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta, ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n this._w = w * ratioA + this._w * ratioB;\n this._x = x * ratioA + this._x * ratioB;\n this._y = y * ratioA + this._y * ratioB;\n this._z = z * ratioA + this._z * ratioB;\n this._onChangeCallback();\n return this;\n }\n slerpQuaternions(qa, qb, t) {\n this.copy(qa).slerp(qb, t);\n }\n random() {\n const u1 = Math.random();\n const sqrt1u1 = Math.sqrt(1 - u1);\n const sqrtu1 = Math.sqrt(u1);\n const u2 = 2 * Math.PI * Math.random();\n const u3 = 2 * Math.PI * Math.random();\n return this.set(sqrt1u1 * Math.cos(u2), sqrtu1 * Math.sin(u3), sqrtu1 * Math.cos(u3), sqrt1u1 * Math.sin(u2));\n }\n equals(quaternion) {\n return quaternion._x === this._x && quaternion._y === this._y && quaternion._z === this._z && quaternion._w === this._w;\n }\n fromArray(array, offset = 0) {\n this._x = array[offset];\n this._y = array[offset + 1];\n this._z = array[offset + 2];\n this._w = array[offset + 3];\n this._onChangeCallback();\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this._x;\n array[offset + 1] = this._y;\n array[offset + 2] = this._z;\n array[offset + 3] = this._w;\n return array;\n }\n fromBufferAttribute(attribute, index) {\n this._x = attribute.getX(index);\n this._y = attribute.getY(index);\n this._z = attribute.getZ(index);\n this._w = attribute.getW(index);\n return this;\n }\n _onChange(callback) {\n this._onChangeCallback = callback;\n return this;\n }\n _onChangeCallback() {\n }\n}\nQuaternion.prototype.isQuaternion = true;\nclass Vector3 {\n constructor(x = 0, y = 0, z = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n set(x, y, z) {\n if (z === void 0)\n z = this.z;\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n setScalar(scalar) {\n this.x = scalar;\n this.y = scalar;\n this.z = scalar;\n return this;\n }\n setX(x) {\n this.x = x;\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n setZ(z) {\n this.z = z;\n return this;\n }\n setComponent(index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n default:\n throw new Error(\"index is out of range: \" + index);\n }\n return this;\n }\n getComponent(index) {\n switch (index) {\n case 0:\n return this.x;\n case 1:\n return this.y;\n case 2:\n return this.z;\n default:\n throw new Error(\"index is out of range: \" + index);\n }\n }\n clone() {\n return new this.constructor(this.x, this.y, this.z);\n }\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n return this;\n }\n add(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.\");\n return this.addVectors(v, w);\n }\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n return this;\n }\n addScalar(s) {\n this.x += s;\n this.y += s;\n this.z += s;\n return this;\n }\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n this.z = a.z + b.z;\n return this;\n }\n addScaledVector(v, s) {\n this.x += v.x * s;\n this.y += v.y * s;\n this.z += v.z * s;\n return this;\n }\n sub(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\");\n return this.subVectors(v, w);\n }\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n return this;\n }\n subScalar(s) {\n this.x -= s;\n this.y -= s;\n this.z -= s;\n return this;\n }\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n this.z = a.z - b.z;\n return this;\n }\n multiply(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.\");\n return this.multiplyVectors(v, w);\n }\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n return this;\n }\n multiplyScalar(scalar) {\n this.x *= scalar;\n this.y *= scalar;\n this.z *= scalar;\n return this;\n }\n multiplyVectors(a, b) {\n this.x = a.x * b.x;\n this.y = a.y * b.y;\n this.z = a.z * b.z;\n return this;\n }\n applyEuler(euler) {\n if (!(euler && euler.isEuler)) {\n console.error(\"THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.\");\n }\n return this.applyQuaternion(_quaternion$4.setFromEuler(euler));\n }\n applyAxisAngle(axis, angle) {\n return this.applyQuaternion(_quaternion$4.setFromAxisAngle(axis, angle));\n }\n applyMatrix3(m) {\n const x = this.x, y = this.y, z = this.z;\n const e = m.elements;\n this.x = e[0] * x + e[3] * y + e[6] * z;\n this.y = e[1] * x + e[4] * y + e[7] * z;\n this.z = e[2] * x + e[5] * y + e[8] * z;\n return this;\n }\n applyNormalMatrix(m) {\n return this.applyMatrix3(m).normalize();\n }\n applyMatrix4(m) {\n const x = this.x, y = this.y, z = this.z;\n const e = m.elements;\n const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]);\n this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w;\n this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w;\n this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w;\n return this;\n }\n applyQuaternion(q) {\n const x = this.x, y = this.y, z = this.z;\n const qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n const ix = qw * x + qy * z - qz * y;\n const iy = qw * y + qz * x - qx * z;\n const iz = qw * z + qx * y - qy * x;\n const iw = -qx * x - qy * y - qz * z;\n this.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n this.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n this.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n return this;\n }\n project(camera) {\n return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix);\n }\n unproject(camera) {\n return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld);\n }\n transformDirection(m) {\n const x = this.x, y = this.y, z = this.z;\n const e = m.elements;\n this.x = e[0] * x + e[4] * y + e[8] * z;\n this.y = e[1] * x + e[5] * y + e[9] * z;\n this.z = e[2] * x + e[6] * y + e[10] * z;\n return this.normalize();\n }\n divide(v) {\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n return this;\n }\n divideScalar(scalar) {\n return this.multiplyScalar(1 / scalar);\n }\n min(v) {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n return this;\n }\n max(v) {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n return this;\n }\n clamp(min, max) {\n this.x = Math.max(min.x, Math.min(max.x, this.x));\n this.y = Math.max(min.y, Math.min(max.y, this.y));\n this.z = Math.max(min.z, Math.min(max.z, this.z));\n return this;\n }\n clampScalar(minVal, maxVal) {\n this.x = Math.max(minVal, Math.min(maxVal, this.x));\n this.y = Math.max(minVal, Math.min(maxVal, this.y));\n this.z = Math.max(minVal, Math.min(maxVal, this.z));\n return this;\n }\n clampLength(min, max) {\n const length = this.length();\n return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n }\n floor() {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n return this;\n }\n ceil() {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n return this;\n }\n round() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n return this;\n }\n roundToZero() {\n this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z);\n return this;\n }\n negate() {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n }\n dot(v) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n }\n lengthSq() {\n return this.x * this.x + this.y * this.y + this.z * this.z;\n }\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n }\n manhattanLength() {\n return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n }\n normalize() {\n return this.divideScalar(this.length() || 1);\n }\n setLength(length) {\n return this.normalize().multiplyScalar(length);\n }\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n this.z += (v.z - this.z) * alpha;\n return this;\n }\n lerpVectors(v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n return this;\n }\n cross(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.\");\n return this.crossVectors(v, w);\n }\n return this.crossVectors(this, v);\n }\n crossVectors(a, b) {\n const ax = a.x, ay = a.y, az = a.z;\n const bx = b.x, by = b.y, bz = b.z;\n this.x = ay * bz - az * by;\n this.y = az * bx - ax * bz;\n this.z = ax * by - ay * bx;\n return this;\n }\n projectOnVector(v) {\n const denominator = v.lengthSq();\n if (denominator === 0)\n return this.set(0, 0, 0);\n const scalar = v.dot(this) / denominator;\n return this.copy(v).multiplyScalar(scalar);\n }\n projectOnPlane(planeNormal) {\n _vector$c.copy(this).projectOnVector(planeNormal);\n return this.sub(_vector$c);\n }\n reflect(normal) {\n return this.sub(_vector$c.copy(normal).multiplyScalar(2 * this.dot(normal)));\n }\n angleTo(v) {\n const denominator = Math.sqrt(this.lengthSq() * v.lengthSq());\n if (denominator === 0)\n return Math.PI / 2;\n const theta = this.dot(v) / denominator;\n return Math.acos(clamp(theta, -1, 1));\n }\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n distanceToSquared(v) {\n const dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n return dx * dx + dy * dy + dz * dz;\n }\n manhattanDistanceTo(v) {\n return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z);\n }\n setFromSpherical(s) {\n return this.setFromSphericalCoords(s.radius, s.phi, s.theta);\n }\n setFromSphericalCoords(radius, phi, theta) {\n const sinPhiRadius = Math.sin(phi) * radius;\n this.x = sinPhiRadius * Math.sin(theta);\n this.y = Math.cos(phi) * radius;\n this.z = sinPhiRadius * Math.cos(theta);\n return this;\n }\n setFromCylindrical(c) {\n return this.setFromCylindricalCoords(c.radius, c.theta, c.y);\n }\n setFromCylindricalCoords(radius, theta, y) {\n this.x = radius * Math.sin(theta);\n this.y = y;\n this.z = radius * Math.cos(theta);\n return this;\n }\n setFromMatrixPosition(m) {\n const e = m.elements;\n this.x = e[12];\n this.y = e[13];\n this.z = e[14];\n return this;\n }\n setFromMatrixScale(m) {\n const sx = this.setFromMatrixColumn(m, 0).length();\n const sy = this.setFromMatrixColumn(m, 1).length();\n const sz = this.setFromMatrixColumn(m, 2).length();\n this.x = sx;\n this.y = sy;\n this.z = sz;\n return this;\n }\n setFromMatrixColumn(m, index) {\n return this.fromArray(m.elements, index * 4);\n }\n setFromMatrix3Column(m, index) {\n return this.fromArray(m.elements, index * 3);\n }\n equals(v) {\n return v.x === this.x && v.y === this.y && v.z === this.z;\n }\n fromArray(array, offset = 0) {\n this.x = array[offset];\n this.y = array[offset + 1];\n this.z = array[offset + 2];\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n return array;\n }\n fromBufferAttribute(attribute, index, offset) {\n if (offset !== void 0) {\n console.warn(\"THREE.Vector3: offset has been removed from .fromBufferAttribute().\");\n }\n this.x = attribute.getX(index);\n this.y = attribute.getY(index);\n this.z = attribute.getZ(index);\n return this;\n }\n random() {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n return this;\n }\n randomDirection() {\n const u = (Math.random() - 0.5) * 2;\n const t = Math.random() * Math.PI * 2;\n const f = Math.sqrt(1 - u ** 2);\n this.x = f * Math.cos(t);\n this.y = f * Math.sin(t);\n this.z = u;\n return this;\n }\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n yield this.z;\n }\n}\nVector3.prototype.isVector3 = true;\nconst _vector$c = /* @__PURE__ */ new Vector3();\nconst _quaternion$4 = /* @__PURE__ */ new Quaternion();\nclass Box3 {\n constructor(min = new Vector3(Infinity, Infinity, Infinity), max = new Vector3(-Infinity, -Infinity, -Infinity)) {\n this.min = min;\n this.max = max;\n }\n set(min, max) {\n this.min.copy(min);\n this.max.copy(max);\n return this;\n }\n setFromArray(array) {\n let minX = Infinity;\n let minY = Infinity;\n let minZ = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let maxZ = -Infinity;\n for (let i = 0, l = array.length; i < l; i += 3) {\n const x = array[i];\n const y = array[i + 1];\n const z = array[i + 2];\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (z < minZ)\n minZ = z;\n if (x > maxX)\n maxX = x;\n if (y > maxY)\n maxY = y;\n if (z > maxZ)\n maxZ = z;\n }\n this.min.set(minX, minY, minZ);\n this.max.set(maxX, maxY, maxZ);\n return this;\n }\n setFromBufferAttribute(attribute) {\n let minX = Infinity;\n let minY = Infinity;\n let minZ = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let maxZ = -Infinity;\n for (let i = 0, l = attribute.count; i < l; i++) {\n const x = attribute.getX(i);\n const y = attribute.getY(i);\n const z = attribute.getZ(i);\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (z < minZ)\n minZ = z;\n if (x > maxX)\n maxX = x;\n if (y > maxY)\n maxY = y;\n if (z > maxZ)\n maxZ = z;\n }\n this.min.set(minX, minY, minZ);\n this.max.set(maxX, maxY, maxZ);\n return this;\n }\n setFromPoints(points) {\n this.makeEmpty();\n for (let i = 0, il = points.length; i < il; i++) {\n this.expandByPoint(points[i]);\n }\n return this;\n }\n setFromCenterAndSize(center, size) {\n const halfSize = _vector$b.copy(size).multiplyScalar(0.5);\n this.min.copy(center).sub(halfSize);\n this.max.copy(center).add(halfSize);\n return this;\n }\n setFromObject(object) {\n this.makeEmpty();\n return this.expandByObject(object);\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(box) {\n this.min.copy(box.min);\n this.max.copy(box.max);\n return this;\n }\n makeEmpty() {\n this.min.x = this.min.y = this.min.z = Infinity;\n this.max.x = this.max.y = this.max.z = -Infinity;\n return this;\n }\n isEmpty() {\n return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z;\n }\n getCenter(target) {\n return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n }\n getSize(target) {\n return this.isEmpty() ? target.set(0, 0, 0) : target.subVectors(this.max, this.min);\n }\n expandByPoint(point) {\n this.min.min(point);\n this.max.max(point);\n return this;\n }\n expandByVector(vector) {\n this.min.sub(vector);\n this.max.add(vector);\n return this;\n }\n expandByScalar(scalar) {\n this.min.addScalar(-scalar);\n this.max.addScalar(scalar);\n return this;\n }\n expandByObject(object) {\n object.updateWorldMatrix(false, false);\n const geometry = object.geometry;\n if (geometry !== void 0) {\n if (geometry.boundingBox === null) {\n geometry.computeBoundingBox();\n }\n _box$3.copy(geometry.boundingBox);\n _box$3.applyMatrix4(object.matrixWorld);\n this.union(_box$3);\n }\n const children = object.children;\n for (let i = 0, l = children.length; i < l; i++) {\n this.expandByObject(children[i]);\n }\n return this;\n }\n containsPoint(point) {\n return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y || point.z < this.min.z || point.z > this.max.z ? false : true;\n }\n containsBox(box) {\n return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y && this.min.z <= box.min.z && box.max.z <= this.max.z;\n }\n getParameter(point, target) {\n return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y), (point.z - this.min.z) / (this.max.z - this.min.z));\n }\n intersectsBox(box) {\n return box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y || box.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n }\n intersectsSphere(sphere) {\n this.clampPoint(sphere.center, _vector$b);\n return _vector$b.distanceToSquared(sphere.center) <= sphere.radius * sphere.radius;\n }\n intersectsPlane(plane) {\n let min, max;\n if (plane.normal.x > 0) {\n min = plane.normal.x * this.min.x;\n max = plane.normal.x * this.max.x;\n } else {\n min = plane.normal.x * this.max.x;\n max = plane.normal.x * this.min.x;\n }\n if (plane.normal.y > 0) {\n min += plane.normal.y * this.min.y;\n max += plane.normal.y * this.max.y;\n } else {\n min += plane.normal.y * this.max.y;\n max += plane.normal.y * this.min.y;\n }\n if (plane.normal.z > 0) {\n min += plane.normal.z * this.min.z;\n max += plane.normal.z * this.max.z;\n } else {\n min += plane.normal.z * this.max.z;\n max += plane.normal.z * this.min.z;\n }\n return min <= -plane.constant && max >= -plane.constant;\n }\n intersectsTriangle(triangle) {\n if (this.isEmpty()) {\n return false;\n }\n this.getCenter(_center);\n _extents.subVectors(this.max, _center);\n _v0$2.subVectors(triangle.a, _center);\n _v1$7.subVectors(triangle.b, _center);\n _v2$3.subVectors(triangle.c, _center);\n _f0.subVectors(_v1$7, _v0$2);\n _f1.subVectors(_v2$3, _v1$7);\n _f2.subVectors(_v0$2, _v2$3);\n let axes = [\n 0,\n -_f0.z,\n _f0.y,\n 0,\n -_f1.z,\n _f1.y,\n 0,\n -_f2.z,\n _f2.y,\n _f0.z,\n 0,\n -_f0.x,\n _f1.z,\n 0,\n -_f1.x,\n _f2.z,\n 0,\n -_f2.x,\n -_f0.y,\n _f0.x,\n 0,\n -_f1.y,\n _f1.x,\n 0,\n -_f2.y,\n _f2.x,\n 0\n ];\n if (!satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents)) {\n return false;\n }\n axes = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (!satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents)) {\n return false;\n }\n _triangleNormal.crossVectors(_f0, _f1);\n axes = [_triangleNormal.x, _triangleNormal.y, _triangleNormal.z];\n return satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents);\n }\n clampPoint(point, target) {\n return target.copy(point).clamp(this.min, this.max);\n }\n distanceToPoint(point) {\n const clampedPoint = _vector$b.copy(point).clamp(this.min, this.max);\n return clampedPoint.sub(point).length();\n }\n getBoundingSphere(target) {\n this.getCenter(target.center);\n target.radius = this.getSize(_vector$b).length() * 0.5;\n return target;\n }\n intersect(box) {\n this.min.max(box.min);\n this.max.min(box.max);\n if (this.isEmpty())\n this.makeEmpty();\n return this;\n }\n union(box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n }\n applyMatrix4(matrix) {\n if (this.isEmpty())\n return this;\n _points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix);\n _points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix);\n _points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix);\n _points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix);\n _points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix);\n _points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix);\n _points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix);\n _points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix);\n this.setFromPoints(_points);\n return this;\n }\n translate(offset) {\n this.min.add(offset);\n this.max.add(offset);\n return this;\n }\n equals(box) {\n return box.min.equals(this.min) && box.max.equals(this.max);\n }\n}\nBox3.prototype.isBox3 = true;\nconst _points = [\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3()\n];\nconst _vector$b = /* @__PURE__ */ new Vector3();\nconst _box$3 = /* @__PURE__ */ new Box3();\nconst _v0$2 = /* @__PURE__ */ new Vector3();\nconst _v1$7 = /* @__PURE__ */ new Vector3();\nconst _v2$3 = /* @__PURE__ */ new Vector3();\nconst _f0 = /* @__PURE__ */ new Vector3();\nconst _f1 = /* @__PURE__ */ new Vector3();\nconst _f2 = /* @__PURE__ */ new Vector3();\nconst _center = /* @__PURE__ */ new Vector3();\nconst _extents = /* @__PURE__ */ new Vector3();\nconst _triangleNormal = /* @__PURE__ */ new Vector3();\nconst _testAxis = /* @__PURE__ */ new Vector3();\nfunction satForAxes(axes, v0, v1, v2, extents) {\n for (let i = 0, j = axes.length - 3; i <= j; i += 3) {\n _testAxis.fromArray(axes, i);\n const r = extents.x * Math.abs(_testAxis.x) + extents.y * Math.abs(_testAxis.y) + extents.z * Math.abs(_testAxis.z);\n const p0 = v0.dot(_testAxis);\n const p1 = v1.dot(_testAxis);\n const p2 = v2.dot(_testAxis);\n if (Math.max(-Math.max(p0, p1, p2), Math.min(p0, p1, p2)) > r) {\n return false;\n }\n }\n return true;\n}\nconst _box$2 = /* @__PURE__ */ new Box3();\nconst _v1$6 = /* @__PURE__ */ new Vector3();\nconst _toFarthestPoint = /* @__PURE__ */ new Vector3();\nconst _toPoint = /* @__PURE__ */ new Vector3();\nclass Sphere {\n constructor(center = new Vector3(), radius = -1) {\n this.center = center;\n this.radius = radius;\n }\n set(center, radius) {\n this.center.copy(center);\n this.radius = radius;\n return this;\n }\n setFromPoints(points, optionalCenter) {\n const center = this.center;\n if (optionalCenter !== void 0) {\n center.copy(optionalCenter);\n } else {\n _box$2.setFromPoints(points).getCenter(center);\n }\n let maxRadiusSq = 0;\n for (let i = 0, il = points.length; i < il; i++) {\n maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(points[i]));\n }\n this.radius = Math.sqrt(maxRadiusSq);\n return this;\n }\n copy(sphere) {\n this.center.copy(sphere.center);\n this.radius = sphere.radius;\n return this;\n }\n isEmpty() {\n return this.radius < 0;\n }\n makeEmpty() {\n this.center.set(0, 0, 0);\n this.radius = -1;\n return this;\n }\n containsPoint(point) {\n return point.distanceToSquared(this.center) <= this.radius * this.radius;\n }\n distanceToPoint(point) {\n return point.distanceTo(this.center) - this.radius;\n }\n intersectsSphere(sphere) {\n const radiusSum = this.radius + sphere.radius;\n return sphere.center.distanceToSquared(this.center) <= radiusSum * radiusSum;\n }\n intersectsBox(box) {\n return box.intersectsSphere(this);\n }\n intersectsPlane(plane) {\n return Math.abs(plane.distanceToPoint(this.center)) <= this.radius;\n }\n clampPoint(point, target) {\n const deltaLengthSq = this.center.distanceToSquared(point);\n target.copy(point);\n if (deltaLengthSq > this.radius * this.radius) {\n target.sub(this.center).normalize();\n target.multiplyScalar(this.radius).add(this.center);\n }\n return target;\n }\n getBoundingBox(target) {\n if (this.isEmpty()) {\n target.makeEmpty();\n return target;\n }\n target.set(this.center, this.center);\n target.expandByScalar(this.radius);\n return target;\n }\n applyMatrix4(matrix) {\n this.center.applyMatrix4(matrix);\n this.radius = this.radius * matrix.getMaxScaleOnAxis();\n return this;\n }\n translate(offset) {\n this.center.add(offset);\n return this;\n }\n expandByPoint(point) {\n _toPoint.subVectors(point, this.center);\n const lengthSq = _toPoint.lengthSq();\n if (lengthSq > this.radius * this.radius) {\n const length = Math.sqrt(lengthSq);\n const missingRadiusHalf = (length - this.radius) * 0.5;\n this.center.add(_toPoint.multiplyScalar(missingRadiusHalf / length));\n this.radius += missingRadiusHalf;\n }\n return this;\n }\n union(sphere) {\n _toFarthestPoint.subVectors(sphere.center, this.center).normalize().multiplyScalar(sphere.radius);\n this.expandByPoint(_v1$6.copy(sphere.center).add(_toFarthestPoint));\n this.expandByPoint(_v1$6.copy(sphere.center).sub(_toFarthestPoint));\n return this;\n }\n equals(sphere) {\n return sphere.center.equals(this.center) && sphere.radius === this.radius;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nconst _vector$a = /* @__PURE__ */ new Vector3();\nconst _segCenter = /* @__PURE__ */ new Vector3();\nconst _segDir = /* @__PURE__ */ new Vector3();\nconst _diff = /* @__PURE__ */ new Vector3();\nconst _edge1 = /* @__PURE__ */ new Vector3();\nconst _edge2 = /* @__PURE__ */ new Vector3();\nconst _normal$1 = /* @__PURE__ */ new Vector3();\nclass Ray {\n constructor(origin = new Vector3(), direction = new Vector3(0, 0, -1)) {\n this.origin = origin;\n this.direction = direction;\n }\n set(origin, direction) {\n this.origin.copy(origin);\n this.direction.copy(direction);\n return this;\n }\n copy(ray) {\n this.origin.copy(ray.origin);\n this.direction.copy(ray.direction);\n return this;\n }\n at(t, target) {\n return target.copy(this.direction).multiplyScalar(t).add(this.origin);\n }\n lookAt(v) {\n this.direction.copy(v).sub(this.origin).normalize();\n return this;\n }\n recast(t) {\n this.origin.copy(this.at(t, _vector$a));\n return this;\n }\n closestPointToPoint(point, target) {\n target.subVectors(point, this.origin);\n const directionDistance = target.dot(this.direction);\n if (directionDistance < 0) {\n return target.copy(this.origin);\n }\n return target.copy(this.direction).multiplyScalar(directionDistance).add(this.origin);\n }\n distanceToPoint(point) {\n return Math.sqrt(this.distanceSqToPoint(point));\n }\n distanceSqToPoint(point) {\n const directionDistance = _vector$a.subVectors(point, this.origin).dot(this.direction);\n if (directionDistance < 0) {\n return this.origin.distanceToSquared(point);\n }\n _vector$a.copy(this.direction).multiplyScalar(directionDistance).add(this.origin);\n return _vector$a.distanceToSquared(point);\n }\n distanceSqToSegment(v0, v1, optionalPointOnRay, optionalPointOnSegment) {\n _segCenter.copy(v0).add(v1).multiplyScalar(0.5);\n _segDir.copy(v1).sub(v0).normalize();\n _diff.copy(this.origin).sub(_segCenter);\n const segExtent = v0.distanceTo(v1) * 0.5;\n const a01 = -this.direction.dot(_segDir);\n const b0 = _diff.dot(this.direction);\n const b1 = -_diff.dot(_segDir);\n const c = _diff.lengthSq();\n const det = Math.abs(1 - a01 * a01);\n let s0, s1, sqrDist, extDet;\n if (det > 0) {\n s0 = a01 * b1 - b0;\n s1 = a01 * b0 - b1;\n extDet = segExtent * det;\n if (s0 >= 0) {\n if (s1 >= -extDet) {\n if (s1 <= extDet) {\n const invDet = 1 / det;\n s0 *= invDet;\n s1 *= invDet;\n sqrDist = s0 * (s0 + a01 * s1 + 2 * b0) + s1 * (a01 * s0 + s1 + 2 * b1) + c;\n } else {\n s1 = segExtent;\n s0 = Math.max(0, -(a01 * s1 + b0));\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n }\n } else {\n s1 = -segExtent;\n s0 = Math.max(0, -(a01 * s1 + b0));\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n }\n } else {\n if (s1 <= -extDet) {\n s0 = Math.max(0, -(-a01 * segExtent + b0));\n s1 = s0 > 0 ? -segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n } else if (s1 <= extDet) {\n s0 = 0;\n s1 = Math.min(Math.max(-segExtent, -b1), segExtent);\n sqrDist = s1 * (s1 + 2 * b1) + c;\n } else {\n s0 = Math.max(0, -(a01 * segExtent + b0));\n s1 = s0 > 0 ? segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n }\n }\n } else {\n s1 = a01 > 0 ? -segExtent : segExtent;\n s0 = Math.max(0, -(a01 * s1 + b0));\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n }\n if (optionalPointOnRay) {\n optionalPointOnRay.copy(this.direction).multiplyScalar(s0).add(this.origin);\n }\n if (optionalPointOnSegment) {\n optionalPointOnSegment.copy(_segDir).multiplyScalar(s1).add(_segCenter);\n }\n return sqrDist;\n }\n intersectSphere(sphere, target) {\n _vector$a.subVectors(sphere.center, this.origin);\n const tca = _vector$a.dot(this.direction);\n const d2 = _vector$a.dot(_vector$a) - tca * tca;\n const radius2 = sphere.radius * sphere.radius;\n if (d2 > radius2)\n return null;\n const thc = Math.sqrt(radius2 - d2);\n const t0 = tca - thc;\n const t1 = tca + thc;\n if (t0 < 0 && t1 < 0)\n return null;\n if (t0 < 0)\n return this.at(t1, target);\n return this.at(t0, target);\n }\n intersectsSphere(sphere) {\n return this.distanceSqToPoint(sphere.center) <= sphere.radius * sphere.radius;\n }\n distanceToPlane(plane) {\n const denominator = plane.normal.dot(this.direction);\n if (denominator === 0) {\n if (plane.distanceToPoint(this.origin) === 0) {\n return 0;\n }\n return null;\n }\n const t = -(this.origin.dot(plane.normal) + plane.constant) / denominator;\n return t >= 0 ? t : null;\n }\n intersectPlane(plane, target) {\n const t = this.distanceToPlane(plane);\n if (t === null) {\n return null;\n }\n return this.at(t, target);\n }\n intersectsPlane(plane) {\n const distToPoint = plane.distanceToPoint(this.origin);\n if (distToPoint === 0) {\n return true;\n }\n const denominator = plane.normal.dot(this.direction);\n if (denominator * distToPoint < 0) {\n return true;\n }\n return false;\n }\n intersectBox(box, target) {\n let tmin, tmax, tymin, tymax, tzmin, tzmax;\n const invdirx = 1 / this.direction.x, invdiry = 1 / this.direction.y, invdirz = 1 / this.direction.z;\n const origin = this.origin;\n if (invdirx >= 0) {\n tmin = (box.min.x - origin.x) * invdirx;\n tmax = (box.max.x - origin.x) * invdirx;\n } else {\n tmin = (box.max.x - origin.x) * invdirx;\n tmax = (box.min.x - origin.x) * invdirx;\n }\n if (invdiry >= 0) {\n tymin = (box.min.y - origin.y) * invdiry;\n tymax = (box.max.y - origin.y) * invdiry;\n } else {\n tymin = (box.max.y - origin.y) * invdiry;\n tymax = (box.min.y - origin.y) * invdiry;\n }\n if (tmin > tymax || tymin > tmax)\n return null;\n if (tymin > tmin || tmin !== tmin)\n tmin = tymin;\n if (tymax < tmax || tmax !== tmax)\n tmax = tymax;\n if (invdirz >= 0) {\n tzmin = (box.min.z - origin.z) * invdirz;\n tzmax = (box.max.z - origin.z) * invdirz;\n } else {\n tzmin = (box.max.z - origin.z) * invdirz;\n tzmax = (box.min.z - origin.z) * invdirz;\n }\n if (tmin > tzmax || tzmin > tmax)\n return null;\n if (tzmin > tmin || tmin !== tmin)\n tmin = tzmin;\n if (tzmax < tmax || tmax !== tmax)\n tmax = tzmax;\n if (tmax < 0)\n return null;\n return this.at(tmin >= 0 ? tmin : tmax, target);\n }\n intersectsBox(box) {\n return this.intersectBox(box, _vector$a) !== null;\n }\n intersectTriangle(a, b, c, backfaceCulling, target) {\n _edge1.subVectors(b, a);\n _edge2.subVectors(c, a);\n _normal$1.crossVectors(_edge1, _edge2);\n let DdN = this.direction.dot(_normal$1);\n let sign2;\n if (DdN > 0) {\n if (backfaceCulling)\n return null;\n sign2 = 1;\n } else if (DdN < 0) {\n sign2 = -1;\n DdN = -DdN;\n } else {\n return null;\n }\n _diff.subVectors(this.origin, a);\n const DdQxE2 = sign2 * this.direction.dot(_edge2.crossVectors(_diff, _edge2));\n if (DdQxE2 < 0) {\n return null;\n }\n const DdE1xQ = sign2 * this.direction.dot(_edge1.cross(_diff));\n if (DdE1xQ < 0) {\n return null;\n }\n if (DdQxE2 + DdE1xQ > DdN) {\n return null;\n }\n const QdN = -sign2 * _diff.dot(_normal$1);\n if (QdN < 0) {\n return null;\n }\n return this.at(QdN / DdN, target);\n }\n applyMatrix4(matrix4) {\n this.origin.applyMatrix4(matrix4);\n this.direction.transformDirection(matrix4);\n return this;\n }\n equals(ray) {\n return ray.origin.equals(this.origin) && ray.direction.equals(this.direction);\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nclass Matrix4 {\n constructor() {\n this.elements = [\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ];\n if (arguments.length > 0) {\n console.error(\"THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.\");\n }\n }\n set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\n const te = this.elements;\n te[0] = n11;\n te[4] = n12;\n te[8] = n13;\n te[12] = n14;\n te[1] = n21;\n te[5] = n22;\n te[9] = n23;\n te[13] = n24;\n te[2] = n31;\n te[6] = n32;\n te[10] = n33;\n te[14] = n34;\n te[3] = n41;\n te[7] = n42;\n te[11] = n43;\n te[15] = n44;\n return this;\n }\n identity() {\n this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n return this;\n }\n clone() {\n return new Matrix4().fromArray(this.elements);\n }\n copy(m) {\n const te = this.elements;\n const me = m.elements;\n te[0] = me[0];\n te[1] = me[1];\n te[2] = me[2];\n te[3] = me[3];\n te[4] = me[4];\n te[5] = me[5];\n te[6] = me[6];\n te[7] = me[7];\n te[8] = me[8];\n te[9] = me[9];\n te[10] = me[10];\n te[11] = me[11];\n te[12] = me[12];\n te[13] = me[13];\n te[14] = me[14];\n te[15] = me[15];\n return this;\n }\n copyPosition(m) {\n const te = this.elements, me = m.elements;\n te[12] = me[12];\n te[13] = me[13];\n te[14] = me[14];\n return this;\n }\n setFromMatrix3(m) {\n const me = m.elements;\n this.set(me[0], me[3], me[6], 0, me[1], me[4], me[7], 0, me[2], me[5], me[8], 0, 0, 0, 0, 1);\n return this;\n }\n extractBasis(xAxis, yAxis, zAxis) {\n xAxis.setFromMatrixColumn(this, 0);\n yAxis.setFromMatrixColumn(this, 1);\n zAxis.setFromMatrixColumn(this, 2);\n return this;\n }\n makeBasis(xAxis, yAxis, zAxis) {\n this.set(xAxis.x, yAxis.x, zAxis.x, 0, xAxis.y, yAxis.y, zAxis.y, 0, xAxis.z, yAxis.z, zAxis.z, 0, 0, 0, 0, 1);\n return this;\n }\n extractRotation(m) {\n const te = this.elements;\n const me = m.elements;\n const scaleX = 1 / _v1$5.setFromMatrixColumn(m, 0).length();\n const scaleY = 1 / _v1$5.setFromMatrixColumn(m, 1).length();\n const scaleZ = 1 / _v1$5.setFromMatrixColumn(m, 2).length();\n te[0] = me[0] * scaleX;\n te[1] = me[1] * scaleX;\n te[2] = me[2] * scaleX;\n te[3] = 0;\n te[4] = me[4] * scaleY;\n te[5] = me[5] * scaleY;\n te[6] = me[6] * scaleY;\n te[7] = 0;\n te[8] = me[8] * scaleZ;\n te[9] = me[9] * scaleZ;\n te[10] = me[10] * scaleZ;\n te[11] = 0;\n te[12] = 0;\n te[13] = 0;\n te[14] = 0;\n te[15] = 1;\n return this;\n }\n makeRotationFromEuler(euler) {\n if (!(euler && euler.isEuler)) {\n console.error(\"THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.\");\n }\n const te = this.elements;\n const x = euler.x, y = euler.y, z = euler.z;\n const a = Math.cos(x), b = Math.sin(x);\n const c = Math.cos(y), d = Math.sin(y);\n const e = Math.cos(z), f = Math.sin(z);\n if (euler.order === \"XYZ\") {\n const ae = a * e, af = a * f, be = b * e, bf = b * f;\n te[0] = c * e;\n te[4] = -c * f;\n te[8] = d;\n te[1] = af + be * d;\n te[5] = ae - bf * d;\n te[9] = -b * c;\n te[2] = bf - ae * d;\n te[6] = be + af * d;\n te[10] = a * c;\n } else if (euler.order === \"YXZ\") {\n const ce = c * e, cf = c * f, de = d * e, df = d * f;\n te[0] = ce + df * b;\n te[4] = de * b - cf;\n te[8] = a * d;\n te[1] = a * f;\n te[5] = a * e;\n te[9] = -b;\n te[2] = cf * b - de;\n te[6] = df + ce * b;\n te[10] = a * c;\n } else if (euler.order === \"ZXY\") {\n const ce = c * e, cf = c * f, de = d * e, df = d * f;\n te[0] = ce - df * b;\n te[4] = -a * f;\n te[8] = de + cf * b;\n te[1] = cf + de * b;\n te[5] = a * e;\n te[9] = df - ce * b;\n te[2] = -a * d;\n te[6] = b;\n te[10] = a * c;\n } else if (euler.order === \"ZYX\") {\n const ae = a * e, af = a * f, be = b * e, bf = b * f;\n te[0] = c * e;\n te[4] = be * d - af;\n te[8] = ae * d + bf;\n te[1] = c * f;\n te[5] = bf * d + ae;\n te[9] = af * d - be;\n te[2] = -d;\n te[6] = b * c;\n te[10] = a * c;\n } else if (euler.order === \"YZX\") {\n const ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n te[0] = c * e;\n te[4] = bd - ac * f;\n te[8] = bc * f + ad;\n te[1] = f;\n te[5] = a * e;\n te[9] = -b * e;\n te[2] = -d * e;\n te[6] = ad * f + bc;\n te[10] = ac - bd * f;\n } else if (euler.order === \"XZY\") {\n const ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n te[0] = c * e;\n te[4] = -f;\n te[8] = d * e;\n te[1] = ac * f + bd;\n te[5] = a * e;\n te[9] = ad * f - bc;\n te[2] = bc * f - ad;\n te[6] = b * e;\n te[10] = bd * f + ac;\n }\n te[3] = 0;\n te[7] = 0;\n te[11] = 0;\n te[12] = 0;\n te[13] = 0;\n te[14] = 0;\n te[15] = 1;\n return this;\n }\n makeRotationFromQuaternion(q) {\n return this.compose(_zero, q, _one);\n }\n lookAt(eye, target, up) {\n const te = this.elements;\n _z.subVectors(eye, target);\n if (_z.lengthSq() === 0) {\n _z.z = 1;\n }\n _z.normalize();\n _x.crossVectors(up, _z);\n if (_x.lengthSq() === 0) {\n if (Math.abs(up.z) === 1) {\n _z.x += 1e-4;\n } else {\n _z.z += 1e-4;\n }\n _z.normalize();\n _x.crossVectors(up, _z);\n }\n _x.normalize();\n _y.crossVectors(_z, _x);\n te[0] = _x.x;\n te[4] = _y.x;\n te[8] = _z.x;\n te[1] = _x.y;\n te[5] = _y.y;\n te[9] = _z.y;\n te[2] = _x.z;\n te[6] = _y.z;\n te[10] = _z.z;\n return this;\n }\n multiply(m, n) {\n if (n !== void 0) {\n console.warn(\"THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.\");\n return this.multiplyMatrices(m, n);\n }\n return this.multiplyMatrices(this, m);\n }\n premultiply(m) {\n return this.multiplyMatrices(m, this);\n }\n multiplyMatrices(a, b) {\n const ae = a.elements;\n const be = b.elements;\n const te = this.elements;\n const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];\n const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];\n const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];\n const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];\n const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];\n const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];\n const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];\n const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n return this;\n }\n multiplyScalar(s) {\n const te = this.elements;\n te[0] *= s;\n te[4] *= s;\n te[8] *= s;\n te[12] *= s;\n te[1] *= s;\n te[5] *= s;\n te[9] *= s;\n te[13] *= s;\n te[2] *= s;\n te[6] *= s;\n te[10] *= s;\n te[14] *= s;\n te[3] *= s;\n te[7] *= s;\n te[11] *= s;\n te[15] *= s;\n return this;\n }\n determinant() {\n const te = this.elements;\n const n11 = te[0], n12 = te[4], n13 = te[8], n14 = te[12];\n const n21 = te[1], n22 = te[5], n23 = te[9], n24 = te[13];\n const n31 = te[2], n32 = te[6], n33 = te[10], n34 = te[14];\n const n41 = te[3], n42 = te[7], n43 = te[11], n44 = te[15];\n return n41 * (+n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34) + n42 * (+n11 * n23 * n34 - n11 * n24 * n33 + n14 * n21 * n33 - n13 * n21 * n34 + n13 * n24 * n31 - n14 * n23 * n31) + n43 * (+n11 * n24 * n32 - n11 * n22 * n34 - n14 * n21 * n32 + n12 * n21 * n34 + n14 * n22 * n31 - n12 * n24 * n31) + n44 * (-n13 * n22 * n31 - n11 * n23 * n32 + n11 * n22 * n33 + n13 * n21 * n32 - n12 * n21 * n33 + n12 * n23 * n31);\n }\n transpose() {\n const te = this.elements;\n let tmp2;\n tmp2 = te[1];\n te[1] = te[4];\n te[4] = tmp2;\n tmp2 = te[2];\n te[2] = te[8];\n te[8] = tmp2;\n tmp2 = te[6];\n te[6] = te[9];\n te[9] = tmp2;\n tmp2 = te[3];\n te[3] = te[12];\n te[12] = tmp2;\n tmp2 = te[7];\n te[7] = te[13];\n te[13] = tmp2;\n tmp2 = te[11];\n te[11] = te[14];\n te[14] = tmp2;\n return this;\n }\n setPosition(x, y, z) {\n const te = this.elements;\n if (x.isVector3) {\n te[12] = x.x;\n te[13] = x.y;\n te[14] = x.z;\n } else {\n te[12] = x;\n te[13] = y;\n te[14] = z;\n }\n return this;\n }\n invert() {\n const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n41 = te[3], n12 = te[4], n22 = te[5], n32 = te[6], n42 = te[7], n13 = te[8], n23 = te[9], n33 = te[10], n43 = te[11], n14 = te[12], n24 = te[13], n34 = te[14], n44 = te[15], t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n if (det === 0)\n return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n const detInv = 1 / det;\n te[0] = t11 * detInv;\n te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv;\n te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv;\n te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv;\n te[4] = t12 * detInv;\n te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv;\n te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv;\n te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv;\n te[8] = t13 * detInv;\n te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv;\n te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv;\n te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv;\n te[12] = t14 * detInv;\n te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv;\n te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv;\n te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv;\n return this;\n }\n scale(v) {\n const te = this.elements;\n const x = v.x, y = v.y, z = v.z;\n te[0] *= x;\n te[4] *= y;\n te[8] *= z;\n te[1] *= x;\n te[5] *= y;\n te[9] *= z;\n te[2] *= x;\n te[6] *= y;\n te[10] *= z;\n te[3] *= x;\n te[7] *= y;\n te[11] *= z;\n return this;\n }\n getMaxScaleOnAxis() {\n const te = this.elements;\n const scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2];\n const scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6];\n const scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10];\n return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n }\n makeTranslation(x, y, z) {\n this.set(1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1);\n return this;\n }\n makeRotationX(theta) {\n const c = Math.cos(theta), s = Math.sin(theta);\n this.set(1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1);\n return this;\n }\n makeRotationY(theta) {\n const c = Math.cos(theta), s = Math.sin(theta);\n this.set(c, 0, s, 0, 0, 1, 0, 0, -s, 0, c, 0, 0, 0, 0, 1);\n return this;\n }\n makeRotationZ(theta) {\n const c = Math.cos(theta), s = Math.sin(theta);\n this.set(c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n return this;\n }\n makeRotationAxis(axis, angle) {\n const c = Math.cos(angle);\n const s = Math.sin(angle);\n const t = 1 - c;\n const x = axis.x, y = axis.y, z = axis.z;\n const tx = t * x, ty = t * y;\n this.set(tx * x + c, tx * y - s * z, tx * z + s * y, 0, tx * y + s * z, ty * y + c, ty * z - s * x, 0, tx * z - s * y, ty * z + s * x, t * z * z + c, 0, 0, 0, 0, 1);\n return this;\n }\n makeScale(x, y, z) {\n this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1);\n return this;\n }\n makeShear(xy, xz, yx, yz, zx, zy) {\n this.set(1, yx, zx, 0, xy, 1, zy, 0, xz, yz, 1, 0, 0, 0, 0, 1);\n return this;\n }\n compose(position, quaternion, scale) {\n const te = this.elements;\n const x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n const x2 = x + x, y2 = y + y, z2 = z + z;\n const xx = x * x2, xy = x * y2, xz = x * z2;\n const yy = y * y2, yz = y * z2, zz = z * z2;\n const wx = w * x2, wy = w * y2, wz = w * z2;\n const sx = scale.x, sy = scale.y, sz = scale.z;\n te[0] = (1 - (yy + zz)) * sx;\n te[1] = (xy + wz) * sx;\n te[2] = (xz - wy) * sx;\n te[3] = 0;\n te[4] = (xy - wz) * sy;\n te[5] = (1 - (xx + zz)) * sy;\n te[6] = (yz + wx) * sy;\n te[7] = 0;\n te[8] = (xz + wy) * sz;\n te[9] = (yz - wx) * sz;\n te[10] = (1 - (xx + yy)) * sz;\n te[11] = 0;\n te[12] = position.x;\n te[13] = position.y;\n te[14] = position.z;\n te[15] = 1;\n return this;\n }\n decompose(position, quaternion, scale) {\n const te = this.elements;\n let sx = _v1$5.set(te[0], te[1], te[2]).length();\n const sy = _v1$5.set(te[4], te[5], te[6]).length();\n const sz = _v1$5.set(te[8], te[9], te[10]).length();\n const det = this.determinant();\n if (det < 0)\n sx = -sx;\n position.x = te[12];\n position.y = te[13];\n position.z = te[14];\n _m1$2.copy(this);\n const invSX = 1 / sx;\n const invSY = 1 / sy;\n const invSZ = 1 / sz;\n _m1$2.elements[0] *= invSX;\n _m1$2.elements[1] *= invSX;\n _m1$2.elements[2] *= invSX;\n _m1$2.elements[4] *= invSY;\n _m1$2.elements[5] *= invSY;\n _m1$2.elements[6] *= invSY;\n _m1$2.elements[8] *= invSZ;\n _m1$2.elements[9] *= invSZ;\n _m1$2.elements[10] *= invSZ;\n quaternion.setFromRotationMatrix(_m1$2);\n scale.x = sx;\n scale.y = sy;\n scale.z = sz;\n return this;\n }\n makePerspective(left, right, top, bottom, near, far) {\n if (far === void 0) {\n console.warn(\"THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.\");\n }\n const te = this.elements;\n const x = 2 * near / (right - left);\n const y = 2 * near / (top - bottom);\n const a = (right + left) / (right - left);\n const b = (top + bottom) / (top - bottom);\n const c = -(far + near) / (far - near);\n const d = -2 * far * near / (far - near);\n te[0] = x;\n te[4] = 0;\n te[8] = a;\n te[12] = 0;\n te[1] = 0;\n te[5] = y;\n te[9] = b;\n te[13] = 0;\n te[2] = 0;\n te[6] = 0;\n te[10] = c;\n te[14] = d;\n te[3] = 0;\n te[7] = 0;\n te[11] = -1;\n te[15] = 0;\n return this;\n }\n makeOrthographic(left, right, top, bottom, near, far) {\n const te = this.elements;\n const w = 1 / (right - left);\n const h = 1 / (top - bottom);\n const p = 1 / (far - near);\n const x = (right + left) * w;\n const y = (top + bottom) * h;\n const z = (far + near) * p;\n te[0] = 2 * w;\n te[4] = 0;\n te[8] = 0;\n te[12] = -x;\n te[1] = 0;\n te[5] = 2 * h;\n te[9] = 0;\n te[13] = -y;\n te[2] = 0;\n te[6] = 0;\n te[10] = -2 * p;\n te[14] = -z;\n te[3] = 0;\n te[7] = 0;\n te[11] = 0;\n te[15] = 1;\n return this;\n }\n equals(matrix) {\n const te = this.elements;\n const me = matrix.elements;\n for (let i = 0; i < 16; i++) {\n if (te[i] !== me[i])\n return false;\n }\n return true;\n }\n fromArray(array, offset = 0) {\n for (let i = 0; i < 16; i++) {\n this.elements[i] = array[i + offset];\n }\n return this;\n }\n toArray(array = [], offset = 0) {\n const te = this.elements;\n array[offset] = te[0];\n array[offset + 1] = te[1];\n array[offset + 2] = te[2];\n array[offset + 3] = te[3];\n array[offset + 4] = te[4];\n array[offset + 5] = te[5];\n array[offset + 6] = te[6];\n array[offset + 7] = te[7];\n array[offset + 8] = te[8];\n array[offset + 9] = te[9];\n array[offset + 10] = te[10];\n array[offset + 11] = te[11];\n array[offset + 12] = te[12];\n array[offset + 13] = te[13];\n array[offset + 14] = te[14];\n array[offset + 15] = te[15];\n return array;\n }\n}\nMatrix4.prototype.isMatrix4 = true;\nconst _v1$5 = /* @__PURE__ */ new Vector3();\nconst _m1$2 = /* @__PURE__ */ new Matrix4();\nconst _zero = /* @__PURE__ */ new Vector3(0, 0, 0);\nconst _one = /* @__PURE__ */ new Vector3(1, 1, 1);\nconst _x = /* @__PURE__ */ new Vector3();\nconst _y = /* @__PURE__ */ new Vector3();\nconst _z = /* @__PURE__ */ new Vector3();\nconst _matrix$1 = /* @__PURE__ */ new Matrix4();\nconst _quaternion$3 = /* @__PURE__ */ new Quaternion();\nclass Euler {\n constructor(x = 0, y = 0, z = 0, order = Euler.DefaultOrder) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._order = order;\n }\n get x() {\n return this._x;\n }\n set x(value) {\n this._x = value;\n this._onChangeCallback();\n }\n get y() {\n return this._y;\n }\n set y(value) {\n this._y = value;\n this._onChangeCallback();\n }\n get z() {\n return this._z;\n }\n set z(value) {\n this._z = value;\n this._onChangeCallback();\n }\n get order() {\n return this._order;\n }\n set order(value) {\n this._order = value;\n this._onChangeCallback();\n }\n set(x, y, z, order = this._order) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._order = order;\n this._onChangeCallback();\n return this;\n }\n clone() {\n return new this.constructor(this._x, this._y, this._z, this._order);\n }\n copy(euler) {\n this._x = euler._x;\n this._y = euler._y;\n this._z = euler._z;\n this._order = euler._order;\n this._onChangeCallback();\n return this;\n }\n setFromRotationMatrix(m, order = this._order, update = true) {\n const te = m.elements;\n const m11 = te[0], m12 = te[4], m13 = te[8];\n const m21 = te[1], m22 = te[5], m23 = te[9];\n const m31 = te[2], m32 = te[6], m33 = te[10];\n switch (order) {\n case \"XYZ\":\n this._y = Math.asin(clamp(m13, -1, 1));\n if (Math.abs(m13) < 0.9999999) {\n this._x = Math.atan2(-m23, m33);\n this._z = Math.atan2(-m12, m11);\n } else {\n this._x = Math.atan2(m32, m22);\n this._z = 0;\n }\n break;\n case \"YXZ\":\n this._x = Math.asin(-clamp(m23, -1, 1));\n if (Math.abs(m23) < 0.9999999) {\n this._y = Math.atan2(m13, m33);\n this._z = Math.atan2(m21, m22);\n } else {\n this._y = Math.atan2(-m31, m11);\n this._z = 0;\n }\n break;\n case \"ZXY\":\n this._x = Math.asin(clamp(m32, -1, 1));\n if (Math.abs(m32) < 0.9999999) {\n this._y = Math.atan2(-m31, m33);\n this._z = Math.atan2(-m12, m22);\n } else {\n this._y = 0;\n this._z = Math.atan2(m21, m11);\n }\n break;\n case \"ZYX\":\n this._y = Math.asin(-clamp(m31, -1, 1));\n if (Math.abs(m31) < 0.9999999) {\n this._x = Math.atan2(m32, m33);\n this._z = Math.atan2(m21, m11);\n } else {\n this._x = 0;\n this._z = Math.atan2(-m12, m22);\n }\n break;\n case \"YZX\":\n this._z = Math.asin(clamp(m21, -1, 1));\n if (Math.abs(m21) < 0.9999999) {\n this._x = Math.atan2(-m23, m22);\n this._y = Math.atan2(-m31, m11);\n } else {\n this._x = 0;\n this._y = Math.atan2(m13, m33);\n }\n break;\n case \"XZY\":\n this._z = Math.asin(-clamp(m12, -1, 1));\n if (Math.abs(m12) < 0.9999999) {\n this._x = Math.atan2(m32, m22);\n this._y = Math.atan2(m13, m11);\n } else {\n this._x = Math.atan2(-m23, m33);\n this._y = 0;\n }\n break;\n default:\n console.warn(\"THREE.Euler: .setFromRotationMatrix() encountered an unknown order: \" + order);\n }\n this._order = order;\n if (update === true)\n this._onChangeCallback();\n return this;\n }\n setFromQuaternion(q, order, update) {\n _matrix$1.makeRotationFromQuaternion(q);\n return this.setFromRotationMatrix(_matrix$1, order, update);\n }\n setFromVector3(v, order = this._order) {\n return this.set(v.x, v.y, v.z, order);\n }\n reorder(newOrder) {\n _quaternion$3.setFromEuler(this);\n return this.setFromQuaternion(_quaternion$3, newOrder);\n }\n equals(euler) {\n return euler._x === this._x && euler._y === this._y && euler._z === this._z && euler._order === this._order;\n }\n fromArray(array) {\n this._x = array[0];\n this._y = array[1];\n this._z = array[2];\n if (array[3] !== void 0)\n this._order = array[3];\n this._onChangeCallback();\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this._x;\n array[offset + 1] = this._y;\n array[offset + 2] = this._z;\n array[offset + 3] = this._order;\n return array;\n }\n toVector3(optionalResult) {\n if (optionalResult) {\n return optionalResult.set(this._x, this._y, this._z);\n } else {\n return new Vector3(this._x, this._y, this._z);\n }\n }\n _onChange(callback) {\n this._onChangeCallback = callback;\n return this;\n }\n _onChangeCallback() {\n }\n}\nEuler.prototype.isEuler = true;\nEuler.DefaultOrder = \"XYZ\";\nEuler.RotationOrders = [\"XYZ\", \"YZX\", \"ZXY\", \"XZY\", \"YXZ\", \"ZYX\"];\nclass Layers {\n constructor() {\n this.mask = 1 | 0;\n }\n set(channel) {\n this.mask = (1 << channel | 0) >>> 0;\n }\n enable(channel) {\n this.mask |= 1 << channel | 0;\n }\n enableAll() {\n this.mask = 4294967295 | 0;\n }\n toggle(channel) {\n this.mask ^= 1 << channel | 0;\n }\n disable(channel) {\n this.mask &= ~(1 << channel | 0);\n }\n disableAll() {\n this.mask = 0;\n }\n test(layers) {\n return (this.mask & layers.mask) !== 0;\n }\n isEnabled(channel) {\n return (this.mask & (1 << channel | 0)) !== 0;\n }\n}\nlet _object3DId = 0;\nconst _v1$4 = /* @__PURE__ */ new Vector3();\nconst _q1 = /* @__PURE__ */ new Quaternion();\nconst _m1$1 = /* @__PURE__ */ new Matrix4();\nconst _target = /* @__PURE__ */ new Vector3();\nconst _position$3 = /* @__PURE__ */ new Vector3();\nconst _scale$2 = /* @__PURE__ */ new Vector3();\nconst _quaternion$2 = /* @__PURE__ */ new Quaternion();\nconst _xAxis = /* @__PURE__ */ new Vector3(1, 0, 0);\nconst _yAxis = /* @__PURE__ */ new Vector3(0, 1, 0);\nconst _zAxis = /* @__PURE__ */ new Vector3(0, 0, 1);\nconst _addedEvent = {type: \"added\"};\nconst _removedEvent = {type: \"removed\"};\nclass Object3D extends EventDispatcher {\n constructor() {\n super();\n Object.defineProperty(this, \"id\", {value: _object3DId++});\n this.uuid = generateUUID();\n this.name = \"\";\n this.type = \"Object3D\";\n this.parent = null;\n this.children = [];\n this.up = Object3D.DefaultUp.clone();\n const position = new Vector3();\n const rotation = new Euler();\n const quaternion = new Quaternion();\n const scale = new Vector3(1, 1, 1);\n function onRotationChange() {\n quaternion.setFromEuler(rotation, false);\n }\n function onQuaternionChange() {\n rotation.setFromQuaternion(quaternion, void 0, false);\n }\n rotation._onChange(onRotationChange);\n quaternion._onChange(onQuaternionChange);\n Object.defineProperties(this, {\n position: {\n configurable: true,\n enumerable: true,\n value: position\n },\n rotation: {\n configurable: true,\n enumerable: true,\n value: rotation\n },\n quaternion: {\n configurable: true,\n enumerable: true,\n value: quaternion\n },\n scale: {\n configurable: true,\n enumerable: true,\n value: scale\n },\n modelViewMatrix: {\n value: new Matrix4()\n },\n normalMatrix: {\n value: new Matrix3()\n }\n });\n this.matrix = new Matrix4();\n this.matrixWorld = new Matrix4();\n this.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n this.matrixWorldNeedsUpdate = false;\n this.layers = new Layers();\n this.visible = true;\n this.castShadow = false;\n this.receiveShadow = false;\n this.frustumCulled = true;\n this.renderOrder = 0;\n this.animations = [];\n this.userData = {};\n }\n onBeforeRender() {\n }\n onAfterRender() {\n }\n applyMatrix4(matrix) {\n if (this.matrixAutoUpdate)\n this.updateMatrix();\n this.matrix.premultiply(matrix);\n this.matrix.decompose(this.position, this.quaternion, this.scale);\n }\n applyQuaternion(q) {\n this.quaternion.premultiply(q);\n return this;\n }\n setRotationFromAxisAngle(axis, angle) {\n this.quaternion.setFromAxisAngle(axis, angle);\n }\n setRotationFromEuler(euler) {\n this.quaternion.setFromEuler(euler, true);\n }\n setRotationFromMatrix(m) {\n this.quaternion.setFromRotationMatrix(m);\n }\n setRotationFromQuaternion(q) {\n this.quaternion.copy(q);\n }\n rotateOnAxis(axis, angle) {\n _q1.setFromAxisAngle(axis, angle);\n this.quaternion.multiply(_q1);\n return this;\n }\n rotateOnWorldAxis(axis, angle) {\n _q1.setFromAxisAngle(axis, angle);\n this.quaternion.premultiply(_q1);\n return this;\n }\n rotateX(angle) {\n return this.rotateOnAxis(_xAxis, angle);\n }\n rotateY(angle) {\n return this.rotateOnAxis(_yAxis, angle);\n }\n rotateZ(angle) {\n return this.rotateOnAxis(_zAxis, angle);\n }\n translateOnAxis(axis, distance) {\n _v1$4.copy(axis).applyQuaternion(this.quaternion);\n this.position.add(_v1$4.multiplyScalar(distance));\n return this;\n }\n translateX(distance) {\n return this.translateOnAxis(_xAxis, distance);\n }\n translateY(distance) {\n return this.translateOnAxis(_yAxis, distance);\n }\n translateZ(distance) {\n return this.translateOnAxis(_zAxis, distance);\n }\n localToWorld(vector) {\n return vector.applyMatrix4(this.matrixWorld);\n }\n worldToLocal(vector) {\n return vector.applyMatrix4(_m1$1.copy(this.matrixWorld).invert());\n }\n lookAt(x, y, z) {\n if (x.isVector3) {\n _target.copy(x);\n } else {\n _target.set(x, y, z);\n }\n const parent = this.parent;\n this.updateWorldMatrix(true, false);\n _position$3.setFromMatrixPosition(this.matrixWorld);\n if (this.isCamera || this.isLight) {\n _m1$1.lookAt(_position$3, _target, this.up);\n } else {\n _m1$1.lookAt(_target, _position$3, this.up);\n }\n this.quaternion.setFromRotationMatrix(_m1$1);\n if (parent) {\n _m1$1.extractRotation(parent.matrixWorld);\n _q1.setFromRotationMatrix(_m1$1);\n this.quaternion.premultiply(_q1.invert());\n }\n }\n add(object) {\n if (arguments.length > 1) {\n for (let i = 0; i < arguments.length; i++) {\n this.add(arguments[i]);\n }\n return this;\n }\n if (object === this) {\n console.error(\"THREE.Object3D.add: object can't be added as a child of itself.\", object);\n return this;\n }\n if (object && object.isObject3D) {\n if (object.parent !== null) {\n object.parent.remove(object);\n }\n object.parent = this;\n this.children.push(object);\n object.dispatchEvent(_addedEvent);\n } else {\n console.error(\"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object);\n }\n return this;\n }\n remove(object) {\n if (arguments.length > 1) {\n for (let i = 0; i < arguments.length; i++) {\n this.remove(arguments[i]);\n }\n return this;\n }\n const index = this.children.indexOf(object);\n if (index !== -1) {\n object.parent = null;\n this.children.splice(index, 1);\n object.dispatchEvent(_removedEvent);\n }\n return this;\n }\n removeFromParent() {\n const parent = this.parent;\n if (parent !== null) {\n parent.remove(this);\n }\n return this;\n }\n clear() {\n for (let i = 0; i < this.children.length; i++) {\n const object = this.children[i];\n object.parent = null;\n object.dispatchEvent(_removedEvent);\n }\n this.children.length = 0;\n return this;\n }\n attach(object) {\n this.updateWorldMatrix(true, false);\n _m1$1.copy(this.matrixWorld).invert();\n if (object.parent !== null) {\n object.parent.updateWorldMatrix(true, false);\n _m1$1.multiply(object.parent.matrixWorld);\n }\n object.applyMatrix4(_m1$1);\n this.add(object);\n object.updateWorldMatrix(false, true);\n return this;\n }\n getObjectById(id) {\n return this.getObjectByProperty(\"id\", id);\n }\n getObjectByName(name) {\n return this.getObjectByProperty(\"name\", name);\n }\n getObjectByProperty(name, value) {\n if (this[name] === value)\n return this;\n for (let i = 0, l = this.children.length; i < l; i++) {\n const child = this.children[i];\n const object = child.getObjectByProperty(name, value);\n if (object !== void 0) {\n return object;\n }\n }\n return void 0;\n }\n getWorldPosition(target) {\n this.updateWorldMatrix(true, false);\n return target.setFromMatrixPosition(this.matrixWorld);\n }\n getWorldQuaternion(target) {\n this.updateWorldMatrix(true, false);\n this.matrixWorld.decompose(_position$3, target, _scale$2);\n return target;\n }\n getWorldScale(target) {\n this.updateWorldMatrix(true, false);\n this.matrixWorld.decompose(_position$3, _quaternion$2, target);\n return target;\n }\n getWorldDirection(target) {\n this.updateWorldMatrix(true, false);\n const e = this.matrixWorld.elements;\n return target.set(e[8], e[9], e[10]).normalize();\n }\n raycast() {\n }\n traverse(callback) {\n callback(this);\n const children = this.children;\n for (let i = 0, l = children.length; i < l; i++) {\n children[i].traverse(callback);\n }\n }\n traverseVisible(callback) {\n if (this.visible === false)\n return;\n callback(this);\n const children = this.children;\n for (let i = 0, l = children.length; i < l; i++) {\n children[i].traverseVisible(callback);\n }\n }\n traverseAncestors(callback) {\n const parent = this.parent;\n if (parent !== null) {\n callback(parent);\n parent.traverseAncestors(callback);\n }\n }\n updateMatrix() {\n this.matrix.compose(this.position, this.quaternion, this.scale);\n this.matrixWorldNeedsUpdate = true;\n }\n updateMatrixWorld(force) {\n if (this.matrixAutoUpdate)\n this.updateMatrix();\n if (this.matrixWorldNeedsUpdate || force) {\n if (this.parent === null) {\n this.matrixWorld.copy(this.matrix);\n } else {\n this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n }\n this.matrixWorldNeedsUpdate = false;\n force = true;\n }\n const children = this.children;\n for (let i = 0, l = children.length; i < l; i++) {\n children[i].updateMatrixWorld(force);\n }\n }\n updateWorldMatrix(updateParents, updateChildren) {\n const parent = this.parent;\n if (updateParents === true && parent !== null) {\n parent.updateWorldMatrix(true, false);\n }\n if (this.matrixAutoUpdate)\n this.updateMatrix();\n if (this.parent === null) {\n this.matrixWorld.copy(this.matrix);\n } else {\n this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n }\n if (updateChildren === true) {\n const children = this.children;\n for (let i = 0, l = children.length; i < l; i++) {\n children[i].updateWorldMatrix(false, true);\n }\n }\n }\n toJSON(meta) {\n const isRootObject = meta === void 0 || typeof meta === \"string\";\n const output = {};\n if (isRootObject) {\n meta = {\n geometries: {},\n materials: {},\n textures: {},\n images: {},\n shapes: {},\n skeletons: {},\n animations: {}\n };\n output.metadata = {\n version: 4.5,\n type: \"Object\",\n generator: \"Object3D.toJSON\"\n };\n }\n const object = {};\n object.uuid = this.uuid;\n object.type = this.type;\n if (this.name !== \"\")\n object.name = this.name;\n if (this.castShadow === true)\n object.castShadow = true;\n if (this.receiveShadow === true)\n object.receiveShadow = true;\n if (this.visible === false)\n object.visible = false;\n if (this.frustumCulled === false)\n object.frustumCulled = false;\n if (this.renderOrder !== 0)\n object.renderOrder = this.renderOrder;\n if (JSON.stringify(this.userData) !== \"{}\")\n object.userData = this.userData;\n object.layers = this.layers.mask;\n object.matrix = this.matrix.toArray();\n if (this.matrixAutoUpdate === false)\n object.matrixAutoUpdate = false;\n if (this.isInstancedMesh) {\n object.type = \"InstancedMesh\";\n object.count = this.count;\n object.instanceMatrix = this.instanceMatrix.toJSON();\n if (this.instanceColor !== null)\n object.instanceColor = this.instanceColor.toJSON();\n }\n function serialize(library, element) {\n if (library[element.uuid] === void 0) {\n library[element.uuid] = element.toJSON(meta);\n }\n return element.uuid;\n }\n if (this.isScene) {\n if (this.background) {\n if (this.background.isColor) {\n object.background = this.background.toJSON();\n } else if (this.background.isTexture) {\n object.background = this.background.toJSON(meta).uuid;\n }\n }\n if (this.environment && this.environment.isTexture) {\n object.environment = this.environment.toJSON(meta).uuid;\n }\n } else if (this.isMesh || this.isLine || this.isPoints) {\n object.geometry = serialize(meta.geometries, this.geometry);\n const parameters = this.geometry.parameters;\n if (parameters !== void 0 && parameters.shapes !== void 0) {\n const shapes = parameters.shapes;\n if (Array.isArray(shapes)) {\n for (let i = 0, l = shapes.length; i < l; i++) {\n const shape = shapes[i];\n serialize(meta.shapes, shape);\n }\n } else {\n serialize(meta.shapes, shapes);\n }\n }\n }\n if (this.isSkinnedMesh) {\n object.bindMode = this.bindMode;\n object.bindMatrix = this.bindMatrix.toArray();\n if (this.skeleton !== void 0) {\n serialize(meta.skeletons, this.skeleton);\n object.skeleton = this.skeleton.uuid;\n }\n }\n if (this.material !== void 0) {\n if (Array.isArray(this.material)) {\n const uuids = [];\n for (let i = 0, l = this.material.length; i < l; i++) {\n uuids.push(serialize(meta.materials, this.material[i]));\n }\n object.material = uuids;\n } else {\n object.material = serialize(meta.materials, this.material);\n }\n }\n if (this.children.length > 0) {\n object.children = [];\n for (let i = 0; i < this.children.length; i++) {\n object.children.push(this.children[i].toJSON(meta).object);\n }\n }\n if (this.animations.length > 0) {\n object.animations = [];\n for (let i = 0; i < this.animations.length; i++) {\n const animation = this.animations[i];\n object.animations.push(serialize(meta.animations, animation));\n }\n }\n if (isRootObject) {\n const geometries = extractFromCache(meta.geometries);\n const materials = extractFromCache(meta.materials);\n const textures = extractFromCache(meta.textures);\n const images = extractFromCache(meta.images);\n const shapes = extractFromCache(meta.shapes);\n const skeletons = extractFromCache(meta.skeletons);\n const animations = extractFromCache(meta.animations);\n if (geometries.length > 0)\n output.geometries = geometries;\n if (materials.length > 0)\n output.materials = materials;\n if (textures.length > 0)\n output.textures = textures;\n if (images.length > 0)\n output.images = images;\n if (shapes.length > 0)\n output.shapes = shapes;\n if (skeletons.length > 0)\n output.skeletons = skeletons;\n if (animations.length > 0)\n output.animations = animations;\n }\n output.object = object;\n return output;\n function extractFromCache(cache) {\n const values = [];\n for (const key in cache) {\n const data = cache[key];\n delete data.metadata;\n values.push(data);\n }\n return values;\n }\n }\n clone(recursive) {\n return new this.constructor().copy(this, recursive);\n }\n copy(source, recursive = true) {\n this.name = source.name;\n this.up.copy(source.up);\n this.position.copy(source.position);\n this.rotation.order = source.rotation.order;\n this.quaternion.copy(source.quaternion);\n this.scale.copy(source.scale);\n this.matrix.copy(source.matrix);\n this.matrixWorld.copy(source.matrixWorld);\n this.matrixAutoUpdate = source.matrixAutoUpdate;\n this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n this.layers.mask = source.layers.mask;\n this.visible = source.visible;\n this.castShadow = source.castShadow;\n this.receiveShadow = source.receiveShadow;\n this.frustumCulled = source.frustumCulled;\n this.renderOrder = source.renderOrder;\n this.userData = JSON.parse(JSON.stringify(source.userData));\n if (recursive === true) {\n for (let i = 0; i < source.children.length; i++) {\n const child = source.children[i];\n this.add(child.clone());\n }\n }\n return this;\n }\n}\nObject3D.DefaultUp = new Vector3(0, 1, 0);\nObject3D.DefaultMatrixAutoUpdate = true;\nObject3D.prototype.isObject3D = true;\nconst _v0$1 = /* @__PURE__ */ new Vector3();\nconst _v1$3 = /* @__PURE__ */ new Vector3();\nconst _v2$2 = /* @__PURE__ */ new Vector3();\nconst _v3$1 = /* @__PURE__ */ new Vector3();\nconst _vab = /* @__PURE__ */ new Vector3();\nconst _vac = /* @__PURE__ */ new Vector3();\nconst _vbc = /* @__PURE__ */ new Vector3();\nconst _vap = /* @__PURE__ */ new Vector3();\nconst _vbp = /* @__PURE__ */ new Vector3();\nconst _vcp = /* @__PURE__ */ new Vector3();\nclass Triangle {\n constructor(a = new Vector3(), b = new Vector3(), c = new Vector3()) {\n this.a = a;\n this.b = b;\n this.c = c;\n }\n static getNormal(a, b, c, target) {\n target.subVectors(c, b);\n _v0$1.subVectors(a, b);\n target.cross(_v0$1);\n const targetLengthSq = target.lengthSq();\n if (targetLengthSq > 0) {\n return target.multiplyScalar(1 / Math.sqrt(targetLengthSq));\n }\n return target.set(0, 0, 0);\n }\n static getBarycoord(point, a, b, c, target) {\n _v0$1.subVectors(c, a);\n _v1$3.subVectors(b, a);\n _v2$2.subVectors(point, a);\n const dot00 = _v0$1.dot(_v0$1);\n const dot01 = _v0$1.dot(_v1$3);\n const dot02 = _v0$1.dot(_v2$2);\n const dot11 = _v1$3.dot(_v1$3);\n const dot12 = _v1$3.dot(_v2$2);\n const denom = dot00 * dot11 - dot01 * dot01;\n if (denom === 0) {\n return target.set(-2, -1, -1);\n }\n const invDenom = 1 / denom;\n const u = (dot11 * dot02 - dot01 * dot12) * invDenom;\n const v = (dot00 * dot12 - dot01 * dot02) * invDenom;\n return target.set(1 - u - v, v, u);\n }\n static containsPoint(point, a, b, c) {\n this.getBarycoord(point, a, b, c, _v3$1);\n return _v3$1.x >= 0 && _v3$1.y >= 0 && _v3$1.x + _v3$1.y <= 1;\n }\n static getUV(point, p1, p2, p3, uv1, uv2, uv3, target) {\n this.getBarycoord(point, p1, p2, p3, _v3$1);\n target.set(0, 0);\n target.addScaledVector(uv1, _v3$1.x);\n target.addScaledVector(uv2, _v3$1.y);\n target.addScaledVector(uv3, _v3$1.z);\n return target;\n }\n static isFrontFacing(a, b, c, direction) {\n _v0$1.subVectors(c, b);\n _v1$3.subVectors(a, b);\n return _v0$1.cross(_v1$3).dot(direction) < 0 ? true : false;\n }\n set(a, b, c) {\n this.a.copy(a);\n this.b.copy(b);\n this.c.copy(c);\n return this;\n }\n setFromPointsAndIndices(points, i0, i1, i2) {\n this.a.copy(points[i0]);\n this.b.copy(points[i1]);\n this.c.copy(points[i2]);\n return this;\n }\n setFromAttributeAndIndices(attribute, i0, i1, i2) {\n this.a.fromBufferAttribute(attribute, i0);\n this.b.fromBufferAttribute(attribute, i1);\n this.c.fromBufferAttribute(attribute, i2);\n return this;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(triangle) {\n this.a.copy(triangle.a);\n this.b.copy(triangle.b);\n this.c.copy(triangle.c);\n return this;\n }\n getArea() {\n _v0$1.subVectors(this.c, this.b);\n _v1$3.subVectors(this.a, this.b);\n return _v0$1.cross(_v1$3).length() * 0.5;\n }\n getMidpoint(target) {\n return target.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3);\n }\n getNormal(target) {\n return Triangle.getNormal(this.a, this.b, this.c, target);\n }\n getPlane(target) {\n return target.setFromCoplanarPoints(this.a, this.b, this.c);\n }\n getBarycoord(point, target) {\n return Triangle.getBarycoord(point, this.a, this.b, this.c, target);\n }\n getUV(point, uv1, uv2, uv3, target) {\n return Triangle.getUV(point, this.a, this.b, this.c, uv1, uv2, uv3, target);\n }\n containsPoint(point) {\n return Triangle.containsPoint(point, this.a, this.b, this.c);\n }\n isFrontFacing(direction) {\n return Triangle.isFrontFacing(this.a, this.b, this.c, direction);\n }\n intersectsBox(box) {\n return box.intersectsTriangle(this);\n }\n closestPointToPoint(p, target) {\n const a = this.a, b = this.b, c = this.c;\n let v, w;\n _vab.subVectors(b, a);\n _vac.subVectors(c, a);\n _vap.subVectors(p, a);\n const d1 = _vab.dot(_vap);\n const d2 = _vac.dot(_vap);\n if (d1 <= 0 && d2 <= 0) {\n return target.copy(a);\n }\n _vbp.subVectors(p, b);\n const d3 = _vab.dot(_vbp);\n const d4 = _vac.dot(_vbp);\n if (d3 >= 0 && d4 <= d3) {\n return target.copy(b);\n }\n const vc = d1 * d4 - d3 * d2;\n if (vc <= 0 && d1 >= 0 && d3 <= 0) {\n v = d1 / (d1 - d3);\n return target.copy(a).addScaledVector(_vab, v);\n }\n _vcp.subVectors(p, c);\n const d5 = _vab.dot(_vcp);\n const d6 = _vac.dot(_vcp);\n if (d6 >= 0 && d5 <= d6) {\n return target.copy(c);\n }\n const vb = d5 * d2 - d1 * d6;\n if (vb <= 0 && d2 >= 0 && d6 <= 0) {\n w = d2 / (d2 - d6);\n return target.copy(a).addScaledVector(_vac, w);\n }\n const va = d3 * d6 - d5 * d4;\n if (va <= 0 && d4 - d3 >= 0 && d5 - d6 >= 0) {\n _vbc.subVectors(c, b);\n w = (d4 - d3) / (d4 - d3 + (d5 - d6));\n return target.copy(b).addScaledVector(_vbc, w);\n }\n const denom = 1 / (va + vb + vc);\n v = vb * denom;\n w = vc * denom;\n return target.copy(a).addScaledVector(_vab, v).addScaledVector(_vac, w);\n }\n equals(triangle) {\n return triangle.a.equals(this.a) && triangle.b.equals(this.b) && triangle.c.equals(this.c);\n }\n}\nlet materialId = 0;\nclass Material extends EventDispatcher {\n constructor() {\n super();\n Object.defineProperty(this, \"id\", {value: materialId++});\n this.uuid = generateUUID();\n this.name = \"\";\n this.type = \"Material\";\n this.fog = true;\n this.blending = NormalBlending;\n this.side = FrontSide;\n this.vertexColors = false;\n this.opacity = 1;\n this.format = RGBAFormat;\n this.transparent = false;\n this.blendSrc = SrcAlphaFactor;\n this.blendDst = OneMinusSrcAlphaFactor;\n this.blendEquation = AddEquation;\n this.blendSrcAlpha = null;\n this.blendDstAlpha = null;\n this.blendEquationAlpha = null;\n this.depthFunc = LessEqualDepth;\n this.depthTest = true;\n this.depthWrite = true;\n this.stencilWriteMask = 255;\n this.stencilFunc = AlwaysStencilFunc;\n this.stencilRef = 0;\n this.stencilFuncMask = 255;\n this.stencilFail = KeepStencilOp;\n this.stencilZFail = KeepStencilOp;\n this.stencilZPass = KeepStencilOp;\n this.stencilWrite = false;\n this.clippingPlanes = null;\n this.clipIntersection = false;\n this.clipShadows = false;\n this.shadowSide = null;\n this.colorWrite = true;\n this.precision = null;\n this.polygonOffset = false;\n this.polygonOffsetFactor = 0;\n this.polygonOffsetUnits = 0;\n this.dithering = false;\n this.alphaToCoverage = false;\n this.premultipliedAlpha = false;\n this.visible = true;\n this.toneMapped = true;\n this.userData = {};\n this.version = 0;\n this._alphaTest = 0;\n }\n get alphaTest() {\n return this._alphaTest;\n }\n set alphaTest(value) {\n if (this._alphaTest > 0 !== value > 0) {\n this.version++;\n }\n this._alphaTest = value;\n }\n onBuild() {\n }\n onBeforeRender() {\n }\n onBeforeCompile() {\n }\n customProgramCacheKey() {\n return this.onBeforeCompile.toString();\n }\n setValues(values) {\n if (values === void 0)\n return;\n for (const key in values) {\n const newValue = values[key];\n if (newValue === void 0) {\n console.warn(\"THREE.Material: '\" + key + \"' parameter is undefined.\");\n continue;\n }\n if (key === \"shading\") {\n console.warn(\"THREE.\" + this.type + \": .shading has been removed. Use the boolean .flatShading instead.\");\n this.flatShading = newValue === FlatShading ? true : false;\n continue;\n }\n const currentValue = this[key];\n if (currentValue === void 0) {\n console.warn(\"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\");\n continue;\n }\n if (currentValue && currentValue.isColor) {\n currentValue.set(newValue);\n } else if (currentValue && currentValue.isVector3 && (newValue && newValue.isVector3)) {\n currentValue.copy(newValue);\n } else {\n this[key] = newValue;\n }\n }\n }\n toJSON(meta) {\n const isRoot = meta === void 0 || typeof meta === \"string\";\n if (isRoot) {\n meta = {\n textures: {},\n images: {}\n };\n }\n const data = {\n metadata: {\n version: 4.5,\n type: \"Material\",\n generator: \"Material.toJSON\"\n }\n };\n data.uuid = this.uuid;\n data.type = this.type;\n if (this.name !== \"\")\n data.name = this.name;\n if (this.color && this.color.isColor)\n data.color = this.color.getHex();\n if (this.roughness !== void 0)\n data.roughness = this.roughness;\n if (this.metalness !== void 0)\n data.metalness = this.metalness;\n if (this.sheen !== void 0)\n data.sheen = this.sheen;\n if (this.sheenColor && this.sheenColor.isColor)\n data.sheenColor = this.sheenColor.getHex();\n if (this.sheenRoughness !== void 0)\n data.sheenRoughness = this.sheenRoughness;\n if (this.emissive && this.emissive.isColor)\n data.emissive = this.emissive.getHex();\n if (this.emissiveIntensity && this.emissiveIntensity !== 1)\n data.emissiveIntensity = this.emissiveIntensity;\n if (this.specular && this.specular.isColor)\n data.specular = this.specular.getHex();\n if (this.specularIntensity !== void 0)\n data.specularIntensity = this.specularIntensity;\n if (this.specularColor && this.specularColor.isColor)\n data.specularColor = this.specularColor.getHex();\n if (this.shininess !== void 0)\n data.shininess = this.shininess;\n if (this.clearcoat !== void 0)\n data.clearcoat = this.clearcoat;\n if (this.clearcoatRoughness !== void 0)\n data.clearcoatRoughness = this.clearcoatRoughness;\n if (this.clearcoatMap && this.clearcoatMap.isTexture) {\n data.clearcoatMap = this.clearcoatMap.toJSON(meta).uuid;\n }\n if (this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture) {\n data.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(meta).uuid;\n }\n if (this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture) {\n data.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(meta).uuid;\n data.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n }\n if (this.map && this.map.isTexture)\n data.map = this.map.toJSON(meta).uuid;\n if (this.matcap && this.matcap.isTexture)\n data.matcap = this.matcap.toJSON(meta).uuid;\n if (this.alphaMap && this.alphaMap.isTexture)\n data.alphaMap = this.alphaMap.toJSON(meta).uuid;\n if (this.lightMap && this.lightMap.isTexture) {\n data.lightMap = this.lightMap.toJSON(meta).uuid;\n data.lightMapIntensity = this.lightMapIntensity;\n }\n if (this.aoMap && this.aoMap.isTexture) {\n data.aoMap = this.aoMap.toJSON(meta).uuid;\n data.aoMapIntensity = this.aoMapIntensity;\n }\n if (this.bumpMap && this.bumpMap.isTexture) {\n data.bumpMap = this.bumpMap.toJSON(meta).uuid;\n data.bumpScale = this.bumpScale;\n }\n if (this.normalMap && this.normalMap.isTexture) {\n data.normalMap = this.normalMap.toJSON(meta).uuid;\n data.normalMapType = this.normalMapType;\n data.normalScale = this.normalScale.toArray();\n }\n if (this.displacementMap && this.displacementMap.isTexture) {\n data.displacementMap = this.displacementMap.toJSON(meta).uuid;\n data.displacementScale = this.displacementScale;\n data.displacementBias = this.displacementBias;\n }\n if (this.roughnessMap && this.roughnessMap.isTexture)\n data.roughnessMap = this.roughnessMap.toJSON(meta).uuid;\n if (this.metalnessMap && this.metalnessMap.isTexture)\n data.metalnessMap = this.metalnessMap.toJSON(meta).uuid;\n if (this.emissiveMap && this.emissiveMap.isTexture)\n data.emissiveMap = this.emissiveMap.toJSON(meta).uuid;\n if (this.specularMap && this.specularMap.isTexture)\n data.specularMap = this.specularMap.toJSON(meta).uuid;\n if (this.specularIntensityMap && this.specularIntensityMap.isTexture)\n data.specularIntensityMap = this.specularIntensityMap.toJSON(meta).uuid;\n if (this.specularColorMap && this.specularColorMap.isTexture)\n data.specularColorMap = this.specularColorMap.toJSON(meta).uuid;\n if (this.envMap && this.envMap.isTexture) {\n data.envMap = this.envMap.toJSON(meta).uuid;\n if (this.combine !== void 0)\n data.combine = this.combine;\n }\n if (this.envMapIntensity !== void 0)\n data.envMapIntensity = this.envMapIntensity;\n if (this.reflectivity !== void 0)\n data.reflectivity = this.reflectivity;\n if (this.refractionRatio !== void 0)\n data.refractionRatio = this.refractionRatio;\n if (this.gradientMap && this.gradientMap.isTexture) {\n data.gradientMap = this.gradientMap.toJSON(meta).uuid;\n }\n if (this.transmission !== void 0)\n data.transmission = this.transmission;\n if (this.transmissionMap && this.transmissionMap.isTexture)\n data.transmissionMap = this.transmissionMap.toJSON(meta).uuid;\n if (this.thickness !== void 0)\n data.thickness = this.thickness;\n if (this.thicknessMap && this.thicknessMap.isTexture)\n data.thicknessMap = this.thicknessMap.toJSON(meta).uuid;\n if (this.attenuationDistance !== void 0)\n data.attenuationDistance = this.attenuationDistance;\n if (this.attenuationColor !== void 0)\n data.attenuationColor = this.attenuationColor.getHex();\n if (this.size !== void 0)\n data.size = this.size;\n if (this.shadowSide !== null)\n data.shadowSide = this.shadowSide;\n if (this.sizeAttenuation !== void 0)\n data.sizeAttenuation = this.sizeAttenuation;\n if (this.blending !== NormalBlending)\n data.blending = this.blending;\n if (this.side !== FrontSide)\n data.side = this.side;\n if (this.vertexColors)\n data.vertexColors = true;\n if (this.opacity < 1)\n data.opacity = this.opacity;\n if (this.format !== RGBAFormat)\n data.format = this.format;\n if (this.transparent === true)\n data.transparent = this.transparent;\n data.depthFunc = this.depthFunc;\n data.depthTest = this.depthTest;\n data.depthWrite = this.depthWrite;\n data.colorWrite = this.colorWrite;\n data.stencilWrite = this.stencilWrite;\n data.stencilWriteMask = this.stencilWriteMask;\n data.stencilFunc = this.stencilFunc;\n data.stencilRef = this.stencilRef;\n data.stencilFuncMask = this.stencilFuncMask;\n data.stencilFail = this.stencilFail;\n data.stencilZFail = this.stencilZFail;\n data.stencilZPass = this.stencilZPass;\n if (this.rotation && this.rotation !== 0)\n data.rotation = this.rotation;\n if (this.polygonOffset === true)\n data.polygonOffset = true;\n if (this.polygonOffsetFactor !== 0)\n data.polygonOffsetFactor = this.polygonOffsetFactor;\n if (this.polygonOffsetUnits !== 0)\n data.polygonOffsetUnits = this.polygonOffsetUnits;\n if (this.linewidth && this.linewidth !== 1)\n data.linewidth = this.linewidth;\n if (this.dashSize !== void 0)\n data.dashSize = this.dashSize;\n if (this.gapSize !== void 0)\n data.gapSize = this.gapSize;\n if (this.scale !== void 0)\n data.scale = this.scale;\n if (this.dithering === true)\n data.dithering = true;\n if (this.alphaTest > 0)\n data.alphaTest = this.alphaTest;\n if (this.alphaToCoverage === true)\n data.alphaToCoverage = this.alphaToCoverage;\n if (this.premultipliedAlpha === true)\n data.premultipliedAlpha = this.premultipliedAlpha;\n if (this.wireframe === true)\n data.wireframe = this.wireframe;\n if (this.wireframeLinewidth > 1)\n data.wireframeLinewidth = this.wireframeLinewidth;\n if (this.wireframeLinecap !== \"round\")\n data.wireframeLinecap = this.wireframeLinecap;\n if (this.wireframeLinejoin !== \"round\")\n data.wireframeLinejoin = this.wireframeLinejoin;\n if (this.flatShading === true)\n data.flatShading = this.flatShading;\n if (this.visible === false)\n data.visible = false;\n if (this.toneMapped === false)\n data.toneMapped = false;\n if (JSON.stringify(this.userData) !== \"{}\")\n data.userData = this.userData;\n function extractFromCache(cache) {\n const values = [];\n for (const key in cache) {\n const data2 = cache[key];\n delete data2.metadata;\n values.push(data2);\n }\n return values;\n }\n if (isRoot) {\n const textures = extractFromCache(meta.textures);\n const images = extractFromCache(meta.images);\n if (textures.length > 0)\n data.textures = textures;\n if (images.length > 0)\n data.images = images;\n }\n return data;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(source) {\n this.name = source.name;\n this.fog = source.fog;\n this.blending = source.blending;\n this.side = source.side;\n this.vertexColors = source.vertexColors;\n this.opacity = source.opacity;\n this.format = source.format;\n this.transparent = source.transparent;\n this.blendSrc = source.blendSrc;\n this.blendDst = source.blendDst;\n this.blendEquation = source.blendEquation;\n this.blendSrcAlpha = source.blendSrcAlpha;\n this.blendDstAlpha = source.blendDstAlpha;\n this.blendEquationAlpha = source.blendEquationAlpha;\n this.depthFunc = source.depthFunc;\n this.depthTest = source.depthTest;\n this.depthWrite = source.depthWrite;\n this.stencilWriteMask = source.stencilWriteMask;\n this.stencilFunc = source.stencilFunc;\n this.stencilRef = source.stencilRef;\n this.stencilFuncMask = source.stencilFuncMask;\n this.stencilFail = source.stencilFail;\n this.stencilZFail = source.stencilZFail;\n this.stencilZPass = source.stencilZPass;\n this.stencilWrite = source.stencilWrite;\n const srcPlanes = source.clippingPlanes;\n let dstPlanes = null;\n if (srcPlanes !== null) {\n const n = srcPlanes.length;\n dstPlanes = new Array(n);\n for (let i = 0; i !== n; ++i) {\n dstPlanes[i] = srcPlanes[i].clone();\n }\n }\n this.clippingPlanes = dstPlanes;\n this.clipIntersection = source.clipIntersection;\n this.clipShadows = source.clipShadows;\n this.shadowSide = source.shadowSide;\n this.colorWrite = source.colorWrite;\n this.precision = source.precision;\n this.polygonOffset = source.polygonOffset;\n this.polygonOffsetFactor = source.polygonOffsetFactor;\n this.polygonOffsetUnits = source.polygonOffsetUnits;\n this.dithering = source.dithering;\n this.alphaTest = source.alphaTest;\n this.alphaToCoverage = source.alphaToCoverage;\n this.premultipliedAlpha = source.premultipliedAlpha;\n this.visible = source.visible;\n this.toneMapped = source.toneMapped;\n this.userData = JSON.parse(JSON.stringify(source.userData));\n return this;\n }\n dispose() {\n this.dispatchEvent({type: \"dispose\"});\n }\n set needsUpdate(value) {\n if (value === true)\n this.version++;\n }\n}\nMaterial.prototype.isMaterial = true;\nconst _colorKeywords = {\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n};\nconst _hslA = {h: 0, s: 0, l: 0};\nconst _hslB = {h: 0, s: 0, l: 0};\nfunction hue2rgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * 6 * (2 / 3 - t);\n return p;\n}\nfunction SRGBToLinear(c) {\n return c < 0.04045 ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4);\n}\nfunction LinearToSRGB(c) {\n return c < 31308e-7 ? c * 12.92 : 1.055 * Math.pow(c, 0.41666) - 0.055;\n}\nclass Color {\n constructor(r, g, b) {\n if (g === void 0 && b === void 0) {\n return this.set(r);\n }\n return this.setRGB(r, g, b);\n }\n set(value) {\n if (value && value.isColor) {\n this.copy(value);\n } else if (typeof value === \"number\") {\n this.setHex(value);\n } else if (typeof value === \"string\") {\n this.setStyle(value);\n }\n return this;\n }\n setScalar(scalar) {\n this.r = scalar;\n this.g = scalar;\n this.b = scalar;\n return this;\n }\n setHex(hex) {\n hex = Math.floor(hex);\n this.r = (hex >> 16 & 255) / 255;\n this.g = (hex >> 8 & 255) / 255;\n this.b = (hex & 255) / 255;\n return this;\n }\n setRGB(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n return this;\n }\n setHSL(h, s, l) {\n h = euclideanModulo(h, 1);\n s = clamp(s, 0, 1);\n l = clamp(l, 0, 1);\n if (s === 0) {\n this.r = this.g = this.b = l;\n } else {\n const p = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n const q = 2 * l - p;\n this.r = hue2rgb(q, p, h + 1 / 3);\n this.g = hue2rgb(q, p, h);\n this.b = hue2rgb(q, p, h - 1 / 3);\n }\n return this;\n }\n setStyle(style) {\n function handleAlpha(string) {\n if (string === void 0)\n return;\n if (parseFloat(string) < 1) {\n console.warn(\"THREE.Color: Alpha component of \" + style + \" will be ignored.\");\n }\n }\n let m;\n if (m = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec(style)) {\n let color;\n const name = m[1];\n const components = m[2];\n switch (name) {\n case \"rgb\":\n case \"rgba\":\n if (color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n this.r = Math.min(255, parseInt(color[1], 10)) / 255;\n this.g = Math.min(255, parseInt(color[2], 10)) / 255;\n this.b = Math.min(255, parseInt(color[3], 10)) / 255;\n handleAlpha(color[4]);\n return this;\n }\n if (color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n this.r = Math.min(100, parseInt(color[1], 10)) / 100;\n this.g = Math.min(100, parseInt(color[2], 10)) / 100;\n this.b = Math.min(100, parseInt(color[3], 10)) / 100;\n handleAlpha(color[4]);\n return this;\n }\n break;\n case \"hsl\":\n case \"hsla\":\n if (color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n const h = parseFloat(color[1]) / 360;\n const s = parseInt(color[2], 10) / 100;\n const l = parseInt(color[3], 10) / 100;\n handleAlpha(color[4]);\n return this.setHSL(h, s, l);\n }\n break;\n }\n } else if (m = /^\\#([A-Fa-f\\d]+)$/.exec(style)) {\n const hex = m[1];\n const size = hex.length;\n if (size === 3) {\n this.r = parseInt(hex.charAt(0) + hex.charAt(0), 16) / 255;\n this.g = parseInt(hex.charAt(1) + hex.charAt(1), 16) / 255;\n this.b = parseInt(hex.charAt(2) + hex.charAt(2), 16) / 255;\n return this;\n } else if (size === 6) {\n this.r = parseInt(hex.charAt(0) + hex.charAt(1), 16) / 255;\n this.g = parseInt(hex.charAt(2) + hex.charAt(3), 16) / 255;\n this.b = parseInt(hex.charAt(4) + hex.charAt(5), 16) / 255;\n return this;\n }\n }\n if (style && style.length > 0) {\n return this.setColorName(style);\n }\n return this;\n }\n setColorName(style) {\n const hex = _colorKeywords[style.toLowerCase()];\n if (hex !== void 0) {\n this.setHex(hex);\n } else {\n console.warn(\"THREE.Color: Unknown color \" + style);\n }\n return this;\n }\n clone() {\n return new this.constructor(this.r, this.g, this.b);\n }\n copy(color) {\n this.r = color.r;\n this.g = color.g;\n this.b = color.b;\n return this;\n }\n copyGammaToLinear(color, gammaFactor = 2) {\n this.r = Math.pow(color.r, gammaFactor);\n this.g = Math.pow(color.g, gammaFactor);\n this.b = Math.pow(color.b, gammaFactor);\n return this;\n }\n copyLinearToGamma(color, gammaFactor = 2) {\n const safeInverse = gammaFactor > 0 ? 1 / gammaFactor : 1;\n this.r = Math.pow(color.r, safeInverse);\n this.g = Math.pow(color.g, safeInverse);\n this.b = Math.pow(color.b, safeInverse);\n return this;\n }\n convertGammaToLinear(gammaFactor) {\n this.copyGammaToLinear(this, gammaFactor);\n return this;\n }\n convertLinearToGamma(gammaFactor) {\n this.copyLinearToGamma(this, gammaFactor);\n return this;\n }\n copySRGBToLinear(color) {\n this.r = SRGBToLinear(color.r);\n this.g = SRGBToLinear(color.g);\n this.b = SRGBToLinear(color.b);\n return this;\n }\n copyLinearToSRGB(color) {\n this.r = LinearToSRGB(color.r);\n this.g = LinearToSRGB(color.g);\n this.b = LinearToSRGB(color.b);\n return this;\n }\n convertSRGBToLinear() {\n this.copySRGBToLinear(this);\n return this;\n }\n convertLinearToSRGB() {\n this.copyLinearToSRGB(this);\n return this;\n }\n getHex() {\n return this.r * 255 << 16 ^ this.g * 255 << 8 ^ this.b * 255 << 0;\n }\n getHexString() {\n return (\"000000\" + this.getHex().toString(16)).slice(-6);\n }\n getHSL(target) {\n const r = this.r, g = this.g, b = this.b;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let hue, saturation;\n const lightness = (min + max) / 2;\n if (min === max) {\n hue = 0;\n saturation = 0;\n } else {\n const delta = max - min;\n saturation = lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min);\n switch (max) {\n case r:\n hue = (g - b) / delta + (g < b ? 6 : 0);\n break;\n case g:\n hue = (b - r) / delta + 2;\n break;\n case b:\n hue = (r - g) / delta + 4;\n break;\n }\n hue /= 6;\n }\n target.h = hue;\n target.s = saturation;\n target.l = lightness;\n return target;\n }\n getStyle() {\n return \"rgb(\" + (this.r * 255 | 0) + \",\" + (this.g * 255 | 0) + \",\" + (this.b * 255 | 0) + \")\";\n }\n offsetHSL(h, s, l) {\n this.getHSL(_hslA);\n _hslA.h += h;\n _hslA.s += s;\n _hslA.l += l;\n this.setHSL(_hslA.h, _hslA.s, _hslA.l);\n return this;\n }\n add(color) {\n this.r += color.r;\n this.g += color.g;\n this.b += color.b;\n return this;\n }\n addColors(color1, color2) {\n this.r = color1.r + color2.r;\n this.g = color1.g + color2.g;\n this.b = color1.b + color2.b;\n return this;\n }\n addScalar(s) {\n this.r += s;\n this.g += s;\n this.b += s;\n return this;\n }\n sub(color) {\n this.r = Math.max(0, this.r - color.r);\n this.g = Math.max(0, this.g - color.g);\n this.b = Math.max(0, this.b - color.b);\n return this;\n }\n multiply(color) {\n this.r *= color.r;\n this.g *= color.g;\n this.b *= color.b;\n return this;\n }\n multiplyScalar(s) {\n this.r *= s;\n this.g *= s;\n this.b *= s;\n return this;\n }\n lerp(color, alpha) {\n this.r += (color.r - this.r) * alpha;\n this.g += (color.g - this.g) * alpha;\n this.b += (color.b - this.b) * alpha;\n return this;\n }\n lerpColors(color1, color2, alpha) {\n this.r = color1.r + (color2.r - color1.r) * alpha;\n this.g = color1.g + (color2.g - color1.g) * alpha;\n this.b = color1.b + (color2.b - color1.b) * alpha;\n return this;\n }\n lerpHSL(color, alpha) {\n this.getHSL(_hslA);\n color.getHSL(_hslB);\n const h = lerp(_hslA.h, _hslB.h, alpha);\n const s = lerp(_hslA.s, _hslB.s, alpha);\n const l = lerp(_hslA.l, _hslB.l, alpha);\n this.setHSL(h, s, l);\n return this;\n }\n equals(c) {\n return c.r === this.r && c.g === this.g && c.b === this.b;\n }\n fromArray(array, offset = 0) {\n this.r = array[offset];\n this.g = array[offset + 1];\n this.b = array[offset + 2];\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this.r;\n array[offset + 1] = this.g;\n array[offset + 2] = this.b;\n return array;\n }\n fromBufferAttribute(attribute, index) {\n this.r = attribute.getX(index);\n this.g = attribute.getY(index);\n this.b = attribute.getZ(index);\n if (attribute.normalized === true) {\n this.r /= 255;\n this.g /= 255;\n this.b /= 255;\n }\n return this;\n }\n toJSON() {\n return this.getHex();\n }\n}\nColor.NAMES = _colorKeywords;\nColor.prototype.isColor = true;\nColor.prototype.r = 1;\nColor.prototype.g = 1;\nColor.prototype.b = 1;\nclass MeshBasicMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"MeshBasicMaterial\";\n this.color = new Color(16777215);\n this.map = null;\n this.lightMap = null;\n this.lightMapIntensity = 1;\n this.aoMap = null;\n this.aoMapIntensity = 1;\n this.specularMap = null;\n this.alphaMap = null;\n this.envMap = null;\n this.combine = MultiplyOperation;\n this.reflectivity = 1;\n this.refractionRatio = 0.98;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.wireframeLinecap = \"round\";\n this.wireframeLinejoin = \"round\";\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.map = source.map;\n this.lightMap = source.lightMap;\n this.lightMapIntensity = source.lightMapIntensity;\n this.aoMap = source.aoMap;\n this.aoMapIntensity = source.aoMapIntensity;\n this.specularMap = source.specularMap;\n this.alphaMap = source.alphaMap;\n this.envMap = source.envMap;\n this.combine = source.combine;\n this.reflectivity = source.reflectivity;\n this.refractionRatio = source.refractionRatio;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.wireframeLinecap = source.wireframeLinecap;\n this.wireframeLinejoin = source.wireframeLinejoin;\n return this;\n }\n}\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\nconst _vector$9 = /* @__PURE__ */ new Vector3();\nconst _vector2$1 = /* @__PURE__ */ new Vector2();\nclass BufferAttribute {\n constructor(array, itemSize, normalized) {\n if (Array.isArray(array)) {\n throw new TypeError(\"THREE.BufferAttribute: array should be a Typed Array.\");\n }\n this.name = \"\";\n this.array = array;\n this.itemSize = itemSize;\n this.count = array !== void 0 ? array.length / itemSize : 0;\n this.normalized = normalized === true;\n this.usage = StaticDrawUsage;\n this.updateRange = {offset: 0, count: -1};\n this.version = 0;\n }\n onUploadCallback() {\n }\n set needsUpdate(value) {\n if (value === true)\n this.version++;\n }\n setUsage(value) {\n this.usage = value;\n return this;\n }\n copy(source) {\n this.name = source.name;\n this.array = new source.array.constructor(source.array);\n this.itemSize = source.itemSize;\n this.count = source.count;\n this.normalized = source.normalized;\n this.usage = source.usage;\n return this;\n }\n copyAt(index1, attribute, index2) {\n index1 *= this.itemSize;\n index2 *= attribute.itemSize;\n for (let i = 0, l = this.itemSize; i < l; i++) {\n this.array[index1 + i] = attribute.array[index2 + i];\n }\n return this;\n }\n copyArray(array) {\n this.array.set(array);\n return this;\n }\n copyColorsArray(colors) {\n const array = this.array;\n let offset = 0;\n for (let i = 0, l = colors.length; i < l; i++) {\n let color = colors[i];\n if (color === void 0) {\n console.warn(\"THREE.BufferAttribute.copyColorsArray(): color is undefined\", i);\n color = new Color();\n }\n array[offset++] = color.r;\n array[offset++] = color.g;\n array[offset++] = color.b;\n }\n return this;\n }\n copyVector2sArray(vectors) {\n const array = this.array;\n let offset = 0;\n for (let i = 0, l = vectors.length; i < l; i++) {\n let vector = vectors[i];\n if (vector === void 0) {\n console.warn(\"THREE.BufferAttribute.copyVector2sArray(): vector is undefined\", i);\n vector = new Vector2();\n }\n array[offset++] = vector.x;\n array[offset++] = vector.y;\n }\n return this;\n }\n copyVector3sArray(vectors) {\n const array = this.array;\n let offset = 0;\n for (let i = 0, l = vectors.length; i < l; i++) {\n let vector = vectors[i];\n if (vector === void 0) {\n console.warn(\"THREE.BufferAttribute.copyVector3sArray(): vector is undefined\", i);\n vector = new Vector3();\n }\n array[offset++] = vector.x;\n array[offset++] = vector.y;\n array[offset++] = vector.z;\n }\n return this;\n }\n copyVector4sArray(vectors) {\n const array = this.array;\n let offset = 0;\n for (let i = 0, l = vectors.length; i < l; i++) {\n let vector = vectors[i];\n if (vector === void 0) {\n console.warn(\"THREE.BufferAttribute.copyVector4sArray(): vector is undefined\", i);\n vector = new Vector4();\n }\n array[offset++] = vector.x;\n array[offset++] = vector.y;\n array[offset++] = vector.z;\n array[offset++] = vector.w;\n }\n return this;\n }\n applyMatrix3(m) {\n if (this.itemSize === 2) {\n for (let i = 0, l = this.count; i < l; i++) {\n _vector2$1.fromBufferAttribute(this, i);\n _vector2$1.applyMatrix3(m);\n this.setXY(i, _vector2$1.x, _vector2$1.y);\n }\n } else if (this.itemSize === 3) {\n for (let i = 0, l = this.count; i < l; i++) {\n _vector$9.fromBufferAttribute(this, i);\n _vector$9.applyMatrix3(m);\n this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n }\n }\n return this;\n }\n applyMatrix4(m) {\n for (let i = 0, l = this.count; i < l; i++) {\n _vector$9.x = this.getX(i);\n _vector$9.y = this.getY(i);\n _vector$9.z = this.getZ(i);\n _vector$9.applyMatrix4(m);\n this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n }\n return this;\n }\n applyNormalMatrix(m) {\n for (let i = 0, l = this.count; i < l; i++) {\n _vector$9.x = this.getX(i);\n _vector$9.y = this.getY(i);\n _vector$9.z = this.getZ(i);\n _vector$9.applyNormalMatrix(m);\n this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n }\n return this;\n }\n transformDirection(m) {\n for (let i = 0, l = this.count; i < l; i++) {\n _vector$9.x = this.getX(i);\n _vector$9.y = this.getY(i);\n _vector$9.z = this.getZ(i);\n _vector$9.transformDirection(m);\n this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n }\n return this;\n }\n set(value, offset = 0) {\n this.array.set(value, offset);\n return this;\n }\n getX(index) {\n return this.array[index * this.itemSize];\n }\n setX(index, x) {\n this.array[index * this.itemSize] = x;\n return this;\n }\n getY(index) {\n return this.array[index * this.itemSize + 1];\n }\n setY(index, y) {\n this.array[index * this.itemSize + 1] = y;\n return this;\n }\n getZ(index) {\n return this.array[index * this.itemSize + 2];\n }\n setZ(index, z) {\n this.array[index * this.itemSize + 2] = z;\n return this;\n }\n getW(index) {\n return this.array[index * this.itemSize + 3];\n }\n setW(index, w) {\n this.array[index * this.itemSize + 3] = w;\n return this;\n }\n setXY(index, x, y) {\n index *= this.itemSize;\n this.array[index + 0] = x;\n this.array[index + 1] = y;\n return this;\n }\n setXYZ(index, x, y, z) {\n index *= this.itemSize;\n this.array[index + 0] = x;\n this.array[index + 1] = y;\n this.array[index + 2] = z;\n return this;\n }\n setXYZW(index, x, y, z, w) {\n index *= this.itemSize;\n this.array[index + 0] = x;\n this.array[index + 1] = y;\n this.array[index + 2] = z;\n this.array[index + 3] = w;\n return this;\n }\n onUpload(callback) {\n this.onUploadCallback = callback;\n return this;\n }\n clone() {\n return new this.constructor(this.array, this.itemSize).copy(this);\n }\n toJSON() {\n const data = {\n itemSize: this.itemSize,\n type: this.array.constructor.name,\n array: Array.prototype.slice.call(this.array),\n normalized: this.normalized\n };\n if (this.name !== \"\")\n data.name = this.name;\n if (this.usage !== StaticDrawUsage)\n data.usage = this.usage;\n if (this.updateRange.offset !== 0 || this.updateRange.count !== -1)\n data.updateRange = this.updateRange;\n return data;\n }\n}\nBufferAttribute.prototype.isBufferAttribute = true;\nclass Int8BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Int8Array(array), itemSize, normalized);\n }\n}\nclass Uint8BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Uint8Array(array), itemSize, normalized);\n }\n}\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Uint8ClampedArray(array), itemSize, normalized);\n }\n}\nclass Int16BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Int16Array(array), itemSize, normalized);\n }\n}\nclass Uint16BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Uint16Array(array), itemSize, normalized);\n }\n}\nclass Int32BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Int32Array(array), itemSize, normalized);\n }\n}\nclass Uint32BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Uint32Array(array), itemSize, normalized);\n }\n}\nclass Float16BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Uint16Array(array), itemSize, normalized);\n }\n}\nFloat16BufferAttribute.prototype.isFloat16BufferAttribute = true;\nclass Float32BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Float32Array(array), itemSize, normalized);\n }\n}\nclass Float64BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Float64Array(array), itemSize, normalized);\n }\n}\nlet _id = 0;\nconst _m1 = /* @__PURE__ */ new Matrix4();\nconst _obj = /* @__PURE__ */ new Object3D();\nconst _offset = /* @__PURE__ */ new Vector3();\nconst _box$1 = /* @__PURE__ */ new Box3();\nconst _boxMorphTargets = /* @__PURE__ */ new Box3();\nconst _vector$8 = /* @__PURE__ */ new Vector3();\nclass BufferGeometry extends EventDispatcher {\n constructor() {\n super();\n Object.defineProperty(this, \"id\", {value: _id++});\n this.uuid = generateUUID();\n this.name = \"\";\n this.type = \"BufferGeometry\";\n this.index = null;\n this.attributes = {};\n this.morphAttributes = {};\n this.morphTargetsRelative = false;\n this.groups = [];\n this.boundingBox = null;\n this.boundingSphere = null;\n this.drawRange = {start: 0, count: Infinity};\n this.userData = {};\n }\n getIndex() {\n return this.index;\n }\n setIndex(index) {\n if (Array.isArray(index)) {\n this.index = new (arrayMax(index) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute)(index, 1);\n } else {\n this.index = index;\n }\n return this;\n }\n getAttribute(name) {\n return this.attributes[name];\n }\n setAttribute(name, attribute) {\n this.attributes[name] = attribute;\n return this;\n }\n deleteAttribute(name) {\n delete this.attributes[name];\n return this;\n }\n hasAttribute(name) {\n return this.attributes[name] !== void 0;\n }\n addGroup(start, count, materialIndex = 0) {\n this.groups.push({\n start,\n count,\n materialIndex\n });\n }\n clearGroups() {\n this.groups = [];\n }\n setDrawRange(start, count) {\n this.drawRange.start = start;\n this.drawRange.count = count;\n }\n applyMatrix4(matrix) {\n const position = this.attributes.position;\n if (position !== void 0) {\n position.applyMatrix4(matrix);\n position.needsUpdate = true;\n }\n const normal = this.attributes.normal;\n if (normal !== void 0) {\n const normalMatrix = new Matrix3().getNormalMatrix(matrix);\n normal.applyNormalMatrix(normalMatrix);\n normal.needsUpdate = true;\n }\n const tangent = this.attributes.tangent;\n if (tangent !== void 0) {\n tangent.transformDirection(matrix);\n tangent.needsUpdate = true;\n }\n if (this.boundingBox !== null) {\n this.computeBoundingBox();\n }\n if (this.boundingSphere !== null) {\n this.computeBoundingSphere();\n }\n return this;\n }\n applyQuaternion(q) {\n _m1.makeRotationFromQuaternion(q);\n this.applyMatrix4(_m1);\n return this;\n }\n rotateX(angle) {\n _m1.makeRotationX(angle);\n this.applyMatrix4(_m1);\n return this;\n }\n rotateY(angle) {\n _m1.makeRotationY(angle);\n this.applyMatrix4(_m1);\n return this;\n }\n rotateZ(angle) {\n _m1.makeRotationZ(angle);\n this.applyMatrix4(_m1);\n return this;\n }\n translate(x, y, z) {\n _m1.makeTranslation(x, y, z);\n this.applyMatrix4(_m1);\n return this;\n }\n scale(x, y, z) {\n _m1.makeScale(x, y, z);\n this.applyMatrix4(_m1);\n return this;\n }\n lookAt(vector) {\n _obj.lookAt(vector);\n _obj.updateMatrix();\n this.applyMatrix4(_obj.matrix);\n return this;\n }\n center() {\n this.computeBoundingBox();\n this.boundingBox.getCenter(_offset).negate();\n this.translate(_offset.x, _offset.y, _offset.z);\n return this;\n }\n setFromPoints(points) {\n const position = [];\n for (let i = 0, l = points.length; i < l; i++) {\n const point = points[i];\n position.push(point.x, point.y, point.z || 0);\n }\n this.setAttribute(\"position\", new Float32BufferAttribute(position, 3));\n return this;\n }\n computeBoundingBox() {\n if (this.boundingBox === null) {\n this.boundingBox = new Box3();\n }\n const position = this.attributes.position;\n const morphAttributesPosition = this.morphAttributes.position;\n if (position && position.isGLBufferAttribute) {\n console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this);\n this.boundingBox.set(new Vector3(-Infinity, -Infinity, -Infinity), new Vector3(Infinity, Infinity, Infinity));\n return;\n }\n if (position !== void 0) {\n this.boundingBox.setFromBufferAttribute(position);\n if (morphAttributesPosition) {\n for (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n const morphAttribute = morphAttributesPosition[i];\n _box$1.setFromBufferAttribute(morphAttribute);\n if (this.morphTargetsRelative) {\n _vector$8.addVectors(this.boundingBox.min, _box$1.min);\n this.boundingBox.expandByPoint(_vector$8);\n _vector$8.addVectors(this.boundingBox.max, _box$1.max);\n this.boundingBox.expandByPoint(_vector$8);\n } else {\n this.boundingBox.expandByPoint(_box$1.min);\n this.boundingBox.expandByPoint(_box$1.max);\n }\n }\n }\n } else {\n this.boundingBox.makeEmpty();\n }\n if (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) {\n console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this);\n }\n }\n computeBoundingSphere() {\n if (this.boundingSphere === null) {\n this.boundingSphere = new Sphere();\n }\n const position = this.attributes.position;\n const morphAttributesPosition = this.morphAttributes.position;\n if (position && position.isGLBufferAttribute) {\n console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this);\n this.boundingSphere.set(new Vector3(), Infinity);\n return;\n }\n if (position) {\n const center = this.boundingSphere.center;\n _box$1.setFromBufferAttribute(position);\n if (morphAttributesPosition) {\n for (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n const morphAttribute = morphAttributesPosition[i];\n _boxMorphTargets.setFromBufferAttribute(morphAttribute);\n if (this.morphTargetsRelative) {\n _vector$8.addVectors(_box$1.min, _boxMorphTargets.min);\n _box$1.expandByPoint(_vector$8);\n _vector$8.addVectors(_box$1.max, _boxMorphTargets.max);\n _box$1.expandByPoint(_vector$8);\n } else {\n _box$1.expandByPoint(_boxMorphTargets.min);\n _box$1.expandByPoint(_boxMorphTargets.max);\n }\n }\n }\n _box$1.getCenter(center);\n let maxRadiusSq = 0;\n for (let i = 0, il = position.count; i < il; i++) {\n _vector$8.fromBufferAttribute(position, i);\n maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n }\n if (morphAttributesPosition) {\n for (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n const morphAttribute = morphAttributesPosition[i];\n const morphTargetsRelative = this.morphTargetsRelative;\n for (let j = 0, jl = morphAttribute.count; j < jl; j++) {\n _vector$8.fromBufferAttribute(morphAttribute, j);\n if (morphTargetsRelative) {\n _offset.fromBufferAttribute(position, j);\n _vector$8.add(_offset);\n }\n maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n }\n }\n }\n this.boundingSphere.radius = Math.sqrt(maxRadiusSq);\n if (isNaN(this.boundingSphere.radius)) {\n console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this);\n }\n }\n }\n computeTangents() {\n const index = this.index;\n const attributes = this.attributes;\n if (index === null || attributes.position === void 0 || attributes.normal === void 0 || attributes.uv === void 0) {\n console.error(\"THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)\");\n return;\n }\n const indices = index.array;\n const positions = attributes.position.array;\n const normals = attributes.normal.array;\n const uvs = attributes.uv.array;\n const nVertices = positions.length / 3;\n if (attributes.tangent === void 0) {\n this.setAttribute(\"tangent\", new BufferAttribute(new Float32Array(4 * nVertices), 4));\n }\n const tangents = attributes.tangent.array;\n const tan1 = [], tan2 = [];\n for (let i = 0; i < nVertices; i++) {\n tan1[i] = new Vector3();\n tan2[i] = new Vector3();\n }\n const vA = new Vector3(), vB = new Vector3(), vC = new Vector3(), uvA = new Vector2(), uvB = new Vector2(), uvC = new Vector2(), sdir = new Vector3(), tdir = new Vector3();\n function handleTriangle(a, b, c) {\n vA.fromArray(positions, a * 3);\n vB.fromArray(positions, b * 3);\n vC.fromArray(positions, c * 3);\n uvA.fromArray(uvs, a * 2);\n uvB.fromArray(uvs, b * 2);\n uvC.fromArray(uvs, c * 2);\n vB.sub(vA);\n vC.sub(vA);\n uvB.sub(uvA);\n uvC.sub(uvA);\n const r = 1 / (uvB.x * uvC.y - uvC.x * uvB.y);\n if (!isFinite(r))\n return;\n sdir.copy(vB).multiplyScalar(uvC.y).addScaledVector(vC, -uvB.y).multiplyScalar(r);\n tdir.copy(vC).multiplyScalar(uvB.x).addScaledVector(vB, -uvC.x).multiplyScalar(r);\n tan1[a].add(sdir);\n tan1[b].add(sdir);\n tan1[c].add(sdir);\n tan2[a].add(tdir);\n tan2[b].add(tdir);\n tan2[c].add(tdir);\n }\n let groups = this.groups;\n if (groups.length === 0) {\n groups = [{\n start: 0,\n count: indices.length\n }];\n }\n for (let i = 0, il = groups.length; i < il; ++i) {\n const group = groups[i];\n const start = group.start;\n const count = group.count;\n for (let j = start, jl = start + count; j < jl; j += 3) {\n handleTriangle(indices[j + 0], indices[j + 1], indices[j + 2]);\n }\n }\n const tmp2 = new Vector3(), tmp22 = new Vector3();\n const n = new Vector3(), n2 = new Vector3();\n function handleVertex(v) {\n n.fromArray(normals, v * 3);\n n2.copy(n);\n const t = tan1[v];\n tmp2.copy(t);\n tmp2.sub(n.multiplyScalar(n.dot(t))).normalize();\n tmp22.crossVectors(n2, t);\n const test = tmp22.dot(tan2[v]);\n const w = test < 0 ? -1 : 1;\n tangents[v * 4] = tmp2.x;\n tangents[v * 4 + 1] = tmp2.y;\n tangents[v * 4 + 2] = tmp2.z;\n tangents[v * 4 + 3] = w;\n }\n for (let i = 0, il = groups.length; i < il; ++i) {\n const group = groups[i];\n const start = group.start;\n const count = group.count;\n for (let j = start, jl = start + count; j < jl; j += 3) {\n handleVertex(indices[j + 0]);\n handleVertex(indices[j + 1]);\n handleVertex(indices[j + 2]);\n }\n }\n }\n computeVertexNormals() {\n const index = this.index;\n const positionAttribute = this.getAttribute(\"position\");\n if (positionAttribute !== void 0) {\n let normalAttribute = this.getAttribute(\"normal\");\n if (normalAttribute === void 0) {\n normalAttribute = new BufferAttribute(new Float32Array(positionAttribute.count * 3), 3);\n this.setAttribute(\"normal\", normalAttribute);\n } else {\n for (let i = 0, il = normalAttribute.count; i < il; i++) {\n normalAttribute.setXYZ(i, 0, 0, 0);\n }\n }\n const pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n const nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n const cb = new Vector3(), ab = new Vector3();\n if (index) {\n for (let i = 0, il = index.count; i < il; i += 3) {\n const vA = index.getX(i + 0);\n const vB = index.getX(i + 1);\n const vC = index.getX(i + 2);\n pA.fromBufferAttribute(positionAttribute, vA);\n pB.fromBufferAttribute(positionAttribute, vB);\n pC.fromBufferAttribute(positionAttribute, vC);\n cb.subVectors(pC, pB);\n ab.subVectors(pA, pB);\n cb.cross(ab);\n nA.fromBufferAttribute(normalAttribute, vA);\n nB.fromBufferAttribute(normalAttribute, vB);\n nC.fromBufferAttribute(normalAttribute, vC);\n nA.add(cb);\n nB.add(cb);\n nC.add(cb);\n normalAttribute.setXYZ(vA, nA.x, nA.y, nA.z);\n normalAttribute.setXYZ(vB, nB.x, nB.y, nB.z);\n normalAttribute.setXYZ(vC, nC.x, nC.y, nC.z);\n }\n } else {\n for (let i = 0, il = positionAttribute.count; i < il; i += 3) {\n pA.fromBufferAttribute(positionAttribute, i + 0);\n pB.fromBufferAttribute(positionAttribute, i + 1);\n pC.fromBufferAttribute(positionAttribute, i + 2);\n cb.subVectors(pC, pB);\n ab.subVectors(pA, pB);\n cb.cross(ab);\n normalAttribute.setXYZ(i + 0, cb.x, cb.y, cb.z);\n normalAttribute.setXYZ(i + 1, cb.x, cb.y, cb.z);\n normalAttribute.setXYZ(i + 2, cb.x, cb.y, cb.z);\n }\n }\n this.normalizeNormals();\n normalAttribute.needsUpdate = true;\n }\n }\n merge(geometry, offset) {\n if (!(geometry && geometry.isBufferGeometry)) {\n console.error(\"THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.\", geometry);\n return;\n }\n if (offset === void 0) {\n offset = 0;\n console.warn(\"THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.\");\n }\n const attributes = this.attributes;\n for (const key in attributes) {\n if (geometry.attributes[key] === void 0)\n continue;\n const attribute1 = attributes[key];\n const attributeArray1 = attribute1.array;\n const attribute2 = geometry.attributes[key];\n const attributeArray2 = attribute2.array;\n const attributeOffset = attribute2.itemSize * offset;\n const length = Math.min(attributeArray2.length, attributeArray1.length - attributeOffset);\n for (let i = 0, j = attributeOffset; i < length; i++, j++) {\n attributeArray1[j] = attributeArray2[i];\n }\n }\n return this;\n }\n normalizeNormals() {\n const normals = this.attributes.normal;\n for (let i = 0, il = normals.count; i < il; i++) {\n _vector$8.fromBufferAttribute(normals, i);\n _vector$8.normalize();\n normals.setXYZ(i, _vector$8.x, _vector$8.y, _vector$8.z);\n }\n }\n toNonIndexed() {\n function convertBufferAttribute(attribute, indices2) {\n const array = attribute.array;\n const itemSize = attribute.itemSize;\n const normalized = attribute.normalized;\n const array2 = new array.constructor(indices2.length * itemSize);\n let index = 0, index2 = 0;\n for (let i = 0, l = indices2.length; i < l; i++) {\n if (attribute.isInterleavedBufferAttribute) {\n index = indices2[i] * attribute.data.stride + attribute.offset;\n } else {\n index = indices2[i] * itemSize;\n }\n for (let j = 0; j < itemSize; j++) {\n array2[index2++] = array[index++];\n }\n }\n return new BufferAttribute(array2, itemSize, normalized);\n }\n if (this.index === null) {\n console.warn(\"THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.\");\n return this;\n }\n const geometry2 = new BufferGeometry();\n const indices = this.index.array;\n const attributes = this.attributes;\n for (const name in attributes) {\n const attribute = attributes[name];\n const newAttribute = convertBufferAttribute(attribute, indices);\n geometry2.setAttribute(name, newAttribute);\n }\n const morphAttributes = this.morphAttributes;\n for (const name in morphAttributes) {\n const morphArray = [];\n const morphAttribute = morphAttributes[name];\n for (let i = 0, il = morphAttribute.length; i < il; i++) {\n const attribute = morphAttribute[i];\n const newAttribute = convertBufferAttribute(attribute, indices);\n morphArray.push(newAttribute);\n }\n geometry2.morphAttributes[name] = morphArray;\n }\n geometry2.morphTargetsRelative = this.morphTargetsRelative;\n const groups = this.groups;\n for (let i = 0, l = groups.length; i < l; i++) {\n const group = groups[i];\n geometry2.addGroup(group.start, group.count, group.materialIndex);\n }\n return geometry2;\n }\n toJSON() {\n const data = {\n metadata: {\n version: 4.5,\n type: \"BufferGeometry\",\n generator: \"BufferGeometry.toJSON\"\n }\n };\n data.uuid = this.uuid;\n data.type = this.type;\n if (this.name !== \"\")\n data.name = this.name;\n if (Object.keys(this.userData).length > 0)\n data.userData = this.userData;\n if (this.parameters !== void 0) {\n const parameters = this.parameters;\n for (const key in parameters) {\n if (parameters[key] !== void 0)\n data[key] = parameters[key];\n }\n return data;\n }\n data.data = {attributes: {}};\n const index = this.index;\n if (index !== null) {\n data.data.index = {\n type: index.array.constructor.name,\n array: Array.prototype.slice.call(index.array)\n };\n }\n const attributes = this.attributes;\n for (const key in attributes) {\n const attribute = attributes[key];\n data.data.attributes[key] = attribute.toJSON(data.data);\n }\n const morphAttributes = {};\n let hasMorphAttributes = false;\n for (const key in this.morphAttributes) {\n const attributeArray = this.morphAttributes[key];\n const array = [];\n for (let i = 0, il = attributeArray.length; i < il; i++) {\n const attribute = attributeArray[i];\n array.push(attribute.toJSON(data.data));\n }\n if (array.length > 0) {\n morphAttributes[key] = array;\n hasMorphAttributes = true;\n }\n }\n if (hasMorphAttributes) {\n data.data.morphAttributes = morphAttributes;\n data.data.morphTargetsRelative = this.morphTargetsRelative;\n }\n const groups = this.groups;\n if (groups.length > 0) {\n data.data.groups = JSON.parse(JSON.stringify(groups));\n }\n const boundingSphere = this.boundingSphere;\n if (boundingSphere !== null) {\n data.data.boundingSphere = {\n center: boundingSphere.center.toArray(),\n radius: boundingSphere.radius\n };\n }\n return data;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(source) {\n this.index = null;\n this.attributes = {};\n this.morphAttributes = {};\n this.groups = [];\n this.boundingBox = null;\n this.boundingSphere = null;\n const data = {};\n this.name = source.name;\n const index = source.index;\n if (index !== null) {\n this.setIndex(index.clone(data));\n }\n const attributes = source.attributes;\n for (const name in attributes) {\n const attribute = attributes[name];\n this.setAttribute(name, attribute.clone(data));\n }\n const morphAttributes = source.morphAttributes;\n for (const name in morphAttributes) {\n const array = [];\n const morphAttribute = morphAttributes[name];\n for (let i = 0, l = morphAttribute.length; i < l; i++) {\n array.push(morphAttribute[i].clone(data));\n }\n this.morphAttributes[name] = array;\n }\n this.morphTargetsRelative = source.morphTargetsRelative;\n const groups = source.groups;\n for (let i = 0, l = groups.length; i < l; i++) {\n const group = groups[i];\n this.addGroup(group.start, group.count, group.materialIndex);\n }\n const boundingBox = source.boundingBox;\n if (boundingBox !== null) {\n this.boundingBox = boundingBox.clone();\n }\n const boundingSphere = source.boundingSphere;\n if (boundingSphere !== null) {\n this.boundingSphere = boundingSphere.clone();\n }\n this.drawRange.start = source.drawRange.start;\n this.drawRange.count = source.drawRange.count;\n this.userData = source.userData;\n if (source.parameters !== void 0)\n this.parameters = Object.assign({}, source.parameters);\n return this;\n }\n dispose() {\n this.dispatchEvent({type: \"dispose\"});\n }\n}\nBufferGeometry.prototype.isBufferGeometry = true;\nconst _inverseMatrix$2 = /* @__PURE__ */ new Matrix4();\nconst _ray$2 = /* @__PURE__ */ new Ray();\nconst _sphere$3 = /* @__PURE__ */ new Sphere();\nconst _vA$1 = /* @__PURE__ */ new Vector3();\nconst _vB$1 = /* @__PURE__ */ new Vector3();\nconst _vC$1 = /* @__PURE__ */ new Vector3();\nconst _tempA = /* @__PURE__ */ new Vector3();\nconst _tempB = /* @__PURE__ */ new Vector3();\nconst _tempC = /* @__PURE__ */ new Vector3();\nconst _morphA = /* @__PURE__ */ new Vector3();\nconst _morphB = /* @__PURE__ */ new Vector3();\nconst _morphC = /* @__PURE__ */ new Vector3();\nconst _uvA$1 = /* @__PURE__ */ new Vector2();\nconst _uvB$1 = /* @__PURE__ */ new Vector2();\nconst _uvC$1 = /* @__PURE__ */ new Vector2();\nconst _intersectionPoint = /* @__PURE__ */ new Vector3();\nconst _intersectionPointWorld = /* @__PURE__ */ new Vector3();\nclass Mesh extends Object3D {\n constructor(geometry = new BufferGeometry(), material = new MeshBasicMaterial()) {\n super();\n this.type = \"Mesh\";\n this.geometry = geometry;\n this.material = material;\n this.updateMorphTargets();\n }\n copy(source) {\n super.copy(source);\n if (source.morphTargetInfluences !== void 0) {\n this.morphTargetInfluences = source.morphTargetInfluences.slice();\n }\n if (source.morphTargetDictionary !== void 0) {\n this.morphTargetDictionary = Object.assign({}, source.morphTargetDictionary);\n }\n this.material = source.material;\n this.geometry = source.geometry;\n return this;\n }\n updateMorphTargets() {\n const geometry = this.geometry;\n if (geometry.isBufferGeometry) {\n const morphAttributes = geometry.morphAttributes;\n const keys = Object.keys(morphAttributes);\n if (keys.length > 0) {\n const morphAttribute = morphAttributes[keys[0]];\n if (morphAttribute !== void 0) {\n this.morphTargetInfluences = [];\n this.morphTargetDictionary = {};\n for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n const name = morphAttribute[m].name || String(m);\n this.morphTargetInfluences.push(0);\n this.morphTargetDictionary[name] = m;\n }\n }\n }\n } else {\n const morphTargets = geometry.morphTargets;\n if (morphTargets !== void 0 && morphTargets.length > 0) {\n console.error(\"THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n }\n }\n raycast(raycaster, intersects2) {\n const geometry = this.geometry;\n const material = this.material;\n const matrixWorld = this.matrixWorld;\n if (material === void 0)\n return;\n if (geometry.boundingSphere === null)\n geometry.computeBoundingSphere();\n _sphere$3.copy(geometry.boundingSphere);\n _sphere$3.applyMatrix4(matrixWorld);\n if (raycaster.ray.intersectsSphere(_sphere$3) === false)\n return;\n _inverseMatrix$2.copy(matrixWorld).invert();\n _ray$2.copy(raycaster.ray).applyMatrix4(_inverseMatrix$2);\n if (geometry.boundingBox !== null) {\n if (_ray$2.intersectsBox(geometry.boundingBox) === false)\n return;\n }\n let intersection;\n if (geometry.isBufferGeometry) {\n const index = geometry.index;\n const position = geometry.attributes.position;\n const morphPosition = geometry.morphAttributes.position;\n const morphTargetsRelative = geometry.morphTargetsRelative;\n const uv = geometry.attributes.uv;\n const uv2 = geometry.attributes.uv2;\n const groups = geometry.groups;\n const drawRange = geometry.drawRange;\n if (index !== null) {\n if (Array.isArray(material)) {\n for (let i = 0, il = groups.length; i < il; i++) {\n const group = groups[i];\n const groupMaterial = material[group.materialIndex];\n const start = Math.max(group.start, drawRange.start);\n const end = Math.min(index.count, Math.min(group.start + group.count, drawRange.start + drawRange.count));\n for (let j = start, jl = end; j < jl; j += 3) {\n const a = index.getX(j);\n const b = index.getX(j + 1);\n const c = index.getX(j + 2);\n intersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n if (intersection) {\n intersection.faceIndex = Math.floor(j / 3);\n intersection.face.materialIndex = group.materialIndex;\n intersects2.push(intersection);\n }\n }\n }\n } else {\n const start = Math.max(0, drawRange.start);\n const end = Math.min(index.count, drawRange.start + drawRange.count);\n for (let i = start, il = end; i < il; i += 3) {\n const a = index.getX(i);\n const b = index.getX(i + 1);\n const c = index.getX(i + 2);\n intersection = checkBufferGeometryIntersection(this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n if (intersection) {\n intersection.faceIndex = Math.floor(i / 3);\n intersects2.push(intersection);\n }\n }\n }\n } else if (position !== void 0) {\n if (Array.isArray(material)) {\n for (let i = 0, il = groups.length; i < il; i++) {\n const group = groups[i];\n const groupMaterial = material[group.materialIndex];\n const start = Math.max(group.start, drawRange.start);\n const end = Math.min(position.count, Math.min(group.start + group.count, drawRange.start + drawRange.count));\n for (let j = start, jl = end; j < jl; j += 3) {\n const a = j;\n const b = j + 1;\n const c = j + 2;\n intersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n if (intersection) {\n intersection.faceIndex = Math.floor(j / 3);\n intersection.face.materialIndex = group.materialIndex;\n intersects2.push(intersection);\n }\n }\n }\n } else {\n const start = Math.max(0, drawRange.start);\n const end = Math.min(position.count, drawRange.start + drawRange.count);\n for (let i = start, il = end; i < il; i += 3) {\n const a = i;\n const b = i + 1;\n const c = i + 2;\n intersection = checkBufferGeometryIntersection(this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n if (intersection) {\n intersection.faceIndex = Math.floor(i / 3);\n intersects2.push(intersection);\n }\n }\n }\n }\n } else if (geometry.isGeometry) {\n console.error(\"THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n }\n}\nMesh.prototype.isMesh = true;\nfunction checkIntersection(object, material, raycaster, ray, pA, pB, pC, point) {\n let intersect;\n if (material.side === BackSide) {\n intersect = ray.intersectTriangle(pC, pB, pA, true, point);\n } else {\n intersect = ray.intersectTriangle(pA, pB, pC, material.side !== DoubleSide, point);\n }\n if (intersect === null)\n return null;\n _intersectionPointWorld.copy(point);\n _intersectionPointWorld.applyMatrix4(object.matrixWorld);\n const distance = raycaster.ray.origin.distanceTo(_intersectionPointWorld);\n if (distance < raycaster.near || distance > raycaster.far)\n return null;\n return {\n distance,\n point: _intersectionPointWorld.clone(),\n object\n };\n}\nfunction checkBufferGeometryIntersection(object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c) {\n _vA$1.fromBufferAttribute(position, a);\n _vB$1.fromBufferAttribute(position, b);\n _vC$1.fromBufferAttribute(position, c);\n const morphInfluences = object.morphTargetInfluences;\n if (morphPosition && morphInfluences) {\n _morphA.set(0, 0, 0);\n _morphB.set(0, 0, 0);\n _morphC.set(0, 0, 0);\n for (let i = 0, il = morphPosition.length; i < il; i++) {\n const influence = morphInfluences[i];\n const morphAttribute = morphPosition[i];\n if (influence === 0)\n continue;\n _tempA.fromBufferAttribute(morphAttribute, a);\n _tempB.fromBufferAttribute(morphAttribute, b);\n _tempC.fromBufferAttribute(morphAttribute, c);\n if (morphTargetsRelative) {\n _morphA.addScaledVector(_tempA, influence);\n _morphB.addScaledVector(_tempB, influence);\n _morphC.addScaledVector(_tempC, influence);\n } else {\n _morphA.addScaledVector(_tempA.sub(_vA$1), influence);\n _morphB.addScaledVector(_tempB.sub(_vB$1), influence);\n _morphC.addScaledVector(_tempC.sub(_vC$1), influence);\n }\n }\n _vA$1.add(_morphA);\n _vB$1.add(_morphB);\n _vC$1.add(_morphC);\n }\n if (object.isSkinnedMesh) {\n object.boneTransform(a, _vA$1);\n object.boneTransform(b, _vB$1);\n object.boneTransform(c, _vC$1);\n }\n const intersection = checkIntersection(object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint);\n if (intersection) {\n if (uv) {\n _uvA$1.fromBufferAttribute(uv, a);\n _uvB$1.fromBufferAttribute(uv, b);\n _uvC$1.fromBufferAttribute(uv, c);\n intersection.uv = Triangle.getUV(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2());\n }\n if (uv2) {\n _uvA$1.fromBufferAttribute(uv2, a);\n _uvB$1.fromBufferAttribute(uv2, b);\n _uvC$1.fromBufferAttribute(uv2, c);\n intersection.uv2 = Triangle.getUV(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2());\n }\n const face = {\n a,\n b,\n c,\n normal: new Vector3(),\n materialIndex: 0\n };\n Triangle.getNormal(_vA$1, _vB$1, _vC$1, face.normal);\n intersection.face = face;\n }\n return intersection;\n}\nclass BoxGeometry extends BufferGeometry {\n constructor(width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1) {\n super();\n this.type = \"BoxGeometry\";\n this.parameters = {\n width,\n height,\n depth,\n widthSegments,\n heightSegments,\n depthSegments\n };\n const scope = this;\n widthSegments = Math.floor(widthSegments);\n heightSegments = Math.floor(heightSegments);\n depthSegments = Math.floor(depthSegments);\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n let numberOfVertices = 0;\n let groupStart = 0;\n buildPlane(\"z\", \"y\", \"x\", -1, -1, depth, height, width, depthSegments, heightSegments, 0);\n buildPlane(\"z\", \"y\", \"x\", 1, -1, depth, height, -width, depthSegments, heightSegments, 1);\n buildPlane(\"x\", \"z\", \"y\", 1, 1, width, depth, height, widthSegments, depthSegments, 2);\n buildPlane(\"x\", \"z\", \"y\", 1, -1, width, depth, -height, widthSegments, depthSegments, 3);\n buildPlane(\"x\", \"y\", \"z\", 1, -1, width, height, depth, widthSegments, heightSegments, 4);\n buildPlane(\"x\", \"y\", \"z\", -1, -1, width, height, -depth, widthSegments, heightSegments, 5);\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n function buildPlane(u, v, w, udir, vdir, width2, height2, depth2, gridX, gridY, materialIndex) {\n const segmentWidth = width2 / gridX;\n const segmentHeight = height2 / gridY;\n const widthHalf = width2 / 2;\n const heightHalf = height2 / 2;\n const depthHalf = depth2 / 2;\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n let vertexCounter = 0;\n let groupCount = 0;\n const vector = new Vector3();\n for (let iy = 0; iy < gridY1; iy++) {\n const y = iy * segmentHeight - heightHalf;\n for (let ix = 0; ix < gridX1; ix++) {\n const x = ix * segmentWidth - widthHalf;\n vector[u] = x * udir;\n vector[v] = y * vdir;\n vector[w] = depthHalf;\n vertices.push(vector.x, vector.y, vector.z);\n vector[u] = 0;\n vector[v] = 0;\n vector[w] = depth2 > 0 ? 1 : -1;\n normals.push(vector.x, vector.y, vector.z);\n uvs.push(ix / gridX);\n uvs.push(1 - iy / gridY);\n vertexCounter += 1;\n }\n }\n for (let iy = 0; iy < gridY; iy++) {\n for (let ix = 0; ix < gridX; ix++) {\n const a = numberOfVertices + ix + gridX1 * iy;\n const b = numberOfVertices + ix + gridX1 * (iy + 1);\n const c = numberOfVertices + (ix + 1) + gridX1 * (iy + 1);\n const d = numberOfVertices + (ix + 1) + gridX1 * iy;\n indices.push(a, b, d);\n indices.push(b, c, d);\n groupCount += 6;\n }\n }\n scope.addGroup(groupStart, groupCount, materialIndex);\n groupStart += groupCount;\n numberOfVertices += vertexCounter;\n }\n }\n static fromJSON(data) {\n return new BoxGeometry(data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments);\n }\n}\nfunction cloneUniforms(src) {\n const dst = {};\n for (const u in src) {\n dst[u] = {};\n for (const p in src[u]) {\n const property = src[u][p];\n if (property && (property.isColor || property.isMatrix3 || property.isMatrix4 || property.isVector2 || property.isVector3 || property.isVector4 || property.isTexture || property.isQuaternion)) {\n dst[u][p] = property.clone();\n } else if (Array.isArray(property)) {\n dst[u][p] = property.slice();\n } else {\n dst[u][p] = property;\n }\n }\n }\n return dst;\n}\nfunction mergeUniforms(uniforms) {\n const merged = {};\n for (let u = 0; u < uniforms.length; u++) {\n const tmp2 = cloneUniforms(uniforms[u]);\n for (const p in tmp2) {\n merged[p] = tmp2[p];\n }\n }\n return merged;\n}\nconst UniformsUtils = {clone: cloneUniforms, merge: mergeUniforms};\nvar default_vertex = \"void main() {\\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\nvar default_fragment = \"void main() {\\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\nclass ShaderMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"ShaderMaterial\";\n this.defines = {};\n this.uniforms = {};\n this.vertexShader = default_vertex;\n this.fragmentShader = default_fragment;\n this.linewidth = 1;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.fog = false;\n this.lights = false;\n this.clipping = false;\n this.extensions = {\n derivatives: false,\n fragDepth: false,\n drawBuffers: false,\n shaderTextureLOD: false\n };\n this.defaultAttributeValues = {\n color: [1, 1, 1],\n uv: [0, 0],\n uv2: [0, 0]\n };\n this.index0AttributeName = void 0;\n this.uniformsNeedUpdate = false;\n this.glslVersion = null;\n if (parameters !== void 0) {\n if (parameters.attributes !== void 0) {\n console.error(\"THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.\");\n }\n this.setValues(parameters);\n }\n }\n copy(source) {\n super.copy(source);\n this.fragmentShader = source.fragmentShader;\n this.vertexShader = source.vertexShader;\n this.uniforms = cloneUniforms(source.uniforms);\n this.defines = Object.assign({}, source.defines);\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.lights = source.lights;\n this.clipping = source.clipping;\n this.extensions = Object.assign({}, source.extensions);\n this.glslVersion = source.glslVersion;\n return this;\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n data.glslVersion = this.glslVersion;\n data.uniforms = {};\n for (const name in this.uniforms) {\n const uniform = this.uniforms[name];\n const value = uniform.value;\n if (value && value.isTexture) {\n data.uniforms[name] = {\n type: \"t\",\n value: value.toJSON(meta).uuid\n };\n } else if (value && value.isColor) {\n data.uniforms[name] = {\n type: \"c\",\n value: value.getHex()\n };\n } else if (value && value.isVector2) {\n data.uniforms[name] = {\n type: \"v2\",\n value: value.toArray()\n };\n } else if (value && value.isVector3) {\n data.uniforms[name] = {\n type: \"v3\",\n value: value.toArray()\n };\n } else if (value && value.isVector4) {\n data.uniforms[name] = {\n type: \"v4\",\n value: value.toArray()\n };\n } else if (value && value.isMatrix3) {\n data.uniforms[name] = {\n type: \"m3\",\n value: value.toArray()\n };\n } else if (value && value.isMatrix4) {\n data.uniforms[name] = {\n type: \"m4\",\n value: value.toArray()\n };\n } else {\n data.uniforms[name] = {\n value\n };\n }\n }\n if (Object.keys(this.defines).length > 0)\n data.defines = this.defines;\n data.vertexShader = this.vertexShader;\n data.fragmentShader = this.fragmentShader;\n const extensions = {};\n for (const key in this.extensions) {\n if (this.extensions[key] === true)\n extensions[key] = true;\n }\n if (Object.keys(extensions).length > 0)\n data.extensions = extensions;\n return data;\n }\n}\nShaderMaterial.prototype.isShaderMaterial = true;\nclass Camera extends Object3D {\n constructor() {\n super();\n this.type = \"Camera\";\n this.matrixWorldInverse = new Matrix4();\n this.projectionMatrix = new Matrix4();\n this.projectionMatrixInverse = new Matrix4();\n }\n copy(source, recursive) {\n super.copy(source, recursive);\n this.matrixWorldInverse.copy(source.matrixWorldInverse);\n this.projectionMatrix.copy(source.projectionMatrix);\n this.projectionMatrixInverse.copy(source.projectionMatrixInverse);\n return this;\n }\n getWorldDirection(target) {\n this.updateWorldMatrix(true, false);\n const e = this.matrixWorld.elements;\n return target.set(-e[8], -e[9], -e[10]).normalize();\n }\n updateMatrixWorld(force) {\n super.updateMatrixWorld(force);\n this.matrixWorldInverse.copy(this.matrixWorld).invert();\n }\n updateWorldMatrix(updateParents, updateChildren) {\n super.updateWorldMatrix(updateParents, updateChildren);\n this.matrixWorldInverse.copy(this.matrixWorld).invert();\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nCamera.prototype.isCamera = true;\nclass PerspectiveCamera extends Camera {\n constructor(fov2 = 50, aspect2 = 1, near = 0.1, far = 2e3) {\n super();\n this.type = \"PerspectiveCamera\";\n this.fov = fov2;\n this.zoom = 1;\n this.near = near;\n this.far = far;\n this.focus = 10;\n this.aspect = aspect2;\n this.view = null;\n this.filmGauge = 35;\n this.filmOffset = 0;\n this.updateProjectionMatrix();\n }\n copy(source, recursive) {\n super.copy(source, recursive);\n this.fov = source.fov;\n this.zoom = source.zoom;\n this.near = source.near;\n this.far = source.far;\n this.focus = source.focus;\n this.aspect = source.aspect;\n this.view = source.view === null ? null : Object.assign({}, source.view);\n this.filmGauge = source.filmGauge;\n this.filmOffset = source.filmOffset;\n return this;\n }\n setFocalLength(focalLength) {\n const vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n this.fov = RAD2DEG * 2 * Math.atan(vExtentSlope);\n this.updateProjectionMatrix();\n }\n getFocalLength() {\n const vExtentSlope = Math.tan(DEG2RAD * 0.5 * this.fov);\n return 0.5 * this.getFilmHeight() / vExtentSlope;\n }\n getEffectiveFOV() {\n return RAD2DEG * 2 * Math.atan(Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom);\n }\n getFilmWidth() {\n return this.filmGauge * Math.min(this.aspect, 1);\n }\n getFilmHeight() {\n return this.filmGauge / Math.max(this.aspect, 1);\n }\n setViewOffset(fullWidth, fullHeight, x, y, width, height) {\n this.aspect = fullWidth / fullHeight;\n if (this.view === null) {\n this.view = {\n enabled: true,\n fullWidth: 1,\n fullHeight: 1,\n offsetX: 0,\n offsetY: 0,\n width: 1,\n height: 1\n };\n }\n this.view.enabled = true;\n this.view.fullWidth = fullWidth;\n this.view.fullHeight = fullHeight;\n this.view.offsetX = x;\n this.view.offsetY = y;\n this.view.width = width;\n this.view.height = height;\n this.updateProjectionMatrix();\n }\n clearViewOffset() {\n if (this.view !== null) {\n this.view.enabled = false;\n }\n this.updateProjectionMatrix();\n }\n updateProjectionMatrix() {\n const near = this.near;\n let top = near * Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom;\n let height = 2 * top;\n let width = this.aspect * height;\n let left = -0.5 * width;\n const view = this.view;\n if (this.view !== null && this.view.enabled) {\n const fullWidth = view.fullWidth, fullHeight = view.fullHeight;\n left += view.offsetX * width / fullWidth;\n top -= view.offsetY * height / fullHeight;\n width *= view.width / fullWidth;\n height *= view.height / fullHeight;\n }\n const skew = this.filmOffset;\n if (skew !== 0)\n left += near * skew / this.getFilmWidth();\n this.projectionMatrix.makePerspective(left, left + width, top, top - height, near, this.far);\n this.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n data.object.fov = this.fov;\n data.object.zoom = this.zoom;\n data.object.near = this.near;\n data.object.far = this.far;\n data.object.focus = this.focus;\n data.object.aspect = this.aspect;\n if (this.view !== null)\n data.object.view = Object.assign({}, this.view);\n data.object.filmGauge = this.filmGauge;\n data.object.filmOffset = this.filmOffset;\n return data;\n }\n}\nPerspectiveCamera.prototype.isPerspectiveCamera = true;\nconst fov = 90, aspect = 1;\nclass CubeCamera extends Object3D {\n constructor(near, far, renderTarget) {\n super();\n this.type = \"CubeCamera\";\n if (renderTarget.isWebGLCubeRenderTarget !== true) {\n console.error(\"THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.\");\n return;\n }\n this.renderTarget = renderTarget;\n const cameraPX = new PerspectiveCamera(fov, aspect, near, far);\n cameraPX.layers = this.layers;\n cameraPX.up.set(0, -1, 0);\n cameraPX.lookAt(new Vector3(1, 0, 0));\n this.add(cameraPX);\n const cameraNX = new PerspectiveCamera(fov, aspect, near, far);\n cameraNX.layers = this.layers;\n cameraNX.up.set(0, -1, 0);\n cameraNX.lookAt(new Vector3(-1, 0, 0));\n this.add(cameraNX);\n const cameraPY = new PerspectiveCamera(fov, aspect, near, far);\n cameraPY.layers = this.layers;\n cameraPY.up.set(0, 0, 1);\n cameraPY.lookAt(new Vector3(0, 1, 0));\n this.add(cameraPY);\n const cameraNY = new PerspectiveCamera(fov, aspect, near, far);\n cameraNY.layers = this.layers;\n cameraNY.up.set(0, 0, -1);\n cameraNY.lookAt(new Vector3(0, -1, 0));\n this.add(cameraNY);\n const cameraPZ = new PerspectiveCamera(fov, aspect, near, far);\n cameraPZ.layers = this.layers;\n cameraPZ.up.set(0, -1, 0);\n cameraPZ.lookAt(new Vector3(0, 0, 1));\n this.add(cameraPZ);\n const cameraNZ = new PerspectiveCamera(fov, aspect, near, far);\n cameraNZ.layers = this.layers;\n cameraNZ.up.set(0, -1, 0);\n cameraNZ.lookAt(new Vector3(0, 0, -1));\n this.add(cameraNZ);\n }\n update(renderer, scene) {\n if (this.parent === null)\n this.updateMatrixWorld();\n const renderTarget = this.renderTarget;\n const [cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ] = this.children;\n const currentXrEnabled = renderer.xr.enabled;\n const currentRenderTarget = renderer.getRenderTarget();\n renderer.xr.enabled = false;\n const generateMipmaps = renderTarget.texture.generateMipmaps;\n renderTarget.texture.generateMipmaps = false;\n renderer.setRenderTarget(renderTarget, 0);\n renderer.render(scene, cameraPX);\n renderer.setRenderTarget(renderTarget, 1);\n renderer.render(scene, cameraNX);\n renderer.setRenderTarget(renderTarget, 2);\n renderer.render(scene, cameraPY);\n renderer.setRenderTarget(renderTarget, 3);\n renderer.render(scene, cameraNY);\n renderer.setRenderTarget(renderTarget, 4);\n renderer.render(scene, cameraPZ);\n renderTarget.texture.generateMipmaps = generateMipmaps;\n renderer.setRenderTarget(renderTarget, 5);\n renderer.render(scene, cameraNZ);\n renderer.setRenderTarget(currentRenderTarget);\n renderer.xr.enabled = currentXrEnabled;\n }\n}\nclass CubeTexture extends Texture {\n constructor(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding) {\n images = images !== void 0 ? images : [];\n mapping = mapping !== void 0 ? mapping : CubeReflectionMapping;\n super(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n this.flipY = false;\n }\n get images() {\n return this.image;\n }\n set images(value) {\n this.image = value;\n }\n}\nCubeTexture.prototype.isCubeTexture = true;\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n constructor(size, options, dummy) {\n if (Number.isInteger(options)) {\n console.warn(\"THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )\");\n options = dummy;\n }\n super(size, size, options);\n options = options || {};\n this.texture = new CubeTexture(void 0, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding);\n this.texture.isRenderTargetTexture = true;\n this.texture.generateMipmaps = options.generateMipmaps !== void 0 ? options.generateMipmaps : false;\n this.texture.minFilter = options.minFilter !== void 0 ? options.minFilter : LinearFilter;\n this.texture._needsFlipEnvMap = false;\n }\n fromEquirectangularTexture(renderer, texture) {\n this.texture.type = texture.type;\n this.texture.format = RGBAFormat;\n this.texture.encoding = texture.encoding;\n this.texture.generateMipmaps = texture.generateMipmaps;\n this.texture.minFilter = texture.minFilter;\n this.texture.magFilter = texture.magFilter;\n const shader = {\n uniforms: {\n tEquirect: {value: null}\n },\n vertexShader: `\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n fragmentShader: `\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n };\n const geometry = new BoxGeometry(5, 5, 5);\n const material = new ShaderMaterial({\n name: \"CubemapFromEquirect\",\n uniforms: cloneUniforms(shader.uniforms),\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader,\n side: BackSide,\n blending: NoBlending\n });\n material.uniforms.tEquirect.value = texture;\n const mesh = new Mesh(geometry, material);\n const currentMinFilter = texture.minFilter;\n if (texture.minFilter === LinearMipmapLinearFilter)\n texture.minFilter = LinearFilter;\n const camera = new CubeCamera(1, 10, this);\n camera.update(renderer, mesh);\n texture.minFilter = currentMinFilter;\n mesh.geometry.dispose();\n mesh.material.dispose();\n return this;\n }\n clear(renderer, color, depth, stencil) {\n const currentRenderTarget = renderer.getRenderTarget();\n for (let i = 0; i < 6; i++) {\n renderer.setRenderTarget(this, i);\n renderer.clear(color, depth, stencil);\n }\n renderer.setRenderTarget(currentRenderTarget);\n }\n}\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\nconst _vector1 = /* @__PURE__ */ new Vector3();\nconst _vector2 = /* @__PURE__ */ new Vector3();\nconst _normalMatrix = /* @__PURE__ */ new Matrix3();\nclass Plane {\n constructor(normal = new Vector3(1, 0, 0), constant = 0) {\n this.normal = normal;\n this.constant = constant;\n }\n set(normal, constant) {\n this.normal.copy(normal);\n this.constant = constant;\n return this;\n }\n setComponents(x, y, z, w) {\n this.normal.set(x, y, z);\n this.constant = w;\n return this;\n }\n setFromNormalAndCoplanarPoint(normal, point) {\n this.normal.copy(normal);\n this.constant = -point.dot(this.normal);\n return this;\n }\n setFromCoplanarPoints(a, b, c) {\n const normal = _vector1.subVectors(c, b).cross(_vector2.subVectors(a, b)).normalize();\n this.setFromNormalAndCoplanarPoint(normal, a);\n return this;\n }\n copy(plane) {\n this.normal.copy(plane.normal);\n this.constant = plane.constant;\n return this;\n }\n normalize() {\n const inverseNormalLength = 1 / this.normal.length();\n this.normal.multiplyScalar(inverseNormalLength);\n this.constant *= inverseNormalLength;\n return this;\n }\n negate() {\n this.constant *= -1;\n this.normal.negate();\n return this;\n }\n distanceToPoint(point) {\n return this.normal.dot(point) + this.constant;\n }\n distanceToSphere(sphere) {\n return this.distanceToPoint(sphere.center) - sphere.radius;\n }\n projectPoint(point, target) {\n return target.copy(this.normal).multiplyScalar(-this.distanceToPoint(point)).add(point);\n }\n intersectLine(line, target) {\n const direction = line.delta(_vector1);\n const denominator = this.normal.dot(direction);\n if (denominator === 0) {\n if (this.distanceToPoint(line.start) === 0) {\n return target.copy(line.start);\n }\n return null;\n }\n const t = -(line.start.dot(this.normal) + this.constant) / denominator;\n if (t < 0 || t > 1) {\n return null;\n }\n return target.copy(direction).multiplyScalar(t).add(line.start);\n }\n intersectsLine(line) {\n const startSign = this.distanceToPoint(line.start);\n const endSign = this.distanceToPoint(line.end);\n return startSign < 0 && endSign > 0 || endSign < 0 && startSign > 0;\n }\n intersectsBox(box) {\n return box.intersectsPlane(this);\n }\n intersectsSphere(sphere) {\n return sphere.intersectsPlane(this);\n }\n coplanarPoint(target) {\n return target.copy(this.normal).multiplyScalar(-this.constant);\n }\n applyMatrix4(matrix, optionalNormalMatrix) {\n const normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix(matrix);\n const referencePoint = this.coplanarPoint(_vector1).applyMatrix4(matrix);\n const normal = this.normal.applyMatrix3(normalMatrix).normalize();\n this.constant = -referencePoint.dot(normal);\n return this;\n }\n translate(offset) {\n this.constant -= offset.dot(this.normal);\n return this;\n }\n equals(plane) {\n return plane.normal.equals(this.normal) && plane.constant === this.constant;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nPlane.prototype.isPlane = true;\nconst _sphere$2 = /* @__PURE__ */ new Sphere();\nconst _vector$7 = /* @__PURE__ */ new Vector3();\nclass Frustum {\n constructor(p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane()) {\n this.planes = [p0, p1, p2, p3, p4, p5];\n }\n set(p0, p1, p2, p3, p4, p5) {\n const planes = this.planes;\n planes[0].copy(p0);\n planes[1].copy(p1);\n planes[2].copy(p2);\n planes[3].copy(p3);\n planes[4].copy(p4);\n planes[5].copy(p5);\n return this;\n }\n copy(frustum) {\n const planes = this.planes;\n for (let i = 0; i < 6; i++) {\n planes[i].copy(frustum.planes[i]);\n }\n return this;\n }\n setFromProjectionMatrix(m) {\n const planes = this.planes;\n const me = m.elements;\n const me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3];\n const me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7];\n const me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11];\n const me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15];\n planes[0].setComponents(me3 - me0, me7 - me4, me11 - me8, me15 - me12).normalize();\n planes[1].setComponents(me3 + me0, me7 + me4, me11 + me8, me15 + me12).normalize();\n planes[2].setComponents(me3 + me1, me7 + me5, me11 + me9, me15 + me13).normalize();\n planes[3].setComponents(me3 - me1, me7 - me5, me11 - me9, me15 - me13).normalize();\n planes[4].setComponents(me3 - me2, me7 - me6, me11 - me10, me15 - me14).normalize();\n planes[5].setComponents(me3 + me2, me7 + me6, me11 + me10, me15 + me14).normalize();\n return this;\n }\n intersectsObject(object) {\n const geometry = object.geometry;\n if (geometry.boundingSphere === null)\n geometry.computeBoundingSphere();\n _sphere$2.copy(geometry.boundingSphere).applyMatrix4(object.matrixWorld);\n return this.intersectsSphere(_sphere$2);\n }\n intersectsSprite(sprite) {\n _sphere$2.center.set(0, 0, 0);\n _sphere$2.radius = 0.7071067811865476;\n _sphere$2.applyMatrix4(sprite.matrixWorld);\n return this.intersectsSphere(_sphere$2);\n }\n intersectsSphere(sphere) {\n const planes = this.planes;\n const center = sphere.center;\n const negRadius = -sphere.radius;\n for (let i = 0; i < 6; i++) {\n const distance = planes[i].distanceToPoint(center);\n if (distance < negRadius) {\n return false;\n }\n }\n return true;\n }\n intersectsBox(box) {\n const planes = this.planes;\n for (let i = 0; i < 6; i++) {\n const plane = planes[i];\n _vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n _vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n _vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n if (plane.distanceToPoint(_vector$7) < 0) {\n return false;\n }\n }\n return true;\n }\n containsPoint(point) {\n const planes = this.planes;\n for (let i = 0; i < 6; i++) {\n if (planes[i].distanceToPoint(point) < 0) {\n return false;\n }\n }\n return true;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nfunction WebGLAnimation() {\n let context = null;\n let isAnimating = false;\n let animationLoop = null;\n let requestId = null;\n function onAnimationFrame(time, frame) {\n animationLoop(time, frame);\n requestId = context.requestAnimationFrame(onAnimationFrame);\n }\n return {\n start: function() {\n if (isAnimating === true)\n return;\n if (animationLoop === null)\n return;\n requestId = context.requestAnimationFrame(onAnimationFrame);\n isAnimating = true;\n },\n stop: function() {\n context.cancelAnimationFrame(requestId);\n isAnimating = false;\n },\n setAnimationLoop: function(callback) {\n animationLoop = callback;\n },\n setContext: function(value) {\n context = value;\n }\n };\n}\nfunction WebGLAttributes(gl, capabilities) {\n const isWebGL2 = capabilities.isWebGL2;\n const buffers = new WeakMap();\n function createBuffer(attribute, bufferType) {\n const array = attribute.array;\n const usage = attribute.usage;\n const buffer = gl.createBuffer();\n gl.bindBuffer(bufferType, buffer);\n gl.bufferData(bufferType, array, usage);\n attribute.onUploadCallback();\n let type = 5126;\n if (array instanceof Float32Array) {\n type = 5126;\n } else if (array instanceof Float64Array) {\n console.warn(\"THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.\");\n } else if (array instanceof Uint16Array) {\n if (attribute.isFloat16BufferAttribute) {\n if (isWebGL2) {\n type = 5131;\n } else {\n console.warn(\"THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.\");\n }\n } else {\n type = 5123;\n }\n } else if (array instanceof Int16Array) {\n type = 5122;\n } else if (array instanceof Uint32Array) {\n type = 5125;\n } else if (array instanceof Int32Array) {\n type = 5124;\n } else if (array instanceof Int8Array) {\n type = 5120;\n } else if (array instanceof Uint8Array) {\n type = 5121;\n } else if (array instanceof Uint8ClampedArray) {\n type = 5121;\n }\n return {\n buffer,\n type,\n bytesPerElement: array.BYTES_PER_ELEMENT,\n version: attribute.version\n };\n }\n function updateBuffer(buffer, attribute, bufferType) {\n const array = attribute.array;\n const updateRange = attribute.updateRange;\n gl.bindBuffer(bufferType, buffer);\n if (updateRange.count === -1) {\n gl.bufferSubData(bufferType, 0, array);\n } else {\n if (isWebGL2) {\n gl.bufferSubData(bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, array, updateRange.offset, updateRange.count);\n } else {\n gl.bufferSubData(bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, array.subarray(updateRange.offset, updateRange.offset + updateRange.count));\n }\n updateRange.count = -1;\n }\n }\n function get(attribute) {\n if (attribute.isInterleavedBufferAttribute)\n attribute = attribute.data;\n return buffers.get(attribute);\n }\n function remove(attribute) {\n if (attribute.isInterleavedBufferAttribute)\n attribute = attribute.data;\n const data = buffers.get(attribute);\n if (data) {\n gl.deleteBuffer(data.buffer);\n buffers.delete(attribute);\n }\n }\n function update(attribute, bufferType) {\n if (attribute.isGLBufferAttribute) {\n const cached = buffers.get(attribute);\n if (!cached || cached.version < attribute.version) {\n buffers.set(attribute, {\n buffer: attribute.buffer,\n type: attribute.type,\n bytesPerElement: attribute.elementSize,\n version: attribute.version\n });\n }\n return;\n }\n if (attribute.isInterleavedBufferAttribute)\n attribute = attribute.data;\n const data = buffers.get(attribute);\n if (data === void 0) {\n buffers.set(attribute, createBuffer(attribute, bufferType));\n } else if (data.version < attribute.version) {\n updateBuffer(data.buffer, attribute, bufferType);\n data.version = attribute.version;\n }\n }\n return {\n get,\n remove,\n update\n };\n}\nclass PlaneGeometry extends BufferGeometry {\n constructor(width = 1, height = 1, widthSegments = 1, heightSegments = 1) {\n super();\n this.type = \"PlaneGeometry\";\n this.parameters = {\n width,\n height,\n widthSegments,\n heightSegments\n };\n const width_half = width / 2;\n const height_half = height / 2;\n const gridX = Math.floor(widthSegments);\n const gridY = Math.floor(heightSegments);\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n const segment_width = width / gridX;\n const segment_height = height / gridY;\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n for (let iy = 0; iy < gridY1; iy++) {\n const y = iy * segment_height - height_half;\n for (let ix = 0; ix < gridX1; ix++) {\n const x = ix * segment_width - width_half;\n vertices.push(x, -y, 0);\n normals.push(0, 0, 1);\n uvs.push(ix / gridX);\n uvs.push(1 - iy / gridY);\n }\n }\n for (let iy = 0; iy < gridY; iy++) {\n for (let ix = 0; ix < gridX; ix++) {\n const a = ix + gridX1 * iy;\n const b = ix + gridX1 * (iy + 1);\n const c = ix + 1 + gridX1 * (iy + 1);\n const d = ix + 1 + gridX1 * iy;\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n }\n static fromJSON(data) {\n return new PlaneGeometry(data.width, data.height, data.widthSegments, data.heightSegments);\n }\n}\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\tuniform sampler2D alphaMap;\\n#endif\";\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\tuniform float alphaTest;\\n#endif\";\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( STANDARD )\\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\t#endif\\n#endif\";\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\tuniform sampler2D aoMap;\\n\tuniform float aoMapIntensity;\\n#endif\";\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\nvar bsdfs = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat V_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_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\tfloat alpha = pow2( roughness );\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\tfloat D = D_GGX( alpha, dotNH );\\n\treturn F * ( V * 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}\\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_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\tfloat G = G_BlinnPhong_Implicit( );\\n\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\tfloat alpha = pow2( roughness );\\n\tfloat invAlpha = 1.0 / alpha;\\n\tfloat cos2h = dotNH * dotNH;\\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\tfloat V = V_Neubelt( dotNV, dotNL );\\n\treturn sheenColor * ( D * V );\\n}\\n#endif\";\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, float faceDirection ) {\\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 ) * faceDirection;\\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\";\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\tvec4 plane;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\t\tplane = clippingPlanes[ i ];\\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\t\tbool clipped = true;\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\t\t\tplane = clippingPlanes[ i ];\\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t\tif ( clipped ) discard;\\n\t#endif\\n#endif\";\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\tvarying vec3 vClipPosition;\\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\tvarying vec3 vClipPosition;\\n#endif\";\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\tvClipPosition = - mvPosition.xyz;\\n#endif\";\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\tdiffuseColor.rgb *= vColor;\\n#endif\";\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\tvarying vec3 vColor;\\n#endif\";\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\tvarying vec3 vColor;\\n#endif\";\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( 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 max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\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}\\n#ifdef HIGH_PRECISION\\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\tfloat precisionSafeLength( vec3 v ) {\\n\t\tfloat maxComponent = max3( abs( v ) );\\n\t\treturn length( v / maxComponent ) * maxComponent;\\n\t}\\n#endif\\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#ifdef USE_CLEARCOAT\\n\tvec3 clearcoatNormal;\\n#endif\\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}\\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}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\treturn vec2( u, v );\\n}\";\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\t#define cubeUV_maxMipLevel 8.0\\n\t#define cubeUV_minMipLevel 4.0\\n\t#define cubeUV_maxTileSize 256.0\\n\t#define cubeUV_minTileSize 16.0\\n\tfloat getFace( vec3 direction ) {\\n\t\tvec3 absDirection = abs( direction );\\n\t\tfloat face = - 1.0;\\n\t\tif ( absDirection.x > absDirection.z ) {\\n\t\t\tif ( absDirection.x > absDirection.y )\\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\t\t\telse\\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\t\t} else {\\n\t\t\tif ( absDirection.z > absDirection.y )\\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\t\t\telse\\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\t\t}\\n\t\treturn face;\\n\t}\\n\tvec2 getUV( vec3 direction, float face ) {\\n\t\tvec2 uv;\\n\t\tif ( face == 0.0 ) {\\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\t\t} else if ( face == 1.0 ) {\\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\t\t} else if ( face == 2.0 ) {\\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\t\t} else if ( face == 3.0 ) {\\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\t\t} else if ( face == 4.0 ) {\\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\t\t} else {\\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\t\t}\\n\t\treturn 0.5 * ( uv + 1.0 );\\n\t}\\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\t\tfloat face = getFace( direction );\\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\t\tfloat faceSize = exp2( mipInt );\\n\t\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\\n\t\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\\n\t\tvec2 f = fract( uv );\\n\t\tuv += 0.5 - f;\\n\t\tif ( face > 2.0 ) {\\n\t\t\tuv.y += faceSize;\\n\t\t\tface -= 3.0;\\n\t\t}\\n\t\tuv.x += face * faceSize;\\n\t\tif ( mipInt < cubeUV_maxMipLevel ) {\\n\t\t\tuv.y += 2.0 * cubeUV_maxTileSize;\\n\t\t}\\n\t\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n\t\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\\n\t\tuv *= texelSize;\\n\t\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\t\tuv.x += texelSize;\\n\t\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\t\tuv.y += texelSize;\\n\t\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\t\tuv.x -= texelSize;\\n\t\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\t\tvec3 tm = mix( tl, tr, f.x );\\n\t\tvec3 bm = mix( bl, br, f.x );\\n\t\treturn mix( tm, bm, f.y );\\n\t}\\n\t#define r0 1.0\\n\t#define v0 0.339\\n\t#define m0 - 2.0\\n\t#define r1 0.8\\n\t#define v1 0.276\\n\t#define m1 - 1.0\\n\t#define r4 0.4\\n\t#define v4 0.046\\n\t#define m4 2.0\\n\t#define r5 0.305\\n\t#define v5 0.016\\n\t#define m5 3.0\\n\t#define r6 0.21\\n\t#define v6 0.0038\\n\t#define m6 4.0\\n\tfloat roughnessToMip( float roughness ) {\\n\t\tfloat mip = 0.0;\\n\t\tif ( roughness >= r1 ) {\\n\t\t\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\t\t} else if ( roughness >= r4 ) {\\n\t\t\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\t\t} else if ( roughness >= r5 ) {\\n\t\t\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\t\t} else if ( roughness >= r6 ) {\\n\t\t\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\t\t} else {\\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\\n\t\treturn mip;\\n\t}\\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\t\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\\n\t\tfloat mipF = fract( mip );\\n\t\tfloat mipInt = floor( mip );\\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\t\tif ( mipF == 0.0 ) {\\n\t\t\treturn vec4( color0, 1.0 );\\n\t\t} else {\\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\t\t}\\n\t}\\n#endif\";\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\tmat3 m = mat3( instanceMatrix );\\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\t#ifdef FLIP_SIDED\\n\t\ttransformedTangent = - transformedTangent;\\n\t#endif\\n#endif\";\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\tuniform sampler2D displacementMap;\\n\tuniform float displacementScale;\\n\tuniform float displacementBias;\\n#endif\";\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\tuniform sampler2D emissiveMap;\\n#endif\";\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\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 = clamp( floor( D ) / 255.0, 0.0, 1.0 );\\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\";\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\t#ifdef ENV_WORLDPOS\\n\t\tvec3 cameraToFrag;\\n\t\tif ( isOrthographic ) {\\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\t\t} else {\\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\t\t}\\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\t\t#ifdef ENVMAP_MODE_REFLECTION\\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\t\t#else\\n\t\t\tvec3 reflectVec = refract( cameraToFrag, 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\tenvColor = envMapTexelToLinear( envColor );\\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\t\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\t#else\\n\t\tvec4 envColor = vec4( 0.0 );\\n\t#endif\\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\";\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\tuniform float envMapIntensity;\\n\tuniform float flipEnvMap;\\n\t#ifdef ENVMAP_TYPE_CUBE\\n\t\tuniform samplerCube envMap;\\n\t#else\\n\t\tuniform sampler2D envMap;\\n\t#endif\\n\t\\n#endif\";\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\tuniform float reflectivity;\\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\t\t#define ENV_WORLDPOS\\n\t#endif\\n\t#ifdef ENV_WORLDPOS\\n\t\tvarying vec3 vWorldPosition;\\n\t\tuniform float refractionRatio;\\n\t#else\\n\t\tvarying vec3 vReflect;\\n\t#endif\\n#endif\";\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\\n\t\t#define ENV_WORLDPOS\\n\t#endif\\n\t#ifdef ENV_WORLDPOS\\n\t\t\\n\t\tvarying vec3 vWorldPosition;\\n\t#else\\n\t\tvarying vec3 vReflect;\\n\t\tuniform float refractionRatio;\\n\t#endif\\n#endif\";\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\t#ifdef ENV_WORLDPOS\\n\t\tvWorldPosition = worldPosition.xyz;\\n\t#else\\n\t\tvec3 cameraToVertex;\\n\t\tif ( isOrthographic ) {\\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\t\t} else {\\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\t\t}\\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\";\nvar fog_vertex = \"#ifdef USE_FOG\\n\tvFogDepth = - mvPosition.z;\\n#endif\";\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\tvarying float vFogDepth;\\n#endif\";\nvar fog_fragment = \"#ifdef USE_FOG\\n\t#ifdef FOG_EXP2\\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\t#else\\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\t#endif\\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\tuniform vec3 fogColor;\\n\tvarying float vFogDepth;\\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\";\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\tfloat dotNL = dot( normal, lightDirection );\\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\t#ifdef USE_GRADIENTMAP\\n\t\treturn texture2D( gradientMap, coord ).rgb;\\n\t#else\\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\t#endif\\n}\";\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\t\tlightMapIrradiance *= PI;\\n\t#endif\\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\tuniform sampler2D lightMap;\\n\tuniform float lightMapIntensity;\\n#endif\";\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : 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;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );\\n#ifdef DOUBLE_SIDED\\n\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\t\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\\n\t\tdotNL = dot( geometry.normal, directLight.direction );\\n\t\tdirectLightColor_Diffuse = 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\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\t\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\\n\t\tdotNL = dot( geometry.normal, directLight.direction );\\n\t\tdirectLightColor_Diffuse = 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\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\t\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\\n\t\tdotNL = dot( geometry.normal, directLight.direction );\\n\t\tdirectLightColor_Diffuse = 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\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\t\t#ifdef DOUBLE_SIDED\\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );\\n\t\t#endif\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\";\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform 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 vec3 normal ) {\\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\tvec3 irradiance = ambientLightColor;\\n\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\t\tif ( cutoffDistance > 0.0 ) {\\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\t\t}\\n\t\treturn distanceFalloff;\\n\t#else\\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\t\t}\\n\t\treturn 1.0;\\n\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\tstruct DirectionalLight {\\n\t\tvec3 direction;\\n\t\tvec3 color;\\n\t};\\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\t\tlight.color = directionalLight.color;\\n\t\tlight.direction = directionalLight.direction;\\n\t\tlight.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};\\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\t\tvec3 lVector = pointLight.position - geometry.position;\\n\t\tlight.direction = normalize( lVector );\\n\t\tfloat lightDistance = length( lVector );\\n\t\tlight.color = pointLight.color;\\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\t\tlight.visible = ( light.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};\\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\t\tvec3 lVector = spotLight.position - geometry.position;\\n\t\tlight.direction = normalize( lVector );\\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\t\tif ( spotAttenuation > 0.0 ) {\\n\t\t\tfloat lightDistance = length( lVector );\\n\t\t\tlight.color = spotLight.color * spotAttenuation;\\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\t\t} else {\\n\t\t\tlight.color = vec3( 0.0 );\\n\t\t\tlight.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 vec3 normal ) {\\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\t\treturn irradiance;\\n\t}\\n#endif\";\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\t#ifdef ENVMAP_MODE_REFRACTION\\n\t\tuniform float refractionRatio;\\n\t#endif\\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\\n\t\t#else\\n\t\t\treturn vec3( 0.0 );\\n\t\t#endif\\n\t}\\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\t\t\tvec3 reflectVec;\\n\t\t\t#ifdef ENVMAP_MODE_REFLECTION\\n\t\t\t\treflectVec = reflect( - viewDir, normal );\\n\t\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\t\t\t#else\\n\t\t\t\treflectVec = refract( - viewDir, normal, refractionRatio );\\n\t\t\t#endif\\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\t\t\treturn envMapColor.rgb * envMapIntensity;\\n\t\t#else\\n\t\t\treturn vec3( 0.0 );\\n\t\t#endif\\n\t}\\n#endif\";\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\t(0)\";\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\tvec3 diffuseColor;\\n\tvec3 specularColor;\\n\tfloat specularShininess;\\n\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\tvec3 irradiance = dotNL * directLight.color;\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, 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_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)\";\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\t#ifdef SPECULAR\\n\t\tfloat specularIntensityFactor = specularIntensity;\\n\t\tvec3 specularColorFactor = specularColor;\\n\t\t#ifdef USE_SPECULARINTENSITYMAP\\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\t\t#endif\\n\t\t#ifdef USE_SPECULARCOLORMAP\\n\t\t\tspecularColorFactor *= specularColorMapTexelToLinear( texture2D( specularColorMap, vUv ) ).rgb;\\n\t\t#endif\\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\t#else\\n\t\tfloat specularIntensityFactor = 1.0;\\n\t\tvec3 specularColorFactor = vec3( 1.0 );\\n\t\tmaterial.specularF90 = 1.0;\\n\t#endif\\n\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\tmaterial.clearcoat = clearcoat;\\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\tmaterial.clearcoatF90 = 1.0;\\n\t#ifdef USE_CLEARCOATMAP\\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\t#endif\\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\t#endif\\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\tmaterial.clearcoatRoughness += geometryRoughness;\\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\tmaterial.sheenColor = sheenColor;\\n\t#ifdef USE_SHEENCOLORMAP\\n\t\tmaterial.sheenColor *= sheenColorMapTexelToLinear( texture2D( sheenColorMap, vUv ) ).rgb;\\n\t#endif\\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\t#ifdef USE_SHEENROUGHNESSMAP\\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\\n\t#endif\\n#endif\";\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\tvec3 diffuseColor;\\n\tfloat roughness;\\n\tvec3 specularColor;\\n\tfloat specularF90;\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat clearcoat;\\n\t\tfloat clearcoatRoughness;\\n\t\tvec3 clearcoatF0;\\n\t\tfloat clearcoatF90;\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tvec3 sheenColor;\\n\t\tfloat sheenRoughness;\\n\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\tvec4 r = roughness * c0 + c1;\\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\tvec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\\n\tfloat Ess = fab.x + fab.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}\\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.roughness;\\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#ifdef USE_CLEARCOAT\\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\treflectedLight.directSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\t#endif\\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\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#ifdef USE_CLEARCOAT\\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\t#endif\\n\tvec3 singleScattering = vec3( 0.0 );\\n\tvec3 multiScattering = vec3( 0.0 );\\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\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\\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}\";\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\tPointLight pointLight;\\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\tPointLightShadow pointLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\t\tpointLight = pointLights[ i ];\\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\t\tpointLightShadow = pointLightShadows[ i ];\\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\tSpotLight spotLight;\\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\tSpotLightShadow spotLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\t\tspotLight = spotLights[ i ];\\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\t\tspotLightShadow = spotLightShadows[ i ];\\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\tDirectionalLight directionalLight;\\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\tDirectionalLightShadow directionalLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\t\tdirectionalLight = directionalLights[ i ];\\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\tRectAreaLight rectAreaLight;\\n\t#pragma unroll_loop_start\\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\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\tvec3 iblIrradiance = vec3( 0.0 );\\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\tvec3 radiance = vec3( 0.0 );\\n\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\t#ifdef USE_LIGHTMAP\\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\t\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * 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( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\t\tiblIrradiance += getIBLIrradiance( geometry.normal );\\n\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\t#ifdef USE_CLEARCOAT\\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\t#endif\\n#endif\";\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, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\tuniform float logDepthBufFC;\\n\tvarying float vFragDepth;\\n\tvarying float vIsPerspective;\\n#endif\";\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\t#ifdef USE_LOGDEPTHBUF_EXT\\n\t\tvarying float vFragDepth;\\n\t\tvarying float vIsPerspective;\\n\t#else\\n\t\tuniform float logDepthBufFC;\\n\t#endif\\n#endif\";\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\t#ifdef USE_LOGDEPTHBUF_EXT\\n\t\tvFragDepth = 1.0 + gl_Position.w;\\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\t#else\\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\t\t\tgl_Position.z *= gl_Position.w;\\n\t\t}\\n\t#endif\\n#endif\";\nvar map_fragment = \"#ifdef USE_MAP\\n\tvec4 texelColor = texture2D( map, vUv );\\n\ttexelColor = mapTexelToLinear( texelColor );\\n\tdiffuseColor *= texelColor;\\n#endif\";\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\tuniform sampler2D map;\\n#endif\";\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\tvec4 mapTexel = texture2D( map, uv );\\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tuniform sampler2D alphaMap;\\n#endif\";\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\tuniform sampler2D metalnessMap;\\n#endif\";\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\tobjectNormal *= morphTargetBaseInfluence;\\n\t#ifdef MORPHTARGETS_TEXTURE\\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\t\t\tif ( morphTargetInfluences[ i ] > 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1, 2 ) * morphTargetInfluences[ i ];\\n\t\t}\\n\t#else\\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\t#endif\\n#endif\";\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\tuniform float morphTargetBaseInfluence;\\n\t#ifdef MORPHTARGETS_TEXTURE\\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\t\tuniform sampler2DArray morphTargetsTexture;\\n\t\tuniform vec2 morphTargetsTextureSize;\\n\t\tvec3 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset, const in int stride ) {\\n\t\t\tfloat texelIndex = float( vertexIndex * stride + offset );\\n\t\t\tfloat y = floor( texelIndex / morphTargetsTextureSize.x );\\n\t\t\tfloat x = texelIndex - y * morphTargetsTextureSize.x;\\n\t\t\tvec3 morphUV = vec3( ( x + 0.5 ) / morphTargetsTextureSize.x, y / morphTargetsTextureSize.y, morphTargetIndex );\\n\t\t\treturn texture( morphTargetsTexture, morphUV ).xyz;\\n\t\t}\\n\t#else\\n\t\t#ifndef USE_MORPHNORMALS\\n\t\t\tuniform float morphTargetInfluences[ 8 ];\\n\t\t#else\\n\t\t\tuniform float morphTargetInfluences[ 4 ];\\n\t\t#endif\\n\t#endif\\n#endif\";\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\ttransformed *= morphTargetBaseInfluence;\\n\t#ifdef MORPHTARGETS_TEXTURE\\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\t\t\t#ifndef USE_MORPHNORMALS\\n\t\t\t\tif ( morphTargetInfluences[ i ] > 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 1 ) * morphTargetInfluences[ i ];\\n\t\t\t#else\\n\t\t\t\tif ( morphTargetInfluences[ i ] > 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 2 ) * morphTargetInfluences[ i ];\\n\t\t\t#endif\\n\t\t}\\n\t#else\\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\t\t#ifndef USE_MORPHNORMALS\\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\t\t#endif\\n\t#endif\\n#endif\";\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#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 * faceDirection;\\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 * faceDirection;\\n\t\t\tbitangent = bitangent * faceDirection;\\n\t\t#endif\\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\t\t#endif\\n\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\t#ifdef FLIP_SIDED\\n\t\tnormal = - normal;\\n\t#endif\\n\t#ifdef DOUBLE_SIDED\\n\t\tnormal = normal * faceDirection;\\n\t#endif\\n\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\tmapN.xy *= normalScale;\\n\t#ifdef USE_TANGENT\\n\t\tnormal = normalize( vTBN * mapN );\\n\t#else\\n\t\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\t#endif\\n#elif defined( USE_BUMPMAP )\\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\nvar normal_pars_fragment = \"#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\";\nvar normal_pars_vertex = \"#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\";\nvar normal_vertex = \"#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\";\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\tuniform sampler2D normalMap;\\n\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\t\tvec2 st0 = dFdx( vUv.st );\\n\t\tvec2 st1 = dFdy( vUv.st );\\n\t\tvec3 N = surf_norm;\\n\t\tvec3 q1perp = cross( q1, N );\\n\t\tvec3 q0perp = cross( N, q0 );\\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\t}\\n#endif\";\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\t#ifdef USE_TANGENT\\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\t#else\\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\t#endif\\n#endif\";\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\tuniform sampler2D clearcoatNormalMap;\\n\tuniform vec2 clearcoatNormalScale;\\n#endif\";\nvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\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}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\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}\";\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\nvar dithering_fragment = \"#ifdef DITHERING\\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\nvar dithering_pars_fragment = \"#ifdef 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\";\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\troughnessFactor *= texelRoughness.g;\\n#endif\";\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\tuniform sampler2D roughnessMap;\\n#endif\";\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tstruct DirectionalLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t\tstruct SpotLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tstruct PointLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t\tfloat shadowCameraNear;\\n\t\t\tfloat shadowCameraFar;\\n\t\t};\\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\t#endif\\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\t}\\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\t}\\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\t\tfloat occlusion = 1.0;\\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\t\tfloat hard_shadow = step( compare , distribution.x );\\n\t\tif (hard_shadow != 1.0 ) {\\n\t\t\tfloat distance = compare - distribution.x ;\\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\t\t}\\n\t\treturn occlusion;\\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\tfloat dx2 = dx0 / 2.0;\\n\t\t\tfloat dy2 = dy0 / 2.0;\\n\t\t\tfloat dx3 = dx1 / 2.0;\\n\t\t\tfloat dy3 = dy1 / 2.0;\\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( dx2, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), 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( dx2, dy3 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), 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 / 17.0 );\\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\t\t\tfloat dx = texelSize.x;\\n\t\t\tfloat dy = texelSize.y;\\n\t\t\tvec2 uv = shadowCoord.xy;\\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\t\t\tuv -= f * texelSize;\\n\t\t\tshadow = (\\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\t\t\t\t\t f.x ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\t\t\t\t\t f.x ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t f.y ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t f.y ) +\\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\t\t\t\t\t\t f.x ),\\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t\t f.x ),\\n\t\t\t\t\t f.y )\\n\t\t\t) * ( 1.0 / 9.0 );\\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\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 ) || defined( SHADOWMAP_TYPE_VSM )\\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\";\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tstruct DirectionalLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t\tstruct SpotLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tstruct PointLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t\tfloat shadowCameraNear;\\n\t\t\tfloat shadowCameraFar;\\n\t\t};\\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\t#endif\\n#endif\";\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\t\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\t\tvec4 shadowWorldPosition;\\n\t#endif\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n#endif\";\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\tfloat shadow = 1.0;\\n\t#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\tDirectionalLightShadow directionalLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\t\tdirectionalLight = directionalLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\tSpotLightShadow spotLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\t\tspotLight = spotLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\tPointLightShadow pointLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\t\tpointLight = pointLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#endif\\n\treturn shadow;\\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\";\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\tuniform mat4 bindMatrix;\\n\tuniform mat4 bindMatrixInverse;\\n\t#ifdef BONE_TEXTURE\\n\t\tuniform highp 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\";\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\";\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\";\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\";\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\tuniform sampler2D specularMap;\\n#endif\";\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\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}\\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 RRTAndODTFit( vec3 v ) {\\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\tconst mat3 ACESInputMat = mat3(\\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\\n\t);\\n\tconst mat3 ACESOutputMat = mat3(\\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\\n\t);\\n\tcolor *= toneMappingExposure / 0.6;\\n\tcolor = ACESInputMat * color;\\n\tcolor = RRTAndODTFit( color );\\n\tcolor = ACESOutputMat * color;\\n\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\tfloat transmissionAlpha = 1.0;\\n\tfloat transmissionFactor = transmission;\\n\tfloat thicknessFactor = thickness;\\n\t#ifdef USE_TRANSMISSIONMAP\\n\t\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\\n\t#endif\\n\t#ifdef USE_THICKNESSMAP\\n\t\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\\n\t#endif\\n\tvec3 pos = vWorldPosition;\\n\tvec3 v = normalize( cameraPosition - pos );\\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\tvec4 transmission = getIBLVolumeRefraction(\\n\t\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\\n\t\tattenuationColor, attenuationDistance );\\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\\n\ttransmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );\\n#endif\";\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\tuniform float transmission;\\n\tuniform float thickness;\\n\tuniform float attenuationDistance;\\n\tuniform vec3 attenuationColor;\\n\t#ifdef USE_TRANSMISSIONMAP\\n\t\tuniform sampler2D transmissionMap;\\n\t#endif\\n\t#ifdef USE_THICKNESSMAP\\n\t\tuniform sampler2D thicknessMap;\\n\t#endif\\n\tuniform vec2 transmissionSamplerSize;\\n\tuniform sampler2D transmissionSamplerMap;\\n\tuniform mat4 modelMatrix;\\n\tuniform mat4 projectionMatrix;\\n\tvarying vec3 vWorldPosition;\\n\tvec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {\\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\t\tvec3 modelScale;\\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\\n\t}\\n\tfloat applyIorToRoughness( float roughness, float ior ) {\\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\t}\\n\tvec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior ) {\\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\t\t#ifdef TEXTURE_LOD_EXT\\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\t\t#else\\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\t\t#endif\\n\t}\\n\tvec3 applyVolumeAttenuation( vec3 radiance, float transmissionDistance, vec3 attenuationColor, float attenuationDistance ) {\\n\t\tif ( attenuationDistance == 0.0 ) {\\n\t\t\treturn radiance;\\n\t\t} else {\\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\\n\t\t}\\n\t}\\n\tvec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 diffuseColor, vec3 specularColor, float specularF90,\\n\t\tvec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness,\\n\t\tvec3 attenuationColor, float attenuationDistance ) {\\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\t\tvec3 refractedRayExit = position + transmissionRay;\\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\t\trefractionCoords += 1.0;\\n\t\trefractionCoords /= 2.0;\\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\t}\\n#endif\";\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\tvarying vec2 vUv;\\n#endif\";\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\t#ifdef UVS_VERTEX_ONLY\\n\t\tvec2 vUv;\\n\t#else\\n\t\tvarying vec2 vUv;\\n\t#endif\\n\tuniform mat3 uvTransform;\\n#endif\";\nvar uv_vertex = \"#ifdef USE_UV\\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tvarying vec2 vUv2;\\n#endif\";\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tattribute vec2 uv2;\\n\tvarying vec2 vUv2;\\n\tuniform mat3 uv2Transform;\\n#endif\";\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\\n\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\t#ifdef USE_INSTANCING\\n\t\tworldPosition = instanceMatrix * worldPosition;\\n\t#endif\\n\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\nconst vertex$g = \"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}\";\nconst fragment$g = \"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}\";\nconst vertex$f = \"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}\";\nconst fragment$f = \"#include \\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\tvec3 vReflect = vWorldDirection;\\n\t#include \\n\tgl_FragColor = envColor;\\n\tgl_FragColor.a *= opacity;\\n\t#include \\n\t#include \\n}\";\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\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\tvHighPrecisionZW = gl_Position.zw;\\n}\";\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\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\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\t#if DEPTH_PACKING == 3200\\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\t#elif DEPTH_PACKING == 3201\\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\t#endif\\n}\";\nconst vertex$d = \"#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}\";\nconst fragment$d = \"#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 \\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}\";\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\tvWorldDirection = transformDirection( position, modelMatrix );\\n\t#include \\n\t#include \\n}\";\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\tvec3 direction = normalize( vWorldDirection );\\n\tvec2 sampleUV = equirectUv( direction );\\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\tgl_FragColor = mapTexelToLinear( texColor );\\n\t#include \\n\t#include \\n}\";\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\tvLineDistance = scale * lineDistance;\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst fragment$b = \"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\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$a = \"#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#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\t\t#include \\n\t\t#include \\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\t#include \\n\t#include \\n}\";\nconst fragment$a = \"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 \\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\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\t\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * 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\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$9 = \"#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}\";\nconst fragment$9 = \"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 \\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#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_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_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\t#include \\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\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\tvViewPosition = - mvPosition.xyz;\\n}\";\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\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\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\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\tvarying vec3 vViewPosition;\\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#include \\n\t#include \\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( TANGENTSPACE_NORMALMAP )\\n\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\tvarying vec3 vViewPosition;\\n#endif\\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\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\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\tvViewPosition = - mvPosition.xyz;\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst fragment$6 = \"#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 \\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\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\tvarying vec3 vWorldPosition;\\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\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\t#include \\n\t#include \\n\t#include \\n#ifdef USE_TRANSMISSION\\n\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\t#define IOR\\n\t#define SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\tuniform float specularIntensity;\\n\tuniform vec3 specularColor;\\n\t#ifdef USE_SPECULARINTENSITYMAP\\n\t\tuniform sampler2D specularIntensityMap;\\n\t#endif\\n\t#ifdef USE_SPECULARCOLORMAP\\n\t\tuniform sampler2D specularColorMap;\\n\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\tuniform float clearcoat;\\n\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\tuniform vec3 sheenColor;\\n\tuniform float sheenRoughness;\\n\t#ifdef USE_SHEENCOLORMAP\\n\t\tuniform sampler2D sheenColorMap;\\n\t#endif\\n\t#ifdef USE_SHEENROUGHNESSMAP\\n\t\tuniform sampler2D sheenRoughnessMap;\\n\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\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 \\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\t#include \\n\t#include \\n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\t#include \\n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\\n\t#endif\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\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\tvViewPosition = - mvPosition.xyz;\\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\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\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$3 = \"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 = isPerspectiveMatrix( projectionMatrix );\\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}\";\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\t#include \\n\tvec3 outgoingLight = vec3( 0.0 );\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\toutgoingLight = diffuseColor.rgb;\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$2 = \"#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}\";\nconst fragment$2 = \"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\t#include \\n\t#include \\n}\";\nconst vertex$1 = \"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 = isPerspectiveMatrix( projectionMatrix );\\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}\";\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\t#include \\n\tvec3 outgoingLight = vec3( 0.0 );\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\toutgoingLight = diffuseColor.rgb;\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst ShaderChunk = {\n alphamap_fragment,\n alphamap_pars_fragment,\n alphatest_fragment,\n alphatest_pars_fragment,\n aomap_fragment,\n aomap_pars_fragment,\n begin_vertex,\n beginnormal_vertex,\n bsdfs,\n bumpmap_pars_fragment,\n clipping_planes_fragment,\n clipping_planes_pars_fragment,\n clipping_planes_pars_vertex,\n clipping_planes_vertex,\n color_fragment,\n color_pars_fragment,\n color_pars_vertex,\n color_vertex,\n common,\n cube_uv_reflection_fragment,\n defaultnormal_vertex,\n displacementmap_pars_vertex,\n displacementmap_vertex,\n emissivemap_fragment,\n emissivemap_pars_fragment,\n encodings_fragment,\n encodings_pars_fragment,\n envmap_fragment,\n envmap_common_pars_fragment,\n envmap_pars_fragment,\n envmap_pars_vertex,\n envmap_physical_pars_fragment,\n envmap_vertex,\n fog_vertex,\n fog_pars_vertex,\n fog_fragment,\n fog_pars_fragment,\n gradientmap_pars_fragment,\n lightmap_fragment,\n lightmap_pars_fragment,\n lights_lambert_vertex,\n lights_pars_begin,\n lights_toon_fragment,\n lights_toon_pars_fragment,\n lights_phong_fragment,\n lights_phong_pars_fragment,\n lights_physical_fragment,\n lights_physical_pars_fragment,\n lights_fragment_begin,\n lights_fragment_maps,\n lights_fragment_end,\n logdepthbuf_fragment,\n logdepthbuf_pars_fragment,\n logdepthbuf_pars_vertex,\n logdepthbuf_vertex,\n map_fragment,\n map_pars_fragment,\n map_particle_fragment,\n map_particle_pars_fragment,\n metalnessmap_fragment,\n metalnessmap_pars_fragment,\n morphnormal_vertex,\n morphtarget_pars_vertex,\n morphtarget_vertex,\n normal_fragment_begin,\n normal_fragment_maps,\n normal_pars_fragment,\n normal_pars_vertex,\n normal_vertex,\n normalmap_pars_fragment,\n clearcoat_normal_fragment_begin,\n clearcoat_normal_fragment_maps,\n clearcoat_pars_fragment,\n output_fragment,\n packing,\n premultiplied_alpha_fragment,\n project_vertex,\n dithering_fragment,\n dithering_pars_fragment,\n roughnessmap_fragment,\n roughnessmap_pars_fragment,\n shadowmap_pars_fragment,\n shadowmap_pars_vertex,\n shadowmap_vertex,\n shadowmask_pars_fragment,\n skinbase_vertex,\n skinning_pars_vertex,\n skinning_vertex,\n skinnormal_vertex,\n specularmap_fragment,\n specularmap_pars_fragment,\n tonemapping_fragment,\n tonemapping_pars_fragment,\n transmission_fragment,\n transmission_pars_fragment,\n uv_pars_fragment,\n uv_pars_vertex,\n uv_vertex,\n uv2_pars_fragment,\n uv2_pars_vertex,\n uv2_vertex,\n worldpos_vertex,\n background_vert: vertex$g,\n background_frag: fragment$g,\n cube_vert: vertex$f,\n cube_frag: fragment$f,\n depth_vert: vertex$e,\n depth_frag: fragment$e,\n distanceRGBA_vert: vertex$d,\n distanceRGBA_frag: fragment$d,\n equirect_vert: vertex$c,\n equirect_frag: fragment$c,\n linedashed_vert: vertex$b,\n linedashed_frag: fragment$b,\n meshbasic_vert: vertex$a,\n meshbasic_frag: fragment$a,\n meshlambert_vert: vertex$9,\n meshlambert_frag: fragment$9,\n meshmatcap_vert: vertex$8,\n meshmatcap_frag: fragment$8,\n meshnormal_vert: vertex$7,\n meshnormal_frag: fragment$7,\n meshphong_vert: vertex$6,\n meshphong_frag: fragment$6,\n meshphysical_vert: vertex$5,\n meshphysical_frag: fragment$5,\n meshtoon_vert: vertex$4,\n meshtoon_frag: fragment$4,\n points_vert: vertex$3,\n points_frag: fragment$3,\n shadow_vert: vertex$2,\n shadow_frag: fragment$2,\n sprite_vert: vertex$1,\n sprite_frag: fragment$1\n};\nconst UniformsLib = {\n common: {\n diffuse: {value: new Color(16777215)},\n opacity: {value: 1},\n map: {value: null},\n uvTransform: {value: new Matrix3()},\n uv2Transform: {value: new Matrix3()},\n alphaMap: {value: null},\n alphaTest: {value: 0}\n },\n specularmap: {\n specularMap: {value: null}\n },\n envmap: {\n envMap: {value: null},\n flipEnvMap: {value: -1},\n reflectivity: {value: 1},\n ior: {value: 1.5},\n refractionRatio: {value: 0.98}\n },\n aomap: {\n aoMap: {value: null},\n aoMapIntensity: {value: 1}\n },\n lightmap: {\n lightMap: {value: null},\n lightMapIntensity: {value: 1}\n },\n emissivemap: {\n emissiveMap: {value: null}\n },\n bumpmap: {\n bumpMap: {value: null},\n bumpScale: {value: 1}\n },\n normalmap: {\n normalMap: {value: null},\n normalScale: {value: new Vector2(1, 1)}\n },\n displacementmap: {\n displacementMap: {value: null},\n displacementScale: {value: 1},\n displacementBias: {value: 0}\n },\n roughnessmap: {\n roughnessMap: {value: null}\n },\n metalnessmap: {\n metalnessMap: {value: null}\n },\n gradientmap: {\n gradientMap: {value: null}\n },\n fog: {\n fogDensity: {value: 25e-5},\n fogNear: {value: 1},\n fogFar: {value: 2e3},\n fogColor: {value: new Color(16777215)}\n },\n lights: {\n ambientLightColor: {value: []},\n lightProbe: {value: []},\n directionalLights: {value: [], properties: {\n direction: {},\n color: {}\n }},\n directionalLightShadows: {value: [], properties: {\n shadowBias: {},\n shadowNormalBias: {},\n shadowRadius: {},\n shadowMapSize: {}\n }},\n directionalShadowMap: {value: []},\n directionalShadowMatrix: {value: []},\n spotLights: {value: [], properties: {\n color: {},\n position: {},\n direction: {},\n distance: {},\n coneCos: {},\n penumbraCos: {},\n decay: {}\n }},\n spotLightShadows: {value: [], properties: {\n shadowBias: {},\n shadowNormalBias: {},\n shadowRadius: {},\n shadowMapSize: {}\n }},\n spotShadowMap: {value: []},\n spotShadowMatrix: {value: []},\n pointLights: {value: [], properties: {\n color: {},\n position: {},\n decay: {},\n distance: {}\n }},\n pointLightShadows: {value: [], properties: {\n shadowBias: {},\n shadowNormalBias: {},\n shadowRadius: {},\n shadowMapSize: {},\n shadowCameraNear: {},\n shadowCameraFar: {}\n }},\n pointShadowMap: {value: []},\n pointShadowMatrix: {value: []},\n hemisphereLights: {value: [], properties: {\n direction: {},\n skyColor: {},\n groundColor: {}\n }},\n rectAreaLights: {value: [], properties: {\n color: {},\n position: {},\n width: {},\n height: {}\n }},\n ltc_1: {value: null},\n ltc_2: {value: null}\n },\n points: {\n diffuse: {value: new Color(16777215)},\n opacity: {value: 1},\n size: {value: 1},\n scale: {value: 1},\n map: {value: null},\n alphaMap: {value: null},\n alphaTest: {value: 0},\n uvTransform: {value: new Matrix3()}\n },\n sprite: {\n diffuse: {value: new Color(16777215)},\n opacity: {value: 1},\n center: {value: new Vector2(0.5, 0.5)},\n rotation: {value: 0},\n map: {value: null},\n alphaMap: {value: null},\n alphaTest: {value: 0},\n uvTransform: {value: new Matrix3()}\n }\n};\nconst ShaderLib = {\n basic: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.specularmap,\n UniformsLib.envmap,\n UniformsLib.aomap,\n UniformsLib.lightmap,\n UniformsLib.fog\n ]),\n vertexShader: ShaderChunk.meshbasic_vert,\n fragmentShader: ShaderChunk.meshbasic_frag\n },\n lambert: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.specularmap,\n UniformsLib.envmap,\n UniformsLib.aomap,\n UniformsLib.lightmap,\n UniformsLib.emissivemap,\n UniformsLib.fog,\n UniformsLib.lights,\n {\n emissive: {value: new Color(0)}\n }\n ]),\n vertexShader: ShaderChunk.meshlambert_vert,\n fragmentShader: ShaderChunk.meshlambert_frag\n },\n phong: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.specularmap,\n UniformsLib.envmap,\n UniformsLib.aomap,\n UniformsLib.lightmap,\n UniformsLib.emissivemap,\n UniformsLib.bumpmap,\n UniformsLib.normalmap,\n UniformsLib.displacementmap,\n UniformsLib.fog,\n UniformsLib.lights,\n {\n emissive: {value: new Color(0)},\n specular: {value: new Color(1118481)},\n shininess: {value: 30}\n }\n ]),\n vertexShader: ShaderChunk.meshphong_vert,\n fragmentShader: ShaderChunk.meshphong_frag\n },\n standard: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.envmap,\n UniformsLib.aomap,\n UniformsLib.lightmap,\n UniformsLib.emissivemap,\n UniformsLib.bumpmap,\n UniformsLib.normalmap,\n UniformsLib.displacementmap,\n UniformsLib.roughnessmap,\n UniformsLib.metalnessmap,\n UniformsLib.fog,\n UniformsLib.lights,\n {\n emissive: {value: new Color(0)},\n roughness: {value: 1},\n metalness: {value: 0},\n envMapIntensity: {value: 1}\n }\n ]),\n vertexShader: ShaderChunk.meshphysical_vert,\n fragmentShader: ShaderChunk.meshphysical_frag\n },\n toon: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.aomap,\n UniformsLib.lightmap,\n UniformsLib.emissivemap,\n UniformsLib.bumpmap,\n UniformsLib.normalmap,\n UniformsLib.displacementmap,\n UniformsLib.gradientmap,\n UniformsLib.fog,\n UniformsLib.lights,\n {\n emissive: {value: new Color(0)}\n }\n ]),\n vertexShader: ShaderChunk.meshtoon_vert,\n fragmentShader: ShaderChunk.meshtoon_frag\n },\n matcap: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.bumpmap,\n UniformsLib.normalmap,\n UniformsLib.displacementmap,\n UniformsLib.fog,\n {\n matcap: {value: null}\n }\n ]),\n vertexShader: ShaderChunk.meshmatcap_vert,\n fragmentShader: ShaderChunk.meshmatcap_frag\n },\n points: {\n uniforms: mergeUniforms([\n UniformsLib.points,\n UniformsLib.fog\n ]),\n vertexShader: ShaderChunk.points_vert,\n fragmentShader: ShaderChunk.points_frag\n },\n dashed: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.fog,\n {\n scale: {value: 1},\n dashSize: {value: 1},\n totalSize: {value: 2}\n }\n ]),\n vertexShader: ShaderChunk.linedashed_vert,\n fragmentShader: ShaderChunk.linedashed_frag\n },\n depth: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.displacementmap\n ]),\n vertexShader: ShaderChunk.depth_vert,\n fragmentShader: ShaderChunk.depth_frag\n },\n normal: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.bumpmap,\n UniformsLib.normalmap,\n UniformsLib.displacementmap,\n {\n opacity: {value: 1}\n }\n ]),\n vertexShader: ShaderChunk.meshnormal_vert,\n fragmentShader: ShaderChunk.meshnormal_frag\n },\n sprite: {\n uniforms: mergeUniforms([\n UniformsLib.sprite,\n UniformsLib.fog\n ]),\n vertexShader: ShaderChunk.sprite_vert,\n fragmentShader: ShaderChunk.sprite_frag\n },\n background: {\n uniforms: {\n uvTransform: {value: new Matrix3()},\n t2D: {value: null}\n },\n vertexShader: ShaderChunk.background_vert,\n fragmentShader: ShaderChunk.background_frag\n },\n cube: {\n uniforms: mergeUniforms([\n UniformsLib.envmap,\n {\n opacity: {value: 1}\n }\n ]),\n vertexShader: ShaderChunk.cube_vert,\n fragmentShader: ShaderChunk.cube_frag\n },\n equirect: {\n uniforms: {\n tEquirect: {value: null}\n },\n vertexShader: ShaderChunk.equirect_vert,\n fragmentShader: ShaderChunk.equirect_frag\n },\n distanceRGBA: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.displacementmap,\n {\n referencePosition: {value: new Vector3()},\n nearDistance: {value: 1},\n farDistance: {value: 1e3}\n }\n ]),\n vertexShader: ShaderChunk.distanceRGBA_vert,\n fragmentShader: ShaderChunk.distanceRGBA_frag\n },\n shadow: {\n uniforms: mergeUniforms([\n UniformsLib.lights,\n UniformsLib.fog,\n {\n color: {value: new Color(0)},\n opacity: {value: 1}\n }\n ]),\n vertexShader: ShaderChunk.shadow_vert,\n fragmentShader: ShaderChunk.shadow_frag\n }\n};\nShaderLib.physical = {\n uniforms: mergeUniforms([\n ShaderLib.standard.uniforms,\n {\n clearcoat: {value: 0},\n clearcoatMap: {value: null},\n clearcoatRoughness: {value: 0},\n clearcoatRoughnessMap: {value: null},\n clearcoatNormalScale: {value: new Vector2(1, 1)},\n clearcoatNormalMap: {value: null},\n sheen: {value: 0},\n sheenColor: {value: new Color(0)},\n sheenColorMap: {value: null},\n sheenRoughness: {value: 0},\n sheenRoughnessMap: {value: null},\n transmission: {value: 0},\n transmissionMap: {value: null},\n transmissionSamplerSize: {value: new Vector2()},\n transmissionSamplerMap: {value: null},\n thickness: {value: 0},\n thicknessMap: {value: null},\n attenuationDistance: {value: 0},\n attenuationColor: {value: new Color(0)},\n specularIntensity: {value: 0},\n specularIntensityMap: {value: null},\n specularColor: {value: new Color(1, 1, 1)},\n specularColorMap: {value: null}\n }\n ]),\n vertexShader: ShaderChunk.meshphysical_vert,\n fragmentShader: ShaderChunk.meshphysical_frag\n};\nfunction WebGLBackground(renderer, cubemaps, state, objects, premultipliedAlpha) {\n const clearColor = new Color(0);\n let clearAlpha = 0;\n let planeMesh;\n let boxMesh;\n let currentBackground = null;\n let currentBackgroundVersion = 0;\n let currentTonemapping = null;\n function render(renderList, scene) {\n let forceClear = false;\n let background = scene.isScene === true ? scene.background : null;\n if (background && background.isTexture) {\n background = cubemaps.get(background);\n }\n const xr = renderer.xr;\n const session = xr.getSession && xr.getSession();\n if (session && session.environmentBlendMode === \"additive\") {\n background = null;\n }\n if (background === null) {\n setClear(clearColor, clearAlpha);\n } else if (background && background.isColor) {\n setClear(background, 1);\n forceClear = true;\n }\n if (renderer.autoClear || forceClear) {\n renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil);\n }\n if (background && (background.isCubeTexture || background.mapping === CubeUVReflectionMapping)) {\n if (boxMesh === void 0) {\n boxMesh = new Mesh(new BoxGeometry(1, 1, 1), new ShaderMaterial({\n name: \"BackgroundCubeMaterial\",\n uniforms: cloneUniforms(ShaderLib.cube.uniforms),\n vertexShader: ShaderLib.cube.vertexShader,\n fragmentShader: ShaderLib.cube.fragmentShader,\n side: BackSide,\n depthTest: false,\n depthWrite: false,\n fog: false\n }));\n boxMesh.geometry.deleteAttribute(\"normal\");\n boxMesh.geometry.deleteAttribute(\"uv\");\n boxMesh.onBeforeRender = function(renderer2, scene2, camera) {\n this.matrixWorld.copyPosition(camera.matrixWorld);\n };\n Object.defineProperty(boxMesh.material, \"envMap\", {\n get: function() {\n return this.uniforms.envMap.value;\n }\n });\n objects.update(boxMesh);\n }\n boxMesh.material.uniforms.envMap.value = background;\n boxMesh.material.uniforms.flipEnvMap.value = background.isCubeTexture && background.isRenderTargetTexture === false ? -1 : 1;\n if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) {\n boxMesh.material.needsUpdate = true;\n currentBackground = background;\n currentBackgroundVersion = background.version;\n currentTonemapping = renderer.toneMapping;\n }\n renderList.unshift(boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null);\n } else if (background && background.isTexture) {\n if (planeMesh === void 0) {\n planeMesh = new Mesh(new PlaneGeometry(2, 2), new ShaderMaterial({\n name: \"BackgroundMaterial\",\n uniforms: cloneUniforms(ShaderLib.background.uniforms),\n vertexShader: ShaderLib.background.vertexShader,\n fragmentShader: ShaderLib.background.fragmentShader,\n side: FrontSide,\n depthTest: false,\n depthWrite: false,\n fog: false\n }));\n planeMesh.geometry.deleteAttribute(\"normal\");\n Object.defineProperty(planeMesh.material, \"map\", {\n get: function() {\n return this.uniforms.t2D.value;\n }\n });\n objects.update(planeMesh);\n }\n planeMesh.material.uniforms.t2D.value = background;\n if (background.matrixAutoUpdate === true) {\n background.updateMatrix();\n }\n planeMesh.material.uniforms.uvTransform.value.copy(background.matrix);\n if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) {\n planeMesh.material.needsUpdate = true;\n currentBackground = background;\n currentBackgroundVersion = background.version;\n currentTonemapping = renderer.toneMapping;\n }\n renderList.unshift(planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null);\n }\n }\n function setClear(color, alpha) {\n state.buffers.color.setClear(color.r, color.g, color.b, alpha, premultipliedAlpha);\n }\n return {\n getClearColor: function() {\n return clearColor;\n },\n setClearColor: function(color, alpha = 1) {\n clearColor.set(color);\n clearAlpha = alpha;\n setClear(clearColor, clearAlpha);\n },\n getClearAlpha: function() {\n return clearAlpha;\n },\n setClearAlpha: function(alpha) {\n clearAlpha = alpha;\n setClear(clearColor, clearAlpha);\n },\n render\n };\n}\nfunction WebGLBindingStates(gl, extensions, attributes, capabilities) {\n const maxVertexAttributes = gl.getParameter(34921);\n const extension = capabilities.isWebGL2 ? null : extensions.get(\"OES_vertex_array_object\");\n const vaoAvailable = capabilities.isWebGL2 || extension !== null;\n const bindingStates = {};\n const defaultState = createBindingState(null);\n let currentState = defaultState;\n function setup(object, material, program, geometry, index) {\n let updateBuffers = false;\n if (vaoAvailable) {\n const state = getBindingState(geometry, program, material);\n if (currentState !== state) {\n currentState = state;\n bindVertexArrayObject(currentState.object);\n }\n updateBuffers = needsUpdate(geometry, index);\n if (updateBuffers)\n saveCache(geometry, index);\n } else {\n const wireframe = material.wireframe === true;\n if (currentState.geometry !== geometry.id || currentState.program !== program.id || currentState.wireframe !== wireframe) {\n currentState.geometry = geometry.id;\n currentState.program = program.id;\n currentState.wireframe = wireframe;\n updateBuffers = true;\n }\n }\n if (object.isInstancedMesh === true) {\n updateBuffers = true;\n }\n if (index !== null) {\n attributes.update(index, 34963);\n }\n if (updateBuffers) {\n setupVertexAttributes(object, material, program, geometry);\n if (index !== null) {\n gl.bindBuffer(34963, attributes.get(index).buffer);\n }\n }\n }\n function createVertexArrayObject() {\n if (capabilities.isWebGL2)\n return gl.createVertexArray();\n return extension.createVertexArrayOES();\n }\n function bindVertexArrayObject(vao) {\n if (capabilities.isWebGL2)\n return gl.bindVertexArray(vao);\n return extension.bindVertexArrayOES(vao);\n }\n function deleteVertexArrayObject(vao) {\n if (capabilities.isWebGL2)\n return gl.deleteVertexArray(vao);\n return extension.deleteVertexArrayOES(vao);\n }\n function getBindingState(geometry, program, material) {\n const wireframe = material.wireframe === true;\n let programMap = bindingStates[geometry.id];\n if (programMap === void 0) {\n programMap = {};\n bindingStates[geometry.id] = programMap;\n }\n let stateMap = programMap[program.id];\n if (stateMap === void 0) {\n stateMap = {};\n programMap[program.id] = stateMap;\n }\n let state = stateMap[wireframe];\n if (state === void 0) {\n state = createBindingState(createVertexArrayObject());\n stateMap[wireframe] = state;\n }\n return state;\n }\n function createBindingState(vao) {\n const newAttributes = [];\n const enabledAttributes = [];\n const attributeDivisors = [];\n for (let i = 0; i < maxVertexAttributes; i++) {\n newAttributes[i] = 0;\n enabledAttributes[i] = 0;\n attributeDivisors[i] = 0;\n }\n return {\n geometry: null,\n program: null,\n wireframe: false,\n newAttributes,\n enabledAttributes,\n attributeDivisors,\n object: vao,\n attributes: {},\n index: null\n };\n }\n function needsUpdate(geometry, index) {\n const cachedAttributes = currentState.attributes;\n const geometryAttributes = geometry.attributes;\n let attributesNum = 0;\n for (const key in geometryAttributes) {\n const cachedAttribute = cachedAttributes[key];\n const geometryAttribute = geometryAttributes[key];\n if (cachedAttribute === void 0)\n return true;\n if (cachedAttribute.attribute !== geometryAttribute)\n return true;\n if (cachedAttribute.data !== geometryAttribute.data)\n return true;\n attributesNum++;\n }\n if (currentState.attributesNum !== attributesNum)\n return true;\n if (currentState.index !== index)\n return true;\n return false;\n }\n function saveCache(geometry, index) {\n const cache = {};\n const attributes2 = geometry.attributes;\n let attributesNum = 0;\n for (const key in attributes2) {\n const attribute = attributes2[key];\n const data = {};\n data.attribute = attribute;\n if (attribute.data) {\n data.data = attribute.data;\n }\n cache[key] = data;\n attributesNum++;\n }\n currentState.attributes = cache;\n currentState.attributesNum = attributesNum;\n currentState.index = index;\n }\n function initAttributes() {\n const newAttributes = currentState.newAttributes;\n for (let i = 0, il = newAttributes.length; i < il; i++) {\n newAttributes[i] = 0;\n }\n }\n function enableAttribute(attribute) {\n enableAttributeAndDivisor(attribute, 0);\n }\n function enableAttributeAndDivisor(attribute, meshPerAttribute) {\n const newAttributes = currentState.newAttributes;\n const enabledAttributes = currentState.enabledAttributes;\n const attributeDivisors = currentState.attributeDivisors;\n newAttributes[attribute] = 1;\n if (enabledAttributes[attribute] === 0) {\n gl.enableVertexAttribArray(attribute);\n enabledAttributes[attribute] = 1;\n }\n if (attributeDivisors[attribute] !== meshPerAttribute) {\n const extension2 = capabilities.isWebGL2 ? gl : extensions.get(\"ANGLE_instanced_arrays\");\n extension2[capabilities.isWebGL2 ? \"vertexAttribDivisor\" : \"vertexAttribDivisorANGLE\"](attribute, meshPerAttribute);\n attributeDivisors[attribute] = meshPerAttribute;\n }\n }\n function disableUnusedAttributes() {\n const newAttributes = currentState.newAttributes;\n const enabledAttributes = currentState.enabledAttributes;\n for (let i = 0, il = enabledAttributes.length; i < il; i++) {\n if (enabledAttributes[i] !== newAttributes[i]) {\n gl.disableVertexAttribArray(i);\n enabledAttributes[i] = 0;\n }\n }\n }\n function vertexAttribPointer(index, size, type, normalized, stride, offset) {\n if (capabilities.isWebGL2 === true && (type === 5124 || type === 5125)) {\n gl.vertexAttribIPointer(index, size, type, stride, offset);\n } else {\n gl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n }\n }\n function setupVertexAttributes(object, material, program, geometry) {\n if (capabilities.isWebGL2 === false && (object.isInstancedMesh || geometry.isInstancedBufferGeometry)) {\n if (extensions.get(\"ANGLE_instanced_arrays\") === null)\n return;\n }\n initAttributes();\n const geometryAttributes = geometry.attributes;\n const programAttributes = program.getAttributes();\n const materialDefaultAttributeValues = material.defaultAttributeValues;\n for (const name in programAttributes) {\n const programAttribute = programAttributes[name];\n if (programAttribute.location >= 0) {\n let geometryAttribute = geometryAttributes[name];\n if (geometryAttribute === void 0) {\n if (name === \"instanceMatrix\" && object.instanceMatrix)\n geometryAttribute = object.instanceMatrix;\n if (name === \"instanceColor\" && object.instanceColor)\n geometryAttribute = object.instanceColor;\n }\n if (geometryAttribute !== void 0) {\n const normalized = geometryAttribute.normalized;\n const size = geometryAttribute.itemSize;\n const attribute = attributes.get(geometryAttribute);\n if (attribute === void 0)\n continue;\n const buffer = attribute.buffer;\n const type = attribute.type;\n const bytesPerElement = attribute.bytesPerElement;\n if (geometryAttribute.isInterleavedBufferAttribute) {\n const data = geometryAttribute.data;\n const stride = data.stride;\n const offset = geometryAttribute.offset;\n if (data && data.isInstancedInterleavedBuffer) {\n for (let i = 0; i < programAttribute.locationSize; i++) {\n enableAttributeAndDivisor(programAttribute.location + i, data.meshPerAttribute);\n }\n if (object.isInstancedMesh !== true && geometry._maxInstanceCount === void 0) {\n geometry._maxInstanceCount = data.meshPerAttribute * data.count;\n }\n } else {\n for (let i = 0; i < programAttribute.locationSize; i++) {\n enableAttribute(programAttribute.location + i);\n }\n }\n gl.bindBuffer(34962, buffer);\n for (let i = 0; i < programAttribute.locationSize; i++) {\n vertexAttribPointer(programAttribute.location + i, size / programAttribute.locationSize, type, normalized, stride * bytesPerElement, (offset + size / programAttribute.locationSize * i) * bytesPerElement);\n }\n } else {\n if (geometryAttribute.isInstancedBufferAttribute) {\n for (let i = 0; i < programAttribute.locationSize; i++) {\n enableAttributeAndDivisor(programAttribute.location + i, geometryAttribute.meshPerAttribute);\n }\n if (object.isInstancedMesh !== true && geometry._maxInstanceCount === void 0) {\n geometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n }\n } else {\n for (let i = 0; i < programAttribute.locationSize; i++) {\n enableAttribute(programAttribute.location + i);\n }\n }\n gl.bindBuffer(34962, buffer);\n for (let i = 0; i < programAttribute.locationSize; i++) {\n vertexAttribPointer(programAttribute.location + i, size / programAttribute.locationSize, type, normalized, size * bytesPerElement, size / programAttribute.locationSize * i * bytesPerElement);\n }\n }\n } else if (materialDefaultAttributeValues !== void 0) {\n const value = materialDefaultAttributeValues[name];\n if (value !== void 0) {\n switch (value.length) {\n case 2:\n gl.vertexAttrib2fv(programAttribute.location, value);\n break;\n case 3:\n gl.vertexAttrib3fv(programAttribute.location, value);\n break;\n case 4:\n gl.vertexAttrib4fv(programAttribute.location, value);\n break;\n default:\n gl.vertexAttrib1fv(programAttribute.location, value);\n }\n }\n }\n }\n }\n disableUnusedAttributes();\n }\n function dispose() {\n reset();\n for (const geometryId in bindingStates) {\n const programMap = bindingStates[geometryId];\n for (const programId in programMap) {\n const stateMap = programMap[programId];\n for (const wireframe in stateMap) {\n deleteVertexArrayObject(stateMap[wireframe].object);\n delete stateMap[wireframe];\n }\n delete programMap[programId];\n }\n delete bindingStates[geometryId];\n }\n }\n function releaseStatesOfGeometry(geometry) {\n if (bindingStates[geometry.id] === void 0)\n return;\n const programMap = bindingStates[geometry.id];\n for (const programId in programMap) {\n const stateMap = programMap[programId];\n for (const wireframe in stateMap) {\n deleteVertexArrayObject(stateMap[wireframe].object);\n delete stateMap[wireframe];\n }\n delete programMap[programId];\n }\n delete bindingStates[geometry.id];\n }\n function releaseStatesOfProgram(program) {\n for (const geometryId in bindingStates) {\n const programMap = bindingStates[geometryId];\n if (programMap[program.id] === void 0)\n continue;\n const stateMap = programMap[program.id];\n for (const wireframe in stateMap) {\n deleteVertexArrayObject(stateMap[wireframe].object);\n delete stateMap[wireframe];\n }\n delete programMap[program.id];\n }\n }\n function reset() {\n resetDefaultState();\n if (currentState === defaultState)\n return;\n currentState = defaultState;\n bindVertexArrayObject(currentState.object);\n }\n function resetDefaultState() {\n defaultState.geometry = null;\n defaultState.program = null;\n defaultState.wireframe = false;\n }\n return {\n setup,\n reset,\n resetDefaultState,\n dispose,\n releaseStatesOfGeometry,\n releaseStatesOfProgram,\n initAttributes,\n enableAttribute,\n disableUnusedAttributes\n };\n}\nfunction WebGLBufferRenderer(gl, extensions, info, capabilities) {\n const isWebGL2 = capabilities.isWebGL2;\n let mode;\n function setMode(value) {\n mode = value;\n }\n function render(start, count) {\n gl.drawArrays(mode, start, count);\n info.update(count, mode, 1);\n }\n function renderInstances(start, count, primcount) {\n if (primcount === 0)\n return;\n let extension, methodName;\n if (isWebGL2) {\n extension = gl;\n methodName = \"drawArraysInstanced\";\n } else {\n extension = extensions.get(\"ANGLE_instanced_arrays\");\n methodName = \"drawArraysInstancedANGLE\";\n if (extension === null) {\n console.error(\"THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.\");\n return;\n }\n }\n extension[methodName](mode, start, count, primcount);\n info.update(count, mode, primcount);\n }\n this.setMode = setMode;\n this.render = render;\n this.renderInstances = renderInstances;\n}\nfunction WebGLCapabilities(gl, extensions, parameters) {\n let maxAnisotropy;\n function getMaxAnisotropy() {\n if (maxAnisotropy !== void 0)\n return maxAnisotropy;\n if (extensions.has(\"EXT_texture_filter_anisotropic\") === true) {\n const extension = extensions.get(\"EXT_texture_filter_anisotropic\");\n maxAnisotropy = gl.getParameter(extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT);\n } else {\n maxAnisotropy = 0;\n }\n return maxAnisotropy;\n }\n function getMaxPrecision(precision2) {\n if (precision2 === \"highp\") {\n if (gl.getShaderPrecisionFormat(35633, 36338).precision > 0 && gl.getShaderPrecisionFormat(35632, 36338).precision > 0) {\n return \"highp\";\n }\n precision2 = \"mediump\";\n }\n if (precision2 === \"mediump\") {\n if (gl.getShaderPrecisionFormat(35633, 36337).precision > 0 && gl.getShaderPrecisionFormat(35632, 36337).precision > 0) {\n return \"mediump\";\n }\n }\n return \"lowp\";\n }\n const isWebGL2 = typeof WebGL2RenderingContext !== \"undefined\" && gl instanceof WebGL2RenderingContext || typeof WebGL2ComputeRenderingContext !== \"undefined\" && gl instanceof WebGL2ComputeRenderingContext;\n let precision = parameters.precision !== void 0 ? parameters.precision : \"highp\";\n const maxPrecision = getMaxPrecision(precision);\n if (maxPrecision !== precision) {\n console.warn(\"THREE.WebGLRenderer:\", precision, \"not supported, using\", maxPrecision, \"instead.\");\n precision = maxPrecision;\n }\n const drawBuffers = isWebGL2 || extensions.has(\"WEBGL_draw_buffers\");\n const logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n const maxTextures = gl.getParameter(34930);\n const maxVertexTextures = gl.getParameter(35660);\n const maxTextureSize = gl.getParameter(3379);\n const maxCubemapSize = gl.getParameter(34076);\n const maxAttributes = gl.getParameter(34921);\n const maxVertexUniforms = gl.getParameter(36347);\n const maxVaryings = gl.getParameter(36348);\n const maxFragmentUniforms = gl.getParameter(36349);\n const vertexTextures = maxVertexTextures > 0;\n const floatFragmentTextures = isWebGL2 || extensions.has(\"OES_texture_float\");\n const floatVertexTextures = vertexTextures && floatFragmentTextures;\n const maxSamples = isWebGL2 ? gl.getParameter(36183) : 0;\n return {\n isWebGL2,\n drawBuffers,\n getMaxAnisotropy,\n getMaxPrecision,\n precision,\n logarithmicDepthBuffer,\n maxTextures,\n maxVertexTextures,\n maxTextureSize,\n maxCubemapSize,\n maxAttributes,\n maxVertexUniforms,\n maxVaryings,\n maxFragmentUniforms,\n vertexTextures,\n floatFragmentTextures,\n floatVertexTextures,\n maxSamples\n };\n}\nfunction WebGLClipping(properties) {\n const scope = this;\n let globalState = null, numGlobalPlanes = 0, localClippingEnabled = false, renderingShadows = false;\n const plane = new Plane(), viewNormalMatrix = new Matrix3(), uniform = {value: null, needsUpdate: false};\n this.uniform = uniform;\n this.numPlanes = 0;\n this.numIntersection = 0;\n this.init = function(planes, enableLocalClipping, camera) {\n const enabled = planes.length !== 0 || enableLocalClipping || numGlobalPlanes !== 0 || localClippingEnabled;\n localClippingEnabled = enableLocalClipping;\n globalState = projectPlanes(planes, camera, 0);\n numGlobalPlanes = planes.length;\n return enabled;\n };\n this.beginShadows = function() {\n renderingShadows = true;\n projectPlanes(null);\n };\n this.endShadows = function() {\n renderingShadows = false;\n resetGlobalState();\n };\n this.setState = function(material, camera, useCache) {\n const planes = material.clippingPlanes, clipIntersection = material.clipIntersection, clipShadows = material.clipShadows;\n const materialProperties = properties.get(material);\n if (!localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && !clipShadows) {\n if (renderingShadows) {\n projectPlanes(null);\n } else {\n resetGlobalState();\n }\n } else {\n const nGlobal = renderingShadows ? 0 : numGlobalPlanes, lGlobal = nGlobal * 4;\n let dstArray = materialProperties.clippingState || null;\n uniform.value = dstArray;\n dstArray = projectPlanes(planes, camera, lGlobal, useCache);\n for (let i = 0; i !== lGlobal; ++i) {\n dstArray[i] = globalState[i];\n }\n materialProperties.clippingState = dstArray;\n this.numIntersection = clipIntersection ? this.numPlanes : 0;\n this.numPlanes += nGlobal;\n }\n };\n function resetGlobalState() {\n if (uniform.value !== globalState) {\n uniform.value = globalState;\n uniform.needsUpdate = numGlobalPlanes > 0;\n }\n scope.numPlanes = numGlobalPlanes;\n scope.numIntersection = 0;\n }\n function projectPlanes(planes, camera, dstOffset, skipTransform) {\n const nPlanes = planes !== null ? planes.length : 0;\n let dstArray = null;\n if (nPlanes !== 0) {\n dstArray = uniform.value;\n if (skipTransform !== true || dstArray === null) {\n const flatSize = dstOffset + nPlanes * 4, viewMatrix = camera.matrixWorldInverse;\n viewNormalMatrix.getNormalMatrix(viewMatrix);\n if (dstArray === null || dstArray.length < flatSize) {\n dstArray = new Float32Array(flatSize);\n }\n for (let i = 0, i4 = dstOffset; i !== nPlanes; ++i, i4 += 4) {\n plane.copy(planes[i]).applyMatrix4(viewMatrix, viewNormalMatrix);\n plane.normal.toArray(dstArray, i4);\n dstArray[i4 + 3] = plane.constant;\n }\n }\n uniform.value = dstArray;\n uniform.needsUpdate = true;\n }\n scope.numPlanes = nPlanes;\n scope.numIntersection = 0;\n return dstArray;\n }\n}\nfunction WebGLCubeMaps(renderer) {\n let cubemaps = new WeakMap();\n function mapTextureMapping(texture, mapping) {\n if (mapping === EquirectangularReflectionMapping) {\n texture.mapping = CubeReflectionMapping;\n } else if (mapping === EquirectangularRefractionMapping) {\n texture.mapping = CubeRefractionMapping;\n }\n return texture;\n }\n function get(texture) {\n if (texture && texture.isTexture && texture.isRenderTargetTexture === false) {\n const mapping = texture.mapping;\n if (mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping) {\n if (cubemaps.has(texture)) {\n const cubemap = cubemaps.get(texture).texture;\n return mapTextureMapping(cubemap, texture.mapping);\n } else {\n const image = texture.image;\n if (image && image.height > 0) {\n const currentRenderTarget = renderer.getRenderTarget();\n const renderTarget = new WebGLCubeRenderTarget(image.height / 2);\n renderTarget.fromEquirectangularTexture(renderer, texture);\n cubemaps.set(texture, renderTarget);\n renderer.setRenderTarget(currentRenderTarget);\n texture.addEventListener(\"dispose\", onTextureDispose);\n return mapTextureMapping(renderTarget.texture, texture.mapping);\n } else {\n return null;\n }\n }\n }\n }\n return texture;\n }\n function onTextureDispose(event) {\n const texture = event.target;\n texture.removeEventListener(\"dispose\", onTextureDispose);\n const cubemap = cubemaps.get(texture);\n if (cubemap !== void 0) {\n cubemaps.delete(texture);\n cubemap.dispose();\n }\n }\n function dispose() {\n cubemaps = new WeakMap();\n }\n return {\n get,\n dispose\n };\n}\nclass OrthographicCamera extends Camera {\n constructor(left = -1, right = 1, top = 1, bottom = -1, near = 0.1, far = 2e3) {\n super();\n this.type = \"OrthographicCamera\";\n this.zoom = 1;\n this.view = null;\n this.left = left;\n this.right = right;\n this.top = top;\n this.bottom = bottom;\n this.near = near;\n this.far = far;\n this.updateProjectionMatrix();\n }\n copy(source, recursive) {\n super.copy(source, recursive);\n this.left = source.left;\n this.right = source.right;\n this.top = source.top;\n this.bottom = source.bottom;\n this.near = source.near;\n this.far = source.far;\n this.zoom = source.zoom;\n this.view = source.view === null ? null : Object.assign({}, source.view);\n return this;\n }\n setViewOffset(fullWidth, fullHeight, x, y, width, height) {\n if (this.view === null) {\n this.view = {\n enabled: true,\n fullWidth: 1,\n fullHeight: 1,\n offsetX: 0,\n offsetY: 0,\n width: 1,\n height: 1\n };\n }\n this.view.enabled = true;\n this.view.fullWidth = fullWidth;\n this.view.fullHeight = fullHeight;\n this.view.offsetX = x;\n this.view.offsetY = y;\n this.view.width = width;\n this.view.height = height;\n this.updateProjectionMatrix();\n }\n clearViewOffset() {\n if (this.view !== null) {\n this.view.enabled = false;\n }\n this.updateProjectionMatrix();\n }\n updateProjectionMatrix() {\n const dx = (this.right - this.left) / (2 * this.zoom);\n const dy = (this.top - this.bottom) / (2 * this.zoom);\n const cx = (this.right + this.left) / 2;\n const cy = (this.top + this.bottom) / 2;\n let left = cx - dx;\n let right = cx + dx;\n let top = cy + dy;\n let bottom = cy - dy;\n if (this.view !== null && this.view.enabled) {\n const scaleW = (this.right - this.left) / this.view.fullWidth / this.zoom;\n const scaleH = (this.top - this.bottom) / this.view.fullHeight / this.zoom;\n left += scaleW * this.view.offsetX;\n right = left + scaleW * this.view.width;\n top -= scaleH * this.view.offsetY;\n bottom = top - scaleH * this.view.height;\n }\n this.projectionMatrix.makeOrthographic(left, right, top, bottom, this.near, this.far);\n this.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n data.object.zoom = this.zoom;\n data.object.left = this.left;\n data.object.right = this.right;\n data.object.top = this.top;\n data.object.bottom = this.bottom;\n data.object.near = this.near;\n data.object.far = this.far;\n if (this.view !== null)\n data.object.view = Object.assign({}, this.view);\n return data;\n }\n}\nOrthographicCamera.prototype.isOrthographicCamera = true;\nclass RawShaderMaterial extends ShaderMaterial {\n constructor(parameters) {\n super(parameters);\n this.type = \"RawShaderMaterial\";\n }\n}\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow(2, LOD_MAX);\nconst EXTRA_LOD_SIGMA = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582];\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\nconst MAX_SAMPLES = 20;\nconst ENCODINGS = {\n [LinearEncoding]: 0,\n [sRGBEncoding]: 1,\n [RGBEEncoding]: 2,\n [RGBM7Encoding]: 3,\n [RGBM16Encoding]: 4,\n [RGBDEncoding]: 5,\n [GammaEncoding]: 6\n};\nconst _flatCamera = /* @__PURE__ */ new OrthographicCamera();\nconst {_lodPlanes, _sizeLods, _sigmas} = /* @__PURE__ */ _createPlanes();\nconst _clearColor = /* @__PURE__ */ new Color();\nlet _oldTarget = null;\nconst PHI = (1 + Math.sqrt(5)) / 2;\nconst INV_PHI = 1 / PHI;\nconst _axisDirections = [\n /* @__PURE__ */ new Vector3(1, 1, 1),\n /* @__PURE__ */ new Vector3(-1, 1, 1),\n /* @__PURE__ */ new Vector3(1, 1, -1),\n /* @__PURE__ */ new Vector3(-1, 1, -1),\n /* @__PURE__ */ new Vector3(0, PHI, INV_PHI),\n /* @__PURE__ */ new Vector3(0, PHI, -INV_PHI),\n /* @__PURE__ */ new Vector3(INV_PHI, 0, PHI),\n /* @__PURE__ */ new Vector3(-INV_PHI, 0, PHI),\n /* @__PURE__ */ new Vector3(PHI, INV_PHI, 0),\n /* @__PURE__ */ new Vector3(-PHI, INV_PHI, 0)\n];\nclass PMREMGenerator {\n constructor(renderer) {\n this._renderer = renderer;\n this._pingPongRenderTarget = null;\n this._blurMaterial = _getBlurShader(MAX_SAMPLES);\n this._equirectShader = null;\n this._cubemapShader = null;\n this._compileMaterial(this._blurMaterial);\n }\n fromScene(scene, sigma = 0, near = 0.1, far = 100) {\n _oldTarget = this._renderer.getRenderTarget();\n const cubeUVRenderTarget = this._allocateTargets();\n this._sceneToCubeUV(scene, near, far, cubeUVRenderTarget);\n if (sigma > 0) {\n this._blur(cubeUVRenderTarget, 0, 0, sigma);\n }\n this._applyPMREM(cubeUVRenderTarget);\n this._cleanup(cubeUVRenderTarget);\n return cubeUVRenderTarget;\n }\n fromEquirectangular(equirectangular) {\n return this._fromTexture(equirectangular);\n }\n fromCubemap(cubemap) {\n return this._fromTexture(cubemap);\n }\n compileCubemapShader() {\n if (this._cubemapShader === null) {\n this._cubemapShader = _getCubemapShader();\n this._compileMaterial(this._cubemapShader);\n }\n }\n compileEquirectangularShader() {\n if (this._equirectShader === null) {\n this._equirectShader = _getEquirectShader();\n this._compileMaterial(this._equirectShader);\n }\n }\n dispose() {\n this._blurMaterial.dispose();\n if (this._cubemapShader !== null)\n this._cubemapShader.dispose();\n if (this._equirectShader !== null)\n this._equirectShader.dispose();\n for (let i = 0; i < _lodPlanes.length; i++) {\n _lodPlanes[i].dispose();\n }\n }\n _cleanup(outputTarget) {\n this._pingPongRenderTarget.dispose();\n this._renderer.setRenderTarget(_oldTarget);\n outputTarget.scissorTest = false;\n _setViewport(outputTarget, 0, 0, outputTarget.width, outputTarget.height);\n }\n _fromTexture(texture) {\n _oldTarget = this._renderer.getRenderTarget();\n const cubeUVRenderTarget = this._allocateTargets(texture);\n this._textureToCubeUV(texture, cubeUVRenderTarget);\n this._applyPMREM(cubeUVRenderTarget);\n this._cleanup(cubeUVRenderTarget);\n return cubeUVRenderTarget;\n }\n _allocateTargets(texture) {\n const params = {\n magFilter: NearestFilter,\n minFilter: NearestFilter,\n generateMipmaps: false,\n type: UnsignedByteType,\n format: RGBEFormat,\n encoding: _isLDR(texture) ? texture.encoding : RGBEEncoding,\n depthBuffer: false\n };\n const cubeUVRenderTarget = _createRenderTarget(params);\n cubeUVRenderTarget.depthBuffer = texture ? false : true;\n this._pingPongRenderTarget = _createRenderTarget(params);\n return cubeUVRenderTarget;\n }\n _compileMaterial(material) {\n const tmpMesh = new Mesh(_lodPlanes[0], material);\n this._renderer.compile(tmpMesh, _flatCamera);\n }\n _sceneToCubeUV(scene, near, far, cubeUVRenderTarget) {\n const fov2 = 90;\n const aspect2 = 1;\n const cubeCamera = new PerspectiveCamera(fov2, aspect2, near, far);\n const upSign = [1, -1, 1, 1, 1, 1];\n const forwardSign = [1, 1, 1, -1, -1, -1];\n const renderer = this._renderer;\n const originalAutoClear = renderer.autoClear;\n const outputEncoding = renderer.outputEncoding;\n const toneMapping = renderer.toneMapping;\n renderer.getClearColor(_clearColor);\n renderer.toneMapping = NoToneMapping;\n renderer.outputEncoding = LinearEncoding;\n renderer.autoClear = false;\n const backgroundMaterial = new MeshBasicMaterial({\n name: \"PMREM.Background\",\n side: BackSide,\n depthWrite: false,\n depthTest: false\n });\n const backgroundBox = new Mesh(new BoxGeometry(), backgroundMaterial);\n let useSolidColor = false;\n const background = scene.background;\n if (background) {\n if (background.isColor) {\n backgroundMaterial.color.copy(background);\n scene.background = null;\n useSolidColor = true;\n }\n } else {\n backgroundMaterial.color.copy(_clearColor);\n useSolidColor = true;\n }\n for (let i = 0; i < 6; i++) {\n const col = i % 3;\n if (col == 0) {\n cubeCamera.up.set(0, upSign[i], 0);\n cubeCamera.lookAt(forwardSign[i], 0, 0);\n } else if (col == 1) {\n cubeCamera.up.set(0, 0, upSign[i]);\n cubeCamera.lookAt(0, forwardSign[i], 0);\n } else {\n cubeCamera.up.set(0, upSign[i], 0);\n cubeCamera.lookAt(0, 0, forwardSign[i]);\n }\n _setViewport(cubeUVRenderTarget, col * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX);\n renderer.setRenderTarget(cubeUVRenderTarget);\n if (useSolidColor) {\n renderer.render(backgroundBox, cubeCamera);\n }\n renderer.render(scene, cubeCamera);\n }\n backgroundBox.geometry.dispose();\n backgroundBox.material.dispose();\n renderer.toneMapping = toneMapping;\n renderer.outputEncoding = outputEncoding;\n renderer.autoClear = originalAutoClear;\n scene.background = background;\n }\n _setEncoding(uniform, texture) {\n uniform.value = ENCODINGS[texture.encoding];\n }\n _textureToCubeUV(texture, cubeUVRenderTarget) {\n const renderer = this._renderer;\n const isCubeTexture = texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping;\n if (isCubeTexture) {\n if (this._cubemapShader == null) {\n this._cubemapShader = _getCubemapShader();\n }\n } else {\n if (this._equirectShader == null) {\n this._equirectShader = _getEquirectShader();\n }\n }\n const material = isCubeTexture ? this._cubemapShader : this._equirectShader;\n const mesh = new Mesh(_lodPlanes[0], material);\n const uniforms = material.uniforms;\n uniforms[\"envMap\"].value = texture;\n if (!isCubeTexture) {\n uniforms[\"texelSize\"].value.set(1 / texture.image.width, 1 / texture.image.height);\n }\n this._setEncoding(uniforms[\"inputEncoding\"], texture);\n this._setEncoding(uniforms[\"outputEncoding\"], cubeUVRenderTarget.texture);\n _setViewport(cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX);\n renderer.setRenderTarget(cubeUVRenderTarget);\n renderer.render(mesh, _flatCamera);\n }\n _applyPMREM(cubeUVRenderTarget) {\n const renderer = this._renderer;\n const autoClear = renderer.autoClear;\n renderer.autoClear = false;\n for (let i = 1; i < TOTAL_LODS; i++) {\n const sigma = Math.sqrt(_sigmas[i] * _sigmas[i] - _sigmas[i - 1] * _sigmas[i - 1]);\n const poleAxis = _axisDirections[(i - 1) % _axisDirections.length];\n this._blur(cubeUVRenderTarget, i - 1, i, sigma, poleAxis);\n }\n renderer.autoClear = autoClear;\n }\n _blur(cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis) {\n const pingPongRenderTarget = this._pingPongRenderTarget;\n this._halfBlur(cubeUVRenderTarget, pingPongRenderTarget, lodIn, lodOut, sigma, \"latitudinal\", poleAxis);\n this._halfBlur(pingPongRenderTarget, cubeUVRenderTarget, lodOut, lodOut, sigma, \"longitudinal\", poleAxis);\n }\n _halfBlur(targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis) {\n const renderer = this._renderer;\n const blurMaterial = this._blurMaterial;\n if (direction !== \"latitudinal\" && direction !== \"longitudinal\") {\n console.error(\"blur direction must be either latitudinal or longitudinal!\");\n }\n const STANDARD_DEVIATIONS = 3;\n const blurMesh = new Mesh(_lodPlanes[lodOut], blurMaterial);\n const blurUniforms = blurMaterial.uniforms;\n const pixels = _sizeLods[lodIn] - 1;\n const radiansPerPixel = isFinite(sigmaRadians) ? Math.PI / (2 * pixels) : 2 * Math.PI / (2 * MAX_SAMPLES - 1);\n const sigmaPixels = sigmaRadians / radiansPerPixel;\n const samples = isFinite(sigmaRadians) ? 1 + Math.floor(STANDARD_DEVIATIONS * sigmaPixels) : MAX_SAMPLES;\n if (samples > MAX_SAMPLES) {\n console.warn(`sigmaRadians, ${sigmaRadians}, is too large and will clip, as it requested ${samples} samples when the maximum is set to ${MAX_SAMPLES}`);\n }\n const weights = [];\n let sum = 0;\n for (let i = 0; i < MAX_SAMPLES; ++i) {\n const x2 = i / sigmaPixels;\n const weight = Math.exp(-x2 * x2 / 2);\n weights.push(weight);\n if (i == 0) {\n sum += weight;\n } else if (i < samples) {\n sum += 2 * weight;\n }\n }\n for (let i = 0; i < weights.length; i++) {\n weights[i] = weights[i] / sum;\n }\n blurUniforms[\"envMap\"].value = targetIn.texture;\n blurUniforms[\"samples\"].value = samples;\n blurUniforms[\"weights\"].value = weights;\n blurUniforms[\"latitudinal\"].value = direction === \"latitudinal\";\n if (poleAxis) {\n blurUniforms[\"poleAxis\"].value = poleAxis;\n }\n blurUniforms[\"dTheta\"].value = radiansPerPixel;\n blurUniforms[\"mipInt\"].value = LOD_MAX - lodIn;\n this._setEncoding(blurUniforms[\"inputEncoding\"], targetIn.texture);\n this._setEncoding(blurUniforms[\"outputEncoding\"], targetIn.texture);\n const outputSize = _sizeLods[lodOut];\n const x = 3 * Math.max(0, SIZE_MAX - 2 * outputSize);\n const y = (lodOut === 0 ? 0 : 2 * SIZE_MAX) + 2 * outputSize * (lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0);\n _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n renderer.setRenderTarget(targetOut);\n renderer.render(blurMesh, _flatCamera);\n }\n}\nfunction _isLDR(texture) {\n if (texture === void 0 || texture.type !== UnsignedByteType)\n return false;\n return texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n}\nfunction _createPlanes() {\n const _lodPlanes2 = [];\n const _sizeLods2 = [];\n const _sigmas2 = [];\n let lod = LOD_MAX;\n for (let i = 0; i < TOTAL_LODS; i++) {\n const sizeLod = Math.pow(2, lod);\n _sizeLods2.push(sizeLod);\n let sigma = 1 / sizeLod;\n if (i > LOD_MAX - LOD_MIN) {\n sigma = EXTRA_LOD_SIGMA[i - LOD_MAX + LOD_MIN - 1];\n } else if (i == 0) {\n sigma = 0;\n }\n _sigmas2.push(sigma);\n const texelSize = 1 / (sizeLod - 1);\n const min = -texelSize / 2;\n const max = 1 + texelSize / 2;\n const uv1 = [min, min, max, min, max, max, min, min, max, max, min, max];\n const cubeFaces = 6;\n const vertices = 6;\n const positionSize = 3;\n const uvSize = 2;\n const faceIndexSize = 1;\n const position = new Float32Array(positionSize * vertices * cubeFaces);\n const uv = new Float32Array(uvSize * vertices * cubeFaces);\n const faceIndex = new Float32Array(faceIndexSize * vertices * cubeFaces);\n for (let face = 0; face < cubeFaces; face++) {\n const x = face % 3 * 2 / 3 - 1;\n const y = face > 2 ? 0 : -1;\n const coordinates = [\n x,\n y,\n 0,\n x + 2 / 3,\n y,\n 0,\n x + 2 / 3,\n y + 1,\n 0,\n x,\n y,\n 0,\n x + 2 / 3,\n y + 1,\n 0,\n x,\n y + 1,\n 0\n ];\n position.set(coordinates, positionSize * vertices * face);\n uv.set(uv1, uvSize * vertices * face);\n const fill = [face, face, face, face, face, face];\n faceIndex.set(fill, faceIndexSize * vertices * face);\n }\n const planes = new BufferGeometry();\n planes.setAttribute(\"position\", new BufferAttribute(position, positionSize));\n planes.setAttribute(\"uv\", new BufferAttribute(uv, uvSize));\n planes.setAttribute(\"faceIndex\", new BufferAttribute(faceIndex, faceIndexSize));\n _lodPlanes2.push(planes);\n if (lod > LOD_MIN) {\n lod--;\n }\n }\n return {_lodPlanes: _lodPlanes2, _sizeLods: _sizeLods2, _sigmas: _sigmas2};\n}\nfunction _createRenderTarget(params) {\n const cubeUVRenderTarget = new WebGLRenderTarget(3 * SIZE_MAX, 3 * SIZE_MAX, params);\n cubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n cubeUVRenderTarget.texture.name = \"PMREM.cubeUv\";\n cubeUVRenderTarget.scissorTest = true;\n return cubeUVRenderTarget;\n}\nfunction _setViewport(target, x, y, width, height) {\n target.viewport.set(x, y, width, height);\n target.scissor.set(x, y, width, height);\n}\nfunction _getBlurShader(maxSamples) {\n const weights = new Float32Array(maxSamples);\n const poleAxis = new Vector3(0, 1, 0);\n const shaderMaterial = new RawShaderMaterial({\n name: \"SphericalGaussianBlur\",\n defines: {n: maxSamples},\n uniforms: {\n envMap: {value: null},\n samples: {value: 1},\n weights: {value: weights},\n latitudinal: {value: false},\n dTheta: {value: 0},\n mipInt: {value: 0},\n poleAxis: {value: poleAxis},\n inputEncoding: {value: ENCODINGS[LinearEncoding]},\n outputEncoding: {value: ENCODINGS[LinearEncoding]}\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t${_getEncodings()}\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n blending: NoBlending,\n depthTest: false,\n depthWrite: false\n });\n return shaderMaterial;\n}\nfunction _getEquirectShader() {\n const texelSize = new Vector2(1, 1);\n const shaderMaterial = new RawShaderMaterial({\n name: \"EquirectangularToCubeUV\",\n uniforms: {\n envMap: {value: null},\n texelSize: {value: texelSize},\n inputEncoding: {value: ENCODINGS[LinearEncoding]},\n outputEncoding: {value: ENCODINGS[LinearEncoding]}\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t${_getEncodings()}\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n blending: NoBlending,\n depthTest: false,\n depthWrite: false\n });\n return shaderMaterial;\n}\nfunction _getCubemapShader() {\n const shaderMaterial = new RawShaderMaterial({\n name: \"CubemapToCubeUV\",\n uniforms: {\n envMap: {value: null},\n inputEncoding: {value: ENCODINGS[LinearEncoding]},\n outputEncoding: {value: ENCODINGS[LinearEncoding]}\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t${_getEncodings()}\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n blending: NoBlending,\n depthTest: false,\n depthWrite: false\n });\n return shaderMaterial;\n}\nfunction _getCommonVertexShader() {\n return `\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n}\nfunction _getEncodings() {\n return `\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t`;\n}\nfunction WebGLCubeUVMaps(renderer) {\n let cubeUVmaps = new WeakMap();\n let pmremGenerator = null;\n function get(texture) {\n if (texture && texture.isTexture && texture.isRenderTargetTexture === false) {\n const mapping = texture.mapping;\n const isEquirectMap = mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping;\n const isCubeMap = mapping === CubeReflectionMapping || mapping === CubeRefractionMapping;\n if (isEquirectMap || isCubeMap) {\n if (cubeUVmaps.has(texture)) {\n return cubeUVmaps.get(texture).texture;\n } else {\n const image = texture.image;\n if (isEquirectMap && image && image.height > 0 || isCubeMap && image && isCubeTextureComplete(image)) {\n const currentRenderTarget = renderer.getRenderTarget();\n if (pmremGenerator === null)\n pmremGenerator = new PMREMGenerator(renderer);\n const renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular(texture) : pmremGenerator.fromCubemap(texture);\n cubeUVmaps.set(texture, renderTarget);\n renderer.setRenderTarget(currentRenderTarget);\n texture.addEventListener(\"dispose\", onTextureDispose);\n return renderTarget.texture;\n } else {\n return null;\n }\n }\n }\n }\n return texture;\n }\n function isCubeTextureComplete(image) {\n let count = 0;\n const length = 6;\n for (let i = 0; i < length; i++) {\n if (image[i] !== void 0)\n count++;\n }\n return count === length;\n }\n function onTextureDispose(event) {\n const texture = event.target;\n texture.removeEventListener(\"dispose\", onTextureDispose);\n const cubemapUV = cubeUVmaps.get(texture);\n if (cubemapUV !== void 0) {\n cubeUVmaps.delete(texture);\n cubemapUV.dispose();\n }\n }\n function dispose() {\n cubeUVmaps = new WeakMap();\n if (pmremGenerator !== null) {\n pmremGenerator.dispose();\n pmremGenerator = null;\n }\n }\n return {\n get,\n dispose\n };\n}\nfunction WebGLExtensions(gl) {\n const extensions = {};\n function getExtension(name) {\n if (extensions[name] !== void 0) {\n return extensions[name];\n }\n let extension;\n switch (name) {\n case \"WEBGL_depth_texture\":\n extension = gl.getExtension(\"WEBGL_depth_texture\") || gl.getExtension(\"MOZ_WEBGL_depth_texture\") || gl.getExtension(\"WEBKIT_WEBGL_depth_texture\");\n break;\n case \"EXT_texture_filter_anisotropic\":\n extension = gl.getExtension(\"EXT_texture_filter_anisotropic\") || gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\") || gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\");\n break;\n case \"WEBGL_compressed_texture_s3tc\":\n extension = gl.getExtension(\"WEBGL_compressed_texture_s3tc\") || gl.getExtension(\"MOZ_WEBGL_compressed_texture_s3tc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_s3tc\");\n break;\n case \"WEBGL_compressed_texture_pvrtc\":\n extension = gl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\");\n break;\n default:\n extension = gl.getExtension(name);\n }\n extensions[name] = extension;\n return extension;\n }\n return {\n has: function(name) {\n return getExtension(name) !== null;\n },\n init: function(capabilities) {\n if (capabilities.isWebGL2) {\n getExtension(\"EXT_color_buffer_float\");\n } else {\n getExtension(\"WEBGL_depth_texture\");\n getExtension(\"OES_texture_float\");\n getExtension(\"OES_texture_half_float\");\n getExtension(\"OES_texture_half_float_linear\");\n getExtension(\"OES_standard_derivatives\");\n getExtension(\"OES_element_index_uint\");\n getExtension(\"OES_vertex_array_object\");\n getExtension(\"ANGLE_instanced_arrays\");\n }\n getExtension(\"OES_texture_float_linear\");\n getExtension(\"EXT_color_buffer_half_float\");\n getExtension(\"WEBGL_multisampled_render_to_texture\");\n },\n get: function(name) {\n const extension = getExtension(name);\n if (extension === null) {\n console.warn(\"THREE.WebGLRenderer: \" + name + \" extension not supported.\");\n }\n return extension;\n }\n };\n}\nfunction WebGLGeometries(gl, attributes, info, bindingStates) {\n const geometries = {};\n const wireframeAttributes = new WeakMap();\n function onGeometryDispose(event) {\n const geometry = event.target;\n if (geometry.index !== null) {\n attributes.remove(geometry.index);\n }\n for (const name in geometry.attributes) {\n attributes.remove(geometry.attributes[name]);\n }\n geometry.removeEventListener(\"dispose\", onGeometryDispose);\n delete geometries[geometry.id];\n const attribute = wireframeAttributes.get(geometry);\n if (attribute) {\n attributes.remove(attribute);\n wireframeAttributes.delete(geometry);\n }\n bindingStates.releaseStatesOfGeometry(geometry);\n if (geometry.isInstancedBufferGeometry === true) {\n delete geometry._maxInstanceCount;\n }\n info.memory.geometries--;\n }\n function get(object, geometry) {\n if (geometries[geometry.id] === true)\n return geometry;\n geometry.addEventListener(\"dispose\", onGeometryDispose);\n geometries[geometry.id] = true;\n info.memory.geometries++;\n return geometry;\n }\n function update(geometry) {\n const geometryAttributes = geometry.attributes;\n for (const name in geometryAttributes) {\n attributes.update(geometryAttributes[name], 34962);\n }\n const morphAttributes = geometry.morphAttributes;\n for (const name in morphAttributes) {\n const array = morphAttributes[name];\n for (let i = 0, l = array.length; i < l; i++) {\n attributes.update(array[i], 34962);\n }\n }\n }\n function updateWireframeAttribute(geometry) {\n const indices = [];\n const geometryIndex = geometry.index;\n const geometryPosition = geometry.attributes.position;\n let version = 0;\n if (geometryIndex !== null) {\n const array = geometryIndex.array;\n version = geometryIndex.version;\n for (let i = 0, l = array.length; i < l; i += 3) {\n const a = array[i + 0];\n const b = array[i + 1];\n const c = array[i + 2];\n indices.push(a, b, b, c, c, a);\n }\n } else {\n const array = geometryPosition.array;\n version = geometryPosition.version;\n for (let i = 0, l = array.length / 3 - 1; i < l; i += 3) {\n const a = i + 0;\n const b = i + 1;\n const c = i + 2;\n indices.push(a, b, b, c, c, a);\n }\n }\n const attribute = new (arrayMax(indices) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute)(indices, 1);\n attribute.version = version;\n const previousAttribute = wireframeAttributes.get(geometry);\n if (previousAttribute)\n attributes.remove(previousAttribute);\n wireframeAttributes.set(geometry, attribute);\n }\n function getWireframeAttribute(geometry) {\n const currentAttribute = wireframeAttributes.get(geometry);\n if (currentAttribute) {\n const geometryIndex = geometry.index;\n if (geometryIndex !== null) {\n if (currentAttribute.version < geometryIndex.version) {\n updateWireframeAttribute(geometry);\n }\n }\n } else {\n updateWireframeAttribute(geometry);\n }\n return wireframeAttributes.get(geometry);\n }\n return {\n get,\n update,\n getWireframeAttribute\n };\n}\nfunction WebGLIndexedBufferRenderer(gl, extensions, info, capabilities) {\n const isWebGL2 = capabilities.isWebGL2;\n let mode;\n function setMode(value) {\n mode = value;\n }\n let type, bytesPerElement;\n function setIndex(value) {\n type = value.type;\n bytesPerElement = value.bytesPerElement;\n }\n function render(start, count) {\n gl.drawElements(mode, count, type, start * bytesPerElement);\n info.update(count, mode, 1);\n }\n function renderInstances(start, count, primcount) {\n if (primcount === 0)\n return;\n let extension, methodName;\n if (isWebGL2) {\n extension = gl;\n methodName = \"drawElementsInstanced\";\n } else {\n extension = extensions.get(\"ANGLE_instanced_arrays\");\n methodName = \"drawElementsInstancedANGLE\";\n if (extension === null) {\n console.error(\"THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.\");\n return;\n }\n }\n extension[methodName](mode, count, type, start * bytesPerElement, primcount);\n info.update(count, mode, primcount);\n }\n this.setMode = setMode;\n this.setIndex = setIndex;\n this.render = render;\n this.renderInstances = renderInstances;\n}\nfunction WebGLInfo(gl) {\n const memory = {\n geometries: 0,\n textures: 0\n };\n const render = {\n frame: 0,\n calls: 0,\n triangles: 0,\n points: 0,\n lines: 0\n };\n function update(count, mode, instanceCount) {\n render.calls++;\n switch (mode) {\n case 4:\n render.triangles += instanceCount * (count / 3);\n break;\n case 1:\n render.lines += instanceCount * (count / 2);\n break;\n case 3:\n render.lines += instanceCount * (count - 1);\n break;\n case 2:\n render.lines += instanceCount * count;\n break;\n case 0:\n render.points += instanceCount * count;\n break;\n default:\n console.error(\"THREE.WebGLInfo: Unknown draw mode:\", mode);\n break;\n }\n }\n function reset() {\n render.frame++;\n render.calls = 0;\n render.triangles = 0;\n render.points = 0;\n render.lines = 0;\n }\n return {\n memory,\n render,\n programs: null,\n autoReset: true,\n reset,\n update\n };\n}\nclass DataTexture2DArray extends Texture {\n constructor(data = null, width = 1, height = 1, depth = 1) {\n super(null);\n this.image = {data, width, height, depth};\n this.magFilter = NearestFilter;\n this.minFilter = NearestFilter;\n this.wrapR = ClampToEdgeWrapping;\n this.generateMipmaps = false;\n this.flipY = false;\n this.unpackAlignment = 1;\n this.needsUpdate = true;\n }\n}\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\nfunction numericalSort(a, b) {\n return a[0] - b[0];\n}\nfunction absNumericalSort(a, b) {\n return Math.abs(b[1]) - Math.abs(a[1]);\n}\nfunction denormalize(morph, attribute) {\n let denominator = 1;\n const array = attribute.isInterleavedBufferAttribute ? attribute.data.array : attribute.array;\n if (array instanceof Int8Array)\n denominator = 127;\n else if (array instanceof Int16Array)\n denominator = 32767;\n else if (array instanceof Int32Array)\n denominator = 2147483647;\n else\n console.error(\"THREE.WebGLMorphtargets: Unsupported morph attribute data type: \", array);\n morph.divideScalar(denominator);\n}\nfunction WebGLMorphtargets(gl, capabilities, textures) {\n const influencesList = {};\n const morphInfluences = new Float32Array(8);\n const morphTextures = new WeakMap();\n const morph = new Vector3();\n const workInfluences = [];\n for (let i = 0; i < 8; i++) {\n workInfluences[i] = [i, 0];\n }\n function update(object, geometry, material, program) {\n const objectInfluences = object.morphTargetInfluences;\n if (capabilities.isWebGL2 === true) {\n const numberOfMorphTargets = geometry.morphAttributes.position.length;\n let entry = morphTextures.get(geometry);\n if (entry === void 0 || entry.count !== numberOfMorphTargets) {\n if (entry !== void 0)\n entry.texture.dispose();\n const hasMorphNormals = geometry.morphAttributes.normal !== void 0;\n const morphTargets = geometry.morphAttributes.position;\n const morphNormals = geometry.morphAttributes.normal || [];\n const numberOfVertices = geometry.attributes.position.count;\n const numberOfVertexData = hasMorphNormals === true ? 2 : 1;\n let width = numberOfVertices * numberOfVertexData;\n let height = 1;\n if (width > capabilities.maxTextureSize) {\n height = Math.ceil(width / capabilities.maxTextureSize);\n width = capabilities.maxTextureSize;\n }\n const buffer = new Float32Array(width * height * 4 * numberOfMorphTargets);\n const texture = new DataTexture2DArray(buffer, width, height, numberOfMorphTargets);\n texture.format = RGBAFormat;\n texture.type = FloatType;\n const vertexDataStride = numberOfVertexData * 4;\n for (let i = 0; i < numberOfMorphTargets; i++) {\n const morphTarget = morphTargets[i];\n const morphNormal = morphNormals[i];\n const offset = width * height * 4 * i;\n for (let j = 0; j < morphTarget.count; j++) {\n morph.fromBufferAttribute(morphTarget, j);\n if (morphTarget.normalized === true)\n denormalize(morph, morphTarget);\n const stride = j * vertexDataStride;\n buffer[offset + stride + 0] = morph.x;\n buffer[offset + stride + 1] = morph.y;\n buffer[offset + stride + 2] = morph.z;\n buffer[offset + stride + 3] = 0;\n if (hasMorphNormals === true) {\n morph.fromBufferAttribute(morphNormal, j);\n if (morphNormal.normalized === true)\n denormalize(morph, morphNormal);\n buffer[offset + stride + 4] = morph.x;\n buffer[offset + stride + 5] = morph.y;\n buffer[offset + stride + 6] = morph.z;\n buffer[offset + stride + 7] = 0;\n }\n }\n }\n entry = {\n count: numberOfMorphTargets,\n texture,\n size: new Vector2(width, height)\n };\n morphTextures.set(geometry, entry);\n }\n let morphInfluencesSum = 0;\n for (let i = 0; i < objectInfluences.length; i++) {\n morphInfluencesSum += objectInfluences[i];\n }\n const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n program.getUniforms().setValue(gl, \"morphTargetBaseInfluence\", morphBaseInfluence);\n program.getUniforms().setValue(gl, \"morphTargetInfluences\", objectInfluences);\n program.getUniforms().setValue(gl, \"morphTargetsTexture\", entry.texture, textures);\n program.getUniforms().setValue(gl, \"morphTargetsTextureSize\", entry.size);\n } else {\n const length = objectInfluences === void 0 ? 0 : objectInfluences.length;\n let influences = influencesList[geometry.id];\n if (influences === void 0 || influences.length !== length) {\n influences = [];\n for (let i = 0; i < length; i++) {\n influences[i] = [i, 0];\n }\n influencesList[geometry.id] = influences;\n }\n for (let i = 0; i < length; i++) {\n const influence = influences[i];\n influence[0] = i;\n influence[1] = objectInfluences[i];\n }\n influences.sort(absNumericalSort);\n for (let i = 0; i < 8; i++) {\n if (i < length && influences[i][1]) {\n workInfluences[i][0] = influences[i][0];\n workInfluences[i][1] = influences[i][1];\n } else {\n workInfluences[i][0] = Number.MAX_SAFE_INTEGER;\n workInfluences[i][1] = 0;\n }\n }\n workInfluences.sort(numericalSort);\n const morphTargets = geometry.morphAttributes.position;\n const morphNormals = geometry.morphAttributes.normal;\n let morphInfluencesSum = 0;\n for (let i = 0; i < 8; i++) {\n const influence = workInfluences[i];\n const index = influence[0];\n const value = influence[1];\n if (index !== Number.MAX_SAFE_INTEGER && value) {\n if (morphTargets && geometry.getAttribute(\"morphTarget\" + i) !== morphTargets[index]) {\n geometry.setAttribute(\"morphTarget\" + i, morphTargets[index]);\n }\n if (morphNormals && geometry.getAttribute(\"morphNormal\" + i) !== morphNormals[index]) {\n geometry.setAttribute(\"morphNormal\" + i, morphNormals[index]);\n }\n morphInfluences[i] = value;\n morphInfluencesSum += value;\n } else {\n if (morphTargets && geometry.hasAttribute(\"morphTarget\" + i) === true) {\n geometry.deleteAttribute(\"morphTarget\" + i);\n }\n if (morphNormals && geometry.hasAttribute(\"morphNormal\" + i) === true) {\n geometry.deleteAttribute(\"morphNormal\" + i);\n }\n morphInfluences[i] = 0;\n }\n }\n const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n program.getUniforms().setValue(gl, \"morphTargetBaseInfluence\", morphBaseInfluence);\n program.getUniforms().setValue(gl, \"morphTargetInfluences\", morphInfluences);\n }\n }\n return {\n update\n };\n}\nfunction WebGLObjects(gl, geometries, attributes, info) {\n let updateMap = new WeakMap();\n function update(object) {\n const frame = info.render.frame;\n const geometry = object.geometry;\n const buffergeometry = geometries.get(object, geometry);\n if (updateMap.get(buffergeometry) !== frame) {\n geometries.update(buffergeometry);\n updateMap.set(buffergeometry, frame);\n }\n if (object.isInstancedMesh) {\n if (object.hasEventListener(\"dispose\", onInstancedMeshDispose) === false) {\n object.addEventListener(\"dispose\", onInstancedMeshDispose);\n }\n attributes.update(object.instanceMatrix, 34962);\n if (object.instanceColor !== null) {\n attributes.update(object.instanceColor, 34962);\n }\n }\n return buffergeometry;\n }\n function dispose() {\n updateMap = new WeakMap();\n }\n function onInstancedMeshDispose(event) {\n const instancedMesh = event.target;\n instancedMesh.removeEventListener(\"dispose\", onInstancedMeshDispose);\n attributes.remove(instancedMesh.instanceMatrix);\n if (instancedMesh.instanceColor !== null)\n attributes.remove(instancedMesh.instanceColor);\n }\n return {\n update,\n dispose\n };\n}\nclass DataTexture3D extends Texture {\n constructor(data = null, width = 1, height = 1, depth = 1) {\n super(null);\n this.image = {data, width, height, depth};\n this.magFilter = NearestFilter;\n this.minFilter = NearestFilter;\n this.wrapR = ClampToEdgeWrapping;\n this.generateMipmaps = false;\n this.flipY = false;\n this.unpackAlignment = 1;\n this.needsUpdate = true;\n }\n}\nDataTexture3D.prototype.isDataTexture3D = true;\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = new CubeTexture();\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\nconst mat4array = new Float32Array(16);\nconst mat3array = new Float32Array(9);\nconst mat2array = new Float32Array(4);\nfunction flatten(array, nBlocks, blockSize) {\n const firstElem = array[0];\n if (firstElem <= 0 || firstElem > 0)\n return array;\n const n = nBlocks * blockSize;\n let r = arrayCacheF32[n];\n if (r === void 0) {\n r = new Float32Array(n);\n arrayCacheF32[n] = r;\n }\n if (nBlocks !== 0) {\n firstElem.toArray(r, 0);\n for (let i = 1, offset = 0; i !== nBlocks; ++i) {\n offset += blockSize;\n array[i].toArray(r, offset);\n }\n }\n return r;\n}\nfunction arraysEqual(a, b) {\n if (a.length !== b.length)\n return false;\n for (let i = 0, l = a.length; i < l; i++) {\n if (a[i] !== b[i])\n return false;\n }\n return true;\n}\nfunction copyArray(a, b) {\n for (let i = 0, l = b.length; i < l; i++) {\n a[i] = b[i];\n }\n}\nfunction allocTexUnits(textures, n) {\n let r = arrayCacheI32[n];\n if (r === void 0) {\n r = new Int32Array(n);\n arrayCacheI32[n] = r;\n }\n for (let i = 0; i !== n; ++i) {\n r[i] = textures.allocateTextureUnit();\n }\n return r;\n}\nfunction setValueV1f(gl, v) {\n const cache = this.cache;\n if (cache[0] === v)\n return;\n gl.uniform1f(this.addr, v);\n cache[0] = v;\n}\nfunction setValueV2f(gl, v) {\n const cache = this.cache;\n if (v.x !== void 0) {\n if (cache[0] !== v.x || cache[1] !== v.y) {\n gl.uniform2f(this.addr, v.x, v.y);\n cache[0] = v.x;\n cache[1] = v.y;\n }\n } else {\n if (arraysEqual(cache, v))\n return;\n gl.uniform2fv(this.addr, v);\n copyArray(cache, v);\n }\n}\nfunction setValueV3f(gl, v) {\n const cache = this.cache;\n if (v.x !== void 0) {\n if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z) {\n gl.uniform3f(this.addr, v.x, v.y, v.z);\n cache[0] = v.x;\n cache[1] = v.y;\n cache[2] = v.z;\n }\n } else if (v.r !== void 0) {\n if (cache[0] !== v.r || cache[1] !== v.g || cache[2] !== v.b) {\n gl.uniform3f(this.addr, v.r, v.g, v.b);\n cache[0] = v.r;\n cache[1] = v.g;\n cache[2] = v.b;\n }\n } else {\n if (arraysEqual(cache, v))\n return;\n gl.uniform3fv(this.addr, v);\n copyArray(cache, v);\n }\n}\nfunction setValueV4f(gl, v) {\n const cache = this.cache;\n if (v.x !== void 0) {\n if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z || cache[3] !== v.w) {\n gl.uniform4f(this.addr, v.x, v.y, v.z, v.w);\n cache[0] = v.x;\n cache[1] = v.y;\n cache[2] = v.z;\n cache[3] = v.w;\n }\n } else {\n if (arraysEqual(cache, v))\n return;\n gl.uniform4fv(this.addr, v);\n copyArray(cache, v);\n }\n}\nfunction setValueM2(gl, v) {\n const cache = this.cache;\n const elements = v.elements;\n if (elements === void 0) {\n if (arraysEqual(cache, v))\n return;\n gl.uniformMatrix2fv(this.addr, false, v);\n copyArray(cache, v);\n } else {\n if (arraysEqual(cache, elements))\n return;\n mat2array.set(elements);\n gl.uniformMatrix2fv(this.addr, false, mat2array);\n copyArray(cache, elements);\n }\n}\nfunction setValueM3(gl, v) {\n const cache = this.cache;\n const elements = v.elements;\n if (elements === void 0) {\n if (arraysEqual(cache, v))\n return;\n gl.uniformMatrix3fv(this.addr, false, v);\n copyArray(cache, v);\n } else {\n if (arraysEqual(cache, elements))\n return;\n mat3array.set(elements);\n gl.uniformMatrix3fv(this.addr, false, mat3array);\n copyArray(cache, elements);\n }\n}\nfunction setValueM4(gl, v) {\n const cache = this.cache;\n const elements = v.elements;\n if (elements === void 0) {\n if (arraysEqual(cache, v))\n return;\n gl.uniformMatrix4fv(this.addr, false, v);\n copyArray(cache, v);\n } else {\n if (arraysEqual(cache, elements))\n return;\n mat4array.set(elements);\n gl.uniformMatrix4fv(this.addr, false, mat4array);\n copyArray(cache, elements);\n }\n}\nfunction setValueV1i(gl, v) {\n const cache = this.cache;\n if (cache[0] === v)\n return;\n gl.uniform1i(this.addr, v);\n cache[0] = v;\n}\nfunction setValueV2i(gl, v) {\n const cache = this.cache;\n if (arraysEqual(cache, v))\n return;\n gl.uniform2iv(this.addr, v);\n copyArray(cache, v);\n}\nfunction setValueV3i(gl, v) {\n const cache = this.cache;\n if (arraysEqual(cache, v))\n return;\n gl.uniform3iv(this.addr, v);\n copyArray(cache, v);\n}\nfunction setValueV4i(gl, v) {\n const cache = this.cache;\n if (arraysEqual(cache, v))\n return;\n gl.uniform4iv(this.addr, v);\n copyArray(cache, v);\n}\nfunction setValueV1ui(gl, v) {\n const cache = this.cache;\n if (cache[0] === v)\n return;\n gl.uniform1ui(this.addr, v);\n cache[0] = v;\n}\nfunction setValueV2ui(gl, v) {\n const cache = this.cache;\n if (arraysEqual(cache, v))\n return;\n gl.uniform2uiv(this.addr, v);\n copyArray(cache, v);\n}\nfunction setValueV3ui(gl, v) {\n const cache = this.cache;\n if (arraysEqual(cache, v))\n return;\n gl.uniform3uiv(this.addr, v);\n copyArray(cache, v);\n}\nfunction setValueV4ui(gl, v) {\n const cache = this.cache;\n if (arraysEqual(cache, v))\n return;\n gl.uniform4uiv(this.addr, v);\n copyArray(cache, v);\n}\nfunction setValueT1(gl, v, textures) {\n const cache = this.cache;\n const unit = textures.allocateTextureUnit();\n if (cache[0] !== unit) {\n gl.uniform1i(this.addr, unit);\n cache[0] = unit;\n }\n textures.safeSetTexture2D(v || emptyTexture, unit);\n}\nfunction setValueT3D1(gl, v, textures) {\n const cache = this.cache;\n const unit = textures.allocateTextureUnit();\n if (cache[0] !== unit) {\n gl.uniform1i(this.addr, unit);\n cache[0] = unit;\n }\n textures.setTexture3D(v || emptyTexture3d, unit);\n}\nfunction setValueT6(gl, v, textures) {\n const cache = this.cache;\n const unit = textures.allocateTextureUnit();\n if (cache[0] !== unit) {\n gl.uniform1i(this.addr, unit);\n cache[0] = unit;\n }\n textures.safeSetTextureCube(v || emptyCubeTexture, unit);\n}\nfunction setValueT2DArray1(gl, v, textures) {\n const cache = this.cache;\n const unit = textures.allocateTextureUnit();\n if (cache[0] !== unit) {\n gl.uniform1i(this.addr, unit);\n cache[0] = unit;\n }\n textures.setTexture2DArray(v || emptyTexture2dArray, unit);\n}\nfunction getSingularSetter(type) {\n switch (type) {\n case 5126:\n return setValueV1f;\n case 35664:\n return setValueV2f;\n case 35665:\n return setValueV3f;\n case 35666:\n return setValueV4f;\n case 35674:\n return setValueM2;\n case 35675:\n return setValueM3;\n case 35676:\n return setValueM4;\n case 5124:\n case 35670:\n return setValueV1i;\n case 35667:\n case 35671:\n return setValueV2i;\n case 35668:\n case 35672:\n return setValueV3i;\n case 35669:\n case 35673:\n return setValueV4i;\n case 5125:\n return setValueV1ui;\n case 36294:\n return setValueV2ui;\n case 36295:\n return setValueV3ui;\n case 36296:\n return setValueV4ui;\n case 35678:\n case 36198:\n case 36298:\n case 36306:\n case 35682:\n return setValueT1;\n case 35679:\n case 36299:\n case 36307:\n return setValueT3D1;\n case 35680:\n case 36300:\n case 36308:\n case 36293:\n return setValueT6;\n case 36289:\n case 36303:\n case 36311:\n case 36292:\n return setValueT2DArray1;\n }\n}\nfunction setValueV1fArray(gl, v) {\n gl.uniform1fv(this.addr, v);\n}\nfunction setValueV2fArray(gl, v) {\n const data = flatten(v, this.size, 2);\n gl.uniform2fv(this.addr, data);\n}\nfunction setValueV3fArray(gl, v) {\n const data = flatten(v, this.size, 3);\n gl.uniform3fv(this.addr, data);\n}\nfunction setValueV4fArray(gl, v) {\n const data = flatten(v, this.size, 4);\n gl.uniform4fv(this.addr, data);\n}\nfunction setValueM2Array(gl, v) {\n const data = flatten(v, this.size, 4);\n gl.uniformMatrix2fv(this.addr, false, data);\n}\nfunction setValueM3Array(gl, v) {\n const data = flatten(v, this.size, 9);\n gl.uniformMatrix3fv(this.addr, false, data);\n}\nfunction setValueM4Array(gl, v) {\n const data = flatten(v, this.size, 16);\n gl.uniformMatrix4fv(this.addr, false, data);\n}\nfunction setValueV1iArray(gl, v) {\n gl.uniform1iv(this.addr, v);\n}\nfunction setValueV2iArray(gl, v) {\n gl.uniform2iv(this.addr, v);\n}\nfunction setValueV3iArray(gl, v) {\n gl.uniform3iv(this.addr, v);\n}\nfunction setValueV4iArray(gl, v) {\n gl.uniform4iv(this.addr, v);\n}\nfunction setValueV1uiArray(gl, v) {\n gl.uniform1uiv(this.addr, v);\n}\nfunction setValueV2uiArray(gl, v) {\n gl.uniform2uiv(this.addr, v);\n}\nfunction setValueV3uiArray(gl, v) {\n gl.uniform3uiv(this.addr, v);\n}\nfunction setValueV4uiArray(gl, v) {\n gl.uniform4uiv(this.addr, v);\n}\nfunction setValueT1Array(gl, v, textures) {\n const n = v.length;\n const units = allocTexUnits(textures, n);\n gl.uniform1iv(this.addr, units);\n for (let i = 0; i !== n; ++i) {\n textures.safeSetTexture2D(v[i] || emptyTexture, units[i]);\n }\n}\nfunction setValueT3DArray(gl, v, textures) {\n const n = v.length;\n const units = allocTexUnits(textures, n);\n gl.uniform1iv(this.addr, units);\n for (let i = 0; i !== n; ++i) {\n textures.setTexture3D(v[i] || emptyTexture3d, units[i]);\n }\n}\nfunction setValueT6Array(gl, v, textures) {\n const n = v.length;\n const units = allocTexUnits(textures, n);\n gl.uniform1iv(this.addr, units);\n for (let i = 0; i !== n; ++i) {\n textures.safeSetTextureCube(v[i] || emptyCubeTexture, units[i]);\n }\n}\nfunction setValueT2DArrayArray(gl, v, textures) {\n const n = v.length;\n const units = allocTexUnits(textures, n);\n gl.uniform1iv(this.addr, units);\n for (let i = 0; i !== n; ++i) {\n textures.setTexture2DArray(v[i] || emptyTexture2dArray, units[i]);\n }\n}\nfunction getPureArraySetter(type) {\n switch (type) {\n case 5126:\n return setValueV1fArray;\n case 35664:\n return setValueV2fArray;\n case 35665:\n return setValueV3fArray;\n case 35666:\n return setValueV4fArray;\n case 35674:\n return setValueM2Array;\n case 35675:\n return setValueM3Array;\n case 35676:\n return setValueM4Array;\n case 5124:\n case 35670:\n return setValueV1iArray;\n case 35667:\n case 35671:\n return setValueV2iArray;\n case 35668:\n case 35672:\n return setValueV3iArray;\n case 35669:\n case 35673:\n return setValueV4iArray;\n case 5125:\n return setValueV1uiArray;\n case 36294:\n return setValueV2uiArray;\n case 36295:\n return setValueV3uiArray;\n case 36296:\n return setValueV4uiArray;\n case 35678:\n case 36198:\n case 36298:\n case 36306:\n case 35682:\n return setValueT1Array;\n case 35679:\n case 36299:\n case 36307:\n return setValueT3DArray;\n case 35680:\n case 36300:\n case 36308:\n case 36293:\n return setValueT6Array;\n case 36289:\n case 36303:\n case 36311:\n case 36292:\n return setValueT2DArrayArray;\n }\n}\nfunction SingleUniform(id, activeInfo, addr) {\n this.id = id;\n this.addr = addr;\n this.cache = [];\n this.setValue = getSingularSetter(activeInfo.type);\n}\nfunction PureArrayUniform(id, activeInfo, addr) {\n this.id = id;\n this.addr = addr;\n this.cache = [];\n this.size = activeInfo.size;\n this.setValue = getPureArraySetter(activeInfo.type);\n}\nPureArrayUniform.prototype.updateCache = function(data) {\n const cache = this.cache;\n if (data instanceof Float32Array && cache.length !== data.length) {\n this.cache = new Float32Array(data.length);\n }\n copyArray(cache, data);\n};\nfunction StructuredUniform(id) {\n this.id = id;\n this.seq = [];\n this.map = {};\n}\nStructuredUniform.prototype.setValue = function(gl, value, textures) {\n const seq = this.seq;\n for (let i = 0, n = seq.length; i !== n; ++i) {\n const u = seq[i];\n u.setValue(gl, value[u.id], textures);\n }\n};\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\nfunction addUniform(container, uniformObject) {\n container.seq.push(uniformObject);\n container.map[uniformObject.id] = uniformObject;\n}\nfunction parseUniform(activeInfo, addr, container) {\n const path = activeInfo.name, pathLength = path.length;\n RePathPart.lastIndex = 0;\n while (true) {\n const match = RePathPart.exec(path), matchEnd = RePathPart.lastIndex;\n let id = match[1];\n const idIsIndex = match[2] === \"]\", subscript = match[3];\n if (idIsIndex)\n id = id | 0;\n if (subscript === void 0 || subscript === \"[\" && matchEnd + 2 === pathLength) {\n addUniform(container, subscript === void 0 ? new SingleUniform(id, activeInfo, addr) : new PureArrayUniform(id, activeInfo, addr));\n break;\n } else {\n const map = container.map;\n let next = map[id];\n if (next === void 0) {\n next = new StructuredUniform(id);\n addUniform(container, next);\n }\n container = next;\n }\n }\n}\nfunction WebGLUniforms(gl, program) {\n this.seq = [];\n this.map = {};\n const n = gl.getProgramParameter(program, 35718);\n for (let i = 0; i < n; ++i) {\n const info = gl.getActiveUniform(program, i), addr = gl.getUniformLocation(program, info.name);\n parseUniform(info, addr, this);\n }\n}\nWebGLUniforms.prototype.setValue = function(gl, name, value, textures) {\n const u = this.map[name];\n if (u !== void 0)\n u.setValue(gl, value, textures);\n};\nWebGLUniforms.prototype.setOptional = function(gl, object, name) {\n const v = object[name];\n if (v !== void 0)\n this.setValue(gl, name, v);\n};\nWebGLUniforms.upload = function(gl, seq, values, textures) {\n for (let i = 0, n = seq.length; i !== n; ++i) {\n const u = seq[i], v = values[u.id];\n if (v.needsUpdate !== false) {\n u.setValue(gl, v.value, textures);\n }\n }\n};\nWebGLUniforms.seqWithValue = function(seq, values) {\n const r = [];\n for (let i = 0, n = seq.length; i !== n; ++i) {\n const u = seq[i];\n if (u.id in values)\n r.push(u);\n }\n return r;\n};\nfunction WebGLShader(gl, type, string) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, string);\n gl.compileShader(shader);\n return shader;\n}\nlet programIdCount = 0;\nfunction addLineNumbers(string) {\n const lines = string.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n lines[i] = i + 1 + \": \" + lines[i];\n }\n return lines.join(\"\\n\");\n}\nfunction getEncodingComponents(encoding) {\n switch (encoding) {\n case LinearEncoding:\n return [\"Linear\", \"( value )\"];\n case sRGBEncoding:\n return [\"sRGB\", \"( value )\"];\n case RGBEEncoding:\n return [\"RGBE\", \"( value )\"];\n case RGBM7Encoding:\n return [\"RGBM\", \"( value, 7.0 )\"];\n case RGBM16Encoding:\n return [\"RGBM\", \"( value, 16.0 )\"];\n case RGBDEncoding:\n return [\"RGBD\", \"( value, 256.0 )\"];\n case GammaEncoding:\n return [\"Gamma\", \"( value, float( GAMMA_FACTOR ) )\"];\n default:\n console.warn(\"THREE.WebGLProgram: Unsupported encoding:\", encoding);\n return [\"Linear\", \"( value )\"];\n }\n}\nfunction getShaderErrors(gl, shader, type) {\n const status = gl.getShaderParameter(shader, 35713);\n const errors = gl.getShaderInfoLog(shader).trim();\n if (status && errors === \"\")\n return \"\";\n return type.toUpperCase() + \"\\n\\n\" + errors + \"\\n\\n\" + addLineNumbers(gl.getShaderSource(shader));\n}\nfunction getTexelDecodingFunction(functionName, encoding) {\n const components = getEncodingComponents(encoding);\n return \"vec4 \" + functionName + \"( vec4 value ) { return \" + components[0] + \"ToLinear\" + components[1] + \"; }\";\n}\nfunction getTexelEncodingFunction(functionName, encoding) {\n const components = getEncodingComponents(encoding);\n return \"vec4 \" + functionName + \"( vec4 value ) { return LinearTo\" + components[0] + components[1] + \"; }\";\n}\nfunction getToneMappingFunction(functionName, toneMapping) {\n let toneMappingName;\n switch (toneMapping) {\n case LinearToneMapping:\n toneMappingName = \"Linear\";\n break;\n case ReinhardToneMapping:\n toneMappingName = \"Reinhard\";\n break;\n case CineonToneMapping:\n toneMappingName = \"OptimizedCineon\";\n break;\n case ACESFilmicToneMapping:\n toneMappingName = \"ACESFilmic\";\n break;\n case CustomToneMapping:\n toneMappingName = \"Custom\";\n break;\n default:\n console.warn(\"THREE.WebGLProgram: Unsupported toneMapping:\", toneMapping);\n toneMappingName = \"Linear\";\n }\n return \"vec3 \" + functionName + \"( vec3 color ) { return \" + toneMappingName + \"ToneMapping( color ); }\";\n}\nfunction generateExtensions(parameters) {\n const chunks = [\n parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === \"physical\" ? \"#extension GL_OES_standard_derivatives : enable\" : \"\",\n (parameters.extensionFragDepth || parameters.logarithmicDepthBuffer) && parameters.rendererExtensionFragDepth ? \"#extension GL_EXT_frag_depth : enable\" : \"\",\n parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ? \"#extension GL_EXT_draw_buffers : require\" : \"\",\n (parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission) && parameters.rendererExtensionShaderTextureLod ? \"#extension GL_EXT_shader_texture_lod : enable\" : \"\"\n ];\n return chunks.filter(filterEmptyLine).join(\"\\n\");\n}\nfunction generateDefines(defines) {\n const chunks = [];\n for (const name in defines) {\n const value = defines[name];\n if (value === false)\n continue;\n chunks.push(\"#define \" + name + \" \" + value);\n }\n return chunks.join(\"\\n\");\n}\nfunction fetchAttributeLocations(gl, program) {\n const attributes = {};\n const n = gl.getProgramParameter(program, 35721);\n for (let i = 0; i < n; i++) {\n const info = gl.getActiveAttrib(program, i);\n const name = info.name;\n let locationSize = 1;\n if (info.type === 35674)\n locationSize = 2;\n if (info.type === 35675)\n locationSize = 3;\n if (info.type === 35676)\n locationSize = 4;\n attributes[name] = {\n type: info.type,\n location: gl.getAttribLocation(program, name),\n locationSize\n };\n }\n return attributes;\n}\nfunction filterEmptyLine(string) {\n return string !== \"\";\n}\nfunction replaceLightNums(string, parameters) {\n return string.replace(/NUM_DIR_LIGHTS/g, parameters.numDirLights).replace(/NUM_SPOT_LIGHTS/g, parameters.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, parameters.numPointLights).replace(/NUM_HEMI_LIGHTS/g, parameters.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows);\n}\nfunction replaceClippingPlaneNums(string, parameters) {\n return string.replace(/NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, parameters.numClippingPlanes - parameters.numClipIntersection);\n}\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\nfunction resolveIncludes(string) {\n return string.replace(includePattern, includeReplacer);\n}\nfunction includeReplacer(match, include) {\n const string = ShaderChunk[include];\n if (string === void 0) {\n throw new Error(\"Can not resolve #include <\" + include + \">\");\n }\n return resolveIncludes(string);\n}\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\nfunction unrollLoops(string) {\n return string.replace(unrollLoopPattern, loopReplacer).replace(deprecatedUnrollLoopPattern, deprecatedLoopReplacer);\n}\nfunction deprecatedLoopReplacer(match, start, end, snippet) {\n console.warn(\"WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.\");\n return loopReplacer(match, start, end, snippet);\n}\nfunction loopReplacer(match, start, end, snippet) {\n let string = \"\";\n for (let i = parseInt(start); i < parseInt(end); i++) {\n string += snippet.replace(/\\[\\s*i\\s*\\]/g, \"[ \" + i + \" ]\").replace(/UNROLLED_LOOP_INDEX/g, i);\n }\n return string;\n}\nfunction generatePrecision(parameters) {\n let precisionstring = \"precision \" + parameters.precision + \" float;\\nprecision \" + parameters.precision + \" int;\";\n if (parameters.precision === \"highp\") {\n precisionstring += \"\\n#define HIGH_PRECISION\";\n } else if (parameters.precision === \"mediump\") {\n precisionstring += \"\\n#define MEDIUM_PRECISION\";\n } else if (parameters.precision === \"lowp\") {\n precisionstring += \"\\n#define LOW_PRECISION\";\n }\n return precisionstring;\n}\nfunction generateShadowMapTypeDefine(parameters) {\n let shadowMapTypeDefine = \"SHADOWMAP_TYPE_BASIC\";\n if (parameters.shadowMapType === PCFShadowMap) {\n shadowMapTypeDefine = \"SHADOWMAP_TYPE_PCF\";\n } else if (parameters.shadowMapType === PCFSoftShadowMap) {\n shadowMapTypeDefine = \"SHADOWMAP_TYPE_PCF_SOFT\";\n } else if (parameters.shadowMapType === VSMShadowMap) {\n shadowMapTypeDefine = \"SHADOWMAP_TYPE_VSM\";\n }\n return shadowMapTypeDefine;\n}\nfunction generateEnvMapTypeDefine(parameters) {\n let envMapTypeDefine = \"ENVMAP_TYPE_CUBE\";\n if (parameters.envMap) {\n switch (parameters.envMapMode) {\n case CubeReflectionMapping:\n case CubeRefractionMapping:\n envMapTypeDefine = \"ENVMAP_TYPE_CUBE\";\n break;\n case CubeUVReflectionMapping:\n case CubeUVRefractionMapping:\n envMapTypeDefine = \"ENVMAP_TYPE_CUBE_UV\";\n break;\n }\n }\n return envMapTypeDefine;\n}\nfunction generateEnvMapModeDefine(parameters) {\n let envMapModeDefine = \"ENVMAP_MODE_REFLECTION\";\n if (parameters.envMap) {\n switch (parameters.envMapMode) {\n case CubeRefractionMapping:\n case CubeUVRefractionMapping:\n envMapModeDefine = \"ENVMAP_MODE_REFRACTION\";\n break;\n }\n }\n return envMapModeDefine;\n}\nfunction generateEnvMapBlendingDefine(parameters) {\n let envMapBlendingDefine = \"ENVMAP_BLENDING_NONE\";\n if (parameters.envMap) {\n switch (parameters.combine) {\n case MultiplyOperation:\n envMapBlendingDefine = \"ENVMAP_BLENDING_MULTIPLY\";\n break;\n case MixOperation:\n envMapBlendingDefine = \"ENVMAP_BLENDING_MIX\";\n break;\n case AddOperation:\n envMapBlendingDefine = \"ENVMAP_BLENDING_ADD\";\n break;\n }\n }\n return envMapBlendingDefine;\n}\nfunction WebGLProgram(renderer, cacheKey, parameters, bindingStates) {\n const gl = renderer.getContext();\n const defines = parameters.defines;\n let vertexShader = parameters.vertexShader;\n let fragmentShader = parameters.fragmentShader;\n const shadowMapTypeDefine = generateShadowMapTypeDefine(parameters);\n const envMapTypeDefine = generateEnvMapTypeDefine(parameters);\n const envMapModeDefine = generateEnvMapModeDefine(parameters);\n const envMapBlendingDefine = generateEnvMapBlendingDefine(parameters);\n const gammaFactorDefine = renderer.gammaFactor > 0 ? renderer.gammaFactor : 1;\n const customExtensions = parameters.isWebGL2 ? \"\" : generateExtensions(parameters);\n const customDefines = generateDefines(defines);\n const program = gl.createProgram();\n let prefixVertex, prefixFragment;\n let versionString = parameters.glslVersion ? \"#version \" + parameters.glslVersion + \"\\n\" : \"\";\n if (parameters.isRawShaderMaterial) {\n prefixVertex = [\n customDefines\n ].filter(filterEmptyLine).join(\"\\n\");\n if (prefixVertex.length > 0) {\n prefixVertex += \"\\n\";\n }\n prefixFragment = [\n customExtensions,\n customDefines\n ].filter(filterEmptyLine).join(\"\\n\");\n if (prefixFragment.length > 0) {\n prefixFragment += \"\\n\";\n }\n } else {\n prefixVertex = [\n generatePrecision(parameters),\n \"#define SHADER_NAME \" + parameters.shaderName,\n customDefines,\n parameters.instancing ? \"#define USE_INSTANCING\" : \"\",\n parameters.instancingColor ? \"#define USE_INSTANCING_COLOR\" : \"\",\n parameters.supportsVertexTextures ? \"#define VERTEX_TEXTURES\" : \"\",\n \"#define GAMMA_FACTOR \" + gammaFactorDefine,\n \"#define MAX_BONES \" + parameters.maxBones,\n parameters.useFog && parameters.fog ? \"#define USE_FOG\" : \"\",\n parameters.useFog && parameters.fogExp2 ? \"#define FOG_EXP2\" : \"\",\n parameters.map ? \"#define USE_MAP\" : \"\",\n parameters.envMap ? \"#define USE_ENVMAP\" : \"\",\n parameters.envMap ? \"#define \" + envMapModeDefine : \"\",\n parameters.lightMap ? \"#define USE_LIGHTMAP\" : \"\",\n parameters.aoMap ? \"#define USE_AOMAP\" : \"\",\n parameters.emissiveMap ? \"#define USE_EMISSIVEMAP\" : \"\",\n parameters.bumpMap ? \"#define USE_BUMPMAP\" : \"\",\n parameters.normalMap ? \"#define USE_NORMALMAP\" : \"\",\n parameters.normalMap && parameters.objectSpaceNormalMap ? \"#define OBJECTSPACE_NORMALMAP\" : \"\",\n parameters.normalMap && parameters.tangentSpaceNormalMap ? \"#define TANGENTSPACE_NORMALMAP\" : \"\",\n parameters.clearcoatMap ? \"#define USE_CLEARCOATMAP\" : \"\",\n parameters.clearcoatRoughnessMap ? \"#define USE_CLEARCOAT_ROUGHNESSMAP\" : \"\",\n parameters.clearcoatNormalMap ? \"#define USE_CLEARCOAT_NORMALMAP\" : \"\",\n parameters.displacementMap && parameters.supportsVertexTextures ? \"#define USE_DISPLACEMENTMAP\" : \"\",\n parameters.specularMap ? \"#define USE_SPECULARMAP\" : \"\",\n parameters.specularIntensityMap ? \"#define USE_SPECULARINTENSITYMAP\" : \"\",\n parameters.specularColorMap ? \"#define USE_SPECULARCOLORMAP\" : \"\",\n parameters.roughnessMap ? \"#define USE_ROUGHNESSMAP\" : \"\",\n parameters.metalnessMap ? \"#define USE_METALNESSMAP\" : \"\",\n parameters.alphaMap ? \"#define USE_ALPHAMAP\" : \"\",\n parameters.transmission ? \"#define USE_TRANSMISSION\" : \"\",\n parameters.transmissionMap ? \"#define USE_TRANSMISSIONMAP\" : \"\",\n parameters.thicknessMap ? \"#define USE_THICKNESSMAP\" : \"\",\n parameters.sheenColorMap ? \"#define USE_SHEENCOLORMAP\" : \"\",\n parameters.sheenRoughnessMap ? \"#define USE_SHEENROUGHNESSMAP\" : \"\",\n parameters.vertexTangents ? \"#define USE_TANGENT\" : \"\",\n parameters.vertexColors ? \"#define USE_COLOR\" : \"\",\n parameters.vertexAlphas ? \"#define USE_COLOR_ALPHA\" : \"\",\n parameters.vertexUvs ? \"#define USE_UV\" : \"\",\n parameters.uvsVertexOnly ? \"#define UVS_VERTEX_ONLY\" : \"\",\n parameters.flatShading ? \"#define FLAT_SHADED\" : \"\",\n parameters.skinning ? \"#define USE_SKINNING\" : \"\",\n parameters.useVertexTexture ? \"#define BONE_TEXTURE\" : \"\",\n parameters.morphTargets ? \"#define USE_MORPHTARGETS\" : \"\",\n parameters.morphNormals && parameters.flatShading === false ? \"#define USE_MORPHNORMALS\" : \"\",\n parameters.morphTargets && parameters.isWebGL2 ? \"#define MORPHTARGETS_TEXTURE\" : \"\",\n parameters.morphTargets && parameters.isWebGL2 ? \"#define MORPHTARGETS_COUNT \" + parameters.morphTargetsCount : \"\",\n parameters.doubleSided ? \"#define DOUBLE_SIDED\" : \"\",\n parameters.flipSided ? \"#define FLIP_SIDED\" : \"\",\n parameters.shadowMapEnabled ? \"#define USE_SHADOWMAP\" : \"\",\n parameters.shadowMapEnabled ? \"#define \" + shadowMapTypeDefine : \"\",\n parameters.sizeAttenuation ? \"#define USE_SIZEATTENUATION\" : \"\",\n parameters.logarithmicDepthBuffer ? \"#define USE_LOGDEPTHBUF\" : \"\",\n parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ? \"#define USE_LOGDEPTHBUF_EXT\" : \"\",\n \"uniform mat4 modelMatrix;\",\n \"uniform mat4 modelViewMatrix;\",\n \"uniform mat4 projectionMatrix;\",\n \"uniform mat4 viewMatrix;\",\n \"uniform mat3 normalMatrix;\",\n \"uniform vec3 cameraPosition;\",\n \"uniform bool isOrthographic;\",\n \"#ifdef USE_INSTANCING\",\n \"\tattribute mat4 instanceMatrix;\",\n \"#endif\",\n \"#ifdef USE_INSTANCING_COLOR\",\n \"\tattribute vec3 instanceColor;\",\n \"#endif\",\n \"attribute vec3 position;\",\n \"attribute vec3 normal;\",\n \"attribute vec2 uv;\",\n \"#ifdef USE_TANGENT\",\n \"\tattribute vec4 tangent;\",\n \"#endif\",\n \"#if defined( USE_COLOR_ALPHA )\",\n \"\tattribute vec4 color;\",\n \"#elif defined( USE_COLOR )\",\n \"\tattribute vec3 color;\",\n \"#endif\",\n \"#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )\",\n \"\tattribute vec3 morphTarget0;\",\n \"\tattribute vec3 morphTarget1;\",\n \"\tattribute vec3 morphTarget2;\",\n \"\tattribute vec3 morphTarget3;\",\n \"\t#ifdef USE_MORPHNORMALS\",\n \"\t\tattribute vec3 morphNormal0;\",\n \"\t\tattribute vec3 morphNormal1;\",\n \"\t\tattribute vec3 morphNormal2;\",\n \"\t\tattribute vec3 morphNormal3;\",\n \"\t#else\",\n \"\t\tattribute vec3 morphTarget4;\",\n \"\t\tattribute vec3 morphTarget5;\",\n \"\t\tattribute vec3 morphTarget6;\",\n \"\t\tattribute vec3 morphTarget7;\",\n \"\t#endif\",\n \"#endif\",\n \"#ifdef USE_SKINNING\",\n \"\tattribute vec4 skinIndex;\",\n \"\tattribute vec4 skinWeight;\",\n \"#endif\",\n \"\\n\"\n ].filter(filterEmptyLine).join(\"\\n\");\n prefixFragment = [\n customExtensions,\n generatePrecision(parameters),\n \"#define SHADER_NAME \" + parameters.shaderName,\n customDefines,\n \"#define GAMMA_FACTOR \" + gammaFactorDefine,\n parameters.useFog && parameters.fog ? \"#define USE_FOG\" : \"\",\n parameters.useFog && parameters.fogExp2 ? \"#define FOG_EXP2\" : \"\",\n parameters.map ? \"#define USE_MAP\" : \"\",\n parameters.matcap ? \"#define USE_MATCAP\" : \"\",\n parameters.envMap ? \"#define USE_ENVMAP\" : \"\",\n parameters.envMap ? \"#define \" + envMapTypeDefine : \"\",\n parameters.envMap ? \"#define \" + envMapModeDefine : \"\",\n parameters.envMap ? \"#define \" + envMapBlendingDefine : \"\",\n parameters.lightMap ? \"#define USE_LIGHTMAP\" : \"\",\n parameters.aoMap ? \"#define USE_AOMAP\" : \"\",\n parameters.emissiveMap ? \"#define USE_EMISSIVEMAP\" : \"\",\n parameters.bumpMap ? \"#define USE_BUMPMAP\" : \"\",\n parameters.normalMap ? \"#define USE_NORMALMAP\" : \"\",\n parameters.normalMap && parameters.objectSpaceNormalMap ? \"#define OBJECTSPACE_NORMALMAP\" : \"\",\n parameters.normalMap && parameters.tangentSpaceNormalMap ? \"#define TANGENTSPACE_NORMALMAP\" : \"\",\n parameters.clearcoat ? \"#define USE_CLEARCOAT\" : \"\",\n parameters.clearcoatMap ? \"#define USE_CLEARCOATMAP\" : \"\",\n parameters.clearcoatRoughnessMap ? \"#define USE_CLEARCOAT_ROUGHNESSMAP\" : \"\",\n parameters.clearcoatNormalMap ? \"#define USE_CLEARCOAT_NORMALMAP\" : \"\",\n parameters.specularMap ? \"#define USE_SPECULARMAP\" : \"\",\n parameters.specularIntensityMap ? \"#define USE_SPECULARINTENSITYMAP\" : \"\",\n parameters.specularColorMap ? \"#define USE_SPECULARCOLORMAP\" : \"\",\n parameters.roughnessMap ? \"#define USE_ROUGHNESSMAP\" : \"\",\n parameters.metalnessMap ? \"#define USE_METALNESSMAP\" : \"\",\n parameters.alphaMap ? \"#define USE_ALPHAMAP\" : \"\",\n parameters.alphaTest ? \"#define USE_ALPHATEST\" : \"\",\n parameters.sheen ? \"#define USE_SHEEN\" : \"\",\n parameters.sheenColorMap ? \"#define USE_SHEENCOLORMAP\" : \"\",\n parameters.sheenRoughnessMap ? \"#define USE_SHEENROUGHNESSMAP\" : \"\",\n parameters.transmission ? \"#define USE_TRANSMISSION\" : \"\",\n parameters.transmissionMap ? \"#define USE_TRANSMISSIONMAP\" : \"\",\n parameters.thicknessMap ? \"#define USE_THICKNESSMAP\" : \"\",\n parameters.vertexTangents ? \"#define USE_TANGENT\" : \"\",\n parameters.vertexColors || parameters.instancingColor ? \"#define USE_COLOR\" : \"\",\n parameters.vertexAlphas ? \"#define USE_COLOR_ALPHA\" : \"\",\n parameters.vertexUvs ? \"#define USE_UV\" : \"\",\n parameters.uvsVertexOnly ? \"#define UVS_VERTEX_ONLY\" : \"\",\n parameters.gradientMap ? \"#define USE_GRADIENTMAP\" : \"\",\n parameters.flatShading ? \"#define FLAT_SHADED\" : \"\",\n parameters.doubleSided ? \"#define DOUBLE_SIDED\" : \"\",\n parameters.flipSided ? \"#define FLIP_SIDED\" : \"\",\n parameters.shadowMapEnabled ? \"#define USE_SHADOWMAP\" : \"\",\n parameters.shadowMapEnabled ? \"#define \" + shadowMapTypeDefine : \"\",\n parameters.premultipliedAlpha ? \"#define PREMULTIPLIED_ALPHA\" : \"\",\n parameters.physicallyCorrectLights ? \"#define PHYSICALLY_CORRECT_LIGHTS\" : \"\",\n parameters.logarithmicDepthBuffer ? \"#define USE_LOGDEPTHBUF\" : \"\",\n parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ? \"#define USE_LOGDEPTHBUF_EXT\" : \"\",\n (parameters.extensionShaderTextureLOD || parameters.envMap) && parameters.rendererExtensionShaderTextureLod ? \"#define TEXTURE_LOD_EXT\" : \"\",\n \"uniform mat4 viewMatrix;\",\n \"uniform vec3 cameraPosition;\",\n \"uniform bool isOrthographic;\",\n parameters.toneMapping !== NoToneMapping ? \"#define TONE_MAPPING\" : \"\",\n parameters.toneMapping !== NoToneMapping ? ShaderChunk[\"tonemapping_pars_fragment\"] : \"\",\n parameters.toneMapping !== NoToneMapping ? getToneMappingFunction(\"toneMapping\", parameters.toneMapping) : \"\",\n parameters.dithering ? \"#define DITHERING\" : \"\",\n parameters.format === RGBFormat ? \"#define OPAQUE\" : \"\",\n ShaderChunk[\"encodings_pars_fragment\"],\n parameters.map ? getTexelDecodingFunction(\"mapTexelToLinear\", parameters.mapEncoding) : \"\",\n parameters.matcap ? getTexelDecodingFunction(\"matcapTexelToLinear\", parameters.matcapEncoding) : \"\",\n parameters.envMap ? getTexelDecodingFunction(\"envMapTexelToLinear\", parameters.envMapEncoding) : \"\",\n parameters.emissiveMap ? getTexelDecodingFunction(\"emissiveMapTexelToLinear\", parameters.emissiveMapEncoding) : \"\",\n parameters.specularColorMap ? getTexelDecodingFunction(\"specularColorMapTexelToLinear\", parameters.specularColorMapEncoding) : \"\",\n parameters.sheenColorMap ? getTexelDecodingFunction(\"sheenColorMapTexelToLinear\", parameters.sheenColorMapEncoding) : \"\",\n parameters.lightMap ? getTexelDecodingFunction(\"lightMapTexelToLinear\", parameters.lightMapEncoding) : \"\",\n getTexelEncodingFunction(\"linearToOutputTexel\", parameters.outputEncoding),\n parameters.depthPacking ? \"#define DEPTH_PACKING \" + parameters.depthPacking : \"\",\n \"\\n\"\n ].filter(filterEmptyLine).join(\"\\n\");\n }\n vertexShader = resolveIncludes(vertexShader);\n vertexShader = replaceLightNums(vertexShader, parameters);\n vertexShader = replaceClippingPlaneNums(vertexShader, parameters);\n fragmentShader = resolveIncludes(fragmentShader);\n fragmentShader = replaceLightNums(fragmentShader, parameters);\n fragmentShader = replaceClippingPlaneNums(fragmentShader, parameters);\n vertexShader = unrollLoops(vertexShader);\n fragmentShader = unrollLoops(fragmentShader);\n if (parameters.isWebGL2 && parameters.isRawShaderMaterial !== true) {\n versionString = \"#version 300 es\\n\";\n prefixVertex = [\n \"precision mediump sampler2DArray;\",\n \"#define attribute in\",\n \"#define varying out\",\n \"#define texture2D texture\"\n ].join(\"\\n\") + \"\\n\" + prefixVertex;\n prefixFragment = [\n \"#define varying in\",\n parameters.glslVersion === GLSL3 ? \"\" : \"out highp vec4 pc_fragColor;\",\n parameters.glslVersion === GLSL3 ? \"\" : \"#define gl_FragColor pc_fragColor\",\n \"#define gl_FragDepthEXT gl_FragDepth\",\n \"#define texture2D texture\",\n \"#define textureCube texture\",\n \"#define texture2DProj textureProj\",\n \"#define texture2DLodEXT textureLod\",\n \"#define texture2DProjLodEXT textureProjLod\",\n \"#define textureCubeLodEXT textureLod\",\n \"#define texture2DGradEXT textureGrad\",\n \"#define texture2DProjGradEXT textureProjGrad\",\n \"#define textureCubeGradEXT textureGrad\"\n ].join(\"\\n\") + \"\\n\" + prefixFragment;\n }\n const vertexGlsl = versionString + prefixVertex + vertexShader;\n const fragmentGlsl = versionString + prefixFragment + fragmentShader;\n const glVertexShader = WebGLShader(gl, 35633, vertexGlsl);\n const glFragmentShader = WebGLShader(gl, 35632, fragmentGlsl);\n gl.attachShader(program, glVertexShader);\n gl.attachShader(program, glFragmentShader);\n if (parameters.index0AttributeName !== void 0) {\n gl.bindAttribLocation(program, 0, parameters.index0AttributeName);\n } else if (parameters.morphTargets === true) {\n gl.bindAttribLocation(program, 0, \"position\");\n }\n gl.linkProgram(program);\n if (renderer.debug.checkShaderErrors) {\n const programLog = gl.getProgramInfoLog(program).trim();\n const vertexLog = gl.getShaderInfoLog(glVertexShader).trim();\n const fragmentLog = gl.getShaderInfoLog(glFragmentShader).trim();\n let runnable = true;\n let haveDiagnostics = true;\n if (gl.getProgramParameter(program, 35714) === false) {\n runnable = false;\n const vertexErrors = getShaderErrors(gl, glVertexShader, \"vertex\");\n const fragmentErrors = getShaderErrors(gl, glFragmentShader, \"fragment\");\n console.error(\"THREE.WebGLProgram: Shader Error \" + gl.getError() + \" - VALIDATE_STATUS \" + gl.getProgramParameter(program, 35715) + \"\\n\\nProgram Info Log: \" + programLog + \"\\n\" + vertexErrors + \"\\n\" + fragmentErrors);\n } else if (programLog !== \"\") {\n console.warn(\"THREE.WebGLProgram: Program Info Log:\", programLog);\n } else if (vertexLog === \"\" || fragmentLog === \"\") {\n haveDiagnostics = false;\n }\n if (haveDiagnostics) {\n this.diagnostics = {\n runnable,\n programLog,\n vertexShader: {\n log: vertexLog,\n prefix: prefixVertex\n },\n fragmentShader: {\n log: fragmentLog,\n prefix: prefixFragment\n }\n };\n }\n }\n gl.deleteShader(glVertexShader);\n gl.deleteShader(glFragmentShader);\n let cachedUniforms;\n this.getUniforms = function() {\n if (cachedUniforms === void 0) {\n cachedUniforms = new WebGLUniforms(gl, program);\n }\n return cachedUniforms;\n };\n let cachedAttributes;\n this.getAttributes = function() {\n if (cachedAttributes === void 0) {\n cachedAttributes = fetchAttributeLocations(gl, program);\n }\n return cachedAttributes;\n };\n this.destroy = function() {\n bindingStates.releaseStatesOfProgram(this);\n gl.deleteProgram(program);\n this.program = void 0;\n };\n this.name = parameters.shaderName;\n this.id = programIdCount++;\n this.cacheKey = cacheKey;\n this.usedTimes = 1;\n this.program = program;\n this.vertexShader = glVertexShader;\n this.fragmentShader = glFragmentShader;\n return this;\n}\nfunction WebGLPrograms(renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping) {\n const programs = [];\n const isWebGL2 = capabilities.isWebGL2;\n const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n const floatVertexTextures = capabilities.floatVertexTextures;\n const maxVertexUniforms = capabilities.maxVertexUniforms;\n const vertexTextures = capabilities.vertexTextures;\n let precision = capabilities.precision;\n const shaderIDs = {\n MeshDepthMaterial: \"depth\",\n MeshDistanceMaterial: \"distanceRGBA\",\n MeshNormalMaterial: \"normal\",\n MeshBasicMaterial: \"basic\",\n MeshLambertMaterial: \"lambert\",\n MeshPhongMaterial: \"phong\",\n MeshToonMaterial: \"toon\",\n MeshStandardMaterial: \"physical\",\n MeshPhysicalMaterial: \"physical\",\n MeshMatcapMaterial: \"matcap\",\n LineBasicMaterial: \"basic\",\n LineDashedMaterial: \"dashed\",\n PointsMaterial: \"points\",\n ShadowMaterial: \"shadow\",\n SpriteMaterial: \"sprite\"\n };\n const parameterNames = [\n \"precision\",\n \"isWebGL2\",\n \"supportsVertexTextures\",\n \"outputEncoding\",\n \"instancing\",\n \"instancingColor\",\n \"map\",\n \"mapEncoding\",\n \"matcap\",\n \"matcapEncoding\",\n \"envMap\",\n \"envMapMode\",\n \"envMapEncoding\",\n \"envMapCubeUV\",\n \"lightMap\",\n \"lightMapEncoding\",\n \"aoMap\",\n \"emissiveMap\",\n \"emissiveMapEncoding\",\n \"bumpMap\",\n \"normalMap\",\n \"objectSpaceNormalMap\",\n \"tangentSpaceNormalMap\",\n \"clearcoat\",\n \"clearcoatMap\",\n \"clearcoatRoughnessMap\",\n \"clearcoatNormalMap\",\n \"displacementMap\",\n \"specularMap\",\n ,\n \"roughnessMap\",\n \"metalnessMap\",\n \"gradientMap\",\n \"alphaMap\",\n \"alphaTest\",\n \"combine\",\n \"vertexColors\",\n \"vertexAlphas\",\n \"vertexTangents\",\n \"vertexUvs\",\n \"uvsVertexOnly\",\n \"fog\",\n \"useFog\",\n \"fogExp2\",\n \"flatShading\",\n \"sizeAttenuation\",\n \"logarithmicDepthBuffer\",\n \"skinning\",\n \"maxBones\",\n \"useVertexTexture\",\n \"morphTargets\",\n \"morphNormals\",\n \"morphTargetsCount\",\n \"premultipliedAlpha\",\n \"numDirLights\",\n \"numPointLights\",\n \"numSpotLights\",\n \"numHemiLights\",\n \"numRectAreaLights\",\n \"numDirLightShadows\",\n \"numPointLightShadows\",\n \"numSpotLightShadows\",\n \"shadowMapEnabled\",\n \"shadowMapType\",\n \"toneMapping\",\n \"physicallyCorrectLights\",\n \"doubleSided\",\n \"flipSided\",\n \"numClippingPlanes\",\n \"numClipIntersection\",\n \"depthPacking\",\n \"dithering\",\n \"format\",\n \"specularIntensityMap\",\n \"specularColorMap\",\n \"specularColorMapEncoding\",\n \"transmission\",\n \"transmissionMap\",\n \"thicknessMap\",\n \"sheen\",\n \"sheenColorMap\",\n \"sheenColorMapEncoding\",\n \"sheenRoughnessMap\"\n ];\n function getMaxBones(object) {\n const skeleton = object.skeleton;\n const bones = skeleton.bones;\n if (floatVertexTextures) {\n return 1024;\n } else {\n const nVertexUniforms = maxVertexUniforms;\n const nVertexMatrices = Math.floor((nVertexUniforms - 20) / 4);\n const maxBones = Math.min(nVertexMatrices, bones.length);\n if (maxBones < bones.length) {\n console.warn(\"THREE.WebGLRenderer: Skeleton has \" + bones.length + \" bones. This GPU supports \" + maxBones + \".\");\n return 0;\n }\n return maxBones;\n }\n }\n function getTextureEncodingFromMap(map) {\n let encoding;\n if (map && map.isTexture) {\n encoding = map.encoding;\n } else if (map && map.isWebGLRenderTarget) {\n console.warn(\"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\");\n encoding = map.texture.encoding;\n } else {\n encoding = LinearEncoding;\n }\n return encoding;\n }\n function getParameters(material, lights, shadows, scene, object) {\n const fog = scene.fog;\n const environment = material.isMeshStandardMaterial ? scene.environment : null;\n const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment);\n const shaderID = shaderIDs[material.type];\n const maxBones = object.isSkinnedMesh ? getMaxBones(object) : 0;\n if (material.precision !== null) {\n precision = capabilities.getMaxPrecision(material.precision);\n if (precision !== material.precision) {\n console.warn(\"THREE.WebGLProgram.getParameters:\", material.precision, \"not supported, using\", precision, \"instead.\");\n }\n }\n let vertexShader, fragmentShader;\n if (shaderID) {\n const shader = ShaderLib[shaderID];\n vertexShader = shader.vertexShader;\n fragmentShader = shader.fragmentShader;\n } else {\n vertexShader = material.vertexShader;\n fragmentShader = material.fragmentShader;\n }\n const currentRenderTarget = renderer.getRenderTarget();\n const useAlphaTest = material.alphaTest > 0;\n const useClearcoat = material.clearcoat > 0;\n const parameters = {\n isWebGL2,\n shaderID,\n shaderName: material.type,\n vertexShader,\n fragmentShader,\n defines: material.defines,\n isRawShaderMaterial: material.isRawShaderMaterial === true,\n glslVersion: material.glslVersion,\n precision,\n instancing: object.isInstancedMesh === true,\n instancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n supportsVertexTextures: vertexTextures,\n outputEncoding: currentRenderTarget !== null ? getTextureEncodingFromMap(currentRenderTarget.texture) : renderer.outputEncoding,\n map: !!material.map,\n mapEncoding: getTextureEncodingFromMap(material.map),\n matcap: !!material.matcap,\n matcapEncoding: getTextureEncodingFromMap(material.matcap),\n envMap: !!envMap,\n envMapMode: envMap && envMap.mapping,\n envMapEncoding: getTextureEncodingFromMap(envMap),\n envMapCubeUV: !!envMap && (envMap.mapping === CubeUVReflectionMapping || envMap.mapping === CubeUVRefractionMapping),\n lightMap: !!material.lightMap,\n lightMapEncoding: getTextureEncodingFromMap(material.lightMap),\n aoMap: !!material.aoMap,\n emissiveMap: !!material.emissiveMap,\n emissiveMapEncoding: getTextureEncodingFromMap(material.emissiveMap),\n bumpMap: !!material.bumpMap,\n normalMap: !!material.normalMap,\n objectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n tangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n clearcoat: useClearcoat,\n clearcoatMap: useClearcoat && !!material.clearcoatMap,\n clearcoatRoughnessMap: useClearcoat && !!material.clearcoatRoughnessMap,\n clearcoatNormalMap: useClearcoat && !!material.clearcoatNormalMap,\n displacementMap: !!material.displacementMap,\n roughnessMap: !!material.roughnessMap,\n metalnessMap: !!material.metalnessMap,\n specularMap: !!material.specularMap,\n specularIntensityMap: !!material.specularIntensityMap,\n specularColorMap: !!material.specularColorMap,\n specularColorMapEncoding: getTextureEncodingFromMap(material.specularColorMap),\n alphaMap: !!material.alphaMap,\n alphaTest: useAlphaTest,\n gradientMap: !!material.gradientMap,\n sheen: material.sheen > 0,\n sheenColorMap: !!material.sheenColorMap,\n sheenColorMapEncoding: getTextureEncodingFromMap(material.sheenColorMap),\n sheenRoughnessMap: !!material.sheenRoughnessMap,\n transmission: material.transmission > 0,\n transmissionMap: !!material.transmissionMap,\n thicknessMap: !!material.thicknessMap,\n combine: material.combine,\n vertexTangents: !!material.normalMap && !!object.geometry && !!object.geometry.attributes.tangent,\n vertexColors: material.vertexColors,\n vertexAlphas: material.vertexColors === true && !!object.geometry && !!object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4,\n vertexUvs: !!material.map || !!material.bumpMap || !!material.normalMap || !!material.specularMap || !!material.alphaMap || !!material.emissiveMap || !!material.roughnessMap || !!material.metalnessMap || !!material.clearcoatMap || !!material.clearcoatRoughnessMap || !!material.clearcoatNormalMap || !!material.displacementMap || !!material.transmissionMap || !!material.thicknessMap || !!material.specularIntensityMap || !!material.specularColorMap || !!material.sheenColorMap || material.sheenRoughnessMap,\n uvsVertexOnly: !(!!material.map || !!material.bumpMap || !!material.normalMap || !!material.specularMap || !!material.alphaMap || !!material.emissiveMap || !!material.roughnessMap || !!material.metalnessMap || !!material.clearcoatNormalMap || material.transmission > 0 || !!material.transmissionMap || !!material.thicknessMap || !!material.specularIntensityMap || !!material.specularColorMap || material.sheen > 0 || !!material.sheenColorMap || !!material.sheenRoughnessMap) && !!material.displacementMap,\n fog: !!fog,\n useFog: material.fog,\n fogExp2: fog && fog.isFogExp2,\n flatShading: !!material.flatShading,\n sizeAttenuation: material.sizeAttenuation,\n logarithmicDepthBuffer,\n skinning: object.isSkinnedMesh === true && maxBones > 0,\n maxBones,\n useVertexTexture: floatVertexTextures,\n morphTargets: !!object.geometry && !!object.geometry.morphAttributes.position,\n morphNormals: !!object.geometry && !!object.geometry.morphAttributes.normal,\n morphTargetsCount: !!object.geometry && !!object.geometry.morphAttributes.position ? object.geometry.morphAttributes.position.length : 0,\n numDirLights: lights.directional.length,\n numPointLights: lights.point.length,\n numSpotLights: lights.spot.length,\n numRectAreaLights: lights.rectArea.length,\n numHemiLights: lights.hemi.length,\n numDirLightShadows: lights.directionalShadowMap.length,\n numPointLightShadows: lights.pointShadowMap.length,\n numSpotLightShadows: lights.spotShadowMap.length,\n numClippingPlanes: clipping.numPlanes,\n numClipIntersection: clipping.numIntersection,\n format: material.format,\n dithering: material.dithering,\n shadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n shadowMapType: renderer.shadowMap.type,\n toneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n physicallyCorrectLights: renderer.physicallyCorrectLights,\n premultipliedAlpha: material.premultipliedAlpha,\n doubleSided: material.side === DoubleSide,\n flipSided: material.side === BackSide,\n depthPacking: material.depthPacking !== void 0 ? material.depthPacking : false,\n index0AttributeName: material.index0AttributeName,\n extensionDerivatives: material.extensions && material.extensions.derivatives,\n extensionFragDepth: material.extensions && material.extensions.fragDepth,\n extensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n extensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n rendererExtensionFragDepth: isWebGL2 || extensions.has(\"EXT_frag_depth\"),\n rendererExtensionDrawBuffers: isWebGL2 || extensions.has(\"WEBGL_draw_buffers\"),\n rendererExtensionShaderTextureLod: isWebGL2 || extensions.has(\"EXT_shader_texture_lod\"),\n customProgramCacheKey: material.customProgramCacheKey()\n };\n return parameters;\n }\n function getProgramCacheKey(parameters) {\n const array = [];\n if (parameters.shaderID) {\n array.push(parameters.shaderID);\n } else {\n array.push(hashString(parameters.fragmentShader));\n array.push(hashString(parameters.vertexShader));\n }\n if (parameters.defines !== void 0) {\n for (const name in parameters.defines) {\n array.push(name);\n array.push(parameters.defines[name]);\n }\n }\n if (parameters.isRawShaderMaterial === false) {\n for (let i = 0; i < parameterNames.length; i++) {\n array.push(parameters[parameterNames[i]]);\n }\n array.push(renderer.outputEncoding);\n array.push(renderer.gammaFactor);\n }\n array.push(parameters.customProgramCacheKey);\n return array.join();\n }\n function getUniforms(material) {\n const shaderID = shaderIDs[material.type];\n let uniforms;\n if (shaderID) {\n const shader = ShaderLib[shaderID];\n uniforms = UniformsUtils.clone(shader.uniforms);\n } else {\n uniforms = material.uniforms;\n }\n return uniforms;\n }\n function acquireProgram(parameters, cacheKey) {\n let program;\n for (let p = 0, pl = programs.length; p < pl; p++) {\n const preexistingProgram = programs[p];\n if (preexistingProgram.cacheKey === cacheKey) {\n program = preexistingProgram;\n ++program.usedTimes;\n break;\n }\n }\n if (program === void 0) {\n program = new WebGLProgram(renderer, cacheKey, parameters, bindingStates);\n programs.push(program);\n }\n return program;\n }\n function releaseProgram(program) {\n if (--program.usedTimes === 0) {\n const i = programs.indexOf(program);\n programs[i] = programs[programs.length - 1];\n programs.pop();\n program.destroy();\n }\n }\n return {\n getParameters,\n getProgramCacheKey,\n getUniforms,\n acquireProgram,\n releaseProgram,\n programs\n };\n}\nfunction WebGLProperties() {\n let properties = new WeakMap();\n function get(object) {\n let map = properties.get(object);\n if (map === void 0) {\n map = {};\n properties.set(object, map);\n }\n return map;\n }\n function remove(object) {\n properties.delete(object);\n }\n function update(object, key, value) {\n properties.get(object)[key] = value;\n }\n function dispose() {\n properties = new WeakMap();\n }\n return {\n get,\n remove,\n update,\n dispose\n };\n}\nfunction painterSortStable(a, b) {\n if (a.groupOrder !== b.groupOrder) {\n return a.groupOrder - b.groupOrder;\n } else if (a.renderOrder !== b.renderOrder) {\n return a.renderOrder - b.renderOrder;\n } else if (a.program !== b.program) {\n return a.program.id - b.program.id;\n } else if (a.material.id !== b.material.id) {\n return a.material.id - b.material.id;\n } else if (a.z !== b.z) {\n return a.z - b.z;\n } else {\n return a.id - b.id;\n }\n}\nfunction reversePainterSortStable(a, b) {\n if (a.groupOrder !== b.groupOrder) {\n return a.groupOrder - b.groupOrder;\n } else if (a.renderOrder !== b.renderOrder) {\n return a.renderOrder - b.renderOrder;\n } else if (a.z !== b.z) {\n return b.z - a.z;\n } else {\n return a.id - b.id;\n }\n}\nfunction WebGLRenderList(properties) {\n const renderItems = [];\n let renderItemsIndex = 0;\n const opaque = [];\n const transmissive = [];\n const transparent = [];\n const defaultProgram = {id: -1};\n function init() {\n renderItemsIndex = 0;\n opaque.length = 0;\n transmissive.length = 0;\n transparent.length = 0;\n }\n function getNextRenderItem(object, geometry, material, groupOrder, z, group) {\n let renderItem = renderItems[renderItemsIndex];\n const materialProperties = properties.get(material);\n if (renderItem === void 0) {\n renderItem = {\n id: object.id,\n object,\n geometry,\n material,\n program: materialProperties.program || defaultProgram,\n groupOrder,\n renderOrder: object.renderOrder,\n z,\n group\n };\n renderItems[renderItemsIndex] = renderItem;\n } else {\n renderItem.id = object.id;\n renderItem.object = object;\n renderItem.geometry = geometry;\n renderItem.material = material;\n renderItem.program = materialProperties.program || defaultProgram;\n renderItem.groupOrder = groupOrder;\n renderItem.renderOrder = object.renderOrder;\n renderItem.z = z;\n renderItem.group = group;\n }\n renderItemsIndex++;\n return renderItem;\n }\n function push(object, geometry, material, groupOrder, z, group) {\n const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group);\n if (material.transmission > 0) {\n transmissive.push(renderItem);\n } else if (material.transparent === true) {\n transparent.push(renderItem);\n } else {\n opaque.push(renderItem);\n }\n }\n function unshift(object, geometry, material, groupOrder, z, group) {\n const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group);\n if (material.transmission > 0) {\n transmissive.unshift(renderItem);\n } else if (material.transparent === true) {\n transparent.unshift(renderItem);\n } else {\n opaque.unshift(renderItem);\n }\n }\n function sort(customOpaqueSort, customTransparentSort) {\n if (opaque.length > 1)\n opaque.sort(customOpaqueSort || painterSortStable);\n if (transmissive.length > 1)\n transmissive.sort(customTransparentSort || reversePainterSortStable);\n if (transparent.length > 1)\n transparent.sort(customTransparentSort || reversePainterSortStable);\n }\n function finish() {\n for (let i = renderItemsIndex, il = renderItems.length; i < il; i++) {\n const renderItem = renderItems[i];\n if (renderItem.id === null)\n break;\n renderItem.id = null;\n renderItem.object = null;\n renderItem.geometry = null;\n renderItem.material = null;\n renderItem.program = null;\n renderItem.group = null;\n }\n }\n return {\n opaque,\n transmissive,\n transparent,\n init,\n push,\n unshift,\n finish,\n sort\n };\n}\nfunction WebGLRenderLists(properties) {\n let lists = new WeakMap();\n function get(scene, renderCallDepth) {\n let list;\n if (lists.has(scene) === false) {\n list = new WebGLRenderList(properties);\n lists.set(scene, [list]);\n } else {\n if (renderCallDepth >= lists.get(scene).length) {\n list = new WebGLRenderList(properties);\n lists.get(scene).push(list);\n } else {\n list = lists.get(scene)[renderCallDepth];\n }\n }\n return list;\n }\n function dispose() {\n lists = new WeakMap();\n }\n return {\n get,\n dispose\n };\n}\nfunction UniformsCache() {\n const lights = {};\n return {\n get: function(light) {\n if (lights[light.id] !== void 0) {\n return lights[light.id];\n }\n let uniforms;\n switch (light.type) {\n case \"DirectionalLight\":\n uniforms = {\n direction: new Vector3(),\n color: new Color()\n };\n break;\n case \"SpotLight\":\n uniforms = {\n position: new Vector3(),\n direction: new Vector3(),\n color: new Color(),\n distance: 0,\n coneCos: 0,\n penumbraCos: 0,\n decay: 0\n };\n break;\n case \"PointLight\":\n uniforms = {\n position: new Vector3(),\n color: new Color(),\n distance: 0,\n decay: 0\n };\n break;\n case \"HemisphereLight\":\n uniforms = {\n direction: new Vector3(),\n skyColor: new Color(),\n groundColor: new Color()\n };\n break;\n case \"RectAreaLight\":\n uniforms = {\n color: new Color(),\n position: new Vector3(),\n halfWidth: new Vector3(),\n halfHeight: new Vector3()\n };\n break;\n }\n lights[light.id] = uniforms;\n return uniforms;\n }\n };\n}\nfunction ShadowUniformsCache() {\n const lights = {};\n return {\n get: function(light) {\n if (lights[light.id] !== void 0) {\n return lights[light.id];\n }\n let uniforms;\n switch (light.type) {\n case \"DirectionalLight\":\n uniforms = {\n shadowBias: 0,\n shadowNormalBias: 0,\n shadowRadius: 1,\n shadowMapSize: new Vector2()\n };\n break;\n case \"SpotLight\":\n uniforms = {\n shadowBias: 0,\n shadowNormalBias: 0,\n shadowRadius: 1,\n shadowMapSize: new Vector2()\n };\n break;\n case \"PointLight\":\n uniforms = {\n shadowBias: 0,\n shadowNormalBias: 0,\n shadowRadius: 1,\n shadowMapSize: new Vector2(),\n shadowCameraNear: 1,\n shadowCameraFar: 1e3\n };\n break;\n }\n lights[light.id] = uniforms;\n return uniforms;\n }\n };\n}\nlet nextVersion = 0;\nfunction shadowCastingLightsFirst(lightA, lightB) {\n return (lightB.castShadow ? 1 : 0) - (lightA.castShadow ? 1 : 0);\n}\nfunction WebGLLights(extensions, capabilities) {\n const cache = new UniformsCache();\n const shadowCache = ShadowUniformsCache();\n const state = {\n version: 0,\n hash: {\n directionalLength: -1,\n pointLength: -1,\n spotLength: -1,\n rectAreaLength: -1,\n hemiLength: -1,\n numDirectionalShadows: -1,\n numPointShadows: -1,\n numSpotShadows: -1\n },\n ambient: [0, 0, 0],\n probe: [],\n directional: [],\n directionalShadow: [],\n directionalShadowMap: [],\n directionalShadowMatrix: [],\n spot: [],\n spotShadow: [],\n spotShadowMap: [],\n spotShadowMatrix: [],\n rectArea: [],\n rectAreaLTC1: null,\n rectAreaLTC2: null,\n point: [],\n pointShadow: [],\n pointShadowMap: [],\n pointShadowMatrix: [],\n hemi: []\n };\n for (let i = 0; i < 9; i++)\n state.probe.push(new Vector3());\n const vector3 = new Vector3();\n const matrix4 = new Matrix4();\n const matrix42 = new Matrix4();\n function setup(lights, physicallyCorrectLights) {\n let r = 0, g = 0, b = 0;\n for (let i = 0; i < 9; i++)\n state.probe[i].set(0, 0, 0);\n let directionalLength = 0;\n let pointLength = 0;\n let spotLength = 0;\n let rectAreaLength = 0;\n let hemiLength = 0;\n let numDirectionalShadows = 0;\n let numPointShadows = 0;\n let numSpotShadows = 0;\n lights.sort(shadowCastingLightsFirst);\n const scaleFactor = physicallyCorrectLights !== true ? Math.PI : 1;\n for (let i = 0, l = lights.length; i < l; i++) {\n const light = lights[i];\n const color = light.color;\n const intensity = light.intensity;\n const distance = light.distance;\n const shadowMap = light.shadow && light.shadow.map ? light.shadow.map.texture : null;\n if (light.isAmbientLight) {\n r += color.r * intensity * scaleFactor;\n g += color.g * intensity * scaleFactor;\n b += color.b * intensity * scaleFactor;\n } else if (light.isLightProbe) {\n for (let j = 0; j < 9; j++) {\n state.probe[j].addScaledVector(light.sh.coefficients[j], intensity);\n }\n } else if (light.isDirectionalLight) {\n const uniforms = cache.get(light);\n uniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor);\n if (light.castShadow) {\n const shadow = light.shadow;\n const shadowUniforms = shadowCache.get(light);\n shadowUniforms.shadowBias = shadow.bias;\n shadowUniforms.shadowNormalBias = shadow.normalBias;\n shadowUniforms.shadowRadius = shadow.radius;\n shadowUniforms.shadowMapSize = shadow.mapSize;\n state.directionalShadow[directionalLength] = shadowUniforms;\n state.directionalShadowMap[directionalLength] = shadowMap;\n state.directionalShadowMatrix[directionalLength] = light.shadow.matrix;\n numDirectionalShadows++;\n }\n state.directional[directionalLength] = uniforms;\n directionalLength++;\n } else if (light.isSpotLight) {\n const uniforms = cache.get(light);\n uniforms.position.setFromMatrixPosition(light.matrixWorld);\n uniforms.color.copy(color).multiplyScalar(intensity * scaleFactor);\n uniforms.distance = distance;\n uniforms.coneCos = Math.cos(light.angle);\n uniforms.penumbraCos = Math.cos(light.angle * (1 - light.penumbra));\n uniforms.decay = light.decay;\n if (light.castShadow) {\n const shadow = light.shadow;\n const shadowUniforms = shadowCache.get(light);\n shadowUniforms.shadowBias = shadow.bias;\n shadowUniforms.shadowNormalBias = shadow.normalBias;\n shadowUniforms.shadowRadius = shadow.radius;\n shadowUniforms.shadowMapSize = shadow.mapSize;\n state.spotShadow[spotLength] = shadowUniforms;\n state.spotShadowMap[spotLength] = shadowMap;\n state.spotShadowMatrix[spotLength] = light.shadow.matrix;\n numSpotShadows++;\n }\n state.spot[spotLength] = uniforms;\n spotLength++;\n } else if (light.isRectAreaLight) {\n const uniforms = cache.get(light);\n uniforms.color.copy(color).multiplyScalar(intensity);\n uniforms.halfWidth.set(light.width * 0.5, 0, 0);\n uniforms.halfHeight.set(0, light.height * 0.5, 0);\n state.rectArea[rectAreaLength] = uniforms;\n rectAreaLength++;\n } else if (light.isPointLight) {\n const uniforms = cache.get(light);\n uniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor);\n uniforms.distance = light.distance;\n uniforms.decay = light.decay;\n if (light.castShadow) {\n const shadow = light.shadow;\n const shadowUniforms = shadowCache.get(light);\n shadowUniforms.shadowBias = shadow.bias;\n shadowUniforms.shadowNormalBias = shadow.normalBias;\n shadowUniforms.shadowRadius = shadow.radius;\n shadowUniforms.shadowMapSize = shadow.mapSize;\n shadowUniforms.shadowCameraNear = shadow.camera.near;\n shadowUniforms.shadowCameraFar = shadow.camera.far;\n state.pointShadow[pointLength] = shadowUniforms;\n state.pointShadowMap[pointLength] = shadowMap;\n state.pointShadowMatrix[pointLength] = light.shadow.matrix;\n numPointShadows++;\n }\n state.point[pointLength] = uniforms;\n pointLength++;\n } else if (light.isHemisphereLight) {\n const uniforms = cache.get(light);\n uniforms.skyColor.copy(light.color).multiplyScalar(intensity * scaleFactor);\n uniforms.groundColor.copy(light.groundColor).multiplyScalar(intensity * scaleFactor);\n state.hemi[hemiLength] = uniforms;\n hemiLength++;\n }\n }\n if (rectAreaLength > 0) {\n if (capabilities.isWebGL2) {\n state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n } else {\n if (extensions.has(\"OES_texture_float_linear\") === true) {\n state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n } else if (extensions.has(\"OES_texture_half_float_linear\") === true) {\n state.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n state.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n } else {\n console.error(\"THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.\");\n }\n }\n }\n state.ambient[0] = r;\n state.ambient[1] = g;\n state.ambient[2] = b;\n const hash = state.hash;\n if (hash.directionalLength !== directionalLength || hash.pointLength !== pointLength || hash.spotLength !== spotLength || hash.rectAreaLength !== rectAreaLength || hash.hemiLength !== hemiLength || hash.numDirectionalShadows !== numDirectionalShadows || hash.numPointShadows !== numPointShadows || hash.numSpotShadows !== numSpotShadows) {\n state.directional.length = directionalLength;\n state.spot.length = spotLength;\n state.rectArea.length = rectAreaLength;\n state.point.length = pointLength;\n state.hemi.length = hemiLength;\n state.directionalShadow.length = numDirectionalShadows;\n state.directionalShadowMap.length = numDirectionalShadows;\n state.pointShadow.length = numPointShadows;\n state.pointShadowMap.length = numPointShadows;\n state.spotShadow.length = numSpotShadows;\n state.spotShadowMap.length = numSpotShadows;\n state.directionalShadowMatrix.length = numDirectionalShadows;\n state.pointShadowMatrix.length = numPointShadows;\n state.spotShadowMatrix.length = numSpotShadows;\n hash.directionalLength = directionalLength;\n hash.pointLength = pointLength;\n hash.spotLength = spotLength;\n hash.rectAreaLength = rectAreaLength;\n hash.hemiLength = hemiLength;\n hash.numDirectionalShadows = numDirectionalShadows;\n hash.numPointShadows = numPointShadows;\n hash.numSpotShadows = numSpotShadows;\n state.version = nextVersion++;\n }\n }\n function setupView(lights, camera) {\n let directionalLength = 0;\n let pointLength = 0;\n let spotLength = 0;\n let rectAreaLength = 0;\n let hemiLength = 0;\n const viewMatrix = camera.matrixWorldInverse;\n for (let i = 0, l = lights.length; i < l; i++) {\n const light = lights[i];\n if (light.isDirectionalLight) {\n const uniforms = state.directional[directionalLength];\n uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n vector3.setFromMatrixPosition(light.target.matrixWorld);\n uniforms.direction.sub(vector3);\n uniforms.direction.transformDirection(viewMatrix);\n directionalLength++;\n } else if (light.isSpotLight) {\n const uniforms = state.spot[spotLength];\n uniforms.position.setFromMatrixPosition(light.matrixWorld);\n uniforms.position.applyMatrix4(viewMatrix);\n uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n vector3.setFromMatrixPosition(light.target.matrixWorld);\n uniforms.direction.sub(vector3);\n uniforms.direction.transformDirection(viewMatrix);\n spotLength++;\n } else if (light.isRectAreaLight) {\n const uniforms = state.rectArea[rectAreaLength];\n uniforms.position.setFromMatrixPosition(light.matrixWorld);\n uniforms.position.applyMatrix4(viewMatrix);\n matrix42.identity();\n matrix4.copy(light.matrixWorld);\n matrix4.premultiply(viewMatrix);\n matrix42.extractRotation(matrix4);\n uniforms.halfWidth.set(light.width * 0.5, 0, 0);\n uniforms.halfHeight.set(0, light.height * 0.5, 0);\n uniforms.halfWidth.applyMatrix4(matrix42);\n uniforms.halfHeight.applyMatrix4(matrix42);\n rectAreaLength++;\n } else if (light.isPointLight) {\n const uniforms = state.point[pointLength];\n uniforms.position.setFromMatrixPosition(light.matrixWorld);\n uniforms.position.applyMatrix4(viewMatrix);\n pointLength++;\n } else if (light.isHemisphereLight) {\n const uniforms = state.hemi[hemiLength];\n uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n uniforms.direction.transformDirection(viewMatrix);\n uniforms.direction.normalize();\n hemiLength++;\n }\n }\n }\n return {\n setup,\n setupView,\n state\n };\n}\nfunction WebGLRenderState(extensions, capabilities) {\n const lights = new WebGLLights(extensions, capabilities);\n const lightsArray = [];\n const shadowsArray = [];\n function init() {\n lightsArray.length = 0;\n shadowsArray.length = 0;\n }\n function pushLight(light) {\n lightsArray.push(light);\n }\n function pushShadow(shadowLight) {\n shadowsArray.push(shadowLight);\n }\n function setupLights(physicallyCorrectLights) {\n lights.setup(lightsArray, physicallyCorrectLights);\n }\n function setupLightsView(camera) {\n lights.setupView(lightsArray, camera);\n }\n const state = {\n lightsArray,\n shadowsArray,\n lights\n };\n return {\n init,\n state,\n setupLights,\n setupLightsView,\n pushLight,\n pushShadow\n };\n}\nfunction WebGLRenderStates(extensions, capabilities) {\n let renderStates = new WeakMap();\n function get(scene, renderCallDepth = 0) {\n let renderState;\n if (renderStates.has(scene) === false) {\n renderState = new WebGLRenderState(extensions, capabilities);\n renderStates.set(scene, [renderState]);\n } else {\n if (renderCallDepth >= renderStates.get(scene).length) {\n renderState = new WebGLRenderState(extensions, capabilities);\n renderStates.get(scene).push(renderState);\n } else {\n renderState = renderStates.get(scene)[renderCallDepth];\n }\n }\n return renderState;\n }\n function dispose() {\n renderStates = new WeakMap();\n }\n return {\n get,\n dispose\n };\n}\nclass MeshDepthMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"MeshDepthMaterial\";\n this.depthPacking = BasicDepthPacking;\n this.map = null;\n this.alphaMap = null;\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.fog = false;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.depthPacking = source.depthPacking;\n this.map = source.map;\n this.alphaMap = source.alphaMap;\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n return this;\n }\n}\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\nclass MeshDistanceMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"MeshDistanceMaterial\";\n this.referencePosition = new Vector3();\n this.nearDistance = 1;\n this.farDistance = 1e3;\n this.map = null;\n this.alphaMap = null;\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.fog = false;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.referencePosition.copy(source.referencePosition);\n this.nearDistance = source.nearDistance;\n this.farDistance = source.farDistance;\n this.map = source.map;\n this.alphaMap = source.alphaMap;\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n return this;\n }\n}\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\nconst vertex = \"void main() {\\n\tgl_Position = vec4( position, 1.0 );\\n}\";\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\tconst float samples = float( VSM_SAMPLES );\\n\tfloat mean = 0.0;\\n\tfloat squared_mean = 0.0;\\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\t\tfloat uvOffset = uvStart + i * uvStride;\\n\t\t#ifdef HORIZONTAL_PASS\\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\t\t\tmean += distribution.x;\\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\t\t#else\\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\t\t\tmean += depth;\\n\t\t\tsquared_mean += depth * depth;\\n\t\t#endif\\n\t}\\n\tmean = mean / samples;\\n\tsquared_mean = squared_mean / samples;\\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\nfunction WebGLShadowMap(_renderer, _objects, _capabilities) {\n let _frustum = new Frustum();\n const _shadowMapSize = new Vector2(), _viewportSize = new Vector2(), _viewport = new Vector4(), _depthMaterial = new MeshDepthMaterial({depthPacking: RGBADepthPacking}), _distanceMaterial = new MeshDistanceMaterial(), _materialCache = {}, _maxTextureSize = _capabilities.maxTextureSize;\n const shadowSide = {0: BackSide, 1: FrontSide, 2: DoubleSide};\n const shadowMaterialVertical = new ShaderMaterial({\n defines: {\n VSM_SAMPLES: 8\n },\n uniforms: {\n shadow_pass: {value: null},\n resolution: {value: new Vector2()},\n radius: {value: 4}\n },\n vertexShader: vertex,\n fragmentShader: fragment\n });\n const shadowMaterialHorizontal = shadowMaterialVertical.clone();\n shadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n const fullScreenTri = new BufferGeometry();\n fullScreenTri.setAttribute(\"position\", new BufferAttribute(new Float32Array([-1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5]), 3));\n const fullScreenMesh = new Mesh(fullScreenTri, shadowMaterialVertical);\n const scope = this;\n this.enabled = false;\n this.autoUpdate = true;\n this.needsUpdate = false;\n this.type = PCFShadowMap;\n this.render = function(lights, scene, camera) {\n if (scope.enabled === false)\n return;\n if (scope.autoUpdate === false && scope.needsUpdate === false)\n return;\n if (lights.length === 0)\n return;\n const currentRenderTarget = _renderer.getRenderTarget();\n const activeCubeFace = _renderer.getActiveCubeFace();\n const activeMipmapLevel = _renderer.getActiveMipmapLevel();\n const _state = _renderer.state;\n _state.setBlending(NoBlending);\n _state.buffers.color.setClear(1, 1, 1, 1);\n _state.buffers.depth.setTest(true);\n _state.setScissorTest(false);\n for (let i = 0, il = lights.length; i < il; i++) {\n const light = lights[i];\n const shadow = light.shadow;\n if (shadow === void 0) {\n console.warn(\"THREE.WebGLShadowMap:\", light, \"has no shadow.\");\n continue;\n }\n if (shadow.autoUpdate === false && shadow.needsUpdate === false)\n continue;\n _shadowMapSize.copy(shadow.mapSize);\n const shadowFrameExtents = shadow.getFrameExtents();\n _shadowMapSize.multiply(shadowFrameExtents);\n _viewportSize.copy(shadow.mapSize);\n if (_shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize) {\n if (_shadowMapSize.x > _maxTextureSize) {\n _viewportSize.x = Math.floor(_maxTextureSize / shadowFrameExtents.x);\n _shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n shadow.mapSize.x = _viewportSize.x;\n }\n if (_shadowMapSize.y > _maxTextureSize) {\n _viewportSize.y = Math.floor(_maxTextureSize / shadowFrameExtents.y);\n _shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n shadow.mapSize.y = _viewportSize.y;\n }\n }\n if (shadow.map === null && !shadow.isPointLightShadow && this.type === VSMShadowMap) {\n const pars = {minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat};\n shadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars);\n shadow.map.texture.name = light.name + \".shadowMap\";\n shadow.mapPass = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars);\n shadow.camera.updateProjectionMatrix();\n }\n if (shadow.map === null) {\n const pars = {minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat};\n shadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars);\n shadow.map.texture.name = light.name + \".shadowMap\";\n shadow.camera.updateProjectionMatrix();\n }\n _renderer.setRenderTarget(shadow.map);\n _renderer.clear();\n const viewportCount = shadow.getViewportCount();\n for (let vp = 0; vp < viewportCount; vp++) {\n const viewport = shadow.getViewport(vp);\n _viewport.set(_viewportSize.x * viewport.x, _viewportSize.y * viewport.y, _viewportSize.x * viewport.z, _viewportSize.y * viewport.w);\n _state.viewport(_viewport);\n shadow.updateMatrices(light, vp);\n _frustum = shadow.getFrustum();\n renderObject(scene, camera, shadow.camera, light, this.type);\n }\n if (!shadow.isPointLightShadow && this.type === VSMShadowMap) {\n VSMPass(shadow, camera);\n }\n shadow.needsUpdate = false;\n }\n scope.needsUpdate = false;\n _renderer.setRenderTarget(currentRenderTarget, activeCubeFace, activeMipmapLevel);\n };\n function VSMPass(shadow, camera) {\n const geometry = _objects.update(fullScreenMesh);\n if (shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples) {\n shadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n shadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n shadowMaterialVertical.needsUpdate = true;\n shadowMaterialHorizontal.needsUpdate = true;\n }\n shadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n shadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n shadowMaterialVertical.uniforms.radius.value = shadow.radius;\n _renderer.setRenderTarget(shadow.mapPass);\n _renderer.clear();\n _renderer.renderBufferDirect(camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null);\n shadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n shadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n shadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n _renderer.setRenderTarget(shadow.map);\n _renderer.clear();\n _renderer.renderBufferDirect(camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null);\n }\n function getDepthMaterial(object, geometry, material, light, shadowCameraNear, shadowCameraFar, type) {\n let result = null;\n const customMaterial = light.isPointLight === true ? object.customDistanceMaterial : object.customDepthMaterial;\n if (customMaterial !== void 0) {\n result = customMaterial;\n } else {\n result = light.isPointLight === true ? _distanceMaterial : _depthMaterial;\n }\n if (_renderer.localClippingEnabled && material.clipShadows === true && material.clippingPlanes.length !== 0 || material.displacementMap && material.displacementScale !== 0 || material.alphaMap && material.alphaTest > 0) {\n const keyA = result.uuid, keyB = material.uuid;\n let materialsForVariant = _materialCache[keyA];\n if (materialsForVariant === void 0) {\n materialsForVariant = {};\n _materialCache[keyA] = materialsForVariant;\n }\n let cachedMaterial = materialsForVariant[keyB];\n if (cachedMaterial === void 0) {\n cachedMaterial = result.clone();\n materialsForVariant[keyB] = cachedMaterial;\n }\n result = cachedMaterial;\n }\n result.visible = material.visible;\n result.wireframe = material.wireframe;\n if (type === VSMShadowMap) {\n result.side = material.shadowSide !== null ? material.shadowSide : material.side;\n } else {\n result.side = material.shadowSide !== null ? material.shadowSide : shadowSide[material.side];\n }\n result.alphaMap = material.alphaMap;\n result.alphaTest = material.alphaTest;\n result.clipShadows = material.clipShadows;\n result.clippingPlanes = material.clippingPlanes;\n result.clipIntersection = material.clipIntersection;\n result.displacementMap = material.displacementMap;\n result.displacementScale = material.displacementScale;\n result.displacementBias = material.displacementBias;\n result.wireframeLinewidth = material.wireframeLinewidth;\n result.linewidth = material.linewidth;\n if (light.isPointLight === true && result.isMeshDistanceMaterial === true) {\n result.referencePosition.setFromMatrixPosition(light.matrixWorld);\n result.nearDistance = shadowCameraNear;\n result.farDistance = shadowCameraFar;\n }\n return result;\n }\n function renderObject(object, camera, shadowCamera, light, type) {\n if (object.visible === false)\n return;\n const visible = object.layers.test(camera.layers);\n if (visible && (object.isMesh || object.isLine || object.isPoints)) {\n if ((object.castShadow || object.receiveShadow && type === VSMShadowMap) && (!object.frustumCulled || _frustum.intersectsObject(object))) {\n object.modelViewMatrix.multiplyMatrices(shadowCamera.matrixWorldInverse, object.matrixWorld);\n const geometry = _objects.update(object);\n const material = object.material;\n if (Array.isArray(material)) {\n const groups = geometry.groups;\n for (let k = 0, kl = groups.length; k < kl; k++) {\n const group = groups[k];\n const groupMaterial = material[group.materialIndex];\n if (groupMaterial && groupMaterial.visible) {\n const depthMaterial = getDepthMaterial(object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type);\n _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, group);\n }\n }\n } else if (material.visible) {\n const depthMaterial = getDepthMaterial(object, geometry, material, light, shadowCamera.near, shadowCamera.far, type);\n _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, null);\n }\n }\n }\n const children = object.children;\n for (let i = 0, l = children.length; i < l; i++) {\n renderObject(children[i], camera, shadowCamera, light, type);\n }\n }\n}\nfunction WebGLState(gl, extensions, capabilities) {\n const isWebGL2 = capabilities.isWebGL2;\n function ColorBuffer() {\n let locked = false;\n const color = new Vector4();\n let currentColorMask = null;\n const currentColorClear = new Vector4(0, 0, 0, 0);\n return {\n setMask: function(colorMask) {\n if (currentColorMask !== colorMask && !locked) {\n gl.colorMask(colorMask, colorMask, colorMask, colorMask);\n currentColorMask = colorMask;\n }\n },\n setLocked: function(lock) {\n locked = lock;\n },\n setClear: function(r, g, b, a, premultipliedAlpha) {\n if (premultipliedAlpha === true) {\n r *= a;\n g *= a;\n b *= a;\n }\n color.set(r, g, b, a);\n if (currentColorClear.equals(color) === false) {\n gl.clearColor(r, g, b, a);\n currentColorClear.copy(color);\n }\n },\n reset: function() {\n locked = false;\n currentColorMask = null;\n currentColorClear.set(-1, 0, 0, 0);\n }\n };\n }\n function DepthBuffer() {\n let locked = false;\n let currentDepthMask = null;\n let currentDepthFunc = null;\n let currentDepthClear = null;\n return {\n setTest: function(depthTest) {\n if (depthTest) {\n enable(2929);\n } else {\n disable(2929);\n }\n },\n setMask: function(depthMask) {\n if (currentDepthMask !== depthMask && !locked) {\n gl.depthMask(depthMask);\n currentDepthMask = depthMask;\n }\n },\n setFunc: function(depthFunc) {\n if (currentDepthFunc !== depthFunc) {\n if (depthFunc) {\n switch (depthFunc) {\n case NeverDepth:\n gl.depthFunc(512);\n break;\n case AlwaysDepth:\n gl.depthFunc(519);\n break;\n case LessDepth:\n gl.depthFunc(513);\n break;\n case LessEqualDepth:\n gl.depthFunc(515);\n break;\n case EqualDepth:\n gl.depthFunc(514);\n break;\n case GreaterEqualDepth:\n gl.depthFunc(518);\n break;\n case GreaterDepth:\n gl.depthFunc(516);\n break;\n case NotEqualDepth:\n gl.depthFunc(517);\n break;\n default:\n gl.depthFunc(515);\n }\n } else {\n gl.depthFunc(515);\n }\n currentDepthFunc = depthFunc;\n }\n },\n setLocked: function(lock) {\n locked = lock;\n },\n setClear: function(depth) {\n if (currentDepthClear !== depth) {\n gl.clearDepth(depth);\n currentDepthClear = depth;\n }\n },\n reset: function() {\n locked = false;\n currentDepthMask = null;\n currentDepthFunc = null;\n currentDepthClear = null;\n }\n };\n }\n function StencilBuffer() {\n let locked = false;\n let currentStencilMask = null;\n let currentStencilFunc = null;\n let currentStencilRef = null;\n let currentStencilFuncMask = null;\n let currentStencilFail = null;\n let currentStencilZFail = null;\n let currentStencilZPass = null;\n let currentStencilClear = null;\n return {\n setTest: function(stencilTest) {\n if (!locked) {\n if (stencilTest) {\n enable(2960);\n } else {\n disable(2960);\n }\n }\n },\n setMask: function(stencilMask) {\n if (currentStencilMask !== stencilMask && !locked) {\n gl.stencilMask(stencilMask);\n currentStencilMask = stencilMask;\n }\n },\n setFunc: function(stencilFunc, stencilRef, stencilMask) {\n if (currentStencilFunc !== stencilFunc || currentStencilRef !== stencilRef || currentStencilFuncMask !== stencilMask) {\n gl.stencilFunc(stencilFunc, stencilRef, stencilMask);\n currentStencilFunc = stencilFunc;\n currentStencilRef = stencilRef;\n currentStencilFuncMask = stencilMask;\n }\n },\n setOp: function(stencilFail, stencilZFail, stencilZPass) {\n if (currentStencilFail !== stencilFail || currentStencilZFail !== stencilZFail || currentStencilZPass !== stencilZPass) {\n gl.stencilOp(stencilFail, stencilZFail, stencilZPass);\n currentStencilFail = stencilFail;\n currentStencilZFail = stencilZFail;\n currentStencilZPass = stencilZPass;\n }\n },\n setLocked: function(lock) {\n locked = lock;\n },\n setClear: function(stencil) {\n if (currentStencilClear !== stencil) {\n gl.clearStencil(stencil);\n currentStencilClear = stencil;\n }\n },\n reset: function() {\n locked = false;\n currentStencilMask = null;\n currentStencilFunc = null;\n currentStencilRef = null;\n currentStencilFuncMask = null;\n currentStencilFail = null;\n currentStencilZFail = null;\n currentStencilZPass = null;\n currentStencilClear = null;\n }\n };\n }\n const colorBuffer = new ColorBuffer();\n const depthBuffer = new DepthBuffer();\n const stencilBuffer = new StencilBuffer();\n let enabledCapabilities = {};\n let currentBoundFramebuffers = {};\n let currentProgram = null;\n let currentBlendingEnabled = false;\n let currentBlending = null;\n let currentBlendEquation = null;\n let currentBlendSrc = null;\n let currentBlendDst = null;\n let currentBlendEquationAlpha = null;\n let currentBlendSrcAlpha = null;\n let currentBlendDstAlpha = null;\n let currentPremultipledAlpha = false;\n let currentFlipSided = null;\n let currentCullFace = null;\n let currentLineWidth = null;\n let currentPolygonOffsetFactor = null;\n let currentPolygonOffsetUnits = null;\n const maxTextures = gl.getParameter(35661);\n let lineWidthAvailable = false;\n let version = 0;\n const glVersion = gl.getParameter(7938);\n if (glVersion.indexOf(\"WebGL\") !== -1) {\n version = parseFloat(/^WebGL (\\d)/.exec(glVersion)[1]);\n lineWidthAvailable = version >= 1;\n } else if (glVersion.indexOf(\"OpenGL ES\") !== -1) {\n version = parseFloat(/^OpenGL ES (\\d)/.exec(glVersion)[1]);\n lineWidthAvailable = version >= 2;\n }\n let currentTextureSlot = null;\n let currentBoundTextures = {};\n const scissorParam = gl.getParameter(3088);\n const viewportParam = gl.getParameter(2978);\n const currentScissor = new Vector4().fromArray(scissorParam);\n const currentViewport = new Vector4().fromArray(viewportParam);\n function createTexture(type, target, count) {\n const data = new Uint8Array(4);\n const texture = gl.createTexture();\n gl.bindTexture(type, texture);\n gl.texParameteri(type, 10241, 9728);\n gl.texParameteri(type, 10240, 9728);\n for (let i = 0; i < count; i++) {\n gl.texImage2D(target + i, 0, 6408, 1, 1, 0, 6408, 5121, data);\n }\n return texture;\n }\n const emptyTextures = {};\n emptyTextures[3553] = createTexture(3553, 3553, 1);\n emptyTextures[34067] = createTexture(34067, 34069, 6);\n colorBuffer.setClear(0, 0, 0, 1);\n depthBuffer.setClear(1);\n stencilBuffer.setClear(0);\n enable(2929);\n depthBuffer.setFunc(LessEqualDepth);\n setFlipSided(false);\n setCullFace(CullFaceBack);\n enable(2884);\n setBlending(NoBlending);\n function enable(id) {\n if (enabledCapabilities[id] !== true) {\n gl.enable(id);\n enabledCapabilities[id] = true;\n }\n }\n function disable(id) {\n if (enabledCapabilities[id] !== false) {\n gl.disable(id);\n enabledCapabilities[id] = false;\n }\n }\n function bindFramebuffer(target, framebuffer) {\n if (currentBoundFramebuffers[target] !== framebuffer) {\n gl.bindFramebuffer(target, framebuffer);\n currentBoundFramebuffers[target] = framebuffer;\n if (isWebGL2) {\n if (target === 36009) {\n currentBoundFramebuffers[36160] = framebuffer;\n }\n if (target === 36160) {\n currentBoundFramebuffers[36009] = framebuffer;\n }\n }\n return true;\n }\n return false;\n }\n function useProgram(program) {\n if (currentProgram !== program) {\n gl.useProgram(program);\n currentProgram = program;\n return true;\n }\n return false;\n }\n const equationToGL = {\n [AddEquation]: 32774,\n [SubtractEquation]: 32778,\n [ReverseSubtractEquation]: 32779\n };\n if (isWebGL2) {\n equationToGL[MinEquation] = 32775;\n equationToGL[MaxEquation] = 32776;\n } else {\n const extension = extensions.get(\"EXT_blend_minmax\");\n if (extension !== null) {\n equationToGL[MinEquation] = extension.MIN_EXT;\n equationToGL[MaxEquation] = extension.MAX_EXT;\n }\n }\n const factorToGL = {\n [ZeroFactor]: 0,\n [OneFactor]: 1,\n [SrcColorFactor]: 768,\n [SrcAlphaFactor]: 770,\n [SrcAlphaSaturateFactor]: 776,\n [DstColorFactor]: 774,\n [DstAlphaFactor]: 772,\n [OneMinusSrcColorFactor]: 769,\n [OneMinusSrcAlphaFactor]: 771,\n [OneMinusDstColorFactor]: 775,\n [OneMinusDstAlphaFactor]: 773\n };\n function setBlending(blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha) {\n if (blending === NoBlending) {\n if (currentBlendingEnabled === true) {\n disable(3042);\n currentBlendingEnabled = false;\n }\n return;\n }\n if (currentBlendingEnabled === false) {\n enable(3042);\n currentBlendingEnabled = true;\n }\n if (blending !== CustomBlending) {\n if (blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha) {\n if (currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation) {\n gl.blendEquation(32774);\n currentBlendEquation = AddEquation;\n currentBlendEquationAlpha = AddEquation;\n }\n if (premultipliedAlpha) {\n switch (blending) {\n case NormalBlending:\n gl.blendFuncSeparate(1, 771, 1, 771);\n break;\n case AdditiveBlending:\n gl.blendFunc(1, 1);\n break;\n case SubtractiveBlending:\n gl.blendFuncSeparate(0, 0, 769, 771);\n break;\n case MultiplyBlending:\n gl.blendFuncSeparate(0, 768, 0, 770);\n break;\n default:\n console.error(\"THREE.WebGLState: Invalid blending: \", blending);\n break;\n }\n } else {\n switch (blending) {\n case NormalBlending:\n gl.blendFuncSeparate(770, 771, 1, 771);\n break;\n case AdditiveBlending:\n gl.blendFunc(770, 1);\n break;\n case SubtractiveBlending:\n gl.blendFunc(0, 769);\n break;\n case MultiplyBlending:\n gl.blendFunc(0, 768);\n break;\n default:\n console.error(\"THREE.WebGLState: Invalid blending: \", blending);\n break;\n }\n }\n currentBlendSrc = null;\n currentBlendDst = null;\n currentBlendSrcAlpha = null;\n currentBlendDstAlpha = null;\n currentBlending = blending;\n currentPremultipledAlpha = premultipliedAlpha;\n }\n return;\n }\n blendEquationAlpha = blendEquationAlpha || blendEquation;\n blendSrcAlpha = blendSrcAlpha || blendSrc;\n blendDstAlpha = blendDstAlpha || blendDst;\n if (blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha) {\n gl.blendEquationSeparate(equationToGL[blendEquation], equationToGL[blendEquationAlpha]);\n currentBlendEquation = blendEquation;\n currentBlendEquationAlpha = blendEquationAlpha;\n }\n if (blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha) {\n gl.blendFuncSeparate(factorToGL[blendSrc], factorToGL[blendDst], factorToGL[blendSrcAlpha], factorToGL[blendDstAlpha]);\n currentBlendSrc = blendSrc;\n currentBlendDst = blendDst;\n currentBlendSrcAlpha = blendSrcAlpha;\n currentBlendDstAlpha = blendDstAlpha;\n }\n currentBlending = blending;\n currentPremultipledAlpha = null;\n }\n function setMaterial(material, frontFaceCW) {\n material.side === DoubleSide ? disable(2884) : enable(2884);\n let flipSided = material.side === BackSide;\n if (frontFaceCW)\n flipSided = !flipSided;\n setFlipSided(flipSided);\n material.blending === NormalBlending && material.transparent === false ? setBlending(NoBlending) : setBlending(material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha);\n depthBuffer.setFunc(material.depthFunc);\n depthBuffer.setTest(material.depthTest);\n depthBuffer.setMask(material.depthWrite);\n colorBuffer.setMask(material.colorWrite);\n const stencilWrite = material.stencilWrite;\n stencilBuffer.setTest(stencilWrite);\n if (stencilWrite) {\n stencilBuffer.setMask(material.stencilWriteMask);\n stencilBuffer.setFunc(material.stencilFunc, material.stencilRef, material.stencilFuncMask);\n stencilBuffer.setOp(material.stencilFail, material.stencilZFail, material.stencilZPass);\n }\n setPolygonOffset(material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits);\n material.alphaToCoverage === true ? enable(32926) : disable(32926);\n }\n function setFlipSided(flipSided) {\n if (currentFlipSided !== flipSided) {\n if (flipSided) {\n gl.frontFace(2304);\n } else {\n gl.frontFace(2305);\n }\n currentFlipSided = flipSided;\n }\n }\n function setCullFace(cullFace) {\n if (cullFace !== CullFaceNone) {\n enable(2884);\n if (cullFace !== currentCullFace) {\n if (cullFace === CullFaceBack) {\n gl.cullFace(1029);\n } else if (cullFace === CullFaceFront) {\n gl.cullFace(1028);\n } else {\n gl.cullFace(1032);\n }\n }\n } else {\n disable(2884);\n }\n currentCullFace = cullFace;\n }\n function setLineWidth(width) {\n if (width !== currentLineWidth) {\n if (lineWidthAvailable)\n gl.lineWidth(width);\n currentLineWidth = width;\n }\n }\n function setPolygonOffset(polygonOffset, factor, units) {\n if (polygonOffset) {\n enable(32823);\n if (currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units) {\n gl.polygonOffset(factor, units);\n currentPolygonOffsetFactor = factor;\n currentPolygonOffsetUnits = units;\n }\n } else {\n disable(32823);\n }\n }\n function setScissorTest(scissorTest) {\n if (scissorTest) {\n enable(3089);\n } else {\n disable(3089);\n }\n }\n function activeTexture(webglSlot) {\n if (webglSlot === void 0)\n webglSlot = 33984 + maxTextures - 1;\n if (currentTextureSlot !== webglSlot) {\n gl.activeTexture(webglSlot);\n currentTextureSlot = webglSlot;\n }\n }\n function bindTexture(webglType, webglTexture) {\n if (currentTextureSlot === null) {\n activeTexture();\n }\n let boundTexture = currentBoundTextures[currentTextureSlot];\n if (boundTexture === void 0) {\n boundTexture = {type: void 0, texture: void 0};\n currentBoundTextures[currentTextureSlot] = boundTexture;\n }\n if (boundTexture.type !== webglType || boundTexture.texture !== webglTexture) {\n gl.bindTexture(webglType, webglTexture || emptyTextures[webglType]);\n boundTexture.type = webglType;\n boundTexture.texture = webglTexture;\n }\n }\n function unbindTexture() {\n const boundTexture = currentBoundTextures[currentTextureSlot];\n if (boundTexture !== void 0 && boundTexture.type !== void 0) {\n gl.bindTexture(boundTexture.type, null);\n boundTexture.type = void 0;\n boundTexture.texture = void 0;\n }\n }\n function compressedTexImage2D() {\n try {\n gl.compressedTexImage2D.apply(gl, arguments);\n } catch (error) {\n console.error(\"THREE.WebGLState:\", error);\n }\n }\n function texSubImage2D() {\n try {\n gl.texSubImage2D.apply(gl, arguments);\n } catch (error) {\n console.error(\"THREE.WebGLState:\", error);\n }\n }\n function texStorage2D() {\n try {\n gl.texStorage2D.apply(gl, arguments);\n } catch (error) {\n console.error(\"THREE.WebGLState:\", error);\n }\n }\n function texImage2D() {\n try {\n gl.texImage2D.apply(gl, arguments);\n } catch (error) {\n console.error(\"THREE.WebGLState:\", error);\n }\n }\n function texImage3D() {\n try {\n gl.texImage3D.apply(gl, arguments);\n } catch (error) {\n console.error(\"THREE.WebGLState:\", error);\n }\n }\n function scissor(scissor2) {\n if (currentScissor.equals(scissor2) === false) {\n gl.scissor(scissor2.x, scissor2.y, scissor2.z, scissor2.w);\n currentScissor.copy(scissor2);\n }\n }\n function viewport(viewport2) {\n if (currentViewport.equals(viewport2) === false) {\n gl.viewport(viewport2.x, viewport2.y, viewport2.z, viewport2.w);\n currentViewport.copy(viewport2);\n }\n }\n function reset() {\n gl.disable(3042);\n gl.disable(2884);\n gl.disable(2929);\n gl.disable(32823);\n gl.disable(3089);\n gl.disable(2960);\n gl.disable(32926);\n gl.blendEquation(32774);\n gl.blendFunc(1, 0);\n gl.blendFuncSeparate(1, 0, 1, 0);\n gl.colorMask(true, true, true, true);\n gl.clearColor(0, 0, 0, 0);\n gl.depthMask(true);\n gl.depthFunc(513);\n gl.clearDepth(1);\n gl.stencilMask(4294967295);\n gl.stencilFunc(519, 0, 4294967295);\n gl.stencilOp(7680, 7680, 7680);\n gl.clearStencil(0);\n gl.cullFace(1029);\n gl.frontFace(2305);\n gl.polygonOffset(0, 0);\n gl.activeTexture(33984);\n gl.bindFramebuffer(36160, null);\n if (isWebGL2 === true) {\n gl.bindFramebuffer(36009, null);\n gl.bindFramebuffer(36008, null);\n }\n gl.useProgram(null);\n gl.lineWidth(1);\n gl.scissor(0, 0, gl.canvas.width, gl.canvas.height);\n gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);\n enabledCapabilities = {};\n currentTextureSlot = null;\n currentBoundTextures = {};\n currentBoundFramebuffers = {};\n currentProgram = null;\n currentBlendingEnabled = false;\n currentBlending = null;\n currentBlendEquation = null;\n currentBlendSrc = null;\n currentBlendDst = null;\n currentBlendEquationAlpha = null;\n currentBlendSrcAlpha = null;\n currentBlendDstAlpha = null;\n currentPremultipledAlpha = false;\n currentFlipSided = null;\n currentCullFace = null;\n currentLineWidth = null;\n currentPolygonOffsetFactor = null;\n currentPolygonOffsetUnits = null;\n currentScissor.set(0, 0, gl.canvas.width, gl.canvas.height);\n currentViewport.set(0, 0, gl.canvas.width, gl.canvas.height);\n colorBuffer.reset();\n depthBuffer.reset();\n stencilBuffer.reset();\n }\n return {\n buffers: {\n color: colorBuffer,\n depth: depthBuffer,\n stencil: stencilBuffer\n },\n enable,\n disable,\n bindFramebuffer,\n useProgram,\n setBlending,\n setMaterial,\n setFlipSided,\n setCullFace,\n setLineWidth,\n setPolygonOffset,\n setScissorTest,\n activeTexture,\n bindTexture,\n unbindTexture,\n compressedTexImage2D,\n texImage2D,\n texImage3D,\n texStorage2D,\n texSubImage2D,\n scissor,\n viewport,\n reset\n };\n}\nfunction WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info) {\n const isWebGL2 = capabilities.isWebGL2;\n const maxTextures = capabilities.maxTextures;\n const maxCubemapSize = capabilities.maxCubemapSize;\n const maxTextureSize = capabilities.maxTextureSize;\n const maxSamples = capabilities.maxSamples;\n const hasMultisampledRenderToTexture = extensions.has(\"WEBGL_multisampled_render_to_texture\");\n const MultisampledRenderToTextureExtension = hasMultisampledRenderToTexture ? extensions.get(\"WEBGL_multisampled_render_to_texture\") : void 0;\n const _videoTextures = new WeakMap();\n let _canvas2;\n let useOffscreenCanvas = false;\n try {\n useOffscreenCanvas = typeof OffscreenCanvas !== \"undefined\" && new OffscreenCanvas(1, 1).getContext(\"2d\") !== null;\n } catch (err) {\n }\n function createCanvas(width, height) {\n return useOffscreenCanvas ? new OffscreenCanvas(width, height) : createElementNS(\"canvas\");\n }\n function resizeImage(image, needsPowerOfTwo, needsNewCanvas, maxSize) {\n let scale = 1;\n if (image.width > maxSize || image.height > maxSize) {\n scale = maxSize / Math.max(image.width, image.height);\n }\n if (scale < 1 || needsPowerOfTwo === true) {\n if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n const floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n const width = floor(scale * image.width);\n const height = floor(scale * image.height);\n if (_canvas2 === void 0)\n _canvas2 = createCanvas(width, height);\n const canvas = needsNewCanvas ? createCanvas(width, height) : _canvas2;\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext(\"2d\");\n context.drawImage(image, 0, 0, width, height);\n console.warn(\"THREE.WebGLRenderer: Texture has been resized from (\" + image.width + \"x\" + image.height + \") to (\" + width + \"x\" + height + \").\");\n return canvas;\n } else {\n if (\"data\" in image) {\n console.warn(\"THREE.WebGLRenderer: Image in DataTexture is too big (\" + image.width + \"x\" + image.height + \").\");\n }\n return image;\n }\n }\n return image;\n }\n function isPowerOfTwo$1(image) {\n return isPowerOfTwo(image.width) && isPowerOfTwo(image.height);\n }\n function textureNeedsPowerOfTwo(texture) {\n if (isWebGL2)\n return false;\n return texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping || texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n }\n function textureNeedsGenerateMipmaps(texture, supportsMips) {\n return texture.generateMipmaps && supportsMips && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n }\n function generateMipmap(target) {\n _gl.generateMipmap(target);\n }\n function getInternalFormat(internalFormatName, glFormat, glType) {\n if (isWebGL2 === false)\n return glFormat;\n if (internalFormatName !== null) {\n if (_gl[internalFormatName] !== void 0)\n return _gl[internalFormatName];\n console.warn(\"THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '\" + internalFormatName + \"'\");\n }\n let internalFormat = glFormat;\n if (glFormat === 6403) {\n if (glType === 5126)\n internalFormat = 33326;\n if (glType === 5131)\n internalFormat = 33325;\n if (glType === 5121)\n internalFormat = 33321;\n }\n if (glFormat === 6407) {\n if (glType === 5126)\n internalFormat = 34837;\n if (glType === 5131)\n internalFormat = 34843;\n if (glType === 5121)\n internalFormat = 32849;\n }\n if (glFormat === 6408) {\n if (glType === 5126)\n internalFormat = 34836;\n if (glType === 5131)\n internalFormat = 34842;\n if (glType === 5121)\n internalFormat = 32856;\n }\n if (internalFormat === 33325 || internalFormat === 33326 || internalFormat === 34842 || internalFormat === 34836) {\n extensions.get(\"EXT_color_buffer_float\");\n }\n return internalFormat;\n }\n function getMipLevels(texture, image, supportsMips) {\n if (textureNeedsGenerateMipmaps(texture, supportsMips) === true) {\n return Math.log2(Math.max(image.width, image.height)) + 1;\n } else if (texture.mipmaps.length > 0) {\n return texture.mipmaps.length;\n } else {\n return 1;\n }\n }\n function filterFallback(f) {\n if (f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter) {\n return 9728;\n }\n return 9729;\n }\n function onTextureDispose(event) {\n const texture = event.target;\n texture.removeEventListener(\"dispose\", onTextureDispose);\n deallocateTexture(texture);\n if (texture.isVideoTexture) {\n _videoTextures.delete(texture);\n }\n info.memory.textures--;\n }\n function onRenderTargetDispose(event) {\n const renderTarget = event.target;\n renderTarget.removeEventListener(\"dispose\", onRenderTargetDispose);\n deallocateRenderTarget(renderTarget);\n }\n function deallocateTexture(texture) {\n const textureProperties = properties.get(texture);\n if (textureProperties.__webglInit === void 0)\n return;\n _gl.deleteTexture(textureProperties.__webglTexture);\n properties.remove(texture);\n }\n function deallocateRenderTarget(renderTarget) {\n const texture = renderTarget.texture;\n const renderTargetProperties = properties.get(renderTarget);\n const textureProperties = properties.get(texture);\n if (!renderTarget)\n return;\n if (textureProperties.__webglTexture !== void 0) {\n _gl.deleteTexture(textureProperties.__webglTexture);\n info.memory.textures--;\n }\n if (renderTarget.depthTexture) {\n renderTarget.depthTexture.dispose();\n }\n if (renderTarget.isWebGLCubeRenderTarget) {\n for (let i = 0; i < 6; i++) {\n _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i]);\n if (renderTargetProperties.__webglDepthbuffer)\n _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer[i]);\n }\n } else {\n _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer);\n if (renderTargetProperties.__webglDepthbuffer)\n _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer);\n if (renderTargetProperties.__webglMultisampledFramebuffer)\n _gl.deleteFramebuffer(renderTargetProperties.__webglMultisampledFramebuffer);\n if (renderTargetProperties.__webglColorRenderbuffer)\n _gl.deleteRenderbuffer(renderTargetProperties.__webglColorRenderbuffer);\n if (renderTargetProperties.__webglDepthRenderbuffer)\n _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthRenderbuffer);\n }\n if (renderTarget.isWebGLMultipleRenderTargets) {\n for (let i = 0, il = texture.length; i < il; i++) {\n const attachmentProperties = properties.get(texture[i]);\n if (attachmentProperties.__webglTexture) {\n _gl.deleteTexture(attachmentProperties.__webglTexture);\n info.memory.textures--;\n }\n properties.remove(texture[i]);\n }\n }\n properties.remove(texture);\n properties.remove(renderTarget);\n }\n let textureUnits = 0;\n function resetTextureUnits() {\n textureUnits = 0;\n }\n function allocateTextureUnit() {\n const textureUnit = textureUnits;\n if (textureUnit >= maxTextures) {\n console.warn(\"THREE.WebGLTextures: Trying to use \" + textureUnit + \" texture units while this GPU supports only \" + maxTextures);\n }\n textureUnits += 1;\n return textureUnit;\n }\n function setTexture2D(texture, slot) {\n const textureProperties = properties.get(texture);\n if (texture.isVideoTexture)\n updateVideoTexture(texture);\n if (texture.version > 0 && textureProperties.__version !== texture.version) {\n const image = texture.image;\n if (image === void 0) {\n console.warn(\"THREE.WebGLRenderer: Texture marked for update but image is undefined\");\n } else if (image.complete === false) {\n console.warn(\"THREE.WebGLRenderer: Texture marked for update but image is incomplete\");\n } else {\n uploadTexture(textureProperties, texture, slot);\n return;\n }\n }\n state.activeTexture(33984 + slot);\n state.bindTexture(3553, textureProperties.__webglTexture);\n }\n function setTexture2DArray(texture, slot) {\n const textureProperties = properties.get(texture);\n if (texture.version > 0 && textureProperties.__version !== texture.version) {\n uploadTexture(textureProperties, texture, slot);\n return;\n }\n state.activeTexture(33984 + slot);\n state.bindTexture(35866, textureProperties.__webglTexture);\n }\n function setTexture3D(texture, slot) {\n const textureProperties = properties.get(texture);\n if (texture.version > 0 && textureProperties.__version !== texture.version) {\n uploadTexture(textureProperties, texture, slot);\n return;\n }\n state.activeTexture(33984 + slot);\n state.bindTexture(32879, textureProperties.__webglTexture);\n }\n function setTextureCube(texture, slot) {\n const textureProperties = properties.get(texture);\n if (texture.version > 0 && textureProperties.__version !== texture.version) {\n uploadCubeTexture(textureProperties, texture, slot);\n return;\n }\n state.activeTexture(33984 + slot);\n state.bindTexture(34067, textureProperties.__webglTexture);\n }\n const wrappingToGL = {\n [RepeatWrapping]: 10497,\n [ClampToEdgeWrapping]: 33071,\n [MirroredRepeatWrapping]: 33648\n };\n const filterToGL = {\n [NearestFilter]: 9728,\n [NearestMipmapNearestFilter]: 9984,\n [NearestMipmapLinearFilter]: 9986,\n [LinearFilter]: 9729,\n [LinearMipmapNearestFilter]: 9985,\n [LinearMipmapLinearFilter]: 9987\n };\n function setTextureParameters(textureType, texture, supportsMips) {\n if (supportsMips) {\n _gl.texParameteri(textureType, 10242, wrappingToGL[texture.wrapS]);\n _gl.texParameteri(textureType, 10243, wrappingToGL[texture.wrapT]);\n if (textureType === 32879 || textureType === 35866) {\n _gl.texParameteri(textureType, 32882, wrappingToGL[texture.wrapR]);\n }\n _gl.texParameteri(textureType, 10240, filterToGL[texture.magFilter]);\n _gl.texParameteri(textureType, 10241, filterToGL[texture.minFilter]);\n } else {\n _gl.texParameteri(textureType, 10242, 33071);\n _gl.texParameteri(textureType, 10243, 33071);\n if (textureType === 32879 || textureType === 35866) {\n _gl.texParameteri(textureType, 32882, 33071);\n }\n if (texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping) {\n console.warn(\"THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.\");\n }\n _gl.texParameteri(textureType, 10240, filterFallback(texture.magFilter));\n _gl.texParameteri(textureType, 10241, filterFallback(texture.minFilter));\n if (texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) {\n console.warn(\"THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.\");\n }\n }\n if (extensions.has(\"EXT_texture_filter_anisotropic\") === true) {\n const extension = extensions.get(\"EXT_texture_filter_anisotropic\");\n if (texture.type === FloatType && extensions.has(\"OES_texture_float_linear\") === false)\n return;\n if (isWebGL2 === false && (texture.type === HalfFloatType && extensions.has(\"OES_texture_half_float_linear\") === false))\n return;\n if (texture.anisotropy > 1 || properties.get(texture).__currentAnisotropy) {\n _gl.texParameterf(textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(texture.anisotropy, capabilities.getMaxAnisotropy()));\n properties.get(texture).__currentAnisotropy = texture.anisotropy;\n }\n }\n }\n function initTexture(textureProperties, texture) {\n if (textureProperties.__webglInit === void 0) {\n textureProperties.__webglInit = true;\n texture.addEventListener(\"dispose\", onTextureDispose);\n textureProperties.__webglTexture = _gl.createTexture();\n info.memory.textures++;\n }\n }\n function uploadTexture(textureProperties, texture, slot) {\n let textureType = 3553;\n if (texture.isDataTexture2DArray)\n textureType = 35866;\n if (texture.isDataTexture3D)\n textureType = 32879;\n initTexture(textureProperties, texture);\n state.activeTexture(33984 + slot);\n state.bindTexture(textureType, textureProperties.__webglTexture);\n _gl.pixelStorei(37440, texture.flipY);\n _gl.pixelStorei(37441, texture.premultiplyAlpha);\n _gl.pixelStorei(3317, texture.unpackAlignment);\n _gl.pixelStorei(37443, 0);\n const needsPowerOfTwo = textureNeedsPowerOfTwo(texture) && isPowerOfTwo$1(texture.image) === false;\n const image = resizeImage(texture.image, needsPowerOfTwo, false, maxTextureSize);\n const supportsMips = isPowerOfTwo$1(image) || isWebGL2, glFormat = utils.convert(texture.format);\n let glType = utils.convert(texture.type), glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n setTextureParameters(textureType, texture, supportsMips);\n let mipmap;\n const mipmaps = texture.mipmaps;\n if (texture.isDepthTexture) {\n glInternalFormat = 6402;\n if (isWebGL2) {\n if (texture.type === FloatType) {\n glInternalFormat = 36012;\n } else if (texture.type === UnsignedIntType) {\n glInternalFormat = 33190;\n } else if (texture.type === UnsignedInt248Type) {\n glInternalFormat = 35056;\n } else {\n glInternalFormat = 33189;\n }\n } else {\n if (texture.type === FloatType) {\n console.error(\"WebGLRenderer: Floating point depth texture requires WebGL2.\");\n }\n }\n if (texture.format === DepthFormat && glInternalFormat === 6402) {\n if (texture.type !== UnsignedShortType && texture.type !== UnsignedIntType) {\n console.warn(\"THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.\");\n texture.type = UnsignedShortType;\n glType = utils.convert(texture.type);\n }\n }\n if (texture.format === DepthStencilFormat && glInternalFormat === 6402) {\n glInternalFormat = 34041;\n if (texture.type !== UnsignedInt248Type) {\n console.warn(\"THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.\");\n texture.type = UnsignedInt248Type;\n glType = utils.convert(texture.type);\n }\n }\n state.texImage2D(3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null);\n } else if (texture.isDataTexture) {\n if (mipmaps.length > 0 && supportsMips) {\n for (let i = 0, il = mipmaps.length; i < il; i++) {\n mipmap = mipmaps[i];\n state.texImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n }\n texture.generateMipmaps = false;\n } else {\n state.texImage2D(3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data);\n }\n } else if (texture.isCompressedTexture) {\n for (let i = 0, il = mipmaps.length; i < il; i++) {\n mipmap = mipmaps[i];\n if (texture.format !== RGBAFormat && texture.format !== RGBFormat) {\n if (glFormat !== null) {\n state.compressedTexImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n } else {\n console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\");\n }\n } else {\n state.texImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n }\n }\n } else if (texture.isDataTexture2DArray) {\n state.texImage3D(35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n } else if (texture.isDataTexture3D) {\n state.texImage3D(32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n } else {\n const levels = getMipLevels(texture, image, supportsMips);\n const useTexStorage = isWebGL2 && texture.isVideoTexture !== true;\n const allocateMemory = textureProperties.__version === void 0;\n if (mipmaps.length > 0 && supportsMips) {\n if (useTexStorage && allocateMemory) {\n state.texStorage2D(3553, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n }\n for (let i = 0, il = mipmaps.length; i < il; i++) {\n mipmap = mipmaps[i];\n if (useTexStorage) {\n state.texSubImage2D(3553, i, 0, 0, glFormat, glType, mipmap);\n } else {\n state.texImage2D(3553, i, glInternalFormat, glFormat, glType, mipmap);\n }\n }\n texture.generateMipmaps = false;\n } else {\n if (useTexStorage) {\n if (allocateMemory) {\n state.texStorage2D(3553, levels, glInternalFormat, image.width, image.height);\n }\n state.texSubImage2D(3553, 0, 0, 0, glFormat, glType, image);\n } else {\n state.texImage2D(3553, 0, glInternalFormat, glFormat, glType, image);\n }\n }\n }\n if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n generateMipmap(textureType);\n }\n textureProperties.__version = texture.version;\n if (texture.onUpdate)\n texture.onUpdate(texture);\n }\n function uploadCubeTexture(textureProperties, texture, slot) {\n if (texture.image.length !== 6)\n return;\n initTexture(textureProperties, texture);\n state.activeTexture(33984 + slot);\n state.bindTexture(34067, textureProperties.__webglTexture);\n _gl.pixelStorei(37440, texture.flipY);\n _gl.pixelStorei(37441, texture.premultiplyAlpha);\n _gl.pixelStorei(3317, texture.unpackAlignment);\n _gl.pixelStorei(37443, 0);\n const isCompressed = texture && (texture.isCompressedTexture || texture.image[0].isCompressedTexture);\n const isDataTexture = texture.image[0] && texture.image[0].isDataTexture;\n const cubeImage = [];\n for (let i = 0; i < 6; i++) {\n if (!isCompressed && !isDataTexture) {\n cubeImage[i] = resizeImage(texture.image[i], false, true, maxCubemapSize);\n } else {\n cubeImage[i] = isDataTexture ? texture.image[i].image : texture.image[i];\n }\n }\n const image = cubeImage[0], supportsMips = isPowerOfTwo$1(image) || isWebGL2, glFormat = utils.convert(texture.format), glType = utils.convert(texture.type), glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n setTextureParameters(34067, texture, supportsMips);\n let mipmaps;\n if (isCompressed) {\n for (let i = 0; i < 6; i++) {\n mipmaps = cubeImage[i].mipmaps;\n for (let j = 0; j < mipmaps.length; j++) {\n const mipmap = mipmaps[j];\n if (texture.format !== RGBAFormat && texture.format !== RGBFormat) {\n if (glFormat !== null) {\n state.compressedTexImage2D(34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n } else {\n console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()\");\n }\n } else {\n state.texImage2D(34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n }\n }\n }\n } else {\n mipmaps = texture.mipmaps;\n for (let i = 0; i < 6; i++) {\n if (isDataTexture) {\n state.texImage2D(34069 + i, 0, glInternalFormat, cubeImage[i].width, cubeImage[i].height, 0, glFormat, glType, cubeImage[i].data);\n for (let j = 0; j < mipmaps.length; j++) {\n const mipmap = mipmaps[j];\n const mipmapImage = mipmap.image[i].image;\n state.texImage2D(34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data);\n }\n } else {\n state.texImage2D(34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[i]);\n for (let j = 0; j < mipmaps.length; j++) {\n const mipmap = mipmaps[j];\n state.texImage2D(34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[i]);\n }\n }\n }\n }\n if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n generateMipmap(34067);\n }\n textureProperties.__version = texture.version;\n if (texture.onUpdate)\n texture.onUpdate(texture);\n }\n function setupFrameBufferTexture(framebuffer, renderTarget, texture, attachment, textureTarget) {\n const glFormat = utils.convert(texture.format);\n const glType = utils.convert(texture.type);\n const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n const renderTargetProperties = properties.get(renderTarget);\n if (!renderTargetProperties.__hasExternalTextures) {\n if (textureTarget === 32879 || textureTarget === 35866) {\n state.texImage3D(textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null);\n } else {\n state.texImage2D(textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null);\n }\n }\n state.bindFramebuffer(36160, framebuffer);\n if (renderTarget.useRenderToTexture) {\n MultisampledRenderToTextureExtension.framebufferTexture2DMultisampleEXT(36160, attachment, textureTarget, properties.get(texture).__webglTexture, 0, getRenderTargetSamples(renderTarget));\n } else {\n _gl.framebufferTexture2D(36160, attachment, textureTarget, properties.get(texture).__webglTexture, 0);\n }\n state.bindFramebuffer(36160, null);\n }\n function setupRenderBufferStorage(renderbuffer, renderTarget, isMultisample) {\n _gl.bindRenderbuffer(36161, renderbuffer);\n if (renderTarget.depthBuffer && !renderTarget.stencilBuffer) {\n let glInternalFormat = 33189;\n if (isMultisample || renderTarget.useRenderToTexture) {\n const depthTexture = renderTarget.depthTexture;\n if (depthTexture && depthTexture.isDepthTexture) {\n if (depthTexture.type === FloatType) {\n glInternalFormat = 36012;\n } else if (depthTexture.type === UnsignedIntType) {\n glInternalFormat = 33190;\n }\n }\n const samples = getRenderTargetSamples(renderTarget);\n if (renderTarget.useRenderToTexture) {\n MultisampledRenderToTextureExtension.renderbufferStorageMultisampleEXT(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n } else {\n _gl.renderbufferStorageMultisample(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n }\n } else {\n _gl.renderbufferStorage(36161, glInternalFormat, renderTarget.width, renderTarget.height);\n }\n _gl.framebufferRenderbuffer(36160, 36096, 36161, renderbuffer);\n } else if (renderTarget.depthBuffer && renderTarget.stencilBuffer) {\n const samples = getRenderTargetSamples(renderTarget);\n if (isMultisample && renderTarget.useRenderbuffer) {\n _gl.renderbufferStorageMultisample(36161, samples, 35056, renderTarget.width, renderTarget.height);\n } else if (renderTarget.useRenderToTexture) {\n MultisampledRenderToTextureExtension.renderbufferStorageMultisampleEXT(36161, samples, 35056, renderTarget.width, renderTarget.height);\n } else {\n _gl.renderbufferStorage(36161, 34041, renderTarget.width, renderTarget.height);\n }\n _gl.framebufferRenderbuffer(36160, 33306, 36161, renderbuffer);\n } else {\n const texture = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture[0] : renderTarget.texture;\n const glFormat = utils.convert(texture.format);\n const glType = utils.convert(texture.type);\n const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n const samples = getRenderTargetSamples(renderTarget);\n if (isMultisample && renderTarget.useRenderbuffer) {\n _gl.renderbufferStorageMultisample(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n } else if (renderTarget.useRenderToTexture) {\n MultisampledRenderToTextureExtension.renderbufferStorageMultisampleEXT(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n } else {\n _gl.renderbufferStorage(36161, glInternalFormat, renderTarget.width, renderTarget.height);\n }\n }\n _gl.bindRenderbuffer(36161, null);\n }\n function setupDepthTexture(framebuffer, renderTarget) {\n const isCube = renderTarget && renderTarget.isWebGLCubeRenderTarget;\n if (isCube)\n throw new Error(\"Depth Texture with cube render targets is not supported\");\n state.bindFramebuffer(36160, framebuffer);\n if (!(renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture)) {\n throw new Error(\"renderTarget.depthTexture must be an instance of THREE.DepthTexture\");\n }\n if (!properties.get(renderTarget.depthTexture).__webglTexture || renderTarget.depthTexture.image.width !== renderTarget.width || renderTarget.depthTexture.image.height !== renderTarget.height) {\n renderTarget.depthTexture.image.width = renderTarget.width;\n renderTarget.depthTexture.image.height = renderTarget.height;\n renderTarget.depthTexture.needsUpdate = true;\n }\n setTexture2D(renderTarget.depthTexture, 0);\n const webglDepthTexture = properties.get(renderTarget.depthTexture).__webglTexture;\n const samples = getRenderTargetSamples(renderTarget);\n if (renderTarget.depthTexture.format === DepthFormat) {\n if (renderTarget.useRenderToTexture) {\n MultisampledRenderToTextureExtension.framebufferTexture2DMultisampleEXT(36160, 36096, 3553, webglDepthTexture, 0, samples);\n } else {\n _gl.framebufferTexture2D(36160, 36096, 3553, webglDepthTexture, 0);\n }\n } else if (renderTarget.depthTexture.format === DepthStencilFormat) {\n if (renderTarget.useRenderToTexture) {\n MultisampledRenderToTextureExtension.framebufferTexture2DMultisampleEXT(36160, 33306, 3553, webglDepthTexture, 0, samples);\n } else {\n _gl.framebufferTexture2D(36160, 33306, 3553, webglDepthTexture, 0);\n }\n } else {\n throw new Error(\"Unknown depthTexture format\");\n }\n }\n function setupDepthRenderbuffer(renderTarget) {\n const renderTargetProperties = properties.get(renderTarget);\n const isCube = renderTarget.isWebGLCubeRenderTarget === true;\n if (renderTarget.depthTexture && !renderTargetProperties.__autoAllocateDepthBuffer) {\n if (isCube)\n throw new Error(\"target.depthTexture not supported in Cube render targets\");\n setupDepthTexture(renderTargetProperties.__webglFramebuffer, renderTarget);\n } else {\n if (isCube) {\n renderTargetProperties.__webglDepthbuffer = [];\n for (let i = 0; i < 6; i++) {\n state.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer[i]);\n renderTargetProperties.__webglDepthbuffer[i] = _gl.createRenderbuffer();\n setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer[i], renderTarget, false);\n }\n } else {\n state.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer);\n renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer, renderTarget, false);\n }\n }\n state.bindFramebuffer(36160, null);\n }\n function rebindTextures(renderTarget, colorTexture, depthTexture) {\n const renderTargetProperties = properties.get(renderTarget);\n if (colorTexture !== void 0) {\n setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, 36064, 3553);\n }\n if (depthTexture !== void 0) {\n setupDepthRenderbuffer(renderTarget);\n }\n }\n function setupRenderTarget(renderTarget) {\n const texture = renderTarget.texture;\n const renderTargetProperties = properties.get(renderTarget);\n const textureProperties = properties.get(texture);\n renderTarget.addEventListener(\"dispose\", onRenderTargetDispose);\n if (renderTarget.isWebGLMultipleRenderTargets !== true) {\n if (textureProperties.__webglTexture === void 0) {\n textureProperties.__webglTexture = _gl.createTexture();\n }\n textureProperties.__version = texture.version;\n info.memory.textures++;\n }\n const isCube = renderTarget.isWebGLCubeRenderTarget === true;\n const isMultipleRenderTargets = renderTarget.isWebGLMultipleRenderTargets === true;\n const isRenderTarget3D = texture.isDataTexture3D || texture.isDataTexture2DArray;\n const supportsMips = isPowerOfTwo$1(renderTarget) || isWebGL2;\n if (isWebGL2 && texture.format === RGBFormat && (texture.type === FloatType || texture.type === HalfFloatType)) {\n texture.format = RGBAFormat;\n console.warn(\"THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.\");\n }\n if (isCube) {\n renderTargetProperties.__webglFramebuffer = [];\n for (let i = 0; i < 6; i++) {\n renderTargetProperties.__webglFramebuffer[i] = _gl.createFramebuffer();\n }\n } else {\n renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n if (isMultipleRenderTargets) {\n if (capabilities.drawBuffers) {\n const textures = renderTarget.texture;\n for (let i = 0, il = textures.length; i < il; i++) {\n const attachmentProperties = properties.get(textures[i]);\n if (attachmentProperties.__webglTexture === void 0) {\n attachmentProperties.__webglTexture = _gl.createTexture();\n info.memory.textures++;\n }\n }\n } else {\n console.warn(\"THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.\");\n }\n } else if (renderTarget.useRenderbuffer) {\n if (isWebGL2) {\n renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n renderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n _gl.bindRenderbuffer(36161, renderTargetProperties.__webglColorRenderbuffer);\n const glFormat = utils.convert(texture.format);\n const glType = utils.convert(texture.type);\n const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n const samples = getRenderTargetSamples(renderTarget);\n _gl.renderbufferStorageMultisample(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n state.bindFramebuffer(36160, renderTargetProperties.__webglMultisampledFramebuffer);\n _gl.framebufferRenderbuffer(36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer);\n _gl.bindRenderbuffer(36161, null);\n if (renderTarget.depthBuffer) {\n renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n setupRenderBufferStorage(renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true);\n }\n state.bindFramebuffer(36160, null);\n } else {\n console.warn(\"THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.\");\n }\n }\n }\n if (isCube) {\n state.bindTexture(34067, textureProperties.__webglTexture);\n setTextureParameters(34067, texture, supportsMips);\n for (let i = 0; i < 6; i++) {\n setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i], renderTarget, texture, 36064, 34069 + i);\n }\n if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n generateMipmap(34067);\n }\n state.unbindTexture();\n } else if (isMultipleRenderTargets) {\n const textures = renderTarget.texture;\n for (let i = 0, il = textures.length; i < il; i++) {\n const attachment = textures[i];\n const attachmentProperties = properties.get(attachment);\n state.bindTexture(3553, attachmentProperties.__webglTexture);\n setTextureParameters(3553, attachment, supportsMips);\n setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, attachment, 36064 + i, 3553);\n if (textureNeedsGenerateMipmaps(attachment, supportsMips)) {\n generateMipmap(3553);\n }\n }\n state.unbindTexture();\n } else {\n let glTextureType = 3553;\n if (isRenderTarget3D) {\n if (isWebGL2) {\n const isTexture3D = texture.isDataTexture3D;\n glTextureType = isTexture3D ? 32879 : 35866;\n } else {\n console.warn(\"THREE.DataTexture3D and THREE.DataTexture2DArray only supported with WebGL2.\");\n }\n }\n state.bindTexture(glTextureType, textureProperties.__webglTexture);\n setTextureParameters(glTextureType, texture, supportsMips);\n setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, texture, 36064, glTextureType);\n if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n generateMipmap(glTextureType);\n }\n state.unbindTexture();\n }\n if (renderTarget.depthBuffer) {\n setupDepthRenderbuffer(renderTarget);\n }\n }\n function updateRenderTargetMipmap(renderTarget) {\n const supportsMips = isPowerOfTwo$1(renderTarget) || isWebGL2;\n const textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [renderTarget.texture];\n for (let i = 0, il = textures.length; i < il; i++) {\n const texture = textures[i];\n if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n const target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n const webglTexture = properties.get(texture).__webglTexture;\n state.bindTexture(target, webglTexture);\n generateMipmap(target);\n state.unbindTexture();\n }\n }\n }\n function updateMultisampleRenderTarget(renderTarget) {\n if (renderTarget.useRenderbuffer) {\n if (isWebGL2) {\n const width = renderTarget.width;\n const height = renderTarget.height;\n let mask = 16384;\n const invalidationArray = [36064];\n const depthStyle = renderTarget.stencilBuffer ? 33306 : 36096;\n if (renderTarget.depthBuffer) {\n invalidationArray.push(depthStyle);\n }\n if (!renderTarget.ignoreDepthForMultisampleCopy) {\n if (renderTarget.depthBuffer)\n mask |= 256;\n if (renderTarget.stencilBuffer)\n mask |= 1024;\n }\n const renderTargetProperties = properties.get(renderTarget);\n state.bindFramebuffer(36008, renderTargetProperties.__webglMultisampledFramebuffer);\n state.bindFramebuffer(36009, renderTargetProperties.__webglFramebuffer);\n if (renderTarget.ignoreDepthForMultisampleCopy) {\n _gl.invalidateFramebuffer(36008, [depthStyle]);\n _gl.invalidateFramebuffer(36009, [depthStyle]);\n }\n _gl.blitFramebuffer(0, 0, width, height, 0, 0, width, height, mask, 9728);\n _gl.invalidateFramebuffer(36008, invalidationArray);\n state.bindFramebuffer(36008, null);\n state.bindFramebuffer(36009, renderTargetProperties.__webglMultisampledFramebuffer);\n } else {\n console.warn(\"THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.\");\n }\n }\n }\n function getRenderTargetSamples(renderTarget) {\n return isWebGL2 && (renderTarget.useRenderbuffer || renderTarget.useRenderToTexture) ? Math.min(maxSamples, renderTarget.samples) : 0;\n }\n function updateVideoTexture(texture) {\n const frame = info.render.frame;\n if (_videoTextures.get(texture) !== frame) {\n _videoTextures.set(texture, frame);\n texture.update();\n }\n }\n let warnedTexture2D = false;\n let warnedTextureCube = false;\n function safeSetTexture2D(texture, slot) {\n if (texture && texture.isWebGLRenderTarget) {\n if (warnedTexture2D === false) {\n console.warn(\"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\");\n warnedTexture2D = true;\n }\n texture = texture.texture;\n }\n setTexture2D(texture, slot);\n }\n function safeSetTextureCube(texture, slot) {\n if (texture && texture.isWebGLCubeRenderTarget) {\n if (warnedTextureCube === false) {\n console.warn(\"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\");\n warnedTextureCube = true;\n }\n texture = texture.texture;\n }\n setTextureCube(texture, slot);\n }\n this.allocateTextureUnit = allocateTextureUnit;\n this.resetTextureUnits = resetTextureUnits;\n this.setTexture2D = setTexture2D;\n this.setTexture2DArray = setTexture2DArray;\n this.setTexture3D = setTexture3D;\n this.setTextureCube = setTextureCube;\n this.rebindTextures = rebindTextures;\n this.setupRenderTarget = setupRenderTarget;\n this.updateRenderTargetMipmap = updateRenderTargetMipmap;\n this.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n this.setupDepthRenderbuffer = setupDepthRenderbuffer;\n this.setupFrameBufferTexture = setupFrameBufferTexture;\n this.safeSetTexture2D = safeSetTexture2D;\n this.safeSetTextureCube = safeSetTextureCube;\n}\nfunction WebGLUtils(gl, extensions, capabilities) {\n const isWebGL2 = capabilities.isWebGL2;\n function convert(p) {\n let extension;\n if (p === UnsignedByteType)\n return 5121;\n if (p === UnsignedShort4444Type)\n return 32819;\n if (p === UnsignedShort5551Type)\n return 32820;\n if (p === UnsignedShort565Type)\n return 33635;\n if (p === ByteType)\n return 5120;\n if (p === ShortType)\n return 5122;\n if (p === UnsignedShortType)\n return 5123;\n if (p === IntType)\n return 5124;\n if (p === UnsignedIntType)\n return 5125;\n if (p === FloatType)\n return 5126;\n if (p === HalfFloatType) {\n if (isWebGL2)\n return 5131;\n extension = extensions.get(\"OES_texture_half_float\");\n if (extension !== null) {\n return extension.HALF_FLOAT_OES;\n } else {\n return null;\n }\n }\n if (p === AlphaFormat)\n return 6406;\n if (p === RGBFormat)\n return 6407;\n if (p === RGBAFormat)\n return 6408;\n if (p === LuminanceFormat)\n return 6409;\n if (p === LuminanceAlphaFormat)\n return 6410;\n if (p === DepthFormat)\n return 6402;\n if (p === DepthStencilFormat)\n return 34041;\n if (p === RedFormat)\n return 6403;\n if (p === RedIntegerFormat)\n return 36244;\n if (p === RGFormat)\n return 33319;\n if (p === RGIntegerFormat)\n return 33320;\n if (p === RGBIntegerFormat)\n return 36248;\n if (p === RGBAIntegerFormat)\n return 36249;\n if (p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) {\n extension = extensions.get(\"WEBGL_compressed_texture_s3tc\");\n if (extension !== null) {\n if (p === RGB_S3TC_DXT1_Format)\n return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n if (p === RGBA_S3TC_DXT1_Format)\n return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n if (p === RGBA_S3TC_DXT3_Format)\n return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n if (p === RGBA_S3TC_DXT5_Format)\n return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n } else {\n return null;\n }\n }\n if (p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format) {\n extension = extensions.get(\"WEBGL_compressed_texture_pvrtc\");\n if (extension !== null) {\n if (p === RGB_PVRTC_4BPPV1_Format)\n return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n if (p === RGB_PVRTC_2BPPV1_Format)\n return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n if (p === RGBA_PVRTC_4BPPV1_Format)\n return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n if (p === RGBA_PVRTC_2BPPV1_Format)\n return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n } else {\n return null;\n }\n }\n if (p === RGB_ETC1_Format) {\n extension = extensions.get(\"WEBGL_compressed_texture_etc1\");\n if (extension !== null) {\n return extension.COMPRESSED_RGB_ETC1_WEBGL;\n } else {\n return null;\n }\n }\n if (p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format) {\n extension = extensions.get(\"WEBGL_compressed_texture_etc\");\n if (extension !== null) {\n if (p === RGB_ETC2_Format)\n return extension.COMPRESSED_RGB8_ETC2;\n if (p === RGBA_ETC2_EAC_Format)\n return extension.COMPRESSED_RGBA8_ETC2_EAC;\n }\n }\n if (p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format || p === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format || p === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format || p === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format || p === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format || p === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format) {\n extension = extensions.get(\"WEBGL_compressed_texture_astc\");\n if (extension !== null) {\n return p;\n } else {\n return null;\n }\n }\n if (p === RGBA_BPTC_Format) {\n extension = extensions.get(\"EXT_texture_compression_bptc\");\n if (extension !== null) {\n return p;\n } else {\n return null;\n }\n }\n if (p === UnsignedInt248Type) {\n if (isWebGL2)\n return 34042;\n extension = extensions.get(\"WEBGL_depth_texture\");\n if (extension !== null) {\n return extension.UNSIGNED_INT_24_8_WEBGL;\n } else {\n return null;\n }\n }\n }\n return {convert};\n}\nclass ArrayCamera extends PerspectiveCamera {\n constructor(array = []) {\n super();\n this.cameras = array;\n }\n}\nArrayCamera.prototype.isArrayCamera = true;\nclass Group extends Object3D {\n constructor() {\n super();\n this.type = \"Group\";\n }\n}\nGroup.prototype.isGroup = true;\nconst _moveEvent = {type: \"move\"};\nclass WebXRController {\n constructor() {\n this._targetRay = null;\n this._grip = null;\n this._hand = null;\n }\n getHandSpace() {\n if (this._hand === null) {\n this._hand = new Group();\n this._hand.matrixAutoUpdate = false;\n this._hand.visible = false;\n this._hand.joints = {};\n this._hand.inputState = {pinching: false};\n }\n return this._hand;\n }\n getTargetRaySpace() {\n if (this._targetRay === null) {\n this._targetRay = new Group();\n this._targetRay.matrixAutoUpdate = false;\n this._targetRay.visible = false;\n this._targetRay.hasLinearVelocity = false;\n this._targetRay.linearVelocity = new Vector3();\n this._targetRay.hasAngularVelocity = false;\n this._targetRay.angularVelocity = new Vector3();\n }\n return this._targetRay;\n }\n getGripSpace() {\n if (this._grip === null) {\n this._grip = new Group();\n this._grip.matrixAutoUpdate = false;\n this._grip.visible = false;\n this._grip.hasLinearVelocity = false;\n this._grip.linearVelocity = new Vector3();\n this._grip.hasAngularVelocity = false;\n this._grip.angularVelocity = new Vector3();\n }\n return this._grip;\n }\n dispatchEvent(event) {\n if (this._targetRay !== null) {\n this._targetRay.dispatchEvent(event);\n }\n if (this._grip !== null) {\n this._grip.dispatchEvent(event);\n }\n if (this._hand !== null) {\n this._hand.dispatchEvent(event);\n }\n return this;\n }\n disconnect(inputSource) {\n this.dispatchEvent({type: \"disconnected\", data: inputSource});\n if (this._targetRay !== null) {\n this._targetRay.visible = false;\n }\n if (this._grip !== null) {\n this._grip.visible = false;\n }\n if (this._hand !== null) {\n this._hand.visible = false;\n }\n return this;\n }\n update(inputSource, frame, referenceSpace) {\n let inputPose = null;\n let gripPose = null;\n let handPose = null;\n const targetRay = this._targetRay;\n const grip = this._grip;\n const hand = this._hand;\n if (inputSource && frame.session.visibilityState !== \"visible-blurred\") {\n if (targetRay !== null) {\n inputPose = frame.getPose(inputSource.targetRaySpace, referenceSpace);\n if (inputPose !== null) {\n targetRay.matrix.fromArray(inputPose.transform.matrix);\n targetRay.matrix.decompose(targetRay.position, targetRay.rotation, targetRay.scale);\n if (inputPose.linearVelocity) {\n targetRay.hasLinearVelocity = true;\n targetRay.linearVelocity.copy(inputPose.linearVelocity);\n } else {\n targetRay.hasLinearVelocity = false;\n }\n if (inputPose.angularVelocity) {\n targetRay.hasAngularVelocity = true;\n targetRay.angularVelocity.copy(inputPose.angularVelocity);\n } else {\n targetRay.hasAngularVelocity = false;\n }\n this.dispatchEvent(_moveEvent);\n }\n }\n if (hand && inputSource.hand) {\n handPose = true;\n for (const inputjoint of inputSource.hand.values()) {\n const jointPose = frame.getJointPose(inputjoint, referenceSpace);\n if (hand.joints[inputjoint.jointName] === void 0) {\n const joint2 = new Group();\n joint2.matrixAutoUpdate = false;\n joint2.visible = false;\n hand.joints[inputjoint.jointName] = joint2;\n hand.add(joint2);\n }\n const joint = hand.joints[inputjoint.jointName];\n if (jointPose !== null) {\n joint.matrix.fromArray(jointPose.transform.matrix);\n joint.matrix.decompose(joint.position, joint.rotation, joint.scale);\n joint.jointRadius = jointPose.radius;\n }\n joint.visible = jointPose !== null;\n }\n const indexTip = hand.joints[\"index-finger-tip\"];\n const thumbTip = hand.joints[\"thumb-tip\"];\n const distance = indexTip.position.distanceTo(thumbTip.position);\n const distanceToPinch = 0.02;\n const threshold = 5e-3;\n if (hand.inputState.pinching && distance > distanceToPinch + threshold) {\n hand.inputState.pinching = false;\n this.dispatchEvent({\n type: \"pinchend\",\n handedness: inputSource.handedness,\n target: this\n });\n } else if (!hand.inputState.pinching && distance <= distanceToPinch - threshold) {\n hand.inputState.pinching = true;\n this.dispatchEvent({\n type: \"pinchstart\",\n handedness: inputSource.handedness,\n target: this\n });\n }\n } else {\n if (grip !== null && inputSource.gripSpace) {\n gripPose = frame.getPose(inputSource.gripSpace, referenceSpace);\n if (gripPose !== null) {\n grip.matrix.fromArray(gripPose.transform.matrix);\n grip.matrix.decompose(grip.position, grip.rotation, grip.scale);\n if (gripPose.linearVelocity) {\n grip.hasLinearVelocity = true;\n grip.linearVelocity.copy(gripPose.linearVelocity);\n } else {\n grip.hasLinearVelocity = false;\n }\n if (gripPose.angularVelocity) {\n grip.hasAngularVelocity = true;\n grip.angularVelocity.copy(gripPose.angularVelocity);\n } else {\n grip.hasAngularVelocity = false;\n }\n }\n }\n }\n }\n if (targetRay !== null) {\n targetRay.visible = inputPose !== null;\n }\n if (grip !== null) {\n grip.visible = gripPose !== null;\n }\n if (hand !== null) {\n hand.visible = handPose !== null;\n }\n return this;\n }\n}\nclass DepthTexture extends Texture {\n constructor(width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format) {\n format = format !== void 0 ? format : DepthFormat;\n if (format !== DepthFormat && format !== DepthStencilFormat) {\n throw new Error(\"DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat\");\n }\n if (type === void 0 && format === DepthFormat)\n type = UnsignedShortType;\n if (type === void 0 && format === DepthStencilFormat)\n type = UnsignedInt248Type;\n super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n this.image = {width, height};\n this.magFilter = magFilter !== void 0 ? magFilter : NearestFilter;\n this.minFilter = minFilter !== void 0 ? minFilter : NearestFilter;\n this.flipY = false;\n this.generateMipmaps = false;\n }\n}\nDepthTexture.prototype.isDepthTexture = true;\nclass WebXRManager extends EventDispatcher {\n constructor(renderer, gl) {\n super();\n const scope = this;\n let session = null;\n let framebufferScaleFactor = 1;\n let referenceSpace = null;\n let referenceSpaceType = \"local-floor\";\n const hasMultisampledRenderToTexture = renderer.extensions.has(\"WEBGL_multisampled_render_to_texture\");\n let pose = null;\n let glBinding = null;\n let glProjLayer = null;\n let glBaseLayer = null;\n let isMultisample = false;\n let xrFrame = null;\n const attributes = gl.getContextAttributes();\n let initialRenderTarget = null;\n let newRenderTarget = null;\n const controllers = [];\n const inputSourcesMap = new Map();\n const cameraL = new PerspectiveCamera();\n cameraL.layers.enable(1);\n cameraL.viewport = new Vector4();\n const cameraR = new PerspectiveCamera();\n cameraR.layers.enable(2);\n cameraR.viewport = new Vector4();\n const cameras = [cameraL, cameraR];\n const cameraVR = new ArrayCamera();\n cameraVR.layers.enable(1);\n cameraVR.layers.enable(2);\n let _currentDepthNear = null;\n let _currentDepthFar = null;\n this.cameraAutoUpdate = true;\n this.enabled = false;\n this.isPresenting = false;\n this.getController = function(index) {\n let controller = controllers[index];\n if (controller === void 0) {\n controller = new WebXRController();\n controllers[index] = controller;\n }\n return controller.getTargetRaySpace();\n };\n this.getControllerGrip = function(index) {\n let controller = controllers[index];\n if (controller === void 0) {\n controller = new WebXRController();\n controllers[index] = controller;\n }\n return controller.getGripSpace();\n };\n this.getHand = function(index) {\n let controller = controllers[index];\n if (controller === void 0) {\n controller = new WebXRController();\n controllers[index] = controller;\n }\n return controller.getHandSpace();\n };\n function onSessionEvent(event) {\n const controller = inputSourcesMap.get(event.inputSource);\n if (controller) {\n controller.dispatchEvent({type: event.type, data: event.inputSource});\n }\n }\n function onSessionEnd() {\n inputSourcesMap.forEach(function(controller, inputSource) {\n controller.disconnect(inputSource);\n });\n inputSourcesMap.clear();\n _currentDepthNear = null;\n _currentDepthFar = null;\n renderer.setRenderTarget(initialRenderTarget);\n glBaseLayer = null;\n glProjLayer = null;\n glBinding = null;\n session = null;\n newRenderTarget = null;\n animation.stop();\n scope.isPresenting = false;\n scope.dispatchEvent({type: \"sessionend\"});\n }\n this.setFramebufferScaleFactor = function(value) {\n framebufferScaleFactor = value;\n if (scope.isPresenting === true) {\n console.warn(\"THREE.WebXRManager: Cannot change framebuffer scale while presenting.\");\n }\n };\n this.setReferenceSpaceType = function(value) {\n referenceSpaceType = value;\n if (scope.isPresenting === true) {\n console.warn(\"THREE.WebXRManager: Cannot change reference space type while presenting.\");\n }\n };\n this.getReferenceSpace = function() {\n return referenceSpace;\n };\n this.getBaseLayer = function() {\n return glProjLayer !== null ? glProjLayer : glBaseLayer;\n };\n this.getBinding = function() {\n return glBinding;\n };\n this.getFrame = function() {\n return xrFrame;\n };\n this.getSession = function() {\n return session;\n };\n this.setSession = async function(value) {\n session = value;\n if (session !== null) {\n initialRenderTarget = renderer.getRenderTarget();\n session.addEventListener(\"select\", onSessionEvent);\n session.addEventListener(\"selectstart\", onSessionEvent);\n session.addEventListener(\"selectend\", onSessionEvent);\n session.addEventListener(\"squeeze\", onSessionEvent);\n session.addEventListener(\"squeezestart\", onSessionEvent);\n session.addEventListener(\"squeezeend\", onSessionEvent);\n session.addEventListener(\"end\", onSessionEnd);\n session.addEventListener(\"inputsourceschange\", onInputSourcesChange);\n if (attributes.xrCompatible !== true) {\n await gl.makeXRCompatible();\n }\n if (session.renderState.layers === void 0 || renderer.capabilities.isWebGL2 === false) {\n const layerInit = {\n antialias: session.renderState.layers === void 0 ? attributes.antialias : true,\n alpha: attributes.alpha,\n depth: attributes.depth,\n stencil: attributes.stencil,\n framebufferScaleFactor\n };\n glBaseLayer = new XRWebGLLayer(session, gl, layerInit);\n session.updateRenderState({baseLayer: glBaseLayer});\n newRenderTarget = new WebGLRenderTarget(glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight);\n } else {\n isMultisample = attributes.antialias;\n let depthFormat = null;\n let depthType = null;\n let glDepthFormat = null;\n if (attributes.depth) {\n glDepthFormat = attributes.stencil ? 35056 : 33189;\n depthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n depthType = attributes.stencil ? UnsignedInt248Type : UnsignedShortType;\n }\n const projectionlayerInit = {\n colorFormat: attributes.alpha || isMultisample ? 32856 : 32849,\n depthFormat: glDepthFormat,\n scaleFactor: framebufferScaleFactor\n };\n glBinding = new XRWebGLBinding(session, gl);\n glProjLayer = glBinding.createProjectionLayer(projectionlayerInit);\n session.updateRenderState({layers: [glProjLayer]});\n if (isMultisample) {\n newRenderTarget = new WebGLMultisampleRenderTarget(glProjLayer.textureWidth, glProjLayer.textureHeight, {\n format: RGBAFormat,\n type: UnsignedByteType,\n depthTexture: new DepthTexture(glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, void 0, void 0, void 0, void 0, void 0, void 0, depthFormat),\n stencilBuffer: attributes.stencil,\n ignoreDepth: glProjLayer.ignoreDepthValues,\n useRenderToTexture: hasMultisampledRenderToTexture\n });\n } else {\n newRenderTarget = new WebGLRenderTarget(glProjLayer.textureWidth, glProjLayer.textureHeight, {\n format: attributes.alpha ? RGBAFormat : RGBFormat,\n type: UnsignedByteType,\n depthTexture: new DepthTexture(glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, void 0, void 0, void 0, void 0, void 0, void 0, depthFormat),\n stencilBuffer: attributes.stencil,\n ignoreDepth: glProjLayer.ignoreDepthValues\n });\n }\n }\n this.setFoveation(0);\n referenceSpace = await session.requestReferenceSpace(referenceSpaceType);\n animation.setContext(session);\n animation.start();\n scope.isPresenting = true;\n scope.dispatchEvent({type: \"sessionstart\"});\n }\n };\n function onInputSourcesChange(event) {\n const inputSources = session.inputSources;\n for (let i = 0; i < controllers.length; i++) {\n inputSourcesMap.set(inputSources[i], controllers[i]);\n }\n for (let i = 0; i < event.removed.length; i++) {\n const inputSource = event.removed[i];\n const controller = inputSourcesMap.get(inputSource);\n if (controller) {\n controller.dispatchEvent({type: \"disconnected\", data: inputSource});\n inputSourcesMap.delete(inputSource);\n }\n }\n for (let i = 0; i < event.added.length; i++) {\n const inputSource = event.added[i];\n const controller = inputSourcesMap.get(inputSource);\n if (controller) {\n controller.dispatchEvent({type: \"connected\", data: inputSource});\n }\n }\n }\n const cameraLPos = new Vector3();\n const cameraRPos = new Vector3();\n function setProjectionFromUnion(camera, cameraL2, cameraR2) {\n cameraLPos.setFromMatrixPosition(cameraL2.matrixWorld);\n cameraRPos.setFromMatrixPosition(cameraR2.matrixWorld);\n const ipd = cameraLPos.distanceTo(cameraRPos);\n const projL = cameraL2.projectionMatrix.elements;\n const projR = cameraR2.projectionMatrix.elements;\n const near = projL[14] / (projL[10] - 1);\n const far = projL[14] / (projL[10] + 1);\n const topFov = (projL[9] + 1) / projL[5];\n const bottomFov = (projL[9] - 1) / projL[5];\n const leftFov = (projL[8] - 1) / projL[0];\n const rightFov = (projR[8] + 1) / projR[0];\n const left = near * leftFov;\n const right = near * rightFov;\n const zOffset = ipd / (-leftFov + rightFov);\n const xOffset = zOffset * -leftFov;\n cameraL2.matrixWorld.decompose(camera.position, camera.quaternion, camera.scale);\n camera.translateX(xOffset);\n camera.translateZ(zOffset);\n camera.matrixWorld.compose(camera.position, camera.quaternion, camera.scale);\n camera.matrixWorldInverse.copy(camera.matrixWorld).invert();\n const near2 = near + zOffset;\n const far2 = far + zOffset;\n const left2 = left - xOffset;\n const right2 = right + (ipd - xOffset);\n const top2 = topFov * far / far2 * near2;\n const bottom2 = bottomFov * far / far2 * near2;\n camera.projectionMatrix.makePerspective(left2, right2, top2, bottom2, near2, far2);\n }\n function updateCamera(camera, parent) {\n if (parent === null) {\n camera.matrixWorld.copy(camera.matrix);\n } else {\n camera.matrixWorld.multiplyMatrices(parent.matrixWorld, camera.matrix);\n }\n camera.matrixWorldInverse.copy(camera.matrixWorld).invert();\n }\n this.updateCamera = function(camera) {\n if (session === null)\n return;\n cameraVR.near = cameraR.near = cameraL.near = camera.near;\n cameraVR.far = cameraR.far = cameraL.far = camera.far;\n if (_currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far) {\n session.updateRenderState({\n depthNear: cameraVR.near,\n depthFar: cameraVR.far\n });\n _currentDepthNear = cameraVR.near;\n _currentDepthFar = cameraVR.far;\n }\n const parent = camera.parent;\n const cameras2 = cameraVR.cameras;\n updateCamera(cameraVR, parent);\n for (let i = 0; i < cameras2.length; i++) {\n updateCamera(cameras2[i], parent);\n }\n cameraVR.matrixWorld.decompose(cameraVR.position, cameraVR.quaternion, cameraVR.scale);\n camera.position.copy(cameraVR.position);\n camera.quaternion.copy(cameraVR.quaternion);\n camera.scale.copy(cameraVR.scale);\n camera.matrix.copy(cameraVR.matrix);\n camera.matrixWorld.copy(cameraVR.matrixWorld);\n const children = camera.children;\n for (let i = 0, l = children.length; i < l; i++) {\n children[i].updateMatrixWorld(true);\n }\n if (cameras2.length === 2) {\n setProjectionFromUnion(cameraVR, cameraL, cameraR);\n } else {\n cameraVR.projectionMatrix.copy(cameraL.projectionMatrix);\n }\n };\n this.getCamera = function() {\n return cameraVR;\n };\n this.getFoveation = function() {\n if (glProjLayer !== null) {\n return glProjLayer.fixedFoveation;\n }\n if (glBaseLayer !== null) {\n return glBaseLayer.fixedFoveation;\n }\n return void 0;\n };\n this.setFoveation = function(foveation) {\n if (glProjLayer !== null) {\n glProjLayer.fixedFoveation = foveation;\n }\n if (glBaseLayer !== null && glBaseLayer.fixedFoveation !== void 0) {\n glBaseLayer.fixedFoveation = foveation;\n }\n };\n let onAnimationFrameCallback = null;\n function onAnimationFrame(time, frame) {\n pose = frame.getViewerPose(referenceSpace);\n xrFrame = frame;\n if (pose !== null) {\n const views = pose.views;\n if (glBaseLayer !== null) {\n renderer.setRenderTargetFramebuffer(newRenderTarget, glBaseLayer.framebuffer);\n renderer.setRenderTarget(newRenderTarget);\n }\n let cameraVRNeedsUpdate = false;\n if (views.length !== cameraVR.cameras.length) {\n cameraVR.cameras.length = 0;\n cameraVRNeedsUpdate = true;\n }\n for (let i = 0; i < views.length; i++) {\n const view = views[i];\n let viewport = null;\n if (glBaseLayer !== null) {\n viewport = glBaseLayer.getViewport(view);\n } else {\n const glSubImage = glBinding.getViewSubImage(glProjLayer, view);\n viewport = glSubImage.viewport;\n if (i === 0) {\n renderer.setRenderTargetTextures(newRenderTarget, glSubImage.colorTexture, glProjLayer.ignoreDepthValues ? void 0 : glSubImage.depthStencilTexture);\n renderer.setRenderTarget(newRenderTarget);\n }\n }\n const camera = cameras[i];\n camera.matrix.fromArray(view.transform.matrix);\n camera.projectionMatrix.fromArray(view.projectionMatrix);\n camera.viewport.set(viewport.x, viewport.y, viewport.width, viewport.height);\n if (i === 0) {\n cameraVR.matrix.copy(camera.matrix);\n }\n if (cameraVRNeedsUpdate === true) {\n cameraVR.cameras.push(camera);\n }\n }\n }\n const inputSources = session.inputSources;\n for (let i = 0; i < controllers.length; i++) {\n const controller = controllers[i];\n const inputSource = inputSources[i];\n controller.update(inputSource, frame, referenceSpace);\n }\n if (onAnimationFrameCallback)\n onAnimationFrameCallback(time, frame);\n xrFrame = null;\n }\n const animation = new WebGLAnimation();\n animation.setAnimationLoop(onAnimationFrame);\n this.setAnimationLoop = function(callback) {\n onAnimationFrameCallback = callback;\n };\n this.dispose = function() {\n };\n }\n}\nfunction WebGLMaterials(properties) {\n function refreshFogUniforms(uniforms, fog) {\n uniforms.fogColor.value.copy(fog.color);\n if (fog.isFog) {\n uniforms.fogNear.value = fog.near;\n uniforms.fogFar.value = fog.far;\n } else if (fog.isFogExp2) {\n uniforms.fogDensity.value = fog.density;\n }\n }\n function refreshMaterialUniforms(uniforms, material, pixelRatio, height, transmissionRenderTarget) {\n if (material.isMeshBasicMaterial) {\n refreshUniformsCommon(uniforms, material);\n } else if (material.isMeshLambertMaterial) {\n refreshUniformsCommon(uniforms, material);\n refreshUniformsLambert(uniforms, material);\n } else if (material.isMeshToonMaterial) {\n refreshUniformsCommon(uniforms, material);\n refreshUniformsToon(uniforms, material);\n } else if (material.isMeshPhongMaterial) {\n refreshUniformsCommon(uniforms, material);\n refreshUniformsPhong(uniforms, material);\n } else if (material.isMeshStandardMaterial) {\n refreshUniformsCommon(uniforms, material);\n if (material.isMeshPhysicalMaterial) {\n refreshUniformsPhysical(uniforms, material, transmissionRenderTarget);\n } else {\n refreshUniformsStandard(uniforms, material);\n }\n } else if (material.isMeshMatcapMaterial) {\n refreshUniformsCommon(uniforms, material);\n refreshUniformsMatcap(uniforms, material);\n } else if (material.isMeshDepthMaterial) {\n refreshUniformsCommon(uniforms, material);\n refreshUniformsDepth(uniforms, material);\n } else if (material.isMeshDistanceMaterial) {\n refreshUniformsCommon(uniforms, material);\n refreshUniformsDistance(uniforms, material);\n } else if (material.isMeshNormalMaterial) {\n refreshUniformsCommon(uniforms, material);\n refreshUniformsNormal(uniforms, material);\n } else if (material.isLineBasicMaterial) {\n refreshUniformsLine(uniforms, material);\n if (material.isLineDashedMaterial) {\n refreshUniformsDash(uniforms, material);\n }\n } else if (material.isPointsMaterial) {\n refreshUniformsPoints(uniforms, material, pixelRatio, height);\n } else if (material.isSpriteMaterial) {\n refreshUniformsSprites(uniforms, material);\n } else if (material.isShadowMaterial) {\n uniforms.color.value.copy(material.color);\n uniforms.opacity.value = material.opacity;\n } else if (material.isShaderMaterial) {\n material.uniformsNeedUpdate = false;\n }\n }\n function refreshUniformsCommon(uniforms, material) {\n uniforms.opacity.value = material.opacity;\n if (material.color) {\n uniforms.diffuse.value.copy(material.color);\n }\n if (material.emissive) {\n uniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity);\n }\n if (material.map) {\n uniforms.map.value = material.map;\n }\n if (material.alphaMap) {\n uniforms.alphaMap.value = material.alphaMap;\n }\n if (material.specularMap) {\n uniforms.specularMap.value = material.specularMap;\n }\n if (material.alphaTest > 0) {\n uniforms.alphaTest.value = material.alphaTest;\n }\n const envMap = properties.get(material).envMap;\n if (envMap) {\n uniforms.envMap.value = envMap;\n uniforms.flipEnvMap.value = envMap.isCubeTexture && envMap.isRenderTargetTexture === false ? -1 : 1;\n uniforms.reflectivity.value = material.reflectivity;\n uniforms.ior.value = material.ior;\n uniforms.refractionRatio.value = material.refractionRatio;\n }\n if (material.lightMap) {\n uniforms.lightMap.value = material.lightMap;\n uniforms.lightMapIntensity.value = material.lightMapIntensity;\n }\n if (material.aoMap) {\n uniforms.aoMap.value = material.aoMap;\n uniforms.aoMapIntensity.value = material.aoMapIntensity;\n }\n let uvScaleMap;\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.roughnessMap) {\n uvScaleMap = material.roughnessMap;\n } else if (material.metalnessMap) {\n uvScaleMap = material.metalnessMap;\n } else if (material.alphaMap) {\n uvScaleMap = material.alphaMap;\n } else if (material.emissiveMap) {\n uvScaleMap = material.emissiveMap;\n } else if (material.clearcoatMap) {\n uvScaleMap = material.clearcoatMap;\n } else if (material.clearcoatNormalMap) {\n uvScaleMap = material.clearcoatNormalMap;\n } else if (material.clearcoatRoughnessMap) {\n uvScaleMap = material.clearcoatRoughnessMap;\n } else if (material.specularIntensityMap) {\n uvScaleMap = material.specularIntensityMap;\n } else if (material.specularColorMap) {\n uvScaleMap = material.specularColorMap;\n } else if (material.transmissionMap) {\n uvScaleMap = material.transmissionMap;\n } else if (material.thicknessMap) {\n uvScaleMap = material.thicknessMap;\n } else if (material.sheenColorMap) {\n uvScaleMap = material.sheenColorMap;\n } else if (material.sheenRoughnessMap) {\n uvScaleMap = material.sheenRoughnessMap;\n }\n if (uvScaleMap !== void 0) {\n if (uvScaleMap.isWebGLRenderTarget) {\n uvScaleMap = uvScaleMap.texture;\n }\n if (uvScaleMap.matrixAutoUpdate === true) {\n uvScaleMap.updateMatrix();\n }\n uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n }\n let uv2ScaleMap;\n if (material.aoMap) {\n uv2ScaleMap = material.aoMap;\n } else if (material.lightMap) {\n uv2ScaleMap = material.lightMap;\n }\n if (uv2ScaleMap !== void 0) {\n if (uv2ScaleMap.isWebGLRenderTarget) {\n uv2ScaleMap = uv2ScaleMap.texture;\n }\n if (uv2ScaleMap.matrixAutoUpdate === true) {\n uv2ScaleMap.updateMatrix();\n }\n uniforms.uv2Transform.value.copy(uv2ScaleMap.matrix);\n }\n }\n function refreshUniformsLine(uniforms, material) {\n uniforms.diffuse.value.copy(material.color);\n uniforms.opacity.value = material.opacity;\n }\n function refreshUniformsDash(uniforms, material) {\n uniforms.dashSize.value = material.dashSize;\n uniforms.totalSize.value = material.dashSize + material.gapSize;\n uniforms.scale.value = material.scale;\n }\n function refreshUniformsPoints(uniforms, material, pixelRatio, height) {\n uniforms.diffuse.value.copy(material.color);\n uniforms.opacity.value = material.opacity;\n uniforms.size.value = material.size * pixelRatio;\n uniforms.scale.value = height * 0.5;\n if (material.map) {\n uniforms.map.value = material.map;\n }\n if (material.alphaMap) {\n uniforms.alphaMap.value = material.alphaMap;\n }\n if (material.alphaTest > 0) {\n uniforms.alphaTest.value = material.alphaTest;\n }\n let uvScaleMap;\n if (material.map) {\n uvScaleMap = material.map;\n } else if (material.alphaMap) {\n uvScaleMap = material.alphaMap;\n }\n if (uvScaleMap !== void 0) {\n if (uvScaleMap.matrixAutoUpdate === true) {\n uvScaleMap.updateMatrix();\n }\n uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n }\n }\n function refreshUniformsSprites(uniforms, material) {\n uniforms.diffuse.value.copy(material.color);\n uniforms.opacity.value = material.opacity;\n uniforms.rotation.value = material.rotation;\n if (material.map) {\n uniforms.map.value = material.map;\n }\n if (material.alphaMap) {\n uniforms.alphaMap.value = material.alphaMap;\n }\n if (material.alphaTest > 0) {\n uniforms.alphaTest.value = material.alphaTest;\n }\n let uvScaleMap;\n if (material.map) {\n uvScaleMap = material.map;\n } else if (material.alphaMap) {\n uvScaleMap = material.alphaMap;\n }\n if (uvScaleMap !== void 0) {\n if (uvScaleMap.matrixAutoUpdate === true) {\n uvScaleMap.updateMatrix();\n }\n uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n }\n }\n function refreshUniformsLambert(uniforms, material) {\n if (material.emissiveMap) {\n uniforms.emissiveMap.value = material.emissiveMap;\n }\n }\n function refreshUniformsPhong(uniforms, material) {\n uniforms.specular.value.copy(material.specular);\n uniforms.shininess.value = Math.max(material.shininess, 1e-4);\n if (material.emissiveMap) {\n uniforms.emissiveMap.value = material.emissiveMap;\n }\n if (material.bumpMap) {\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.bumpScale.value = material.bumpScale;\n if (material.side === BackSide)\n uniforms.bumpScale.value *= -1;\n }\n if (material.normalMap) {\n uniforms.normalMap.value = material.normalMap;\n uniforms.normalScale.value.copy(material.normalScale);\n if (material.side === BackSide)\n uniforms.normalScale.value.negate();\n }\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n }\n function refreshUniformsToon(uniforms, material) {\n if (material.gradientMap) {\n uniforms.gradientMap.value = material.gradientMap;\n }\n if (material.emissiveMap) {\n uniforms.emissiveMap.value = material.emissiveMap;\n }\n if (material.bumpMap) {\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.bumpScale.value = material.bumpScale;\n if (material.side === BackSide)\n uniforms.bumpScale.value *= -1;\n }\n if (material.normalMap) {\n uniforms.normalMap.value = material.normalMap;\n uniforms.normalScale.value.copy(material.normalScale);\n if (material.side === BackSide)\n uniforms.normalScale.value.negate();\n }\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n }\n function refreshUniformsStandard(uniforms, material) {\n uniforms.roughness.value = material.roughness;\n uniforms.metalness.value = material.metalness;\n if (material.roughnessMap) {\n uniforms.roughnessMap.value = material.roughnessMap;\n }\n if (material.metalnessMap) {\n uniforms.metalnessMap.value = material.metalnessMap;\n }\n if (material.emissiveMap) {\n uniforms.emissiveMap.value = material.emissiveMap;\n }\n if (material.bumpMap) {\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.bumpScale.value = material.bumpScale;\n if (material.side === BackSide)\n uniforms.bumpScale.value *= -1;\n }\n if (material.normalMap) {\n uniforms.normalMap.value = material.normalMap;\n uniforms.normalScale.value.copy(material.normalScale);\n if (material.side === BackSide)\n uniforms.normalScale.value.negate();\n }\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n const envMap = properties.get(material).envMap;\n if (envMap) {\n uniforms.envMapIntensity.value = material.envMapIntensity;\n }\n }\n function refreshUniformsPhysical(uniforms, material, transmissionRenderTarget) {\n refreshUniformsStandard(uniforms, material);\n uniforms.ior.value = material.ior;\n if (material.sheen > 0) {\n uniforms.sheenColor.value.copy(material.sheenColor).multiplyScalar(material.sheen);\n uniforms.sheenRoughness.value = material.sheenRoughness;\n if (material.sheenColorMap) {\n uniforms.sheenColorMap.value = material.sheenColorMap;\n }\n if (material.sheenRoughnessMap) {\n uniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n }\n }\n if (material.clearcoat > 0) {\n uniforms.clearcoat.value = material.clearcoat;\n uniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n if (material.clearcoatMap) {\n uniforms.clearcoatMap.value = material.clearcoatMap;\n }\n if (material.clearcoatRoughnessMap) {\n uniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n }\n if (material.clearcoatNormalMap) {\n uniforms.clearcoatNormalScale.value.copy(material.clearcoatNormalScale);\n uniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n if (material.side === BackSide) {\n uniforms.clearcoatNormalScale.value.negate();\n }\n }\n }\n if (material.transmission > 0) {\n uniforms.transmission.value = material.transmission;\n uniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n uniforms.transmissionSamplerSize.value.set(transmissionRenderTarget.width, transmissionRenderTarget.height);\n if (material.transmissionMap) {\n uniforms.transmissionMap.value = material.transmissionMap;\n }\n uniforms.thickness.value = material.thickness;\n if (material.thicknessMap) {\n uniforms.thicknessMap.value = material.thicknessMap;\n }\n uniforms.attenuationDistance.value = material.attenuationDistance;\n uniforms.attenuationColor.value.copy(material.attenuationColor);\n }\n uniforms.specularIntensity.value = material.specularIntensity;\n uniforms.specularColor.value.copy(material.specularColor);\n if (material.specularIntensityMap) {\n uniforms.specularIntensityMap.value = material.specularIntensityMap;\n }\n if (material.specularColorMap) {\n uniforms.specularColorMap.value = material.specularColorMap;\n }\n }\n function refreshUniformsMatcap(uniforms, material) {\n if (material.matcap) {\n uniforms.matcap.value = material.matcap;\n }\n if (material.bumpMap) {\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.bumpScale.value = material.bumpScale;\n if (material.side === BackSide)\n uniforms.bumpScale.value *= -1;\n }\n if (material.normalMap) {\n uniforms.normalMap.value = material.normalMap;\n uniforms.normalScale.value.copy(material.normalScale);\n if (material.side === BackSide)\n uniforms.normalScale.value.negate();\n }\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n }\n function refreshUniformsDepth(uniforms, material) {\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n }\n function refreshUniformsDistance(uniforms, material) {\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n uniforms.referencePosition.value.copy(material.referencePosition);\n uniforms.nearDistance.value = material.nearDistance;\n uniforms.farDistance.value = material.farDistance;\n }\n function refreshUniformsNormal(uniforms, material) {\n if (material.bumpMap) {\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.bumpScale.value = material.bumpScale;\n if (material.side === BackSide)\n uniforms.bumpScale.value *= -1;\n }\n if (material.normalMap) {\n uniforms.normalMap.value = material.normalMap;\n uniforms.normalScale.value.copy(material.normalScale);\n if (material.side === BackSide)\n uniforms.normalScale.value.negate();\n }\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n }\n return {\n refreshFogUniforms,\n refreshMaterialUniforms\n };\n}\nfunction createCanvasElement() {\n const canvas = createElementNS(\"canvas\");\n canvas.style.display = \"block\";\n return canvas;\n}\nfunction WebGLRenderer(parameters = {}) {\n const _canvas2 = parameters.canvas !== void 0 ? parameters.canvas : createCanvasElement(), _context2 = parameters.context !== void 0 ? parameters.context : null, _alpha = parameters.alpha !== void 0 ? parameters.alpha : false, _depth = parameters.depth !== void 0 ? parameters.depth : true, _stencil = parameters.stencil !== void 0 ? parameters.stencil : true, _antialias = parameters.antialias !== void 0 ? parameters.antialias : false, _premultipliedAlpha = parameters.premultipliedAlpha !== void 0 ? parameters.premultipliedAlpha : true, _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== void 0 ? parameters.preserveDrawingBuffer : false, _powerPreference = parameters.powerPreference !== void 0 ? parameters.powerPreference : \"default\", _failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== void 0 ? parameters.failIfMajorPerformanceCaveat : false;\n let currentRenderList = null;\n let currentRenderState = null;\n const renderListStack = [];\n const renderStateStack = [];\n this.domElement = _canvas2;\n this.debug = {\n checkShaderErrors: true\n };\n this.autoClear = true;\n this.autoClearColor = true;\n this.autoClearDepth = true;\n this.autoClearStencil = true;\n this.sortObjects = true;\n this.clippingPlanes = [];\n this.localClippingEnabled = false;\n this.gammaFactor = 2;\n this.outputEncoding = LinearEncoding;\n this.physicallyCorrectLights = false;\n this.toneMapping = NoToneMapping;\n this.toneMappingExposure = 1;\n const _this = this;\n let _isContextLost = false;\n let _currentActiveCubeFace = 0;\n let _currentActiveMipmapLevel = 0;\n let _currentRenderTarget = null;\n let _currentMaterialId = -1;\n let _currentCamera = null;\n const _currentViewport = new Vector4();\n const _currentScissor = new Vector4();\n let _currentScissorTest = null;\n let _width = _canvas2.width;\n let _height = _canvas2.height;\n let _pixelRatio = 1;\n let _opaqueSort = null;\n let _transparentSort = null;\n const _viewport = new Vector4(0, 0, _width, _height);\n const _scissor = new Vector4(0, 0, _width, _height);\n let _scissorTest = false;\n const _currentDrawBuffers = [];\n const _frustum = new Frustum();\n let _clippingEnabled = false;\n let _localClippingEnabled = false;\n let _transmissionRenderTarget = null;\n const _projScreenMatrix2 = new Matrix4();\n const _vector3 = new Vector3();\n const _emptyScene = {background: null, fog: null, environment: null, overrideMaterial: null, isScene: true};\n function getTargetPixelRatio() {\n return _currentRenderTarget === null ? _pixelRatio : 1;\n }\n let _gl = _context2;\n function getContext(contextNames, contextAttributes) {\n for (let i = 0; i < contextNames.length; i++) {\n const contextName = contextNames[i];\n const context = _canvas2.getContext(contextName, contextAttributes);\n if (context !== null)\n return context;\n }\n return null;\n }\n try {\n const contextAttributes = {\n alpha: _alpha,\n depth: _depth,\n stencil: _stencil,\n antialias: _antialias,\n premultipliedAlpha: _premultipliedAlpha,\n preserveDrawingBuffer: _preserveDrawingBuffer,\n powerPreference: _powerPreference,\n failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n };\n if (\"setAttribute\" in _canvas2)\n _canvas2.setAttribute(\"data-engine\", `three.js r${REVISION}`);\n _canvas2.addEventListener(\"webglcontextlost\", onContextLost, false);\n _canvas2.addEventListener(\"webglcontextrestored\", onContextRestore, false);\n if (_gl === null) {\n const contextNames = [\"webgl2\", \"webgl\", \"experimental-webgl\"];\n if (_this.isWebGL1Renderer === true) {\n contextNames.shift();\n }\n _gl = getContext(contextNames, contextAttributes);\n if (_gl === null) {\n if (getContext(contextNames)) {\n throw new Error(\"Error creating WebGL context with your selected attributes.\");\n } else {\n throw new Error(\"Error creating WebGL context.\");\n }\n }\n }\n if (_gl.getShaderPrecisionFormat === void 0) {\n _gl.getShaderPrecisionFormat = function() {\n return {rangeMin: 1, rangeMax: 1, precision: 1};\n };\n }\n } catch (error) {\n console.error(\"THREE.WebGLRenderer: \" + error.message);\n throw error;\n }\n let extensions, capabilities, state, info;\n let properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n let programCache, materials, renderLists, renderStates, clipping, shadowMap;\n let background, morphtargets, bufferRenderer, indexedBufferRenderer;\n let utils, bindingStates;\n function initGLContext() {\n extensions = new WebGLExtensions(_gl);\n capabilities = new WebGLCapabilities(_gl, extensions, parameters);\n extensions.init(capabilities);\n utils = new WebGLUtils(_gl, extensions, capabilities);\n state = new WebGLState(_gl, extensions, capabilities);\n _currentDrawBuffers[0] = 1029;\n info = new WebGLInfo(_gl);\n properties = new WebGLProperties();\n textures = new WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info);\n cubemaps = new WebGLCubeMaps(_this);\n cubeuvmaps = new WebGLCubeUVMaps(_this);\n attributes = new WebGLAttributes(_gl, capabilities);\n bindingStates = new WebGLBindingStates(_gl, extensions, attributes, capabilities);\n geometries = new WebGLGeometries(_gl, attributes, info, bindingStates);\n objects = new WebGLObjects(_gl, geometries, attributes, info);\n morphtargets = new WebGLMorphtargets(_gl, capabilities, textures);\n clipping = new WebGLClipping(properties);\n programCache = new WebGLPrograms(_this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping);\n materials = new WebGLMaterials(properties);\n renderLists = new WebGLRenderLists(properties);\n renderStates = new WebGLRenderStates(extensions, capabilities);\n background = new WebGLBackground(_this, cubemaps, state, objects, _premultipliedAlpha);\n shadowMap = new WebGLShadowMap(_this, objects, capabilities);\n bufferRenderer = new WebGLBufferRenderer(_gl, extensions, info, capabilities);\n indexedBufferRenderer = new WebGLIndexedBufferRenderer(_gl, extensions, info, capabilities);\n info.programs = programCache.programs;\n _this.capabilities = capabilities;\n _this.extensions = extensions;\n _this.properties = properties;\n _this.renderLists = renderLists;\n _this.shadowMap = shadowMap;\n _this.state = state;\n _this.info = info;\n }\n initGLContext();\n const xr = new WebXRManager(_this, _gl);\n this.xr = xr;\n this.getContext = function() {\n return _gl;\n };\n this.getContextAttributes = function() {\n return _gl.getContextAttributes();\n };\n this.forceContextLoss = function() {\n const extension = extensions.get(\"WEBGL_lose_context\");\n if (extension)\n extension.loseContext();\n };\n this.forceContextRestore = function() {\n const extension = extensions.get(\"WEBGL_lose_context\");\n if (extension)\n extension.restoreContext();\n };\n this.getPixelRatio = function() {\n return _pixelRatio;\n };\n this.setPixelRatio = function(value) {\n if (value === void 0)\n return;\n _pixelRatio = value;\n this.setSize(_width, _height, false);\n };\n this.getSize = function(target) {\n return target.set(_width, _height);\n };\n this.setSize = function(width, height, updateStyle) {\n if (xr.isPresenting) {\n console.warn(\"THREE.WebGLRenderer: Can't change size while VR device is presenting.\");\n return;\n }\n _width = width;\n _height = height;\n _canvas2.width = Math.floor(width * _pixelRatio);\n _canvas2.height = Math.floor(height * _pixelRatio);\n if (updateStyle !== false) {\n _canvas2.style.width = width + \"px\";\n _canvas2.style.height = height + \"px\";\n }\n this.setViewport(0, 0, width, height);\n };\n this.getDrawingBufferSize = function(target) {\n return target.set(_width * _pixelRatio, _height * _pixelRatio).floor();\n };\n this.setDrawingBufferSize = function(width, height, pixelRatio) {\n _width = width;\n _height = height;\n _pixelRatio = pixelRatio;\n _canvas2.width = Math.floor(width * pixelRatio);\n _canvas2.height = Math.floor(height * pixelRatio);\n this.setViewport(0, 0, width, height);\n };\n this.getCurrentViewport = function(target) {\n return target.copy(_currentViewport);\n };\n this.getViewport = function(target) {\n return target.copy(_viewport);\n };\n this.setViewport = function(x, y, width, height) {\n if (x.isVector4) {\n _viewport.set(x.x, x.y, x.z, x.w);\n } else {\n _viewport.set(x, y, width, height);\n }\n state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor());\n };\n this.getScissor = function(target) {\n return target.copy(_scissor);\n };\n this.setScissor = function(x, y, width, height) {\n if (x.isVector4) {\n _scissor.set(x.x, x.y, x.z, x.w);\n } else {\n _scissor.set(x, y, width, height);\n }\n state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor());\n };\n this.getScissorTest = function() {\n return _scissorTest;\n };\n this.setScissorTest = function(boolean) {\n state.setScissorTest(_scissorTest = boolean);\n };\n this.setOpaqueSort = function(method) {\n _opaqueSort = method;\n };\n this.setTransparentSort = function(method) {\n _transparentSort = method;\n };\n this.getClearColor = function(target) {\n return target.copy(background.getClearColor());\n };\n this.setClearColor = function() {\n background.setClearColor.apply(background, arguments);\n };\n this.getClearAlpha = function() {\n return background.getClearAlpha();\n };\n this.setClearAlpha = function() {\n background.setClearAlpha.apply(background, arguments);\n };\n this.clear = function(color, depth, stencil) {\n let bits = 0;\n if (color === void 0 || color)\n bits |= 16384;\n if (depth === void 0 || depth)\n bits |= 256;\n if (stencil === void 0 || stencil)\n bits |= 1024;\n _gl.clear(bits);\n };\n this.clearColor = function() {\n this.clear(true, false, false);\n };\n this.clearDepth = function() {\n this.clear(false, true, false);\n };\n this.clearStencil = function() {\n this.clear(false, false, true);\n };\n this.dispose = function() {\n _canvas2.removeEventListener(\"webglcontextlost\", onContextLost, false);\n _canvas2.removeEventListener(\"webglcontextrestored\", onContextRestore, false);\n renderLists.dispose();\n renderStates.dispose();\n properties.dispose();\n cubemaps.dispose();\n cubeuvmaps.dispose();\n objects.dispose();\n bindingStates.dispose();\n xr.dispose();\n xr.removeEventListener(\"sessionstart\", onXRSessionStart);\n xr.removeEventListener(\"sessionend\", onXRSessionEnd);\n if (_transmissionRenderTarget) {\n _transmissionRenderTarget.dispose();\n _transmissionRenderTarget = null;\n }\n animation.stop();\n };\n function onContextLost(event) {\n event.preventDefault();\n console.log(\"THREE.WebGLRenderer: Context Lost.\");\n _isContextLost = true;\n }\n function onContextRestore() {\n console.log(\"THREE.WebGLRenderer: Context Restored.\");\n _isContextLost = false;\n const infoAutoReset = info.autoReset;\n const shadowMapEnabled = shadowMap.enabled;\n const shadowMapAutoUpdate = shadowMap.autoUpdate;\n const shadowMapNeedsUpdate = shadowMap.needsUpdate;\n const shadowMapType = shadowMap.type;\n initGLContext();\n info.autoReset = infoAutoReset;\n shadowMap.enabled = shadowMapEnabled;\n shadowMap.autoUpdate = shadowMapAutoUpdate;\n shadowMap.needsUpdate = shadowMapNeedsUpdate;\n shadowMap.type = shadowMapType;\n }\n function onMaterialDispose(event) {\n const material = event.target;\n material.removeEventListener(\"dispose\", onMaterialDispose);\n deallocateMaterial(material);\n }\n function deallocateMaterial(material) {\n releaseMaterialProgramReferences(material);\n properties.remove(material);\n }\n function releaseMaterialProgramReferences(material) {\n const programs = properties.get(material).programs;\n if (programs !== void 0) {\n programs.forEach(function(program) {\n programCache.releaseProgram(program);\n });\n }\n }\n this.renderBufferDirect = function(camera, scene, geometry, material, object, group) {\n if (scene === null)\n scene = _emptyScene;\n const frontFaceCW = object.isMesh && object.matrixWorld.determinant() < 0;\n const program = setProgram(camera, scene, geometry, material, object);\n state.setMaterial(material, frontFaceCW);\n let index = geometry.index;\n const position = geometry.attributes.position;\n if (index === null) {\n if (position === void 0 || position.count === 0)\n return;\n } else if (index.count === 0) {\n return;\n }\n let rangeFactor = 1;\n if (material.wireframe === true) {\n index = geometries.getWireframeAttribute(geometry);\n rangeFactor = 2;\n }\n bindingStates.setup(object, material, program, geometry, index);\n let attribute;\n let renderer = bufferRenderer;\n if (index !== null) {\n attribute = attributes.get(index);\n renderer = indexedBufferRenderer;\n renderer.setIndex(attribute);\n }\n const dataCount = index !== null ? index.count : position.count;\n const rangeStart = geometry.drawRange.start * rangeFactor;\n const rangeCount = geometry.drawRange.count * rangeFactor;\n const groupStart = group !== null ? group.start * rangeFactor : 0;\n const groupCount = group !== null ? group.count * rangeFactor : Infinity;\n const drawStart = Math.max(rangeStart, groupStart);\n const drawEnd = Math.min(dataCount, rangeStart + rangeCount, groupStart + groupCount) - 1;\n const drawCount = Math.max(0, drawEnd - drawStart + 1);\n if (drawCount === 0)\n return;\n if (object.isMesh) {\n if (material.wireframe === true) {\n state.setLineWidth(material.wireframeLinewidth * getTargetPixelRatio());\n renderer.setMode(1);\n } else {\n renderer.setMode(4);\n }\n } else if (object.isLine) {\n let lineWidth = material.linewidth;\n if (lineWidth === void 0)\n lineWidth = 1;\n state.setLineWidth(lineWidth * getTargetPixelRatio());\n if (object.isLineSegments) {\n renderer.setMode(1);\n } else if (object.isLineLoop) {\n renderer.setMode(2);\n } else {\n renderer.setMode(3);\n }\n } else if (object.isPoints) {\n renderer.setMode(0);\n } else if (object.isSprite) {\n renderer.setMode(4);\n }\n if (object.isInstancedMesh) {\n renderer.renderInstances(drawStart, drawCount, object.count);\n } else if (geometry.isInstancedBufferGeometry) {\n const instanceCount = Math.min(geometry.instanceCount, geometry._maxInstanceCount);\n renderer.renderInstances(drawStart, drawCount, instanceCount);\n } else {\n renderer.render(drawStart, drawCount);\n }\n };\n this.compile = function(scene, camera) {\n currentRenderState = renderStates.get(scene);\n currentRenderState.init();\n renderStateStack.push(currentRenderState);\n scene.traverseVisible(function(object) {\n if (object.isLight && object.layers.test(camera.layers)) {\n currentRenderState.pushLight(object);\n if (object.castShadow) {\n currentRenderState.pushShadow(object);\n }\n }\n });\n currentRenderState.setupLights(_this.physicallyCorrectLights);\n scene.traverse(function(object) {\n const material = object.material;\n if (material) {\n if (Array.isArray(material)) {\n for (let i = 0; i < material.length; i++) {\n const material2 = material[i];\n getProgram(material2, scene, object);\n }\n } else {\n getProgram(material, scene, object);\n }\n }\n });\n renderStateStack.pop();\n currentRenderState = null;\n };\n let onAnimationFrameCallback = null;\n function onAnimationFrame(time) {\n if (onAnimationFrameCallback)\n onAnimationFrameCallback(time);\n }\n function onXRSessionStart() {\n animation.stop();\n }\n function onXRSessionEnd() {\n animation.start();\n }\n const animation = new WebGLAnimation();\n animation.setAnimationLoop(onAnimationFrame);\n if (typeof window !== \"undefined\")\n animation.setContext(window);\n this.setAnimationLoop = function(callback) {\n onAnimationFrameCallback = callback;\n xr.setAnimationLoop(callback);\n callback === null ? animation.stop() : animation.start();\n };\n xr.addEventListener(\"sessionstart\", onXRSessionStart);\n xr.addEventListener(\"sessionend\", onXRSessionEnd);\n this.render = function(scene, camera) {\n if (camera !== void 0 && camera.isCamera !== true) {\n console.error(\"THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.\");\n return;\n }\n if (_isContextLost === true)\n return;\n if (scene.autoUpdate === true)\n scene.updateMatrixWorld();\n if (camera.parent === null)\n camera.updateMatrixWorld();\n if (xr.enabled === true && xr.isPresenting === true) {\n if (xr.cameraAutoUpdate === true)\n xr.updateCamera(camera);\n camera = xr.getCamera();\n }\n if (scene.isScene === true)\n scene.onBeforeRender(_this, scene, camera, _currentRenderTarget);\n currentRenderState = renderStates.get(scene, renderStateStack.length);\n currentRenderState.init();\n renderStateStack.push(currentRenderState);\n _projScreenMatrix2.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n _frustum.setFromProjectionMatrix(_projScreenMatrix2);\n _localClippingEnabled = this.localClippingEnabled;\n _clippingEnabled = clipping.init(this.clippingPlanes, _localClippingEnabled, camera);\n currentRenderList = renderLists.get(scene, renderListStack.length);\n currentRenderList.init();\n renderListStack.push(currentRenderList);\n projectObject(scene, camera, 0, _this.sortObjects);\n currentRenderList.finish();\n if (_this.sortObjects === true) {\n currentRenderList.sort(_opaqueSort, _transparentSort);\n }\n if (_clippingEnabled === true)\n clipping.beginShadows();\n const shadowsArray = currentRenderState.state.shadowsArray;\n shadowMap.render(shadowsArray, scene, camera);\n if (_clippingEnabled === true)\n clipping.endShadows();\n if (this.info.autoReset === true)\n this.info.reset();\n background.render(currentRenderList, scene);\n currentRenderState.setupLights(_this.physicallyCorrectLights);\n if (camera.isArrayCamera) {\n const cameras = camera.cameras;\n for (let i = 0, l = cameras.length; i < l; i++) {\n const camera2 = cameras[i];\n renderScene(currentRenderList, scene, camera2, camera2.viewport);\n }\n } else {\n renderScene(currentRenderList, scene, camera);\n }\n if (_currentRenderTarget !== null) {\n textures.updateMultisampleRenderTarget(_currentRenderTarget);\n textures.updateRenderTargetMipmap(_currentRenderTarget);\n }\n if (scene.isScene === true)\n scene.onAfterRender(_this, scene, camera);\n state.buffers.depth.setTest(true);\n state.buffers.depth.setMask(true);\n state.buffers.color.setMask(true);\n state.setPolygonOffset(false);\n bindingStates.resetDefaultState();\n _currentMaterialId = -1;\n _currentCamera = null;\n renderStateStack.pop();\n if (renderStateStack.length > 0) {\n currentRenderState = renderStateStack[renderStateStack.length - 1];\n } else {\n currentRenderState = null;\n }\n renderListStack.pop();\n if (renderListStack.length > 0) {\n currentRenderList = renderListStack[renderListStack.length - 1];\n } else {\n currentRenderList = null;\n }\n };\n function projectObject(object, camera, groupOrder, sortObjects) {\n if (object.visible === false)\n return;\n const visible = object.layers.test(camera.layers);\n if (visible) {\n if (object.isGroup) {\n groupOrder = object.renderOrder;\n } else if (object.isLOD) {\n if (object.autoUpdate === true)\n object.update(camera);\n } else if (object.isLight) {\n currentRenderState.pushLight(object);\n if (object.castShadow) {\n currentRenderState.pushShadow(object);\n }\n } else if (object.isSprite) {\n if (!object.frustumCulled || _frustum.intersectsSprite(object)) {\n if (sortObjects) {\n _vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix2);\n }\n const geometry = objects.update(object);\n const material = object.material;\n if (material.visible) {\n currentRenderList.push(object, geometry, material, groupOrder, _vector3.z, null);\n }\n }\n } else if (object.isMesh || object.isLine || object.isPoints) {\n if (object.isSkinnedMesh) {\n if (object.skeleton.frame !== info.render.frame) {\n object.skeleton.update();\n object.skeleton.frame = info.render.frame;\n }\n }\n if (!object.frustumCulled || _frustum.intersectsObject(object)) {\n if (sortObjects) {\n _vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix2);\n }\n const geometry = objects.update(object);\n const material = object.material;\n if (Array.isArray(material)) {\n const groups = geometry.groups;\n for (let i = 0, l = groups.length; i < l; i++) {\n const group = groups[i];\n const groupMaterial = material[group.materialIndex];\n if (groupMaterial && groupMaterial.visible) {\n currentRenderList.push(object, geometry, groupMaterial, groupOrder, _vector3.z, group);\n }\n }\n } else if (material.visible) {\n currentRenderList.push(object, geometry, material, groupOrder, _vector3.z, null);\n }\n }\n }\n }\n const children = object.children;\n for (let i = 0, l = children.length; i < l; i++) {\n projectObject(children[i], camera, groupOrder, sortObjects);\n }\n }\n function renderScene(currentRenderList2, scene, camera, viewport) {\n const opaqueObjects = currentRenderList2.opaque;\n const transmissiveObjects = currentRenderList2.transmissive;\n const transparentObjects = currentRenderList2.transparent;\n currentRenderState.setupLightsView(camera);\n if (transmissiveObjects.length > 0)\n renderTransmissionPass(opaqueObjects, scene, camera);\n if (viewport)\n state.viewport(_currentViewport.copy(viewport));\n if (opaqueObjects.length > 0)\n renderObjects(opaqueObjects, scene, camera);\n if (transmissiveObjects.length > 0)\n renderObjects(transmissiveObjects, scene, camera);\n if (transparentObjects.length > 0)\n renderObjects(transparentObjects, scene, camera);\n }\n function renderTransmissionPass(opaqueObjects, scene, camera) {\n if (_transmissionRenderTarget === null) {\n const needsAntialias = _antialias === true && capabilities.isWebGL2 === true;\n const renderTargetType = needsAntialias ? WebGLMultisampleRenderTarget : WebGLRenderTarget;\n _transmissionRenderTarget = new renderTargetType(1024, 1024, {\n generateMipmaps: true,\n type: utils.convert(HalfFloatType) !== null ? HalfFloatType : UnsignedByteType,\n minFilter: LinearMipmapLinearFilter,\n magFilter: NearestFilter,\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n useRenderToTexture: extensions.has(\"WEBGL_multisampled_render_to_texture\")\n });\n }\n const currentRenderTarget = _this.getRenderTarget();\n _this.setRenderTarget(_transmissionRenderTarget);\n _this.clear();\n const currentToneMapping = _this.toneMapping;\n _this.toneMapping = NoToneMapping;\n renderObjects(opaqueObjects, scene, camera);\n _this.toneMapping = currentToneMapping;\n textures.updateMultisampleRenderTarget(_transmissionRenderTarget);\n textures.updateRenderTargetMipmap(_transmissionRenderTarget);\n _this.setRenderTarget(currentRenderTarget);\n }\n function renderObjects(renderList, scene, camera) {\n const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n for (let i = 0, l = renderList.length; i < l; i++) {\n const renderItem = renderList[i];\n const object = renderItem.object;\n const geometry = renderItem.geometry;\n const material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n const group = renderItem.group;\n if (object.layers.test(camera.layers)) {\n renderObject(object, scene, camera, geometry, material, group);\n }\n }\n }\n function renderObject(object, scene, camera, geometry, material, group) {\n object.onBeforeRender(_this, scene, camera, geometry, material, group);\n object.modelViewMatrix.multiplyMatrices(camera.matrixWorldInverse, object.matrixWorld);\n object.normalMatrix.getNormalMatrix(object.modelViewMatrix);\n material.onBeforeRender(_this, scene, camera, geometry, object, group);\n if (material.transparent === true && material.side === DoubleSide) {\n material.side = BackSide;\n material.needsUpdate = true;\n _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n material.side = FrontSide;\n material.needsUpdate = true;\n _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n material.side = DoubleSide;\n } else {\n _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n }\n object.onAfterRender(_this, scene, camera, geometry, material, group);\n }\n function getProgram(material, scene, object) {\n if (scene.isScene !== true)\n scene = _emptyScene;\n const materialProperties = properties.get(material);\n const lights = currentRenderState.state.lights;\n const shadowsArray = currentRenderState.state.shadowsArray;\n const lightsStateVersion = lights.state.version;\n const parameters2 = programCache.getParameters(material, lights.state, shadowsArray, scene, object);\n const programCacheKey = programCache.getProgramCacheKey(parameters2);\n let programs = materialProperties.programs;\n materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n materialProperties.fog = scene.fog;\n materialProperties.envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || materialProperties.environment);\n if (programs === void 0) {\n material.addEventListener(\"dispose\", onMaterialDispose);\n programs = new Map();\n materialProperties.programs = programs;\n }\n let program = programs.get(programCacheKey);\n if (program !== void 0) {\n if (materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion) {\n updateCommonMaterialProperties(material, parameters2);\n return program;\n }\n } else {\n parameters2.uniforms = programCache.getUniforms(material);\n material.onBuild(object, parameters2, _this);\n material.onBeforeCompile(parameters2, _this);\n program = programCache.acquireProgram(parameters2, programCacheKey);\n programs.set(programCacheKey, program);\n materialProperties.uniforms = parameters2.uniforms;\n }\n const uniforms = materialProperties.uniforms;\n if (!material.isShaderMaterial && !material.isRawShaderMaterial || material.clipping === true) {\n uniforms.clippingPlanes = clipping.uniform;\n }\n updateCommonMaterialProperties(material, parameters2);\n materialProperties.needsLights = materialNeedsLights(material);\n materialProperties.lightsStateVersion = lightsStateVersion;\n if (materialProperties.needsLights) {\n uniforms.ambientLightColor.value = lights.state.ambient;\n uniforms.lightProbe.value = lights.state.probe;\n uniforms.directionalLights.value = lights.state.directional;\n uniforms.directionalLightShadows.value = lights.state.directionalShadow;\n uniforms.spotLights.value = lights.state.spot;\n uniforms.spotLightShadows.value = lights.state.spotShadow;\n uniforms.rectAreaLights.value = lights.state.rectArea;\n uniforms.ltc_1.value = lights.state.rectAreaLTC1;\n uniforms.ltc_2.value = lights.state.rectAreaLTC2;\n uniforms.pointLights.value = lights.state.point;\n uniforms.pointLightShadows.value = lights.state.pointShadow;\n uniforms.hemisphereLights.value = lights.state.hemi;\n uniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n uniforms.spotShadowMap.value = lights.state.spotShadowMap;\n uniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n uniforms.pointShadowMap.value = lights.state.pointShadowMap;\n uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n }\n const progUniforms = program.getUniforms();\n const uniformsList = WebGLUniforms.seqWithValue(progUniforms.seq, uniforms);\n materialProperties.currentProgram = program;\n materialProperties.uniformsList = uniformsList;\n return program;\n }\n function updateCommonMaterialProperties(material, parameters2) {\n const materialProperties = properties.get(material);\n materialProperties.outputEncoding = parameters2.outputEncoding;\n materialProperties.instancing = parameters2.instancing;\n materialProperties.skinning = parameters2.skinning;\n materialProperties.morphTargets = parameters2.morphTargets;\n materialProperties.morphNormals = parameters2.morphNormals;\n materialProperties.morphTargetsCount = parameters2.morphTargetsCount;\n materialProperties.numClippingPlanes = parameters2.numClippingPlanes;\n materialProperties.numIntersection = parameters2.numClipIntersection;\n materialProperties.vertexAlphas = parameters2.vertexAlphas;\n materialProperties.vertexTangents = parameters2.vertexTangents;\n }\n function setProgram(camera, scene, geometry, material, object) {\n if (scene.isScene !== true)\n scene = _emptyScene;\n textures.resetTextureUnits();\n const fog = scene.fog;\n const environment = material.isMeshStandardMaterial ? scene.environment : null;\n const encoding = _currentRenderTarget === null ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment);\n const vertexAlphas = material.vertexColors === true && !!geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n const vertexTangents = !!material.normalMap && !!geometry.attributes.tangent;\n const morphTargets = !!geometry.morphAttributes.position;\n const morphNormals = !!geometry.morphAttributes.normal;\n const morphTargetsCount = !!geometry.morphAttributes.position ? geometry.morphAttributes.position.length : 0;\n const materialProperties = properties.get(material);\n const lights = currentRenderState.state.lights;\n if (_clippingEnabled === true) {\n if (_localClippingEnabled === true || camera !== _currentCamera) {\n const useCache = camera === _currentCamera && material.id === _currentMaterialId;\n clipping.setState(material, camera, useCache);\n }\n }\n let needsProgramChange = false;\n if (material.version === materialProperties.__version) {\n if (materialProperties.needsLights && materialProperties.lightsStateVersion !== lights.state.version) {\n needsProgramChange = true;\n } else if (materialProperties.outputEncoding !== encoding) {\n needsProgramChange = true;\n } else if (object.isInstancedMesh && materialProperties.instancing === false) {\n needsProgramChange = true;\n } else if (!object.isInstancedMesh && materialProperties.instancing === true) {\n needsProgramChange = true;\n } else if (object.isSkinnedMesh && materialProperties.skinning === false) {\n needsProgramChange = true;\n } else if (!object.isSkinnedMesh && materialProperties.skinning === true) {\n needsProgramChange = true;\n } else if (materialProperties.envMap !== envMap) {\n needsProgramChange = true;\n } else if (material.fog && materialProperties.fog !== fog) {\n needsProgramChange = true;\n } else if (materialProperties.numClippingPlanes !== void 0 && (materialProperties.numClippingPlanes !== clipping.numPlanes || materialProperties.numIntersection !== clipping.numIntersection)) {\n needsProgramChange = true;\n } else if (materialProperties.vertexAlphas !== vertexAlphas) {\n needsProgramChange = true;\n } else if (materialProperties.vertexTangents !== vertexTangents) {\n needsProgramChange = true;\n } else if (materialProperties.morphTargets !== morphTargets) {\n needsProgramChange = true;\n } else if (materialProperties.morphNormals !== morphNormals) {\n needsProgramChange = true;\n } else if (capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount) {\n needsProgramChange = true;\n }\n } else {\n needsProgramChange = true;\n materialProperties.__version = material.version;\n }\n let program = materialProperties.currentProgram;\n if (needsProgramChange === true) {\n program = getProgram(material, scene, object);\n }\n let refreshProgram = false;\n let refreshMaterial = false;\n let refreshLights = false;\n const p_uniforms = program.getUniforms(), m_uniforms = materialProperties.uniforms;\n if (state.useProgram(program.program)) {\n refreshProgram = true;\n refreshMaterial = true;\n refreshLights = true;\n }\n if (material.id !== _currentMaterialId) {\n _currentMaterialId = material.id;\n refreshMaterial = true;\n }\n if (refreshProgram || _currentCamera !== camera) {\n p_uniforms.setValue(_gl, \"projectionMatrix\", camera.projectionMatrix);\n if (capabilities.logarithmicDepthBuffer) {\n p_uniforms.setValue(_gl, \"logDepthBufFC\", 2 / (Math.log(camera.far + 1) / Math.LN2));\n }\n if (_currentCamera !== camera) {\n _currentCamera = camera;\n refreshMaterial = true;\n refreshLights = true;\n }\n if (material.isShaderMaterial || material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshStandardMaterial || material.envMap) {\n const uCamPos = p_uniforms.map.cameraPosition;\n if (uCamPos !== void 0) {\n uCamPos.setValue(_gl, _vector3.setFromMatrixPosition(camera.matrixWorld));\n }\n }\n if (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial) {\n p_uniforms.setValue(_gl, \"isOrthographic\", camera.isOrthographicCamera === true);\n }\n if (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial || material.isShadowMaterial || object.isSkinnedMesh) {\n p_uniforms.setValue(_gl, \"viewMatrix\", camera.matrixWorldInverse);\n }\n }\n if (object.isSkinnedMesh) {\n p_uniforms.setOptional(_gl, object, \"bindMatrix\");\n p_uniforms.setOptional(_gl, object, \"bindMatrixInverse\");\n const skeleton = object.skeleton;\n if (skeleton) {\n if (capabilities.floatVertexTextures) {\n if (skeleton.boneTexture === null)\n skeleton.computeBoneTexture();\n p_uniforms.setValue(_gl, \"boneTexture\", skeleton.boneTexture, textures);\n p_uniforms.setValue(_gl, \"boneTextureSize\", skeleton.boneTextureSize);\n } else {\n p_uniforms.setOptional(_gl, skeleton, \"boneMatrices\");\n }\n }\n }\n if (!!geometry && (geometry.morphAttributes.position !== void 0 || geometry.morphAttributes.normal !== void 0)) {\n morphtargets.update(object, geometry, material, program);\n }\n if (refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow) {\n materialProperties.receiveShadow = object.receiveShadow;\n p_uniforms.setValue(_gl, \"receiveShadow\", object.receiveShadow);\n }\n if (refreshMaterial) {\n p_uniforms.setValue(_gl, \"toneMappingExposure\", _this.toneMappingExposure);\n if (materialProperties.needsLights) {\n markUniformsLightsNeedsUpdate(m_uniforms, refreshLights);\n }\n if (fog && material.fog) {\n materials.refreshFogUniforms(m_uniforms, fog);\n }\n materials.refreshMaterialUniforms(m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget);\n WebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, textures);\n }\n if (material.isShaderMaterial && material.uniformsNeedUpdate === true) {\n WebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, textures);\n material.uniformsNeedUpdate = false;\n }\n if (material.isSpriteMaterial) {\n p_uniforms.setValue(_gl, \"center\", object.center);\n }\n p_uniforms.setValue(_gl, \"modelViewMatrix\", object.modelViewMatrix);\n p_uniforms.setValue(_gl, \"normalMatrix\", object.normalMatrix);\n p_uniforms.setValue(_gl, \"modelMatrix\", object.matrixWorld);\n return program;\n }\n function markUniformsLightsNeedsUpdate(uniforms, value) {\n uniforms.ambientLightColor.needsUpdate = value;\n uniforms.lightProbe.needsUpdate = value;\n uniforms.directionalLights.needsUpdate = value;\n uniforms.directionalLightShadows.needsUpdate = value;\n uniforms.pointLights.needsUpdate = value;\n uniforms.pointLightShadows.needsUpdate = value;\n uniforms.spotLights.needsUpdate = value;\n uniforms.spotLightShadows.needsUpdate = value;\n uniforms.rectAreaLights.needsUpdate = value;\n uniforms.hemisphereLights.needsUpdate = value;\n }\n function materialNeedsLights(material) {\n return material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial || material.isMeshStandardMaterial || material.isShadowMaterial || material.isShaderMaterial && material.lights === true;\n }\n this.getActiveCubeFace = function() {\n return _currentActiveCubeFace;\n };\n this.getActiveMipmapLevel = function() {\n return _currentActiveMipmapLevel;\n };\n this.getRenderTarget = function() {\n return _currentRenderTarget;\n };\n this.setRenderTargetTextures = function(renderTarget, colorTexture, depthTexture) {\n properties.get(renderTarget.texture).__webglTexture = colorTexture;\n properties.get(renderTarget.depthTexture).__webglTexture = depthTexture;\n const renderTargetProperties = properties.get(renderTarget);\n renderTargetProperties.__hasExternalTextures = true;\n if (renderTargetProperties.__hasExternalTextures) {\n renderTargetProperties.__autoAllocateDepthBuffer = depthTexture === void 0;\n if (!renderTargetProperties.__autoAllocateDepthBuffer) {\n if (renderTarget.useRenderToTexture) {\n console.warn(\"render-to-texture extension was disabled because an external texture was provided\");\n renderTarget.useRenderToTexture = false;\n renderTarget.useRenderbuffer = true;\n }\n }\n }\n };\n this.setRenderTargetFramebuffer = function(renderTarget, defaultFramebuffer) {\n const renderTargetProperties = properties.get(renderTarget);\n renderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n renderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === void 0;\n };\n this.setRenderTarget = function(renderTarget, activeCubeFace = 0, activeMipmapLevel = 0) {\n _currentRenderTarget = renderTarget;\n _currentActiveCubeFace = activeCubeFace;\n _currentActiveMipmapLevel = activeMipmapLevel;\n let useDefaultFramebuffer = true;\n if (renderTarget) {\n const renderTargetProperties = properties.get(renderTarget);\n if (renderTargetProperties.__useDefaultFramebuffer !== void 0) {\n state.bindFramebuffer(36160, null);\n useDefaultFramebuffer = false;\n } else if (renderTargetProperties.__webglFramebuffer === void 0) {\n textures.setupRenderTarget(renderTarget);\n } else if (renderTargetProperties.__hasExternalTextures) {\n textures.rebindTextures(renderTarget, properties.get(renderTarget.texture).__webglTexture, properties.get(renderTarget.depthTexture).__webglTexture);\n }\n }\n let framebuffer = null;\n let isCube = false;\n let isRenderTarget3D = false;\n if (renderTarget) {\n const texture = renderTarget.texture;\n if (texture.isDataTexture3D || texture.isDataTexture2DArray) {\n isRenderTarget3D = true;\n }\n const __webglFramebuffer = properties.get(renderTarget).__webglFramebuffer;\n if (renderTarget.isWebGLCubeRenderTarget) {\n framebuffer = __webglFramebuffer[activeCubeFace];\n isCube = true;\n } else if (renderTarget.useRenderbuffer) {\n framebuffer = properties.get(renderTarget).__webglMultisampledFramebuffer;\n } else {\n framebuffer = __webglFramebuffer;\n }\n _currentViewport.copy(renderTarget.viewport);\n _currentScissor.copy(renderTarget.scissor);\n _currentScissorTest = renderTarget.scissorTest;\n } else {\n _currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor();\n _currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor();\n _currentScissorTest = _scissorTest;\n }\n const framebufferBound = state.bindFramebuffer(36160, framebuffer);\n if (framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer) {\n let needsUpdate = false;\n if (renderTarget) {\n if (renderTarget.isWebGLMultipleRenderTargets) {\n const textures2 = renderTarget.texture;\n if (_currentDrawBuffers.length !== textures2.length || _currentDrawBuffers[0] !== 36064) {\n for (let i = 0, il = textures2.length; i < il; i++) {\n _currentDrawBuffers[i] = 36064 + i;\n }\n _currentDrawBuffers.length = textures2.length;\n needsUpdate = true;\n }\n } else {\n if (_currentDrawBuffers.length !== 1 || _currentDrawBuffers[0] !== 36064) {\n _currentDrawBuffers[0] = 36064;\n _currentDrawBuffers.length = 1;\n needsUpdate = true;\n }\n }\n } else {\n if (_currentDrawBuffers.length !== 1 || _currentDrawBuffers[0] !== 1029) {\n _currentDrawBuffers[0] = 1029;\n _currentDrawBuffers.length = 1;\n needsUpdate = true;\n }\n }\n if (needsUpdate) {\n if (capabilities.isWebGL2) {\n _gl.drawBuffers(_currentDrawBuffers);\n } else {\n extensions.get(\"WEBGL_draw_buffers\").drawBuffersWEBGL(_currentDrawBuffers);\n }\n }\n }\n state.viewport(_currentViewport);\n state.scissor(_currentScissor);\n state.setScissorTest(_currentScissorTest);\n if (isCube) {\n const textureProperties = properties.get(renderTarget.texture);\n _gl.framebufferTexture2D(36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel);\n } else if (isRenderTarget3D) {\n const textureProperties = properties.get(renderTarget.texture);\n const layer = activeCubeFace || 0;\n _gl.framebufferTextureLayer(36160, 36064, textureProperties.__webglTexture, activeMipmapLevel || 0, layer);\n }\n _currentMaterialId = -1;\n };\n this.readRenderTargetPixels = function(renderTarget, x, y, width, height, buffer, activeCubeFaceIndex) {\n if (!(renderTarget && renderTarget.isWebGLRenderTarget)) {\n console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.\");\n return;\n }\n let framebuffer = properties.get(renderTarget).__webglFramebuffer;\n if (renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== void 0) {\n framebuffer = framebuffer[activeCubeFaceIndex];\n }\n if (framebuffer) {\n state.bindFramebuffer(36160, framebuffer);\n try {\n const texture = renderTarget.texture;\n const textureFormat = texture.format;\n const textureType = texture.type;\n if (textureFormat !== RGBAFormat && utils.convert(textureFormat) !== _gl.getParameter(35739)) {\n console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.\");\n return;\n }\n const halfFloatSupportedByExt = textureType === HalfFloatType && (extensions.has(\"EXT_color_buffer_half_float\") || capabilities.isWebGL2 && extensions.has(\"EXT_color_buffer_float\"));\n if (textureType !== UnsignedByteType && utils.convert(textureType) !== _gl.getParameter(35738) && !(textureType === FloatType && (capabilities.isWebGL2 || extensions.has(\"OES_texture_float\") || extensions.has(\"WEBGL_color_buffer_float\"))) && !halfFloatSupportedByExt) {\n console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.\");\n return;\n }\n if (_gl.checkFramebufferStatus(36160) === 36053) {\n if (x >= 0 && x <= renderTarget.width - width && (y >= 0 && y <= renderTarget.height - height)) {\n _gl.readPixels(x, y, width, height, utils.convert(textureFormat), utils.convert(textureType), buffer);\n }\n } else {\n console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.\");\n }\n } finally {\n const framebuffer2 = _currentRenderTarget !== null ? properties.get(_currentRenderTarget).__webglFramebuffer : null;\n state.bindFramebuffer(36160, framebuffer2);\n }\n }\n };\n this.copyFramebufferToTexture = function(position, texture, level = 0) {\n const levelScale = Math.pow(2, -level);\n const width = Math.floor(texture.image.width * levelScale);\n const height = Math.floor(texture.image.height * levelScale);\n let glFormat = utils.convert(texture.format);\n if (capabilities.isWebGL2) {\n if (glFormat === 6407)\n glFormat = 32849;\n if (glFormat === 6408)\n glFormat = 32856;\n }\n textures.setTexture2D(texture, 0);\n _gl.copyTexImage2D(3553, level, glFormat, position.x, position.y, width, height, 0);\n state.unbindTexture();\n };\n this.copyTextureToTexture = function(position, srcTexture, dstTexture, level = 0) {\n const width = srcTexture.image.width;\n const height = srcTexture.image.height;\n const glFormat = utils.convert(dstTexture.format);\n const glType = utils.convert(dstTexture.type);\n textures.setTexture2D(dstTexture, 0);\n _gl.pixelStorei(37440, dstTexture.flipY);\n _gl.pixelStorei(37441, dstTexture.premultiplyAlpha);\n _gl.pixelStorei(3317, dstTexture.unpackAlignment);\n if (srcTexture.isDataTexture) {\n _gl.texSubImage2D(3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data);\n } else {\n if (srcTexture.isCompressedTexture) {\n _gl.compressedTexSubImage2D(3553, level, position.x, position.y, srcTexture.mipmaps[0].width, srcTexture.mipmaps[0].height, glFormat, srcTexture.mipmaps[0].data);\n } else {\n _gl.texSubImage2D(3553, level, position.x, position.y, glFormat, glType, srcTexture.image);\n }\n }\n if (level === 0 && dstTexture.generateMipmaps)\n _gl.generateMipmap(3553);\n state.unbindTexture();\n };\n this.copyTextureToTexture3D = function(sourceBox, position, srcTexture, dstTexture, level = 0) {\n if (_this.isWebGL1Renderer) {\n console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.\");\n return;\n }\n const width = sourceBox.max.x - sourceBox.min.x + 1;\n const height = sourceBox.max.y - sourceBox.min.y + 1;\n const depth = sourceBox.max.z - sourceBox.min.z + 1;\n const glFormat = utils.convert(dstTexture.format);\n const glType = utils.convert(dstTexture.type);\n let glTarget;\n if (dstTexture.isDataTexture3D) {\n textures.setTexture3D(dstTexture, 0);\n glTarget = 32879;\n } else if (dstTexture.isDataTexture2DArray) {\n textures.setTexture2DArray(dstTexture, 0);\n glTarget = 35866;\n } else {\n console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.\");\n return;\n }\n _gl.pixelStorei(37440, dstTexture.flipY);\n _gl.pixelStorei(37441, dstTexture.premultiplyAlpha);\n _gl.pixelStorei(3317, dstTexture.unpackAlignment);\n const unpackRowLen = _gl.getParameter(3314);\n const unpackImageHeight = _gl.getParameter(32878);\n const unpackSkipPixels = _gl.getParameter(3316);\n const unpackSkipRows = _gl.getParameter(3315);\n const unpackSkipImages = _gl.getParameter(32877);\n const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[0] : srcTexture.image;\n _gl.pixelStorei(3314, image.width);\n _gl.pixelStorei(32878, image.height);\n _gl.pixelStorei(3316, sourceBox.min.x);\n _gl.pixelStorei(3315, sourceBox.min.y);\n _gl.pixelStorei(32877, sourceBox.min.z);\n if (srcTexture.isDataTexture || srcTexture.isDataTexture3D) {\n _gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data);\n } else {\n if (srcTexture.isCompressedTexture) {\n console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.\");\n _gl.compressedTexSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data);\n } else {\n _gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image);\n }\n }\n _gl.pixelStorei(3314, unpackRowLen);\n _gl.pixelStorei(32878, unpackImageHeight);\n _gl.pixelStorei(3316, unpackSkipPixels);\n _gl.pixelStorei(3315, unpackSkipRows);\n _gl.pixelStorei(32877, unpackSkipImages);\n if (level === 0 && dstTexture.generateMipmaps)\n _gl.generateMipmap(glTarget);\n state.unbindTexture();\n };\n this.initTexture = function(texture) {\n textures.setTexture2D(texture, 0);\n state.unbindTexture();\n };\n this.resetState = function() {\n _currentActiveCubeFace = 0;\n _currentActiveMipmapLevel = 0;\n _currentRenderTarget = null;\n state.reset();\n bindingStates.reset();\n };\n if (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\", {detail: this}));\n }\n}\nWebGLRenderer.prototype.isWebGLRenderer = true;\nclass WebGL1Renderer extends WebGLRenderer {\n}\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\nclass FogExp2 {\n constructor(color, density = 25e-5) {\n this.name = \"\";\n this.color = new Color(color);\n this.density = density;\n }\n clone() {\n return new FogExp2(this.color, this.density);\n }\n toJSON() {\n return {\n type: \"FogExp2\",\n color: this.color.getHex(),\n density: this.density\n };\n }\n}\nFogExp2.prototype.isFogExp2 = true;\nclass Fog {\n constructor(color, near = 1, far = 1e3) {\n this.name = \"\";\n this.color = new Color(color);\n this.near = near;\n this.far = far;\n }\n clone() {\n return new Fog(this.color, this.near, this.far);\n }\n toJSON() {\n return {\n type: \"Fog\",\n color: this.color.getHex(),\n near: this.near,\n far: this.far\n };\n }\n}\nFog.prototype.isFog = true;\nclass Scene extends Object3D {\n constructor() {\n super();\n this.type = \"Scene\";\n this.background = null;\n this.environment = null;\n this.fog = null;\n this.overrideMaterial = null;\n this.autoUpdate = true;\n if (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\", {detail: this}));\n }\n }\n copy(source, recursive) {\n super.copy(source, recursive);\n if (source.background !== null)\n this.background = source.background.clone();\n if (source.environment !== null)\n this.environment = source.environment.clone();\n if (source.fog !== null)\n this.fog = source.fog.clone();\n if (source.overrideMaterial !== null)\n this.overrideMaterial = source.overrideMaterial.clone();\n this.autoUpdate = source.autoUpdate;\n this.matrixAutoUpdate = source.matrixAutoUpdate;\n return this;\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n if (this.fog !== null)\n data.object.fog = this.fog.toJSON();\n return data;\n }\n}\nScene.prototype.isScene = true;\nclass InterleavedBuffer {\n constructor(array, stride) {\n this.array = array;\n this.stride = stride;\n this.count = array !== void 0 ? array.length / stride : 0;\n this.usage = StaticDrawUsage;\n this.updateRange = {offset: 0, count: -1};\n this.version = 0;\n this.uuid = generateUUID();\n }\n onUploadCallback() {\n }\n set needsUpdate(value) {\n if (value === true)\n this.version++;\n }\n setUsage(value) {\n this.usage = value;\n return this;\n }\n copy(source) {\n this.array = new source.array.constructor(source.array);\n this.count = source.count;\n this.stride = source.stride;\n this.usage = source.usage;\n return this;\n }\n copyAt(index1, attribute, index2) {\n index1 *= this.stride;\n index2 *= attribute.stride;\n for (let i = 0, l = this.stride; i < l; i++) {\n this.array[index1 + i] = attribute.array[index2 + i];\n }\n return this;\n }\n set(value, offset = 0) {\n this.array.set(value, offset);\n return this;\n }\n clone(data) {\n if (data.arrayBuffers === void 0) {\n data.arrayBuffers = {};\n }\n if (this.array.buffer._uuid === void 0) {\n this.array.buffer._uuid = generateUUID();\n }\n if (data.arrayBuffers[this.array.buffer._uuid] === void 0) {\n data.arrayBuffers[this.array.buffer._uuid] = this.array.slice(0).buffer;\n }\n const array = new this.array.constructor(data.arrayBuffers[this.array.buffer._uuid]);\n const ib = new this.constructor(array, this.stride);\n ib.setUsage(this.usage);\n return ib;\n }\n onUpload(callback) {\n this.onUploadCallback = callback;\n return this;\n }\n toJSON(data) {\n if (data.arrayBuffers === void 0) {\n data.arrayBuffers = {};\n }\n if (this.array.buffer._uuid === void 0) {\n this.array.buffer._uuid = generateUUID();\n }\n if (data.arrayBuffers[this.array.buffer._uuid] === void 0) {\n data.arrayBuffers[this.array.buffer._uuid] = Array.prototype.slice.call(new Uint32Array(this.array.buffer));\n }\n return {\n uuid: this.uuid,\n buffer: this.array.buffer._uuid,\n type: this.array.constructor.name,\n stride: this.stride\n };\n }\n}\nInterleavedBuffer.prototype.isInterleavedBuffer = true;\nconst _vector$6 = /* @__PURE__ */ new Vector3();\nclass InterleavedBufferAttribute {\n constructor(interleavedBuffer, itemSize, offset, normalized = false) {\n this.name = \"\";\n this.data = interleavedBuffer;\n this.itemSize = itemSize;\n this.offset = offset;\n this.normalized = normalized === true;\n }\n get count() {\n return this.data.count;\n }\n get array() {\n return this.data.array;\n }\n set needsUpdate(value) {\n this.data.needsUpdate = value;\n }\n applyMatrix4(m) {\n for (let i = 0, l = this.data.count; i < l; i++) {\n _vector$6.x = this.getX(i);\n _vector$6.y = this.getY(i);\n _vector$6.z = this.getZ(i);\n _vector$6.applyMatrix4(m);\n this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n }\n return this;\n }\n applyNormalMatrix(m) {\n for (let i = 0, l = this.count; i < l; i++) {\n _vector$6.x = this.getX(i);\n _vector$6.y = this.getY(i);\n _vector$6.z = this.getZ(i);\n _vector$6.applyNormalMatrix(m);\n this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n }\n return this;\n }\n transformDirection(m) {\n for (let i = 0, l = this.count; i < l; i++) {\n _vector$6.x = this.getX(i);\n _vector$6.y = this.getY(i);\n _vector$6.z = this.getZ(i);\n _vector$6.transformDirection(m);\n this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n }\n return this;\n }\n setX(index, x) {\n this.data.array[index * this.data.stride + this.offset] = x;\n return this;\n }\n setY(index, y) {\n this.data.array[index * this.data.stride + this.offset + 1] = y;\n return this;\n }\n setZ(index, z) {\n this.data.array[index * this.data.stride + this.offset + 2] = z;\n return this;\n }\n setW(index, w) {\n this.data.array[index * this.data.stride + this.offset + 3] = w;\n return this;\n }\n getX(index) {\n return this.data.array[index * this.data.stride + this.offset];\n }\n getY(index) {\n return this.data.array[index * this.data.stride + this.offset + 1];\n }\n getZ(index) {\n return this.data.array[index * this.data.stride + this.offset + 2];\n }\n getW(index) {\n return this.data.array[index * this.data.stride + this.offset + 3];\n }\n setXY(index, x, y) {\n index = index * this.data.stride + this.offset;\n this.data.array[index + 0] = x;\n this.data.array[index + 1] = y;\n return this;\n }\n setXYZ(index, x, y, z) {\n index = index * this.data.stride + this.offset;\n this.data.array[index + 0] = x;\n this.data.array[index + 1] = y;\n this.data.array[index + 2] = z;\n return this;\n }\n setXYZW(index, x, y, z, w) {\n index = index * this.data.stride + this.offset;\n this.data.array[index + 0] = x;\n this.data.array[index + 1] = y;\n this.data.array[index + 2] = z;\n this.data.array[index + 3] = w;\n return this;\n }\n clone(data) {\n if (data === void 0) {\n console.log(\"THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.\");\n const array = [];\n for (let i = 0; i < this.count; i++) {\n const index = i * this.data.stride + this.offset;\n for (let j = 0; j < this.itemSize; j++) {\n array.push(this.data.array[index + j]);\n }\n }\n return new BufferAttribute(new this.array.constructor(array), this.itemSize, this.normalized);\n } else {\n if (data.interleavedBuffers === void 0) {\n data.interleavedBuffers = {};\n }\n if (data.interleavedBuffers[this.data.uuid] === void 0) {\n data.interleavedBuffers[this.data.uuid] = this.data.clone(data);\n }\n return new InterleavedBufferAttribute(data.interleavedBuffers[this.data.uuid], this.itemSize, this.offset, this.normalized);\n }\n }\n toJSON(data) {\n if (data === void 0) {\n console.log(\"THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.\");\n const array = [];\n for (let i = 0; i < this.count; i++) {\n const index = i * this.data.stride + this.offset;\n for (let j = 0; j < this.itemSize; j++) {\n array.push(this.data.array[index + j]);\n }\n }\n return {\n itemSize: this.itemSize,\n type: this.array.constructor.name,\n array,\n normalized: this.normalized\n };\n } else {\n if (data.interleavedBuffers === void 0) {\n data.interleavedBuffers = {};\n }\n if (data.interleavedBuffers[this.data.uuid] === void 0) {\n data.interleavedBuffers[this.data.uuid] = this.data.toJSON(data);\n }\n return {\n isInterleavedBufferAttribute: true,\n itemSize: this.itemSize,\n data: this.data.uuid,\n offset: this.offset,\n normalized: this.normalized\n };\n }\n }\n}\nInterleavedBufferAttribute.prototype.isInterleavedBufferAttribute = true;\nclass SpriteMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"SpriteMaterial\";\n this.color = new Color(16777215);\n this.map = null;\n this.alphaMap = null;\n this.rotation = 0;\n this.sizeAttenuation = true;\n this.transparent = true;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.map = source.map;\n this.alphaMap = source.alphaMap;\n this.rotation = source.rotation;\n this.sizeAttenuation = source.sizeAttenuation;\n return this;\n }\n}\nSpriteMaterial.prototype.isSpriteMaterial = true;\nlet _geometry;\nconst _intersectPoint = /* @__PURE__ */ new Vector3();\nconst _worldScale = /* @__PURE__ */ new Vector3();\nconst _mvPosition = /* @__PURE__ */ new Vector3();\nconst _alignedPosition = /* @__PURE__ */ new Vector2();\nconst _rotatedPosition = /* @__PURE__ */ new Vector2();\nconst _viewWorldMatrix = /* @__PURE__ */ new Matrix4();\nconst _vA = /* @__PURE__ */ new Vector3();\nconst _vB = /* @__PURE__ */ new Vector3();\nconst _vC = /* @__PURE__ */ new Vector3();\nconst _uvA = /* @__PURE__ */ new Vector2();\nconst _uvB = /* @__PURE__ */ new Vector2();\nconst _uvC = /* @__PURE__ */ new Vector2();\nclass Sprite extends Object3D {\n constructor(material) {\n super();\n this.type = \"Sprite\";\n if (_geometry === void 0) {\n _geometry = new BufferGeometry();\n const float32Array = new Float32Array([\n -0.5,\n -0.5,\n 0,\n 0,\n 0,\n 0.5,\n -0.5,\n 0,\n 1,\n 0,\n 0.5,\n 0.5,\n 0,\n 1,\n 1,\n -0.5,\n 0.5,\n 0,\n 0,\n 1\n ]);\n const interleavedBuffer = new InterleavedBuffer(float32Array, 5);\n _geometry.setIndex([0, 1, 2, 0, 2, 3]);\n _geometry.setAttribute(\"position\", new InterleavedBufferAttribute(interleavedBuffer, 3, 0, false));\n _geometry.setAttribute(\"uv\", new InterleavedBufferAttribute(interleavedBuffer, 2, 3, false));\n }\n this.geometry = _geometry;\n this.material = material !== void 0 ? material : new SpriteMaterial();\n this.center = new Vector2(0.5, 0.5);\n }\n raycast(raycaster, intersects2) {\n if (raycaster.camera === null) {\n console.error('THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.');\n }\n _worldScale.setFromMatrixScale(this.matrixWorld);\n _viewWorldMatrix.copy(raycaster.camera.matrixWorld);\n this.modelViewMatrix.multiplyMatrices(raycaster.camera.matrixWorldInverse, this.matrixWorld);\n _mvPosition.setFromMatrixPosition(this.modelViewMatrix);\n if (raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false) {\n _worldScale.multiplyScalar(-_mvPosition.z);\n }\n const rotation = this.material.rotation;\n let sin, cos;\n if (rotation !== 0) {\n cos = Math.cos(rotation);\n sin = Math.sin(rotation);\n }\n const center = this.center;\n transformVertex(_vA.set(-0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n transformVertex(_vB.set(0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n transformVertex(_vC.set(0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n _uvA.set(0, 0);\n _uvB.set(1, 0);\n _uvC.set(1, 1);\n let intersect = raycaster.ray.intersectTriangle(_vA, _vB, _vC, false, _intersectPoint);\n if (intersect === null) {\n transformVertex(_vB.set(-0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n _uvB.set(0, 1);\n intersect = raycaster.ray.intersectTriangle(_vA, _vC, _vB, false, _intersectPoint);\n if (intersect === null) {\n return;\n }\n }\n const distance = raycaster.ray.origin.distanceTo(_intersectPoint);\n if (distance < raycaster.near || distance > raycaster.far)\n return;\n intersects2.push({\n distance,\n point: _intersectPoint.clone(),\n uv: Triangle.getUV(_intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2()),\n face: null,\n object: this\n });\n }\n copy(source) {\n super.copy(source);\n if (source.center !== void 0)\n this.center.copy(source.center);\n this.material = source.material;\n return this;\n }\n}\nSprite.prototype.isSprite = true;\nfunction transformVertex(vertexPosition, mvPosition, center, scale, sin, cos) {\n _alignedPosition.subVectors(vertexPosition, center).addScalar(0.5).multiply(scale);\n if (sin !== void 0) {\n _rotatedPosition.x = cos * _alignedPosition.x - sin * _alignedPosition.y;\n _rotatedPosition.y = sin * _alignedPosition.x + cos * _alignedPosition.y;\n } else {\n _rotatedPosition.copy(_alignedPosition);\n }\n vertexPosition.copy(mvPosition);\n vertexPosition.x += _rotatedPosition.x;\n vertexPosition.y += _rotatedPosition.y;\n vertexPosition.applyMatrix4(_viewWorldMatrix);\n}\nconst _v1$2 = /* @__PURE__ */ new Vector3();\nconst _v2$1 = /* @__PURE__ */ new Vector3();\nclass LOD extends Object3D {\n constructor() {\n super();\n this._currentLevel = 0;\n this.type = \"LOD\";\n Object.defineProperties(this, {\n levels: {\n enumerable: true,\n value: []\n },\n isLOD: {\n value: true\n }\n });\n this.autoUpdate = true;\n }\n copy(source) {\n super.copy(source, false);\n const levels = source.levels;\n for (let i = 0, l = levels.length; i < l; i++) {\n const level = levels[i];\n this.addLevel(level.object.clone(), level.distance);\n }\n this.autoUpdate = source.autoUpdate;\n return this;\n }\n addLevel(object, distance = 0) {\n distance = Math.abs(distance);\n const levels = this.levels;\n let l;\n for (l = 0; l < levels.length; l++) {\n if (distance < levels[l].distance) {\n break;\n }\n }\n levels.splice(l, 0, {distance, object});\n this.add(object);\n return this;\n }\n getCurrentLevel() {\n return this._currentLevel;\n }\n getObjectForDistance(distance) {\n const levels = this.levels;\n if (levels.length > 0) {\n let i, l;\n for (i = 1, l = levels.length; i < l; i++) {\n if (distance < levels[i].distance) {\n break;\n }\n }\n return levels[i - 1].object;\n }\n return null;\n }\n raycast(raycaster, intersects2) {\n const levels = this.levels;\n if (levels.length > 0) {\n _v1$2.setFromMatrixPosition(this.matrixWorld);\n const distance = raycaster.ray.origin.distanceTo(_v1$2);\n this.getObjectForDistance(distance).raycast(raycaster, intersects2);\n }\n }\n update(camera) {\n const levels = this.levels;\n if (levels.length > 1) {\n _v1$2.setFromMatrixPosition(camera.matrixWorld);\n _v2$1.setFromMatrixPosition(this.matrixWorld);\n const distance = _v1$2.distanceTo(_v2$1) / camera.zoom;\n levels[0].object.visible = true;\n let i, l;\n for (i = 1, l = levels.length; i < l; i++) {\n if (distance >= levels[i].distance) {\n levels[i - 1].object.visible = false;\n levels[i].object.visible = true;\n } else {\n break;\n }\n }\n this._currentLevel = i - 1;\n for (; i < l; i++) {\n levels[i].object.visible = false;\n }\n }\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n if (this.autoUpdate === false)\n data.object.autoUpdate = false;\n data.object.levels = [];\n const levels = this.levels;\n for (let i = 0, l = levels.length; i < l; i++) {\n const level = levels[i];\n data.object.levels.push({\n object: level.object.uuid,\n distance: level.distance\n });\n }\n return data;\n }\n}\nconst _basePosition = /* @__PURE__ */ new Vector3();\nconst _skinIndex = /* @__PURE__ */ new Vector4();\nconst _skinWeight = /* @__PURE__ */ new Vector4();\nconst _vector$5 = /* @__PURE__ */ new Vector3();\nconst _matrix = /* @__PURE__ */ new Matrix4();\nclass SkinnedMesh extends Mesh {\n constructor(geometry, material) {\n super(geometry, material);\n this.type = \"SkinnedMesh\";\n this.bindMode = \"attached\";\n this.bindMatrix = new Matrix4();\n this.bindMatrixInverse = new Matrix4();\n }\n copy(source) {\n super.copy(source);\n this.bindMode = source.bindMode;\n this.bindMatrix.copy(source.bindMatrix);\n this.bindMatrixInverse.copy(source.bindMatrixInverse);\n this.skeleton = source.skeleton;\n return this;\n }\n bind(skeleton, bindMatrix) {\n this.skeleton = skeleton;\n if (bindMatrix === void 0) {\n this.updateMatrixWorld(true);\n this.skeleton.calculateInverses();\n bindMatrix = this.matrixWorld;\n }\n this.bindMatrix.copy(bindMatrix);\n this.bindMatrixInverse.copy(bindMatrix).invert();\n }\n pose() {\n this.skeleton.pose();\n }\n normalizeSkinWeights() {\n const vector = new Vector4();\n const skinWeight = this.geometry.attributes.skinWeight;\n for (let i = 0, l = skinWeight.count; i < l; i++) {\n vector.x = skinWeight.getX(i);\n vector.y = skinWeight.getY(i);\n vector.z = skinWeight.getZ(i);\n vector.w = skinWeight.getW(i);\n const scale = 1 / vector.manhattanLength();\n if (scale !== Infinity) {\n vector.multiplyScalar(scale);\n } else {\n vector.set(1, 0, 0, 0);\n }\n skinWeight.setXYZW(i, vector.x, vector.y, vector.z, vector.w);\n }\n }\n updateMatrixWorld(force) {\n super.updateMatrixWorld(force);\n if (this.bindMode === \"attached\") {\n this.bindMatrixInverse.copy(this.matrixWorld).invert();\n } else if (this.bindMode === \"detached\") {\n this.bindMatrixInverse.copy(this.bindMatrix).invert();\n } else {\n console.warn(\"THREE.SkinnedMesh: Unrecognized bindMode: \" + this.bindMode);\n }\n }\n boneTransform(index, target) {\n const skeleton = this.skeleton;\n const geometry = this.geometry;\n _skinIndex.fromBufferAttribute(geometry.attributes.skinIndex, index);\n _skinWeight.fromBufferAttribute(geometry.attributes.skinWeight, index);\n _basePosition.copy(target).applyMatrix4(this.bindMatrix);\n target.set(0, 0, 0);\n for (let i = 0; i < 4; i++) {\n const weight = _skinWeight.getComponent(i);\n if (weight !== 0) {\n const boneIndex = _skinIndex.getComponent(i);\n _matrix.multiplyMatrices(skeleton.bones[boneIndex].matrixWorld, skeleton.boneInverses[boneIndex]);\n target.addScaledVector(_vector$5.copy(_basePosition).applyMatrix4(_matrix), weight);\n }\n }\n return target.applyMatrix4(this.bindMatrixInverse);\n }\n}\nSkinnedMesh.prototype.isSkinnedMesh = true;\nclass Bone extends Object3D {\n constructor() {\n super();\n this.type = \"Bone\";\n }\n}\nBone.prototype.isBone = true;\nclass DataTexture extends Texture {\n constructor(data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding) {\n super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n this.image = {data, width, height};\n this.magFilter = magFilter;\n this.minFilter = minFilter;\n this.generateMipmaps = false;\n this.flipY = false;\n this.unpackAlignment = 1;\n this.needsUpdate = true;\n }\n}\nDataTexture.prototype.isDataTexture = true;\nconst _offsetMatrix = /* @__PURE__ */ new Matrix4();\nconst _identityMatrix = /* @__PURE__ */ new Matrix4();\nclass Skeleton {\n constructor(bones = [], boneInverses = []) {\n this.uuid = generateUUID();\n this.bones = bones.slice(0);\n this.boneInverses = boneInverses;\n this.boneMatrices = null;\n this.boneTexture = null;\n this.boneTextureSize = 0;\n this.frame = -1;\n this.init();\n }\n init() {\n const bones = this.bones;\n const boneInverses = this.boneInverses;\n this.boneMatrices = new Float32Array(bones.length * 16);\n if (boneInverses.length === 0) {\n this.calculateInverses();\n } else {\n if (bones.length !== boneInverses.length) {\n console.warn(\"THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.\");\n this.boneInverses = [];\n for (let i = 0, il = this.bones.length; i < il; i++) {\n this.boneInverses.push(new Matrix4());\n }\n }\n }\n }\n calculateInverses() {\n this.boneInverses.length = 0;\n for (let i = 0, il = this.bones.length; i < il; i++) {\n const inverse = new Matrix4();\n if (this.bones[i]) {\n inverse.copy(this.bones[i].matrixWorld).invert();\n }\n this.boneInverses.push(inverse);\n }\n }\n pose() {\n for (let i = 0, il = this.bones.length; i < il; i++) {\n const bone = this.bones[i];\n if (bone) {\n bone.matrixWorld.copy(this.boneInverses[i]).invert();\n }\n }\n for (let i = 0, il = this.bones.length; i < il; i++) {\n const bone = this.bones[i];\n if (bone) {\n if (bone.parent && bone.parent.isBone) {\n bone.matrix.copy(bone.parent.matrixWorld).invert();\n bone.matrix.multiply(bone.matrixWorld);\n } else {\n bone.matrix.copy(bone.matrixWorld);\n }\n bone.matrix.decompose(bone.position, bone.quaternion, bone.scale);\n }\n }\n }\n update() {\n const bones = this.bones;\n const boneInverses = this.boneInverses;\n const boneMatrices = this.boneMatrices;\n const boneTexture = this.boneTexture;\n for (let i = 0, il = bones.length; i < il; i++) {\n const matrix = bones[i] ? bones[i].matrixWorld : _identityMatrix;\n _offsetMatrix.multiplyMatrices(matrix, boneInverses[i]);\n _offsetMatrix.toArray(boneMatrices, i * 16);\n }\n if (boneTexture !== null) {\n boneTexture.needsUpdate = true;\n }\n }\n clone() {\n return new Skeleton(this.bones, this.boneInverses);\n }\n computeBoneTexture() {\n let size = Math.sqrt(this.bones.length * 4);\n size = ceilPowerOfTwo(size);\n size = Math.max(size, 4);\n const boneMatrices = new Float32Array(size * size * 4);\n boneMatrices.set(this.boneMatrices);\n const boneTexture = new DataTexture(boneMatrices, size, size, RGBAFormat, FloatType);\n this.boneMatrices = boneMatrices;\n this.boneTexture = boneTexture;\n this.boneTextureSize = size;\n return this;\n }\n getBoneByName(name) {\n for (let i = 0, il = this.bones.length; i < il; i++) {\n const bone = this.bones[i];\n if (bone.name === name) {\n return bone;\n }\n }\n return void 0;\n }\n dispose() {\n if (this.boneTexture !== null) {\n this.boneTexture.dispose();\n this.boneTexture = null;\n }\n }\n fromJSON(json, bones) {\n this.uuid = json.uuid;\n for (let i = 0, l = json.bones.length; i < l; i++) {\n const uuid = json.bones[i];\n let bone = bones[uuid];\n if (bone === void 0) {\n console.warn(\"THREE.Skeleton: No bone found with UUID:\", uuid);\n bone = new Bone();\n }\n this.bones.push(bone);\n this.boneInverses.push(new Matrix4().fromArray(json.boneInverses[i]));\n }\n this.init();\n return this;\n }\n toJSON() {\n const data = {\n metadata: {\n version: 4.5,\n type: \"Skeleton\",\n generator: \"Skeleton.toJSON\"\n },\n bones: [],\n boneInverses: []\n };\n data.uuid = this.uuid;\n const bones = this.bones;\n const boneInverses = this.boneInverses;\n for (let i = 0, l = bones.length; i < l; i++) {\n const bone = bones[i];\n data.bones.push(bone.uuid);\n const boneInverse = boneInverses[i];\n data.boneInverses.push(boneInverse.toArray());\n }\n return data;\n }\n}\nclass InstancedBufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized, meshPerAttribute = 1) {\n if (typeof normalized === \"number\") {\n meshPerAttribute = normalized;\n normalized = false;\n console.error(\"THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.\");\n }\n super(array, itemSize, normalized);\n this.meshPerAttribute = meshPerAttribute;\n }\n copy(source) {\n super.copy(source);\n this.meshPerAttribute = source.meshPerAttribute;\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.meshPerAttribute = this.meshPerAttribute;\n data.isInstancedBufferAttribute = true;\n return data;\n }\n}\nInstancedBufferAttribute.prototype.isInstancedBufferAttribute = true;\nconst _instanceLocalMatrix = /* @__PURE__ */ new Matrix4();\nconst _instanceWorldMatrix = /* @__PURE__ */ new Matrix4();\nconst _instanceIntersects = [];\nconst _mesh = /* @__PURE__ */ new Mesh();\nclass InstancedMesh extends Mesh {\n constructor(geometry, material, count) {\n super(geometry, material);\n this.instanceMatrix = new InstancedBufferAttribute(new Float32Array(count * 16), 16);\n this.instanceColor = null;\n this.count = count;\n this.frustumCulled = false;\n }\n copy(source) {\n super.copy(source);\n this.instanceMatrix.copy(source.instanceMatrix);\n if (source.instanceColor !== null)\n this.instanceColor = source.instanceColor.clone();\n this.count = source.count;\n return this;\n }\n getColorAt(index, color) {\n color.fromArray(this.instanceColor.array, index * 3);\n }\n getMatrixAt(index, matrix) {\n matrix.fromArray(this.instanceMatrix.array, index * 16);\n }\n raycast(raycaster, intersects2) {\n const matrixWorld = this.matrixWorld;\n const raycastTimes = this.count;\n _mesh.geometry = this.geometry;\n _mesh.material = this.material;\n if (_mesh.material === void 0)\n return;\n for (let instanceId = 0; instanceId < raycastTimes; instanceId++) {\n this.getMatrixAt(instanceId, _instanceLocalMatrix);\n _instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);\n _mesh.matrixWorld = _instanceWorldMatrix;\n _mesh.raycast(raycaster, _instanceIntersects);\n for (let i = 0, l = _instanceIntersects.length; i < l; i++) {\n const intersect = _instanceIntersects[i];\n intersect.instanceId = instanceId;\n intersect.object = this;\n intersects2.push(intersect);\n }\n _instanceIntersects.length = 0;\n }\n }\n setColorAt(index, color) {\n if (this.instanceColor === null) {\n this.instanceColor = new InstancedBufferAttribute(new Float32Array(this.instanceMatrix.count * 3), 3);\n }\n color.toArray(this.instanceColor.array, index * 3);\n }\n setMatrixAt(index, matrix) {\n matrix.toArray(this.instanceMatrix.array, index * 16);\n }\n updateMorphTargets() {\n }\n dispose() {\n this.dispatchEvent({type: \"dispose\"});\n }\n}\nInstancedMesh.prototype.isInstancedMesh = true;\nclass LineBasicMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"LineBasicMaterial\";\n this.color = new Color(16777215);\n this.linewidth = 1;\n this.linecap = \"round\";\n this.linejoin = \"round\";\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.linewidth = source.linewidth;\n this.linecap = source.linecap;\n this.linejoin = source.linejoin;\n return this;\n }\n}\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\nconst _start$1 = /* @__PURE__ */ new Vector3();\nconst _end$1 = /* @__PURE__ */ new Vector3();\nconst _inverseMatrix$1 = /* @__PURE__ */ new Matrix4();\nconst _ray$1 = /* @__PURE__ */ new Ray();\nconst _sphere$1 = /* @__PURE__ */ new Sphere();\nclass Line extends Object3D {\n constructor(geometry = new BufferGeometry(), material = new LineBasicMaterial()) {\n super();\n this.type = \"Line\";\n this.geometry = geometry;\n this.material = material;\n this.updateMorphTargets();\n }\n copy(source) {\n super.copy(source);\n this.material = source.material;\n this.geometry = source.geometry;\n return this;\n }\n computeLineDistances() {\n const geometry = this.geometry;\n if (geometry.isBufferGeometry) {\n if (geometry.index === null) {\n const positionAttribute = geometry.attributes.position;\n const lineDistances = [0];\n for (let i = 1, l = positionAttribute.count; i < l; i++) {\n _start$1.fromBufferAttribute(positionAttribute, i - 1);\n _end$1.fromBufferAttribute(positionAttribute, i);\n lineDistances[i] = lineDistances[i - 1];\n lineDistances[i] += _start$1.distanceTo(_end$1);\n }\n geometry.setAttribute(\"lineDistance\", new Float32BufferAttribute(lineDistances, 1));\n } else {\n console.warn(\"THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.\");\n }\n } else if (geometry.isGeometry) {\n console.error(\"THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n return this;\n }\n raycast(raycaster, intersects2) {\n const geometry = this.geometry;\n const matrixWorld = this.matrixWorld;\n const threshold = raycaster.params.Line.threshold;\n const drawRange = geometry.drawRange;\n if (geometry.boundingSphere === null)\n geometry.computeBoundingSphere();\n _sphere$1.copy(geometry.boundingSphere);\n _sphere$1.applyMatrix4(matrixWorld);\n _sphere$1.radius += threshold;\n if (raycaster.ray.intersectsSphere(_sphere$1) === false)\n return;\n _inverseMatrix$1.copy(matrixWorld).invert();\n _ray$1.copy(raycaster.ray).applyMatrix4(_inverseMatrix$1);\n const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n const localThresholdSq = localThreshold * localThreshold;\n const vStart = new Vector3();\n const vEnd = new Vector3();\n const interSegment = new Vector3();\n const interRay = new Vector3();\n const step = this.isLineSegments ? 2 : 1;\n if (geometry.isBufferGeometry) {\n const index = geometry.index;\n const attributes = geometry.attributes;\n const positionAttribute = attributes.position;\n if (index !== null) {\n const start = Math.max(0, drawRange.start);\n const end = Math.min(index.count, drawRange.start + drawRange.count);\n for (let i = start, l = end - 1; i < l; i += step) {\n const a = index.getX(i);\n const b = index.getX(i + 1);\n vStart.fromBufferAttribute(positionAttribute, a);\n vEnd.fromBufferAttribute(positionAttribute, b);\n const distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment);\n if (distSq > localThresholdSq)\n continue;\n interRay.applyMatrix4(this.matrixWorld);\n const distance = raycaster.ray.origin.distanceTo(interRay);\n if (distance < raycaster.near || distance > raycaster.far)\n continue;\n intersects2.push({\n distance,\n point: interSegment.clone().applyMatrix4(this.matrixWorld),\n index: i,\n face: null,\n faceIndex: null,\n object: this\n });\n }\n } else {\n const start = Math.max(0, drawRange.start);\n const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n for (let i = start, l = end - 1; i < l; i += step) {\n vStart.fromBufferAttribute(positionAttribute, i);\n vEnd.fromBufferAttribute(positionAttribute, i + 1);\n const distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment);\n if (distSq > localThresholdSq)\n continue;\n interRay.applyMatrix4(this.matrixWorld);\n const distance = raycaster.ray.origin.distanceTo(interRay);\n if (distance < raycaster.near || distance > raycaster.far)\n continue;\n intersects2.push({\n distance,\n point: interSegment.clone().applyMatrix4(this.matrixWorld),\n index: i,\n face: null,\n faceIndex: null,\n object: this\n });\n }\n }\n } else if (geometry.isGeometry) {\n console.error(\"THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n }\n updateMorphTargets() {\n const geometry = this.geometry;\n if (geometry.isBufferGeometry) {\n const morphAttributes = geometry.morphAttributes;\n const keys = Object.keys(morphAttributes);\n if (keys.length > 0) {\n const morphAttribute = morphAttributes[keys[0]];\n if (morphAttribute !== void 0) {\n this.morphTargetInfluences = [];\n this.morphTargetDictionary = {};\n for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n const name = morphAttribute[m].name || String(m);\n this.morphTargetInfluences.push(0);\n this.morphTargetDictionary[name] = m;\n }\n }\n }\n } else {\n const morphTargets = geometry.morphTargets;\n if (morphTargets !== void 0 && morphTargets.length > 0) {\n console.error(\"THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n }\n }\n}\nLine.prototype.isLine = true;\nconst _start = /* @__PURE__ */ new Vector3();\nconst _end = /* @__PURE__ */ new Vector3();\nclass LineSegments extends Line {\n constructor(geometry, material) {\n super(geometry, material);\n this.type = \"LineSegments\";\n }\n computeLineDistances() {\n const geometry = this.geometry;\n if (geometry.isBufferGeometry) {\n if (geometry.index === null) {\n const positionAttribute = geometry.attributes.position;\n const lineDistances = [];\n for (let i = 0, l = positionAttribute.count; i < l; i += 2) {\n _start.fromBufferAttribute(positionAttribute, i);\n _end.fromBufferAttribute(positionAttribute, i + 1);\n lineDistances[i] = i === 0 ? 0 : lineDistances[i - 1];\n lineDistances[i + 1] = lineDistances[i] + _start.distanceTo(_end);\n }\n geometry.setAttribute(\"lineDistance\", new Float32BufferAttribute(lineDistances, 1));\n } else {\n console.warn(\"THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.\");\n }\n } else if (geometry.isGeometry) {\n console.error(\"THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n return this;\n }\n}\nLineSegments.prototype.isLineSegments = true;\nclass LineLoop extends Line {\n constructor(geometry, material) {\n super(geometry, material);\n this.type = \"LineLoop\";\n }\n}\nLineLoop.prototype.isLineLoop = true;\nclass PointsMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"PointsMaterial\";\n this.color = new Color(16777215);\n this.map = null;\n this.alphaMap = null;\n this.size = 1;\n this.sizeAttenuation = true;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.map = source.map;\n this.alphaMap = source.alphaMap;\n this.size = source.size;\n this.sizeAttenuation = source.sizeAttenuation;\n return this;\n }\n}\nPointsMaterial.prototype.isPointsMaterial = true;\nconst _inverseMatrix = /* @__PURE__ */ new Matrix4();\nconst _ray = /* @__PURE__ */ new Ray();\nconst _sphere = /* @__PURE__ */ new Sphere();\nconst _position$2 = /* @__PURE__ */ new Vector3();\nclass Points extends Object3D {\n constructor(geometry = new BufferGeometry(), material = new PointsMaterial()) {\n super();\n this.type = \"Points\";\n this.geometry = geometry;\n this.material = material;\n this.updateMorphTargets();\n }\n copy(source) {\n super.copy(source);\n this.material = source.material;\n this.geometry = source.geometry;\n return this;\n }\n raycast(raycaster, intersects2) {\n const geometry = this.geometry;\n const matrixWorld = this.matrixWorld;\n const threshold = raycaster.params.Points.threshold;\n const drawRange = geometry.drawRange;\n if (geometry.boundingSphere === null)\n geometry.computeBoundingSphere();\n _sphere.copy(geometry.boundingSphere);\n _sphere.applyMatrix4(matrixWorld);\n _sphere.radius += threshold;\n if (raycaster.ray.intersectsSphere(_sphere) === false)\n return;\n _inverseMatrix.copy(matrixWorld).invert();\n _ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);\n const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n const localThresholdSq = localThreshold * localThreshold;\n if (geometry.isBufferGeometry) {\n const index = geometry.index;\n const attributes = geometry.attributes;\n const positionAttribute = attributes.position;\n if (index !== null) {\n const start = Math.max(0, drawRange.start);\n const end = Math.min(index.count, drawRange.start + drawRange.count);\n for (let i = start, il = end; i < il; i++) {\n const a = index.getX(i);\n _position$2.fromBufferAttribute(positionAttribute, a);\n testPoint(_position$2, a, localThresholdSq, matrixWorld, raycaster, intersects2, this);\n }\n } else {\n const start = Math.max(0, drawRange.start);\n const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n for (let i = start, l = end; i < l; i++) {\n _position$2.fromBufferAttribute(positionAttribute, i);\n testPoint(_position$2, i, localThresholdSq, matrixWorld, raycaster, intersects2, this);\n }\n }\n } else {\n console.error(\"THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n }\n updateMorphTargets() {\n const geometry = this.geometry;\n if (geometry.isBufferGeometry) {\n const morphAttributes = geometry.morphAttributes;\n const keys = Object.keys(morphAttributes);\n if (keys.length > 0) {\n const morphAttribute = morphAttributes[keys[0]];\n if (morphAttribute !== void 0) {\n this.morphTargetInfluences = [];\n this.morphTargetDictionary = {};\n for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n const name = morphAttribute[m].name || String(m);\n this.morphTargetInfluences.push(0);\n this.morphTargetDictionary[name] = m;\n }\n }\n }\n } else {\n const morphTargets = geometry.morphTargets;\n if (morphTargets !== void 0 && morphTargets.length > 0) {\n console.error(\"THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n }\n }\n}\nPoints.prototype.isPoints = true;\nfunction testPoint(point, index, localThresholdSq, matrixWorld, raycaster, intersects2, object) {\n const rayPointDistanceSq = _ray.distanceSqToPoint(point);\n if (rayPointDistanceSq < localThresholdSq) {\n const intersectPoint = new Vector3();\n _ray.closestPointToPoint(point, intersectPoint);\n intersectPoint.applyMatrix4(matrixWorld);\n const distance = raycaster.ray.origin.distanceTo(intersectPoint);\n if (distance < raycaster.near || distance > raycaster.far)\n return;\n intersects2.push({\n distance,\n distanceToRay: Math.sqrt(rayPointDistanceSq),\n point: intersectPoint,\n index,\n face: null,\n object\n });\n }\n}\nclass VideoTexture extends Texture {\n constructor(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) {\n super(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n this.format = format !== void 0 ? format : RGBFormat;\n this.minFilter = minFilter !== void 0 ? minFilter : LinearFilter;\n this.magFilter = magFilter !== void 0 ? magFilter : LinearFilter;\n this.generateMipmaps = false;\n const scope = this;\n function updateVideo() {\n scope.needsUpdate = true;\n video.requestVideoFrameCallback(updateVideo);\n }\n if (\"requestVideoFrameCallback\" in video) {\n video.requestVideoFrameCallback(updateVideo);\n }\n }\n clone() {\n return new this.constructor(this.image).copy(this);\n }\n update() {\n const video = this.image;\n const hasVideoFrameCallback = \"requestVideoFrameCallback\" in video;\n if (hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA) {\n this.needsUpdate = true;\n }\n }\n}\nVideoTexture.prototype.isVideoTexture = true;\nclass CompressedTexture extends Texture {\n constructor(mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding) {\n super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n this.image = {width, height};\n this.mipmaps = mipmaps;\n this.flipY = false;\n this.generateMipmaps = false;\n }\n}\nCompressedTexture.prototype.isCompressedTexture = true;\nclass CanvasTexture extends Texture {\n constructor(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) {\n super(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n this.needsUpdate = true;\n }\n}\nCanvasTexture.prototype.isCanvasTexture = true;\nclass CircleGeometry extends BufferGeometry {\n constructor(radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2) {\n super();\n this.type = \"CircleGeometry\";\n this.parameters = {\n radius,\n segments,\n thetaStart,\n thetaLength\n };\n segments = Math.max(3, segments);\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n const vertex2 = new Vector3();\n const uv = new Vector2();\n vertices.push(0, 0, 0);\n normals.push(0, 0, 1);\n uvs.push(0.5, 0.5);\n for (let s = 0, i = 3; s <= segments; s++, i += 3) {\n const segment = thetaStart + s / segments * thetaLength;\n vertex2.x = radius * Math.cos(segment);\n vertex2.y = radius * Math.sin(segment);\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n normals.push(0, 0, 1);\n uv.x = (vertices[i] / radius + 1) / 2;\n uv.y = (vertices[i + 1] / radius + 1) / 2;\n uvs.push(uv.x, uv.y);\n }\n for (let i = 1; i <= segments; i++) {\n indices.push(i, i + 1, 0);\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n }\n static fromJSON(data) {\n return new CircleGeometry(data.radius, data.segments, data.thetaStart, data.thetaLength);\n }\n}\nclass CylinderGeometry extends BufferGeometry {\n constructor(radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) {\n super();\n this.type = \"CylinderGeometry\";\n this.parameters = {\n radiusTop,\n radiusBottom,\n height,\n radialSegments,\n heightSegments,\n openEnded,\n thetaStart,\n thetaLength\n };\n const scope = this;\n radialSegments = Math.floor(radialSegments);\n heightSegments = Math.floor(heightSegments);\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n let index = 0;\n const indexArray = [];\n const halfHeight = height / 2;\n let groupStart = 0;\n generateTorso();\n if (openEnded === false) {\n if (radiusTop > 0)\n generateCap(true);\n if (radiusBottom > 0)\n generateCap(false);\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n function generateTorso() {\n const normal = new Vector3();\n const vertex2 = new Vector3();\n let groupCount = 0;\n const slope = (radiusBottom - radiusTop) / height;\n for (let y = 0; y <= heightSegments; y++) {\n const indexRow = [];\n const v = y / heightSegments;\n const radius = v * (radiusBottom - radiusTop) + radiusTop;\n for (let x = 0; x <= radialSegments; x++) {\n const u = x / radialSegments;\n const theta = u * thetaLength + thetaStart;\n const sinTheta = Math.sin(theta);\n const cosTheta = Math.cos(theta);\n vertex2.x = radius * sinTheta;\n vertex2.y = -v * height + halfHeight;\n vertex2.z = radius * cosTheta;\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n normal.set(sinTheta, slope, cosTheta).normalize();\n normals.push(normal.x, normal.y, normal.z);\n uvs.push(u, 1 - v);\n indexRow.push(index++);\n }\n indexArray.push(indexRow);\n }\n for (let x = 0; x < radialSegments; x++) {\n for (let y = 0; y < heightSegments; y++) {\n const a = indexArray[y][x];\n const b = indexArray[y + 1][x];\n const c = indexArray[y + 1][x + 1];\n const d = indexArray[y][x + 1];\n indices.push(a, b, d);\n indices.push(b, c, d);\n groupCount += 6;\n }\n }\n scope.addGroup(groupStart, groupCount, 0);\n groupStart += groupCount;\n }\n function generateCap(top) {\n const centerIndexStart = index;\n const uv = new Vector2();\n const vertex2 = new Vector3();\n let groupCount = 0;\n const radius = top === true ? radiusTop : radiusBottom;\n const sign2 = top === true ? 1 : -1;\n for (let x = 1; x <= radialSegments; x++) {\n vertices.push(0, halfHeight * sign2, 0);\n normals.push(0, sign2, 0);\n uvs.push(0.5, 0.5);\n index++;\n }\n const centerIndexEnd = index;\n for (let x = 0; x <= radialSegments; x++) {\n const u = x / radialSegments;\n const theta = u * thetaLength + thetaStart;\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n vertex2.x = radius * sinTheta;\n vertex2.y = halfHeight * sign2;\n vertex2.z = radius * cosTheta;\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n normals.push(0, sign2, 0);\n uv.x = cosTheta * 0.5 + 0.5;\n uv.y = sinTheta * 0.5 * sign2 + 0.5;\n uvs.push(uv.x, uv.y);\n index++;\n }\n for (let x = 0; x < radialSegments; x++) {\n const c = centerIndexStart + x;\n const i = centerIndexEnd + x;\n if (top === true) {\n indices.push(i, i + 1, c);\n } else {\n indices.push(i + 1, i, c);\n }\n groupCount += 3;\n }\n scope.addGroup(groupStart, groupCount, top === true ? 1 : 2);\n groupStart += groupCount;\n }\n }\n static fromJSON(data) {\n return new CylinderGeometry(data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n }\n}\nclass ConeGeometry extends CylinderGeometry {\n constructor(radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) {\n super(0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength);\n this.type = \"ConeGeometry\";\n this.parameters = {\n radius,\n height,\n radialSegments,\n heightSegments,\n openEnded,\n thetaStart,\n thetaLength\n };\n }\n static fromJSON(data) {\n return new ConeGeometry(data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n }\n}\nclass PolyhedronGeometry extends BufferGeometry {\n constructor(vertices = [], indices = [], radius = 1, detail = 0) {\n super();\n this.type = \"PolyhedronGeometry\";\n this.parameters = {\n vertices,\n indices,\n radius,\n detail\n };\n const vertexBuffer = [];\n const uvBuffer = [];\n subdivide(detail);\n applyRadius(radius);\n generateUVs();\n this.setAttribute(\"position\", new Float32BufferAttribute(vertexBuffer, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(vertexBuffer.slice(), 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvBuffer, 2));\n if (detail === 0) {\n this.computeVertexNormals();\n } else {\n this.normalizeNormals();\n }\n function subdivide(detail2) {\n const a = new Vector3();\n const b = new Vector3();\n const c = new Vector3();\n for (let i = 0; i < indices.length; i += 3) {\n getVertexByIndex(indices[i + 0], a);\n getVertexByIndex(indices[i + 1], b);\n getVertexByIndex(indices[i + 2], c);\n subdivideFace(a, b, c, detail2);\n }\n }\n function subdivideFace(a, b, c, detail2) {\n const cols = detail2 + 1;\n const v = [];\n for (let i = 0; i <= cols; i++) {\n v[i] = [];\n const aj = a.clone().lerp(c, i / cols);\n const bj = b.clone().lerp(c, i / cols);\n const rows = cols - i;\n for (let j = 0; j <= rows; j++) {\n if (j === 0 && i === cols) {\n v[i][j] = aj;\n } else {\n v[i][j] = aj.clone().lerp(bj, j / rows);\n }\n }\n }\n for (let i = 0; i < cols; i++) {\n for (let j = 0; j < 2 * (cols - i) - 1; j++) {\n const k = Math.floor(j / 2);\n if (j % 2 === 0) {\n pushVertex(v[i][k + 1]);\n pushVertex(v[i + 1][k]);\n pushVertex(v[i][k]);\n } else {\n pushVertex(v[i][k + 1]);\n pushVertex(v[i + 1][k + 1]);\n pushVertex(v[i + 1][k]);\n }\n }\n }\n }\n function applyRadius(radius2) {\n const vertex2 = new Vector3();\n for (let i = 0; i < vertexBuffer.length; i += 3) {\n vertex2.x = vertexBuffer[i + 0];\n vertex2.y = vertexBuffer[i + 1];\n vertex2.z = vertexBuffer[i + 2];\n vertex2.normalize().multiplyScalar(radius2);\n vertexBuffer[i + 0] = vertex2.x;\n vertexBuffer[i + 1] = vertex2.y;\n vertexBuffer[i + 2] = vertex2.z;\n }\n }\n function generateUVs() {\n const vertex2 = new Vector3();\n for (let i = 0; i < vertexBuffer.length; i += 3) {\n vertex2.x = vertexBuffer[i + 0];\n vertex2.y = vertexBuffer[i + 1];\n vertex2.z = vertexBuffer[i + 2];\n const u = azimuth(vertex2) / 2 / Math.PI + 0.5;\n const v = inclination(vertex2) / Math.PI + 0.5;\n uvBuffer.push(u, 1 - v);\n }\n correctUVs();\n correctSeam();\n }\n function correctSeam() {\n for (let i = 0; i < uvBuffer.length; i += 6) {\n const x0 = uvBuffer[i + 0];\n const x1 = uvBuffer[i + 2];\n const x2 = uvBuffer[i + 4];\n const max = Math.max(x0, x1, x2);\n const min = Math.min(x0, x1, x2);\n if (max > 0.9 && min < 0.1) {\n if (x0 < 0.2)\n uvBuffer[i + 0] += 1;\n if (x1 < 0.2)\n uvBuffer[i + 2] += 1;\n if (x2 < 0.2)\n uvBuffer[i + 4] += 1;\n }\n }\n }\n function pushVertex(vertex2) {\n vertexBuffer.push(vertex2.x, vertex2.y, vertex2.z);\n }\n function getVertexByIndex(index, vertex2) {\n const stride = index * 3;\n vertex2.x = vertices[stride + 0];\n vertex2.y = vertices[stride + 1];\n vertex2.z = vertices[stride + 2];\n }\n function correctUVs() {\n const a = new Vector3();\n const b = new Vector3();\n const c = new Vector3();\n const centroid = new Vector3();\n const uvA = new Vector2();\n const uvB = new Vector2();\n const uvC = new Vector2();\n for (let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6) {\n a.set(vertexBuffer[i + 0], vertexBuffer[i + 1], vertexBuffer[i + 2]);\n b.set(vertexBuffer[i + 3], vertexBuffer[i + 4], vertexBuffer[i + 5]);\n c.set(vertexBuffer[i + 6], vertexBuffer[i + 7], vertexBuffer[i + 8]);\n uvA.set(uvBuffer[j + 0], uvBuffer[j + 1]);\n uvB.set(uvBuffer[j + 2], uvBuffer[j + 3]);\n uvC.set(uvBuffer[j + 4], uvBuffer[j + 5]);\n centroid.copy(a).add(b).add(c).divideScalar(3);\n const azi = azimuth(centroid);\n correctUV(uvA, j + 0, a, azi);\n correctUV(uvB, j + 2, b, azi);\n correctUV(uvC, j + 4, c, azi);\n }\n }\n function correctUV(uv, stride, vector, azimuth2) {\n if (azimuth2 < 0 && uv.x === 1) {\n uvBuffer[stride] = uv.x - 1;\n }\n if (vector.x === 0 && vector.z === 0) {\n uvBuffer[stride] = azimuth2 / 2 / Math.PI + 0.5;\n }\n }\n function azimuth(vector) {\n return Math.atan2(vector.z, -vector.x);\n }\n function inclination(vector) {\n return Math.atan2(-vector.y, Math.sqrt(vector.x * vector.x + vector.z * vector.z));\n }\n }\n static fromJSON(data) {\n return new PolyhedronGeometry(data.vertices, data.indices, data.radius, data.details);\n }\n}\nclass DodecahedronGeometry extends PolyhedronGeometry {\n constructor(radius = 1, detail = 0) {\n const t = (1 + Math.sqrt(5)) / 2;\n const r = 1 / t;\n const vertices = [\n -1,\n -1,\n -1,\n -1,\n -1,\n 1,\n -1,\n 1,\n -1,\n -1,\n 1,\n 1,\n 1,\n -1,\n -1,\n 1,\n -1,\n 1,\n 1,\n 1,\n -1,\n 1,\n 1,\n 1,\n 0,\n -r,\n -t,\n 0,\n -r,\n t,\n 0,\n r,\n -t,\n 0,\n r,\n t,\n -r,\n -t,\n 0,\n -r,\n t,\n 0,\n r,\n -t,\n 0,\n r,\n t,\n 0,\n -t,\n 0,\n -r,\n t,\n 0,\n -r,\n -t,\n 0,\n r,\n t,\n 0,\n r\n ];\n const indices = [\n 3,\n 11,\n 7,\n 3,\n 7,\n 15,\n 3,\n 15,\n 13,\n 7,\n 19,\n 17,\n 7,\n 17,\n 6,\n 7,\n 6,\n 15,\n 17,\n 4,\n 8,\n 17,\n 8,\n 10,\n 17,\n 10,\n 6,\n 8,\n 0,\n 16,\n 8,\n 16,\n 2,\n 8,\n 2,\n 10,\n 0,\n 12,\n 1,\n 0,\n 1,\n 18,\n 0,\n 18,\n 16,\n 6,\n 10,\n 2,\n 6,\n 2,\n 13,\n 6,\n 13,\n 15,\n 2,\n 16,\n 18,\n 2,\n 18,\n 3,\n 2,\n 3,\n 13,\n 18,\n 1,\n 9,\n 18,\n 9,\n 11,\n 18,\n 11,\n 3,\n 4,\n 14,\n 12,\n 4,\n 12,\n 0,\n 4,\n 0,\n 8,\n 11,\n 9,\n 5,\n 11,\n 5,\n 19,\n 11,\n 19,\n 7,\n 19,\n 5,\n 14,\n 19,\n 14,\n 4,\n 19,\n 4,\n 17,\n 1,\n 12,\n 14,\n 1,\n 14,\n 5,\n 1,\n 5,\n 9\n ];\n super(vertices, indices, radius, detail);\n this.type = \"DodecahedronGeometry\";\n this.parameters = {\n radius,\n detail\n };\n }\n static fromJSON(data) {\n return new DodecahedronGeometry(data.radius, data.detail);\n }\n}\nconst _v0 = new Vector3();\nconst _v1$1 = new Vector3();\nconst _normal = new Vector3();\nconst _triangle = new Triangle();\nclass EdgesGeometry extends BufferGeometry {\n constructor(geometry = null, thresholdAngle = 1) {\n super();\n this.type = \"EdgesGeometry\";\n this.parameters = {\n geometry,\n thresholdAngle\n };\n if (geometry !== null) {\n const precisionPoints = 4;\n const precision = Math.pow(10, precisionPoints);\n const thresholdDot = Math.cos(DEG2RAD * thresholdAngle);\n const indexAttr = geometry.getIndex();\n const positionAttr = geometry.getAttribute(\"position\");\n const indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n const indexArr = [0, 0, 0];\n const vertKeys = [\"a\", \"b\", \"c\"];\n const hashes = new Array(3);\n const edgeData = {};\n const vertices = [];\n for (let i = 0; i < indexCount; i += 3) {\n if (indexAttr) {\n indexArr[0] = indexAttr.getX(i);\n indexArr[1] = indexAttr.getX(i + 1);\n indexArr[2] = indexAttr.getX(i + 2);\n } else {\n indexArr[0] = i;\n indexArr[1] = i + 1;\n indexArr[2] = i + 2;\n }\n const {a, b, c} = _triangle;\n a.fromBufferAttribute(positionAttr, indexArr[0]);\n b.fromBufferAttribute(positionAttr, indexArr[1]);\n c.fromBufferAttribute(positionAttr, indexArr[2]);\n _triangle.getNormal(_normal);\n hashes[0] = `${Math.round(a.x * precision)},${Math.round(a.y * precision)},${Math.round(a.z * precision)}`;\n hashes[1] = `${Math.round(b.x * precision)},${Math.round(b.y * precision)},${Math.round(b.z * precision)}`;\n hashes[2] = `${Math.round(c.x * precision)},${Math.round(c.y * precision)},${Math.round(c.z * precision)}`;\n if (hashes[0] === hashes[1] || hashes[1] === hashes[2] || hashes[2] === hashes[0]) {\n continue;\n }\n for (let j = 0; j < 3; j++) {\n const jNext = (j + 1) % 3;\n const vecHash0 = hashes[j];\n const vecHash1 = hashes[jNext];\n const v0 = _triangle[vertKeys[j]];\n const v1 = _triangle[vertKeys[jNext]];\n const hash = `${vecHash0}_${vecHash1}`;\n const reverseHash = `${vecHash1}_${vecHash0}`;\n if (reverseHash in edgeData && edgeData[reverseHash]) {\n if (_normal.dot(edgeData[reverseHash].normal) <= thresholdDot) {\n vertices.push(v0.x, v0.y, v0.z);\n vertices.push(v1.x, v1.y, v1.z);\n }\n edgeData[reverseHash] = null;\n } else if (!(hash in edgeData)) {\n edgeData[hash] = {\n index0: indexArr[j],\n index1: indexArr[jNext],\n normal: _normal.clone()\n };\n }\n }\n }\n for (const key in edgeData) {\n if (edgeData[key]) {\n const {index0, index1} = edgeData[key];\n _v0.fromBufferAttribute(positionAttr, index0);\n _v1$1.fromBufferAttribute(positionAttr, index1);\n vertices.push(_v0.x, _v0.y, _v0.z);\n vertices.push(_v1$1.x, _v1$1.y, _v1$1.z);\n }\n }\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n }\n }\n}\nclass Curve {\n constructor() {\n this.type = \"Curve\";\n this.arcLengthDivisions = 200;\n }\n getPoint() {\n console.warn(\"THREE.Curve: .getPoint() not implemented.\");\n return null;\n }\n getPointAt(u, optionalTarget) {\n const t = this.getUtoTmapping(u);\n return this.getPoint(t, optionalTarget);\n }\n getPoints(divisions = 5) {\n const points = [];\n for (let d = 0; d <= divisions; d++) {\n points.push(this.getPoint(d / divisions));\n }\n return points;\n }\n getSpacedPoints(divisions = 5) {\n const points = [];\n for (let d = 0; d <= divisions; d++) {\n points.push(this.getPointAt(d / divisions));\n }\n return points;\n }\n getLength() {\n const lengths = this.getLengths();\n return lengths[lengths.length - 1];\n }\n getLengths(divisions = this.arcLengthDivisions) {\n if (this.cacheArcLengths && this.cacheArcLengths.length === divisions + 1 && !this.needsUpdate) {\n return this.cacheArcLengths;\n }\n this.needsUpdate = false;\n const cache = [];\n let current, last = this.getPoint(0);\n let sum = 0;\n cache.push(0);\n for (let p = 1; p <= divisions; p++) {\n current = this.getPoint(p / divisions);\n sum += current.distanceTo(last);\n cache.push(sum);\n last = current;\n }\n this.cacheArcLengths = cache;\n return cache;\n }\n updateArcLengths() {\n this.needsUpdate = true;\n this.getLengths();\n }\n getUtoTmapping(u, distance) {\n const arcLengths = this.getLengths();\n let i = 0;\n const il = arcLengths.length;\n let targetArcLength;\n if (distance) {\n targetArcLength = distance;\n } else {\n targetArcLength = u * arcLengths[il - 1];\n }\n let low = 0, high = il - 1, comparison;\n while (low <= high) {\n i = Math.floor(low + (high - low) / 2);\n comparison = arcLengths[i] - targetArcLength;\n if (comparison < 0) {\n low = i + 1;\n } else if (comparison > 0) {\n high = i - 1;\n } else {\n high = i;\n break;\n }\n }\n i = high;\n if (arcLengths[i] === targetArcLength) {\n return i / (il - 1);\n }\n const lengthBefore = arcLengths[i];\n const lengthAfter = arcLengths[i + 1];\n const segmentLength = lengthAfter - lengthBefore;\n const segmentFraction = (targetArcLength - lengthBefore) / segmentLength;\n const t = (i + segmentFraction) / (il - 1);\n return t;\n }\n getTangent(t, optionalTarget) {\n const delta = 1e-4;\n let t1 = t - delta;\n let t2 = t + delta;\n if (t1 < 0)\n t1 = 0;\n if (t2 > 1)\n t2 = 1;\n const pt1 = this.getPoint(t1);\n const pt2 = this.getPoint(t2);\n const tangent = optionalTarget || (pt1.isVector2 ? new Vector2() : new Vector3());\n tangent.copy(pt2).sub(pt1).normalize();\n return tangent;\n }\n getTangentAt(u, optionalTarget) {\n const t = this.getUtoTmapping(u);\n return this.getTangent(t, optionalTarget);\n }\n computeFrenetFrames(segments, closed) {\n const normal = new Vector3();\n const tangents = [];\n const normals = [];\n const binormals = [];\n const vec = new Vector3();\n const mat = new Matrix4();\n for (let i = 0; i <= segments; i++) {\n const u = i / segments;\n tangents[i] = this.getTangentAt(u, new Vector3());\n }\n normals[0] = new Vector3();\n binormals[0] = new Vector3();\n let min = Number.MAX_VALUE;\n const tx = Math.abs(tangents[0].x);\n const ty = Math.abs(tangents[0].y);\n const tz = Math.abs(tangents[0].z);\n if (tx <= min) {\n min = tx;\n normal.set(1, 0, 0);\n }\n if (ty <= min) {\n min = ty;\n normal.set(0, 1, 0);\n }\n if (tz <= min) {\n normal.set(0, 0, 1);\n }\n vec.crossVectors(tangents[0], normal).normalize();\n normals[0].crossVectors(tangents[0], vec);\n binormals[0].crossVectors(tangents[0], normals[0]);\n for (let i = 1; i <= segments; i++) {\n normals[i] = normals[i - 1].clone();\n binormals[i] = binormals[i - 1].clone();\n vec.crossVectors(tangents[i - 1], tangents[i]);\n if (vec.length() > Number.EPSILON) {\n vec.normalize();\n const theta = Math.acos(clamp(tangents[i - 1].dot(tangents[i]), -1, 1));\n normals[i].applyMatrix4(mat.makeRotationAxis(vec, theta));\n }\n binormals[i].crossVectors(tangents[i], normals[i]);\n }\n if (closed === true) {\n let theta = Math.acos(clamp(normals[0].dot(normals[segments]), -1, 1));\n theta /= segments;\n if (tangents[0].dot(vec.crossVectors(normals[0], normals[segments])) > 0) {\n theta = -theta;\n }\n for (let i = 1; i <= segments; i++) {\n normals[i].applyMatrix4(mat.makeRotationAxis(tangents[i], theta * i));\n binormals[i].crossVectors(tangents[i], normals[i]);\n }\n }\n return {\n tangents,\n normals,\n binormals\n };\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(source) {\n this.arcLengthDivisions = source.arcLengthDivisions;\n return this;\n }\n toJSON() {\n const data = {\n metadata: {\n version: 4.5,\n type: \"Curve\",\n generator: \"Curve.toJSON\"\n }\n };\n data.arcLengthDivisions = this.arcLengthDivisions;\n data.type = this.type;\n return data;\n }\n fromJSON(json) {\n this.arcLengthDivisions = json.arcLengthDivisions;\n return this;\n }\n}\nclass EllipseCurve extends Curve {\n constructor(aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0) {\n super();\n this.type = \"EllipseCurve\";\n this.aX = aX;\n this.aY = aY;\n this.xRadius = xRadius;\n this.yRadius = yRadius;\n this.aStartAngle = aStartAngle;\n this.aEndAngle = aEndAngle;\n this.aClockwise = aClockwise;\n this.aRotation = aRotation;\n }\n getPoint(t, optionalTarget) {\n const point = optionalTarget || new Vector2();\n const twoPi = Math.PI * 2;\n let deltaAngle = this.aEndAngle - this.aStartAngle;\n const samePoints = Math.abs(deltaAngle) < Number.EPSILON;\n while (deltaAngle < 0)\n deltaAngle += twoPi;\n while (deltaAngle > twoPi)\n deltaAngle -= twoPi;\n if (deltaAngle < Number.EPSILON) {\n if (samePoints) {\n deltaAngle = 0;\n } else {\n deltaAngle = twoPi;\n }\n }\n if (this.aClockwise === true && !samePoints) {\n if (deltaAngle === twoPi) {\n deltaAngle = -twoPi;\n } else {\n deltaAngle = deltaAngle - twoPi;\n }\n }\n const angle = this.aStartAngle + t * deltaAngle;\n let x = this.aX + this.xRadius * Math.cos(angle);\n let y = this.aY + this.yRadius * Math.sin(angle);\n if (this.aRotation !== 0) {\n const cos = Math.cos(this.aRotation);\n const sin = Math.sin(this.aRotation);\n const tx = x - this.aX;\n const ty = y - this.aY;\n x = tx * cos - ty * sin + this.aX;\n y = tx * sin + ty * cos + this.aY;\n }\n return point.set(x, y);\n }\n copy(source) {\n super.copy(source);\n this.aX = source.aX;\n this.aY = source.aY;\n this.xRadius = source.xRadius;\n this.yRadius = source.yRadius;\n this.aStartAngle = source.aStartAngle;\n this.aEndAngle = source.aEndAngle;\n this.aClockwise = source.aClockwise;\n this.aRotation = source.aRotation;\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.aX = this.aX;\n data.aY = this.aY;\n data.xRadius = this.xRadius;\n data.yRadius = this.yRadius;\n data.aStartAngle = this.aStartAngle;\n data.aEndAngle = this.aEndAngle;\n data.aClockwise = this.aClockwise;\n data.aRotation = this.aRotation;\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.aX = json.aX;\n this.aY = json.aY;\n this.xRadius = json.xRadius;\n this.yRadius = json.yRadius;\n this.aStartAngle = json.aStartAngle;\n this.aEndAngle = json.aEndAngle;\n this.aClockwise = json.aClockwise;\n this.aRotation = json.aRotation;\n return this;\n }\n}\nEllipseCurve.prototype.isEllipseCurve = true;\nclass ArcCurve extends EllipseCurve {\n constructor(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n super(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n this.type = \"ArcCurve\";\n }\n}\nArcCurve.prototype.isArcCurve = true;\nfunction CubicPoly() {\n let c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n function init(x0, x1, t0, t1) {\n c0 = x0;\n c1 = t0;\n c2 = -3 * x0 + 3 * x1 - 2 * t0 - t1;\n c3 = 2 * x0 - 2 * x1 + t0 + t1;\n }\n return {\n initCatmullRom: function(x0, x1, x2, x3, tension) {\n init(x1, x2, tension * (x2 - x0), tension * (x3 - x1));\n },\n initNonuniformCatmullRom: function(x0, x1, x2, x3, dt0, dt1, dt2) {\n let t1 = (x1 - x0) / dt0 - (x2 - x0) / (dt0 + dt1) + (x2 - x1) / dt1;\n let t2 = (x2 - x1) / dt1 - (x3 - x1) / (dt1 + dt2) + (x3 - x2) / dt2;\n t1 *= dt1;\n t2 *= dt1;\n init(x1, x2, t1, t2);\n },\n calc: function(t) {\n const t2 = t * t;\n const t3 = t2 * t;\n return c0 + c1 * t + c2 * t2 + c3 * t3;\n }\n };\n}\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\nclass CatmullRomCurve3 extends Curve {\n constructor(points = [], closed = false, curveType = \"centripetal\", tension = 0.5) {\n super();\n this.type = \"CatmullRomCurve3\";\n this.points = points;\n this.closed = closed;\n this.curveType = curveType;\n this.tension = tension;\n }\n getPoint(t, optionalTarget = new Vector3()) {\n const point = optionalTarget;\n const points = this.points;\n const l = points.length;\n const p = (l - (this.closed ? 0 : 1)) * t;\n let intPoint = Math.floor(p);\n let weight = p - intPoint;\n if (this.closed) {\n intPoint += intPoint > 0 ? 0 : (Math.floor(Math.abs(intPoint) / l) + 1) * l;\n } else if (weight === 0 && intPoint === l - 1) {\n intPoint = l - 2;\n weight = 1;\n }\n let p0, p3;\n if (this.closed || intPoint > 0) {\n p0 = points[(intPoint - 1) % l];\n } else {\n tmp.subVectors(points[0], points[1]).add(points[0]);\n p0 = tmp;\n }\n const p1 = points[intPoint % l];\n const p2 = points[(intPoint + 1) % l];\n if (this.closed || intPoint + 2 < l) {\n p3 = points[(intPoint + 2) % l];\n } else {\n tmp.subVectors(points[l - 1], points[l - 2]).add(points[l - 1]);\n p3 = tmp;\n }\n if (this.curveType === \"centripetal\" || this.curveType === \"chordal\") {\n const pow = this.curveType === \"chordal\" ? 0.5 : 0.25;\n let dt0 = Math.pow(p0.distanceToSquared(p1), pow);\n let dt1 = Math.pow(p1.distanceToSquared(p2), pow);\n let dt2 = Math.pow(p2.distanceToSquared(p3), pow);\n if (dt1 < 1e-4)\n dt1 = 1;\n if (dt0 < 1e-4)\n dt0 = dt1;\n if (dt2 < 1e-4)\n dt2 = dt1;\n px.initNonuniformCatmullRom(p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2);\n py.initNonuniformCatmullRom(p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2);\n pz.initNonuniformCatmullRom(p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2);\n } else if (this.curveType === \"catmullrom\") {\n px.initCatmullRom(p0.x, p1.x, p2.x, p3.x, this.tension);\n py.initCatmullRom(p0.y, p1.y, p2.y, p3.y, this.tension);\n pz.initCatmullRom(p0.z, p1.z, p2.z, p3.z, this.tension);\n }\n point.set(px.calc(weight), py.calc(weight), pz.calc(weight));\n return point;\n }\n copy(source) {\n super.copy(source);\n this.points = [];\n for (let i = 0, l = source.points.length; i < l; i++) {\n const point = source.points[i];\n this.points.push(point.clone());\n }\n this.closed = source.closed;\n this.curveType = source.curveType;\n this.tension = source.tension;\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.points = [];\n for (let i = 0, l = this.points.length; i < l; i++) {\n const point = this.points[i];\n data.points.push(point.toArray());\n }\n data.closed = this.closed;\n data.curveType = this.curveType;\n data.tension = this.tension;\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.points = [];\n for (let i = 0, l = json.points.length; i < l; i++) {\n const point = json.points[i];\n this.points.push(new Vector3().fromArray(point));\n }\n this.closed = json.closed;\n this.curveType = json.curveType;\n this.tension = json.tension;\n return this;\n }\n}\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\nfunction CatmullRom(t, p0, p1, p2, p3) {\n const v0 = (p2 - p0) * 0.5;\n const v1 = (p3 - p1) * 0.5;\n const t2 = t * t;\n const t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\nfunction QuadraticBezierP0(t, p) {\n const k = 1 - t;\n return k * k * p;\n}\nfunction QuadraticBezierP1(t, p) {\n return 2 * (1 - t) * t * p;\n}\nfunction QuadraticBezierP2(t, p) {\n return t * t * p;\n}\nfunction QuadraticBezier(t, p0, p1, p2) {\n return QuadraticBezierP0(t, p0) + QuadraticBezierP1(t, p1) + QuadraticBezierP2(t, p2);\n}\nfunction CubicBezierP0(t, p) {\n const k = 1 - t;\n return k * k * k * p;\n}\nfunction CubicBezierP1(t, p) {\n const k = 1 - t;\n return 3 * k * k * t * p;\n}\nfunction CubicBezierP2(t, p) {\n return 3 * (1 - t) * t * t * p;\n}\nfunction CubicBezierP3(t, p) {\n return t * t * t * p;\n}\nfunction CubicBezier(t, p0, p1, p2, p3) {\n return CubicBezierP0(t, p0) + CubicBezierP1(t, p1) + CubicBezierP2(t, p2) + CubicBezierP3(t, p3);\n}\nclass CubicBezierCurve extends Curve {\n constructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2()) {\n super();\n this.type = \"CubicBezierCurve\";\n this.v0 = v0;\n this.v1 = v1;\n this.v2 = v2;\n this.v3 = v3;\n }\n getPoint(t, optionalTarget = new Vector2()) {\n const point = optionalTarget;\n const v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n point.set(CubicBezier(t, v0.x, v1.x, v2.x, v3.x), CubicBezier(t, v0.y, v1.y, v2.y, v3.y));\n return point;\n }\n copy(source) {\n super.copy(source);\n this.v0.copy(source.v0);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n this.v3.copy(source.v3);\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.v0 = this.v0.toArray();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n data.v3 = this.v3.toArray();\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.v0.fromArray(json.v0);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n this.v3.fromArray(json.v3);\n return this;\n }\n}\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\nclass CubicBezierCurve3 extends Curve {\n constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3()) {\n super();\n this.type = \"CubicBezierCurve3\";\n this.v0 = v0;\n this.v1 = v1;\n this.v2 = v2;\n this.v3 = v3;\n }\n getPoint(t, optionalTarget = new Vector3()) {\n const point = optionalTarget;\n const v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n point.set(CubicBezier(t, v0.x, v1.x, v2.x, v3.x), CubicBezier(t, v0.y, v1.y, v2.y, v3.y), CubicBezier(t, v0.z, v1.z, v2.z, v3.z));\n return point;\n }\n copy(source) {\n super.copy(source);\n this.v0.copy(source.v0);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n this.v3.copy(source.v3);\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.v0 = this.v0.toArray();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n data.v3 = this.v3.toArray();\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.v0.fromArray(json.v0);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n this.v3.fromArray(json.v3);\n return this;\n }\n}\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\nclass LineCurve extends Curve {\n constructor(v1 = new Vector2(), v2 = new Vector2()) {\n super();\n this.type = \"LineCurve\";\n this.v1 = v1;\n this.v2 = v2;\n }\n getPoint(t, optionalTarget = new Vector2()) {\n const point = optionalTarget;\n if (t === 1) {\n point.copy(this.v2);\n } else {\n point.copy(this.v2).sub(this.v1);\n point.multiplyScalar(t).add(this.v1);\n }\n return point;\n }\n getPointAt(u, optionalTarget) {\n return this.getPoint(u, optionalTarget);\n }\n getTangent(t, optionalTarget) {\n const tangent = optionalTarget || new Vector2();\n tangent.copy(this.v2).sub(this.v1).normalize();\n return tangent;\n }\n copy(source) {\n super.copy(source);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n return this;\n }\n}\nLineCurve.prototype.isLineCurve = true;\nclass LineCurve3 extends Curve {\n constructor(v1 = new Vector3(), v2 = new Vector3()) {\n super();\n this.type = \"LineCurve3\";\n this.isLineCurve3 = true;\n this.v1 = v1;\n this.v2 = v2;\n }\n getPoint(t, optionalTarget = new Vector3()) {\n const point = optionalTarget;\n if (t === 1) {\n point.copy(this.v2);\n } else {\n point.copy(this.v2).sub(this.v1);\n point.multiplyScalar(t).add(this.v1);\n }\n return point;\n }\n getPointAt(u, optionalTarget) {\n return this.getPoint(u, optionalTarget);\n }\n copy(source) {\n super.copy(source);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n return this;\n }\n}\nclass QuadraticBezierCurve extends Curve {\n constructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2()) {\n super();\n this.type = \"QuadraticBezierCurve\";\n this.v0 = v0;\n this.v1 = v1;\n this.v2 = v2;\n }\n getPoint(t, optionalTarget = new Vector2()) {\n const point = optionalTarget;\n const v0 = this.v0, v1 = this.v1, v2 = this.v2;\n point.set(QuadraticBezier(t, v0.x, v1.x, v2.x), QuadraticBezier(t, v0.y, v1.y, v2.y));\n return point;\n }\n copy(source) {\n super.copy(source);\n this.v0.copy(source.v0);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.v0 = this.v0.toArray();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.v0.fromArray(json.v0);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n return this;\n }\n}\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\nclass QuadraticBezierCurve3 extends Curve {\n constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3()) {\n super();\n this.type = \"QuadraticBezierCurve3\";\n this.v0 = v0;\n this.v1 = v1;\n this.v2 = v2;\n }\n getPoint(t, optionalTarget = new Vector3()) {\n const point = optionalTarget;\n const v0 = this.v0, v1 = this.v1, v2 = this.v2;\n point.set(QuadraticBezier(t, v0.x, v1.x, v2.x), QuadraticBezier(t, v0.y, v1.y, v2.y), QuadraticBezier(t, v0.z, v1.z, v2.z));\n return point;\n }\n copy(source) {\n super.copy(source);\n this.v0.copy(source.v0);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.v0 = this.v0.toArray();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.v0.fromArray(json.v0);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n return this;\n }\n}\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\nclass SplineCurve extends Curve {\n constructor(points = []) {\n super();\n this.type = \"SplineCurve\";\n this.points = points;\n }\n getPoint(t, optionalTarget = new Vector2()) {\n const point = optionalTarget;\n const points = this.points;\n const p = (points.length - 1) * t;\n const intPoint = Math.floor(p);\n const weight = p - intPoint;\n const p0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n const p1 = points[intPoint];\n const p2 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n const p3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n point.set(CatmullRom(weight, p0.x, p1.x, p2.x, p3.x), CatmullRom(weight, p0.y, p1.y, p2.y, p3.y));\n return point;\n }\n copy(source) {\n super.copy(source);\n this.points = [];\n for (let i = 0, l = source.points.length; i < l; i++) {\n const point = source.points[i];\n this.points.push(point.clone());\n }\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.points = [];\n for (let i = 0, l = this.points.length; i < l; i++) {\n const point = this.points[i];\n data.points.push(point.toArray());\n }\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.points = [];\n for (let i = 0, l = json.points.length; i < l; i++) {\n const point = json.points[i];\n this.points.push(new Vector2().fromArray(point));\n }\n return this;\n }\n}\nSplineCurve.prototype.isSplineCurve = true;\nvar Curves = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n ArcCurve,\n CatmullRomCurve3,\n CubicBezierCurve,\n CubicBezierCurve3,\n EllipseCurve,\n LineCurve,\n LineCurve3,\n QuadraticBezierCurve,\n QuadraticBezierCurve3,\n SplineCurve\n});\nclass CurvePath extends Curve {\n constructor() {\n super();\n this.type = \"CurvePath\";\n this.curves = [];\n this.autoClose = false;\n }\n add(curve) {\n this.curves.push(curve);\n }\n closePath() {\n const startPoint = this.curves[0].getPoint(0);\n const endPoint = this.curves[this.curves.length - 1].getPoint(1);\n if (!startPoint.equals(endPoint)) {\n this.curves.push(new LineCurve(endPoint, startPoint));\n }\n }\n getPoint(t, optionalTarget) {\n const d = t * this.getLength();\n const curveLengths = this.getCurveLengths();\n let i = 0;\n while (i < curveLengths.length) {\n if (curveLengths[i] >= d) {\n const diff = curveLengths[i] - d;\n const curve = this.curves[i];\n const segmentLength = curve.getLength();\n const u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n return curve.getPointAt(u, optionalTarget);\n }\n i++;\n }\n return null;\n }\n getLength() {\n const lens = this.getCurveLengths();\n return lens[lens.length - 1];\n }\n updateArcLengths() {\n this.needsUpdate = true;\n this.cacheLengths = null;\n this.getCurveLengths();\n }\n getCurveLengths() {\n if (this.cacheLengths && this.cacheLengths.length === this.curves.length) {\n return this.cacheLengths;\n }\n const lengths = [];\n let sums = 0;\n for (let i = 0, l = this.curves.length; i < l; i++) {\n sums += this.curves[i].getLength();\n lengths.push(sums);\n }\n this.cacheLengths = lengths;\n return lengths;\n }\n getSpacedPoints(divisions = 40) {\n const points = [];\n for (let i = 0; i <= divisions; i++) {\n points.push(this.getPoint(i / divisions));\n }\n if (this.autoClose) {\n points.push(points[0]);\n }\n return points;\n }\n getPoints(divisions = 12) {\n const points = [];\n let last;\n for (let i = 0, curves = this.curves; i < curves.length; i++) {\n const curve = curves[i];\n const resolution = curve && curve.isEllipseCurve ? divisions * 2 : curve && (curve.isLineCurve || curve.isLineCurve3) ? 1 : curve && curve.isSplineCurve ? divisions * curve.points.length : divisions;\n const pts = curve.getPoints(resolution);\n for (let j = 0; j < pts.length; j++) {\n const point = pts[j];\n if (last && last.equals(point))\n continue;\n points.push(point);\n last = point;\n }\n }\n if (this.autoClose && points.length > 1 && !points[points.length - 1].equals(points[0])) {\n points.push(points[0]);\n }\n return points;\n }\n copy(source) {\n super.copy(source);\n this.curves = [];\n for (let i = 0, l = source.curves.length; i < l; i++) {\n const curve = source.curves[i];\n this.curves.push(curve.clone());\n }\n this.autoClose = source.autoClose;\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.autoClose = this.autoClose;\n data.curves = [];\n for (let i = 0, l = this.curves.length; i < l; i++) {\n const curve = this.curves[i];\n data.curves.push(curve.toJSON());\n }\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.autoClose = json.autoClose;\n this.curves = [];\n for (let i = 0, l = json.curves.length; i < l; i++) {\n const curve = json.curves[i];\n this.curves.push(new Curves[curve.type]().fromJSON(curve));\n }\n return this;\n }\n}\nclass Path extends CurvePath {\n constructor(points) {\n super();\n this.type = \"Path\";\n this.currentPoint = new Vector2();\n if (points) {\n this.setFromPoints(points);\n }\n }\n setFromPoints(points) {\n this.moveTo(points[0].x, points[0].y);\n for (let i = 1, l = points.length; i < l; i++) {\n this.lineTo(points[i].x, points[i].y);\n }\n return this;\n }\n moveTo(x, y) {\n this.currentPoint.set(x, y);\n return this;\n }\n lineTo(x, y) {\n const curve = new LineCurve(this.currentPoint.clone(), new Vector2(x, y));\n this.curves.push(curve);\n this.currentPoint.set(x, y);\n return this;\n }\n quadraticCurveTo(aCPx, aCPy, aX, aY) {\n const curve = new QuadraticBezierCurve(this.currentPoint.clone(), new Vector2(aCPx, aCPy), new Vector2(aX, aY));\n this.curves.push(curve);\n this.currentPoint.set(aX, aY);\n return this;\n }\n bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n const curve = new CubicBezierCurve(this.currentPoint.clone(), new Vector2(aCP1x, aCP1y), new Vector2(aCP2x, aCP2y), new Vector2(aX, aY));\n this.curves.push(curve);\n this.currentPoint.set(aX, aY);\n return this;\n }\n splineThru(pts) {\n const npts = [this.currentPoint.clone()].concat(pts);\n const curve = new SplineCurve(npts);\n this.curves.push(curve);\n this.currentPoint.copy(pts[pts.length - 1]);\n return this;\n }\n arc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n const x0 = this.currentPoint.x;\n const y0 = this.currentPoint.y;\n this.absarc(aX + x0, aY + y0, aRadius, aStartAngle, aEndAngle, aClockwise);\n return this;\n }\n absarc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n this.absellipse(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n return this;\n }\n ellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n const x0 = this.currentPoint.x;\n const y0 = this.currentPoint.y;\n this.absellipse(aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n return this;\n }\n absellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n const curve = new EllipseCurve(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n if (this.curves.length > 0) {\n const firstPoint = curve.getPoint(0);\n if (!firstPoint.equals(this.currentPoint)) {\n this.lineTo(firstPoint.x, firstPoint.y);\n }\n }\n this.curves.push(curve);\n const lastPoint = curve.getPoint(1);\n this.currentPoint.copy(lastPoint);\n return this;\n }\n copy(source) {\n super.copy(source);\n this.currentPoint.copy(source.currentPoint);\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.currentPoint = this.currentPoint.toArray();\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.currentPoint.fromArray(json.currentPoint);\n return this;\n }\n}\nclass Shape extends Path {\n constructor(points) {\n super(points);\n this.uuid = generateUUID();\n this.type = \"Shape\";\n this.holes = [];\n }\n getPointsHoles(divisions) {\n const holesPts = [];\n for (let i = 0, l = this.holes.length; i < l; i++) {\n holesPts[i] = this.holes[i].getPoints(divisions);\n }\n return holesPts;\n }\n extractPoints(divisions) {\n return {\n shape: this.getPoints(divisions),\n holes: this.getPointsHoles(divisions)\n };\n }\n copy(source) {\n super.copy(source);\n this.holes = [];\n for (let i = 0, l = source.holes.length; i < l; i++) {\n const hole = source.holes[i];\n this.holes.push(hole.clone());\n }\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.uuid = this.uuid;\n data.holes = [];\n for (let i = 0, l = this.holes.length; i < l; i++) {\n const hole = this.holes[i];\n data.holes.push(hole.toJSON());\n }\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.uuid = json.uuid;\n this.holes = [];\n for (let i = 0, l = json.holes.length; i < l; i++) {\n const hole = json.holes[i];\n this.holes.push(new Path().fromJSON(hole));\n }\n return this;\n }\n}\nconst Earcut = {\n triangulate: function(data, holeIndices, dim = 2) {\n const hasHoles = holeIndices && holeIndices.length;\n const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n let outerNode = linkedList(data, 0, outerLen, dim, true);\n const triangles = [];\n if (!outerNode || outerNode.next === outerNode.prev)\n return triangles;\n let minX, minY, maxX, maxY, x, y, invSize;\n if (hasHoles)\n outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n for (let i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (x > maxX)\n maxX = x;\n if (y > maxY)\n maxY = y;\n }\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n return triangles;\n }\n};\nfunction linkedList(data, start, end, dim, clockwise) {\n let i, last;\n if (clockwise === signedArea(data, start, end, dim) > 0) {\n for (i = start; i < end; i += dim)\n last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim)\n last = insertNode(i, data[i], data[i + 1], last);\n }\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n return last;\n}\nfunction filterPoints(start, end) {\n if (!start)\n return start;\n if (!end)\n end = start;\n let p = start, again;\n do {\n again = false;\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)\n break;\n again = true;\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n return end;\n}\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear)\n return;\n if (!pass && invSize)\n indexCurve(ear, minX, minY, invSize);\n let stop = ear, prev, next;\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n removeNode(ear);\n ear = next.next;\n stop = next.next;\n continue;\n }\n ear = next;\n if (ear === stop) {\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n break;\n }\n }\n}\nfunction isEar(ear) {\n const a = ear.prev, b = ear, c = ear.next;\n if (area(a, b, c) >= 0)\n return false;\n let p = ear.next.next;\n while (p !== ear.prev) {\n if (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 return false;\n p = p.next;\n }\n return true;\n}\nfunction isEarHashed(ear, minX, minY, invSize) {\n const a = ear.prev, b = ear, c = ear.next;\n if (area(a, b, c) >= 0)\n return false;\n const minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x, minTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y, maxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x, maxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y;\n const minZ = zOrder(minTX, minTY, minX, minY, invSize), maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n let p = ear.prevZ, n = ear.nextZ;\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next && 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 return false;\n p = p.prevZ;\n if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0)\n return false;\n n = n.nextZ;\n }\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next && 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 return false;\n p = p.prevZ;\n }\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0)\n return false;\n n = n.nextZ;\n }\n return true;\n}\nfunction cureLocalIntersections(start, triangles, dim) {\n let p = start;\n do {\n const a = p.prev, b = p.next.next;\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n removeNode(p);\n removeNode(p.next);\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n return filterPoints(p);\n}\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n let a = start;\n do {\n let b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n let c = splitPolygon(a, b);\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\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}\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n const queue = [];\n let i, len, start, end, list;\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)\n list.steiner = true;\n queue.push(getLeftmost(list));\n }\n queue.sort(compareX);\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n return outerNode;\n}\nfunction compareX(a, b) {\n return a.x - b.x;\n}\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n if (outerNode) {\n const b = splitPolygon(outerNode, hole);\n filterPoints(outerNode, outerNode.next);\n filterPoints(b, b.next);\n }\n}\nfunction findHoleBridge(hole, outerNode) {\n let p = outerNode;\n const hx = hole.x;\n const hy = hole.y;\n let qx = -Infinity, m;\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n const 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)\n return p;\n if (hy === p.next.y)\n 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 if (!m)\n return null;\n if (hx === qx)\n return m;\n const stop = m, mx = m.x, my = m.y;\n let tanMin = Infinity, tan;\n p = m;\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n tan = Math.abs(hy - p.y) / (hx - p.x);\n if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) {\n m = p;\n tanMin = tan;\n }\n }\n p = p.next;\n } while (p !== stop);\n return m;\n}\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\nfunction indexCurve(start, minX, minY, invSize) {\n let p = start;\n do {\n if (p.z === null)\n 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 p.prevZ.nextZ = null;\n p.prevZ = null;\n sortLinked(p);\n}\nfunction sortLinked(list) {\n let i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1;\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\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)\n break;\n }\n qSize = inSize;\n while (pSize > 0 || qSize > 0 && q) {\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 if (tail)\n tail.nextZ = e;\n else\n list = e;\n e.prevZ = tail;\n tail = e;\n }\n p = q;\n }\n tail.nextZ = null;\n inSize *= 2;\n } while (numMerges > 1);\n return list;\n}\nfunction zOrder(x, y, minX, minY, invSize) {\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n x = (x | x << 8) & 16711935;\n x = (x | x << 4) & 252645135;\n x = (x | x << 2) & 858993459;\n x = (x | x << 1) & 1431655765;\n y = (y | y << 8) & 16711935;\n y = (y | y << 4) & 252645135;\n y = (y | y << 2) & 858993459;\n y = (y | y << 1) & 1431655765;\n return x | y << 1;\n}\nfunction getLeftmost(start) {\n let p = start, leftmost = start;\n do {\n if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y)\n leftmost = p;\n p = p.next;\n } while (p !== start);\n return leftmost;\n}\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px2, py2) {\n return (cx - px2) * (ay - py2) - (ax - px2) * (cy - py2) >= 0 && (ax - px2) * (by - py2) - (bx - px2) * (ay - py2) >= 0 && (bx - px2) * (cy - py2) - (cx - px2) * (by - py2) >= 0;\n}\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && (area(a.prev, a, b.prev) || area(a, b.prev, b)) || equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0);\n}\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\nfunction intersects(p1, q1, p2, q2) {\n const o1 = sign(area(p1, q1, p2));\n const o2 = sign(area(p1, q1, q2));\n const o3 = sign(area(p2, q2, p1));\n const o4 = sign(area(p2, q2, q1));\n if (o1 !== o2 && o3 !== o4)\n return true;\n if (o1 === 0 && onSegment(p1, p2, q1))\n return true;\n if (o2 === 0 && onSegment(p1, q2, q1))\n return true;\n if (o3 === 0 && onSegment(p2, p1, q2))\n return true;\n if (o4 === 0 && onSegment(p2, q1, q2))\n return true;\n return false;\n}\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\nfunction intersectsPolygon(a, b) {\n let p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b))\n return true;\n p = p.next;\n } while (p !== a);\n return false;\n}\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\nfunction middleInside(a, b) {\n let p = a, inside = false;\n const px2 = (a.x + b.x) / 2, py2 = (a.y + b.y) / 2;\n do {\n if (p.y > py2 !== p.next.y > py2 && p.next.y !== p.y && px2 < (p.next.x - p.x) * (py2 - p.y) / (p.next.y - p.y) + p.x)\n inside = !inside;\n p = p.next;\n } while (p !== a);\n return inside;\n}\nfunction splitPolygon(a, b) {\n const a2 = new Node(a.i, a.x, a.y), b2 = new Node(b.i, b.x, b.y), an = a.next, bp = b.prev;\n a.next = b;\n b.prev = a;\n a2.next = an;\n an.prev = a2;\n b2.next = a2;\n a2.prev = b2;\n bp.next = b2;\n b2.prev = bp;\n return b2;\n}\nfunction insertNode(i, x, y, last) {\n const p = new Node(i, x, y);\n if (!last) {\n p.prev = p;\n p.next = p;\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}\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n if (p.prevZ)\n p.prevZ.nextZ = p.nextZ;\n if (p.nextZ)\n p.nextZ.prevZ = p.prevZ;\n}\nfunction Node(i, x, y) {\n this.i = i;\n this.x = x;\n this.y = y;\n this.prev = null;\n this.next = null;\n this.z = null;\n this.prevZ = null;\n this.nextZ = null;\n this.steiner = false;\n}\nfunction signedArea(data, start, end, dim) {\n let sum = 0;\n for (let 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}\nclass ShapeUtils {\n static area(contour) {\n const n = contour.length;\n let a = 0;\n for (let p = n - 1, q = 0; q < n; p = q++) {\n a += contour[p].x * contour[q].y - contour[q].x * contour[p].y;\n }\n return a * 0.5;\n }\n static isClockWise(pts) {\n return ShapeUtils.area(pts) < 0;\n }\n static triangulateShape(contour, holes) {\n const vertices = [];\n const holeIndices = [];\n const faces = [];\n removeDupEndPts(contour);\n addContour(vertices, contour);\n let holeIndex = contour.length;\n holes.forEach(removeDupEndPts);\n for (let i = 0; i < holes.length; i++) {\n holeIndices.push(holeIndex);\n holeIndex += holes[i].length;\n addContour(vertices, holes[i]);\n }\n const triangles = Earcut.triangulate(vertices, holeIndices);\n for (let i = 0; i < triangles.length; i += 3) {\n faces.push(triangles.slice(i, i + 3));\n }\n return faces;\n }\n}\nfunction removeDupEndPts(points) {\n const l = points.length;\n if (l > 2 && points[l - 1].equals(points[0])) {\n points.pop();\n }\n}\nfunction addContour(vertices, contour) {\n for (let i = 0; i < contour.length; i++) {\n vertices.push(contour[i].x);\n vertices.push(contour[i].y);\n }\n}\nclass ExtrudeGeometry extends BufferGeometry {\n constructor(shapes = new Shape([new Vector2(0.5, 0.5), new Vector2(-0.5, 0.5), new Vector2(-0.5, -0.5), new Vector2(0.5, -0.5)]), options = {}) {\n super();\n this.type = \"ExtrudeGeometry\";\n this.parameters = {\n shapes,\n options\n };\n shapes = Array.isArray(shapes) ? shapes : [shapes];\n const scope = this;\n const verticesArray = [];\n const uvArray = [];\n for (let i = 0, l = shapes.length; i < l; i++) {\n const shape = shapes[i];\n addShape(shape);\n }\n this.setAttribute(\"position\", new Float32BufferAttribute(verticesArray, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvArray, 2));\n this.computeVertexNormals();\n function addShape(shape) {\n const placeholder = [];\n const curveSegments = options.curveSegments !== void 0 ? options.curveSegments : 12;\n const steps = options.steps !== void 0 ? options.steps : 1;\n let depth = options.depth !== void 0 ? options.depth : 1;\n let bevelEnabled = options.bevelEnabled !== void 0 ? options.bevelEnabled : true;\n let bevelThickness = options.bevelThickness !== void 0 ? options.bevelThickness : 0.2;\n let bevelSize = options.bevelSize !== void 0 ? options.bevelSize : bevelThickness - 0.1;\n let bevelOffset = options.bevelOffset !== void 0 ? options.bevelOffset : 0;\n let bevelSegments = options.bevelSegments !== void 0 ? options.bevelSegments : 3;\n const extrudePath = options.extrudePath;\n const uvgen = options.UVGenerator !== void 0 ? options.UVGenerator : WorldUVGenerator;\n if (options.amount !== void 0) {\n console.warn(\"THREE.ExtrudeBufferGeometry: amount has been renamed to depth.\");\n depth = options.amount;\n }\n let extrudePts, extrudeByPath = false;\n let splineTube, binormal, normal, position2;\n if (extrudePath) {\n extrudePts = extrudePath.getSpacedPoints(steps);\n extrudeByPath = true;\n bevelEnabled = false;\n splineTube = extrudePath.computeFrenetFrames(steps, false);\n binormal = new Vector3();\n normal = new Vector3();\n position2 = new Vector3();\n }\n if (!bevelEnabled) {\n bevelSegments = 0;\n bevelThickness = 0;\n bevelSize = 0;\n bevelOffset = 0;\n }\n const shapePoints = shape.extractPoints(curveSegments);\n let vertices = shapePoints.shape;\n const holes = shapePoints.holes;\n const reverse = !ShapeUtils.isClockWise(vertices);\n if (reverse) {\n vertices = vertices.reverse();\n for (let h = 0, hl = holes.length; h < hl; h++) {\n const ahole = holes[h];\n if (ShapeUtils.isClockWise(ahole)) {\n holes[h] = ahole.reverse();\n }\n }\n }\n const faces = ShapeUtils.triangulateShape(vertices, holes);\n const contour = vertices;\n for (let h = 0, hl = holes.length; h < hl; h++) {\n const ahole = holes[h];\n vertices = vertices.concat(ahole);\n }\n function scalePt2(pt, vec, size) {\n if (!vec)\n console.error(\"THREE.ExtrudeGeometry: vec does not exist\");\n return vec.clone().multiplyScalar(size).add(pt);\n }\n const vlen = vertices.length, flen = faces.length;\n function getBevelVec(inPt, inPrev, inNext) {\n let v_trans_x, v_trans_y, shrink_by;\n const v_prev_x = inPt.x - inPrev.x, v_prev_y = inPt.y - inPrev.y;\n const v_next_x = inNext.x - inPt.x, v_next_y = inNext.y - inPt.y;\n const v_prev_lensq = v_prev_x * v_prev_x + v_prev_y * v_prev_y;\n const collinear0 = v_prev_x * v_next_y - v_prev_y * v_next_x;\n if (Math.abs(collinear0) > Number.EPSILON) {\n const v_prev_len = Math.sqrt(v_prev_lensq);\n const v_next_len = Math.sqrt(v_next_x * v_next_x + v_next_y * v_next_y);\n const ptPrevShift_x = inPrev.x - v_prev_y / v_prev_len;\n const ptPrevShift_y = inPrev.y + v_prev_x / v_prev_len;\n const ptNextShift_x = inNext.x - v_next_y / v_next_len;\n const ptNextShift_y = inNext.y + v_next_x / v_next_len;\n const sf = ((ptNextShift_x - ptPrevShift_x) * v_next_y - (ptNextShift_y - ptPrevShift_y) * v_next_x) / (v_prev_x * v_next_y - v_prev_y * v_next_x);\n v_trans_x = ptPrevShift_x + v_prev_x * sf - inPt.x;\n v_trans_y = ptPrevShift_y + v_prev_y * sf - inPt.y;\n const v_trans_lensq = v_trans_x * v_trans_x + v_trans_y * v_trans_y;\n if (v_trans_lensq <= 2) {\n return new Vector2(v_trans_x, v_trans_y);\n } else {\n shrink_by = Math.sqrt(v_trans_lensq / 2);\n }\n } else {\n let direction_eq = false;\n if (v_prev_x > Number.EPSILON) {\n if (v_next_x > Number.EPSILON) {\n direction_eq = true;\n }\n } else {\n if (v_prev_x < -Number.EPSILON) {\n if (v_next_x < -Number.EPSILON) {\n direction_eq = true;\n }\n } else {\n if (Math.sign(v_prev_y) === Math.sign(v_next_y)) {\n direction_eq = true;\n }\n }\n }\n if (direction_eq) {\n v_trans_x = -v_prev_y;\n v_trans_y = v_prev_x;\n shrink_by = Math.sqrt(v_prev_lensq);\n } else {\n v_trans_x = v_prev_x;\n v_trans_y = v_prev_y;\n shrink_by = Math.sqrt(v_prev_lensq / 2);\n }\n }\n return new Vector2(v_trans_x / shrink_by, v_trans_y / shrink_by);\n }\n const contourMovements = [];\n for (let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) {\n if (j === il)\n j = 0;\n if (k === il)\n k = 0;\n contourMovements[i] = getBevelVec(contour[i], contour[j], contour[k]);\n }\n const holesMovements = [];\n let oneHoleMovements, verticesMovements = contourMovements.concat();\n for (let h = 0, hl = holes.length; h < hl; h++) {\n const ahole = holes[h];\n oneHoleMovements = [];\n for (let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) {\n if (j === il)\n j = 0;\n if (k === il)\n k = 0;\n oneHoleMovements[i] = getBevelVec(ahole[i], ahole[j], ahole[k]);\n }\n holesMovements.push(oneHoleMovements);\n verticesMovements = verticesMovements.concat(oneHoleMovements);\n }\n for (let b = 0; b < bevelSegments; b++) {\n const t = b / bevelSegments;\n const z = bevelThickness * Math.cos(t * Math.PI / 2);\n const bs2 = bevelSize * Math.sin(t * Math.PI / 2) + bevelOffset;\n for (let i = 0, il = contour.length; i < il; i++) {\n const vert = scalePt2(contour[i], contourMovements[i], bs2);\n v(vert.x, vert.y, -z);\n }\n for (let h = 0, hl = holes.length; h < hl; h++) {\n const ahole = holes[h];\n oneHoleMovements = holesMovements[h];\n for (let i = 0, il = ahole.length; i < il; i++) {\n const vert = scalePt2(ahole[i], oneHoleMovements[i], bs2);\n v(vert.x, vert.y, -z);\n }\n }\n }\n const bs = bevelSize + bevelOffset;\n for (let i = 0; i < vlen; i++) {\n const vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i];\n if (!extrudeByPath) {\n v(vert.x, vert.y, 0);\n } else {\n normal.copy(splineTube.normals[0]).multiplyScalar(vert.x);\n binormal.copy(splineTube.binormals[0]).multiplyScalar(vert.y);\n position2.copy(extrudePts[0]).add(normal).add(binormal);\n v(position2.x, position2.y, position2.z);\n }\n }\n for (let s = 1; s <= steps; s++) {\n for (let i = 0; i < vlen; i++) {\n const vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i];\n if (!extrudeByPath) {\n v(vert.x, vert.y, depth / steps * s);\n } else {\n normal.copy(splineTube.normals[s]).multiplyScalar(vert.x);\n binormal.copy(splineTube.binormals[s]).multiplyScalar(vert.y);\n position2.copy(extrudePts[s]).add(normal).add(binormal);\n v(position2.x, position2.y, position2.z);\n }\n }\n }\n for (let b = bevelSegments - 1; b >= 0; b--) {\n const t = b / bevelSegments;\n const z = bevelThickness * Math.cos(t * Math.PI / 2);\n const bs2 = bevelSize * Math.sin(t * Math.PI / 2) + bevelOffset;\n for (let i = 0, il = contour.length; i < il; i++) {\n const vert = scalePt2(contour[i], contourMovements[i], bs2);\n v(vert.x, vert.y, depth + z);\n }\n for (let h = 0, hl = holes.length; h < hl; h++) {\n const ahole = holes[h];\n oneHoleMovements = holesMovements[h];\n for (let i = 0, il = ahole.length; i < il; i++) {\n const vert = scalePt2(ahole[i], oneHoleMovements[i], bs2);\n if (!extrudeByPath) {\n v(vert.x, vert.y, depth + z);\n } else {\n v(vert.x, vert.y + extrudePts[steps - 1].y, extrudePts[steps - 1].x + z);\n }\n }\n }\n }\n buildLidFaces();\n buildSideFaces();\n function buildLidFaces() {\n const start = verticesArray.length / 3;\n if (bevelEnabled) {\n let layer = 0;\n let offset = vlen * layer;\n for (let i = 0; i < flen; i++) {\n const face = faces[i];\n f3(face[2] + offset, face[1] + offset, face[0] + offset);\n }\n layer = steps + bevelSegments * 2;\n offset = vlen * layer;\n for (let i = 0; i < flen; i++) {\n const face = faces[i];\n f3(face[0] + offset, face[1] + offset, face[2] + offset);\n }\n } else {\n for (let i = 0; i < flen; i++) {\n const face = faces[i];\n f3(face[2], face[1], face[0]);\n }\n for (let i = 0; i < flen; i++) {\n const face = faces[i];\n f3(face[0] + vlen * steps, face[1] + vlen * steps, face[2] + vlen * steps);\n }\n }\n scope.addGroup(start, verticesArray.length / 3 - start, 0);\n }\n function buildSideFaces() {\n const start = verticesArray.length / 3;\n let layeroffset = 0;\n sidewalls(contour, layeroffset);\n layeroffset += contour.length;\n for (let h = 0, hl = holes.length; h < hl; h++) {\n const ahole = holes[h];\n sidewalls(ahole, layeroffset);\n layeroffset += ahole.length;\n }\n scope.addGroup(start, verticesArray.length / 3 - start, 1);\n }\n function sidewalls(contour2, layeroffset) {\n let i = contour2.length;\n while (--i >= 0) {\n const j = i;\n let k = i - 1;\n if (k < 0)\n k = contour2.length - 1;\n for (let s = 0, sl = steps + bevelSegments * 2; s < sl; s++) {\n const slen1 = vlen * s;\n const slen2 = vlen * (s + 1);\n const a = layeroffset + j + slen1, b = layeroffset + k + slen1, c = layeroffset + k + slen2, d = layeroffset + j + slen2;\n f4(a, b, c, d);\n }\n }\n }\n function v(x, y, z) {\n placeholder.push(x);\n placeholder.push(y);\n placeholder.push(z);\n }\n function f3(a, b, c) {\n addVertex(a);\n addVertex(b);\n addVertex(c);\n const nextIndex = verticesArray.length / 3;\n const uvs = uvgen.generateTopUV(scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n addUV(uvs[0]);\n addUV(uvs[1]);\n addUV(uvs[2]);\n }\n function f4(a, b, c, d) {\n addVertex(a);\n addVertex(b);\n addVertex(d);\n addVertex(b);\n addVertex(c);\n addVertex(d);\n const nextIndex = verticesArray.length / 3;\n const uvs = uvgen.generateSideWallUV(scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n addUV(uvs[0]);\n addUV(uvs[1]);\n addUV(uvs[3]);\n addUV(uvs[1]);\n addUV(uvs[2]);\n addUV(uvs[3]);\n }\n function addVertex(index) {\n verticesArray.push(placeholder[index * 3 + 0]);\n verticesArray.push(placeholder[index * 3 + 1]);\n verticesArray.push(placeholder[index * 3 + 2]);\n }\n function addUV(vector2) {\n uvArray.push(vector2.x);\n uvArray.push(vector2.y);\n }\n }\n }\n toJSON() {\n const data = super.toJSON();\n const shapes = this.parameters.shapes;\n const options = this.parameters.options;\n return toJSON$1(shapes, options, data);\n }\n static fromJSON(data, shapes) {\n const geometryShapes = [];\n for (let j = 0, jl = data.shapes.length; j < jl; j++) {\n const shape = shapes[data.shapes[j]];\n geometryShapes.push(shape);\n }\n const extrudePath = data.options.extrudePath;\n if (extrudePath !== void 0) {\n data.options.extrudePath = new Curves[extrudePath.type]().fromJSON(extrudePath);\n }\n return new ExtrudeGeometry(geometryShapes, data.options);\n }\n}\nconst WorldUVGenerator = {\n generateTopUV: function(geometry, vertices, indexA, indexB, indexC) {\n const a_x = vertices[indexA * 3];\n const a_y = vertices[indexA * 3 + 1];\n const b_x = vertices[indexB * 3];\n const b_y = vertices[indexB * 3 + 1];\n const c_x = vertices[indexC * 3];\n const c_y = vertices[indexC * 3 + 1];\n return [\n new Vector2(a_x, a_y),\n new Vector2(b_x, b_y),\n new Vector2(c_x, c_y)\n ];\n },\n generateSideWallUV: function(geometry, vertices, indexA, indexB, indexC, indexD) {\n const a_x = vertices[indexA * 3];\n const a_y = vertices[indexA * 3 + 1];\n const a_z = vertices[indexA * 3 + 2];\n const b_x = vertices[indexB * 3];\n const b_y = vertices[indexB * 3 + 1];\n const b_z = vertices[indexB * 3 + 2];\n const c_x = vertices[indexC * 3];\n const c_y = vertices[indexC * 3 + 1];\n const c_z = vertices[indexC * 3 + 2];\n const d_x = vertices[indexD * 3];\n const d_y = vertices[indexD * 3 + 1];\n const d_z = vertices[indexD * 3 + 2];\n if (Math.abs(a_y - b_y) < Math.abs(a_x - b_x)) {\n return [\n new Vector2(a_x, 1 - a_z),\n new Vector2(b_x, 1 - b_z),\n new Vector2(c_x, 1 - c_z),\n new Vector2(d_x, 1 - d_z)\n ];\n } else {\n return [\n new Vector2(a_y, 1 - a_z),\n new Vector2(b_y, 1 - b_z),\n new Vector2(c_y, 1 - c_z),\n new Vector2(d_y, 1 - d_z)\n ];\n }\n }\n};\nfunction toJSON$1(shapes, options, data) {\n data.shapes = [];\n if (Array.isArray(shapes)) {\n for (let i = 0, l = shapes.length; i < l; i++) {\n const shape = shapes[i];\n data.shapes.push(shape.uuid);\n }\n } else {\n data.shapes.push(shapes.uuid);\n }\n if (options.extrudePath !== void 0)\n data.options.extrudePath = options.extrudePath.toJSON();\n return data;\n}\nclass IcosahedronGeometry extends PolyhedronGeometry {\n constructor(radius = 1, detail = 0) {\n const t = (1 + Math.sqrt(5)) / 2;\n const vertices = [\n -1,\n t,\n 0,\n 1,\n t,\n 0,\n -1,\n -t,\n 0,\n 1,\n -t,\n 0,\n 0,\n -1,\n t,\n 0,\n 1,\n t,\n 0,\n -1,\n -t,\n 0,\n 1,\n -t,\n t,\n 0,\n -1,\n t,\n 0,\n 1,\n -t,\n 0,\n -1,\n -t,\n 0,\n 1\n ];\n const indices = [\n 0,\n 11,\n 5,\n 0,\n 5,\n 1,\n 0,\n 1,\n 7,\n 0,\n 7,\n 10,\n 0,\n 10,\n 11,\n 1,\n 5,\n 9,\n 5,\n 11,\n 4,\n 11,\n 10,\n 2,\n 10,\n 7,\n 6,\n 7,\n 1,\n 8,\n 3,\n 9,\n 4,\n 3,\n 4,\n 2,\n 3,\n 2,\n 6,\n 3,\n 6,\n 8,\n 3,\n 8,\n 9,\n 4,\n 9,\n 5,\n 2,\n 4,\n 11,\n 6,\n 2,\n 10,\n 8,\n 6,\n 7,\n 9,\n 8,\n 1\n ];\n super(vertices, indices, radius, detail);\n this.type = \"IcosahedronGeometry\";\n this.parameters = {\n radius,\n detail\n };\n }\n static fromJSON(data) {\n return new IcosahedronGeometry(data.radius, data.detail);\n }\n}\nclass LatheGeometry extends BufferGeometry {\n constructor(points = [new Vector2(0, 0.5), new Vector2(0.5, 0), new Vector2(0, -0.5)], segments = 12, phiStart = 0, phiLength = Math.PI * 2) {\n super();\n this.type = \"LatheGeometry\";\n this.parameters = {\n points,\n segments,\n phiStart,\n phiLength\n };\n segments = Math.floor(segments);\n phiLength = clamp(phiLength, 0, Math.PI * 2);\n const indices = [];\n const vertices = [];\n const uvs = [];\n const inverseSegments = 1 / segments;\n const vertex2 = new Vector3();\n const uv = new Vector2();\n for (let i = 0; i <= segments; i++) {\n const phi = phiStart + i * inverseSegments * phiLength;\n const sin = Math.sin(phi);\n const cos = Math.cos(phi);\n for (let j = 0; j <= points.length - 1; j++) {\n vertex2.x = points[j].x * sin;\n vertex2.y = points[j].y;\n vertex2.z = points[j].x * cos;\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n uv.x = i / segments;\n uv.y = j / (points.length - 1);\n uvs.push(uv.x, uv.y);\n }\n }\n for (let i = 0; i < segments; i++) {\n for (let j = 0; j < points.length - 1; j++) {\n const base = j + i * points.length;\n const a = base;\n const b = base + points.length;\n const c = base + points.length + 1;\n const d = base + 1;\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n this.computeVertexNormals();\n if (phiLength === Math.PI * 2) {\n const normals = this.attributes.normal.array;\n const n1 = new Vector3();\n const n2 = new Vector3();\n const n = new Vector3();\n const base = segments * points.length * 3;\n for (let i = 0, j = 0; i < points.length; i++, j += 3) {\n n1.x = normals[j + 0];\n n1.y = normals[j + 1];\n n1.z = normals[j + 2];\n n2.x = normals[base + j + 0];\n n2.y = normals[base + j + 1];\n n2.z = normals[base + j + 2];\n n.addVectors(n1, n2).normalize();\n normals[j + 0] = normals[base + j + 0] = n.x;\n normals[j + 1] = normals[base + j + 1] = n.y;\n normals[j + 2] = normals[base + j + 2] = n.z;\n }\n }\n }\n static fromJSON(data) {\n return new LatheGeometry(data.points, data.segments, data.phiStart, data.phiLength);\n }\n}\nclass OctahedronGeometry extends PolyhedronGeometry {\n constructor(radius = 1, detail = 0) {\n const vertices = [\n 1,\n 0,\n 0,\n -1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n -1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n -1\n ];\n const indices = [\n 0,\n 2,\n 4,\n 0,\n 4,\n 3,\n 0,\n 3,\n 5,\n 0,\n 5,\n 2,\n 1,\n 2,\n 5,\n 1,\n 5,\n 3,\n 1,\n 3,\n 4,\n 1,\n 4,\n 2\n ];\n super(vertices, indices, radius, detail);\n this.type = \"OctahedronGeometry\";\n this.parameters = {\n radius,\n detail\n };\n }\n static fromJSON(data) {\n return new OctahedronGeometry(data.radius, data.detail);\n }\n}\nclass RingGeometry extends BufferGeometry {\n constructor(innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2) {\n super();\n this.type = \"RingGeometry\";\n this.parameters = {\n innerRadius,\n outerRadius,\n thetaSegments,\n phiSegments,\n thetaStart,\n thetaLength\n };\n thetaSegments = Math.max(3, thetaSegments);\n phiSegments = Math.max(1, phiSegments);\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n let radius = innerRadius;\n const radiusStep = (outerRadius - innerRadius) / phiSegments;\n const vertex2 = new Vector3();\n const uv = new Vector2();\n for (let j = 0; j <= phiSegments; j++) {\n for (let i = 0; i <= thetaSegments; i++) {\n const segment = thetaStart + i / thetaSegments * thetaLength;\n vertex2.x = radius * Math.cos(segment);\n vertex2.y = radius * Math.sin(segment);\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n normals.push(0, 0, 1);\n uv.x = (vertex2.x / outerRadius + 1) / 2;\n uv.y = (vertex2.y / outerRadius + 1) / 2;\n uvs.push(uv.x, uv.y);\n }\n radius += radiusStep;\n }\n for (let j = 0; j < phiSegments; j++) {\n const thetaSegmentLevel = j * (thetaSegments + 1);\n for (let i = 0; i < thetaSegments; i++) {\n const segment = i + thetaSegmentLevel;\n const a = segment;\n const b = segment + thetaSegments + 1;\n const c = segment + thetaSegments + 2;\n const d = segment + 1;\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n }\n static fromJSON(data) {\n return new RingGeometry(data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength);\n }\n}\nclass ShapeGeometry extends BufferGeometry {\n constructor(shapes = new Shape([new Vector2(0, 0.5), new Vector2(-0.5, -0.5), new Vector2(0.5, -0.5)]), curveSegments = 12) {\n super();\n this.type = \"ShapeGeometry\";\n this.parameters = {\n shapes,\n curveSegments\n };\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n let groupStart = 0;\n let groupCount = 0;\n if (Array.isArray(shapes) === false) {\n addShape(shapes);\n } else {\n for (let i = 0; i < shapes.length; i++) {\n addShape(shapes[i]);\n this.addGroup(groupStart, groupCount, i);\n groupStart += groupCount;\n groupCount = 0;\n }\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n function addShape(shape) {\n const indexOffset = vertices.length / 3;\n const points = shape.extractPoints(curveSegments);\n let shapeVertices = points.shape;\n const shapeHoles = points.holes;\n if (ShapeUtils.isClockWise(shapeVertices) === false) {\n shapeVertices = shapeVertices.reverse();\n }\n for (let i = 0, l = shapeHoles.length; i < l; i++) {\n const shapeHole = shapeHoles[i];\n if (ShapeUtils.isClockWise(shapeHole) === true) {\n shapeHoles[i] = shapeHole.reverse();\n }\n }\n const faces = ShapeUtils.triangulateShape(shapeVertices, shapeHoles);\n for (let i = 0, l = shapeHoles.length; i < l; i++) {\n const shapeHole = shapeHoles[i];\n shapeVertices = shapeVertices.concat(shapeHole);\n }\n for (let i = 0, l = shapeVertices.length; i < l; i++) {\n const vertex2 = shapeVertices[i];\n vertices.push(vertex2.x, vertex2.y, 0);\n normals.push(0, 0, 1);\n uvs.push(vertex2.x, vertex2.y);\n }\n for (let i = 0, l = faces.length; i < l; i++) {\n const face = faces[i];\n const a = face[0] + indexOffset;\n const b = face[1] + indexOffset;\n const c = face[2] + indexOffset;\n indices.push(a, b, c);\n groupCount += 3;\n }\n }\n }\n toJSON() {\n const data = super.toJSON();\n const shapes = this.parameters.shapes;\n return toJSON(shapes, data);\n }\n static fromJSON(data, shapes) {\n const geometryShapes = [];\n for (let j = 0, jl = data.shapes.length; j < jl; j++) {\n const shape = shapes[data.shapes[j]];\n geometryShapes.push(shape);\n }\n return new ShapeGeometry(geometryShapes, data.curveSegments);\n }\n}\nfunction toJSON(shapes, data) {\n data.shapes = [];\n if (Array.isArray(shapes)) {\n for (let i = 0, l = shapes.length; i < l; i++) {\n const shape = shapes[i];\n data.shapes.push(shape.uuid);\n }\n } else {\n data.shapes.push(shapes.uuid);\n }\n return data;\n}\nclass SphereGeometry extends BufferGeometry {\n constructor(radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI) {\n super();\n this.type = \"SphereGeometry\";\n this.parameters = {\n radius,\n widthSegments,\n heightSegments,\n phiStart,\n phiLength,\n thetaStart,\n thetaLength\n };\n widthSegments = Math.max(3, Math.floor(widthSegments));\n heightSegments = Math.max(2, Math.floor(heightSegments));\n const thetaEnd = Math.min(thetaStart + thetaLength, Math.PI);\n let index = 0;\n const grid = [];\n const vertex2 = new Vector3();\n const normal = new Vector3();\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n for (let iy = 0; iy <= heightSegments; iy++) {\n const verticesRow = [];\n const v = iy / heightSegments;\n let uOffset = 0;\n if (iy == 0 && thetaStart == 0) {\n uOffset = 0.5 / widthSegments;\n } else if (iy == heightSegments && thetaEnd == Math.PI) {\n uOffset = -0.5 / widthSegments;\n }\n for (let ix = 0; ix <= widthSegments; ix++) {\n const u = ix / widthSegments;\n vertex2.x = -radius * Math.cos(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n vertex2.y = radius * Math.cos(thetaStart + v * thetaLength);\n vertex2.z = radius * Math.sin(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n normal.copy(vertex2).normalize();\n normals.push(normal.x, normal.y, normal.z);\n uvs.push(u + uOffset, 1 - v);\n verticesRow.push(index++);\n }\n grid.push(verticesRow);\n }\n for (let iy = 0; iy < heightSegments; iy++) {\n for (let ix = 0; ix < widthSegments; ix++) {\n const a = grid[iy][ix + 1];\n const b = grid[iy][ix];\n const c = grid[iy + 1][ix];\n const d = grid[iy + 1][ix + 1];\n if (iy !== 0 || thetaStart > 0)\n indices.push(a, b, d);\n if (iy !== heightSegments - 1 || thetaEnd < Math.PI)\n indices.push(b, c, d);\n }\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n }\n static fromJSON(data) {\n return new SphereGeometry(data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength);\n }\n}\nclass TetrahedronGeometry extends PolyhedronGeometry {\n constructor(radius = 1, detail = 0) {\n const vertices = [\n 1,\n 1,\n 1,\n -1,\n -1,\n 1,\n -1,\n 1,\n -1,\n 1,\n -1,\n -1\n ];\n const indices = [\n 2,\n 1,\n 0,\n 0,\n 3,\n 2,\n 1,\n 3,\n 0,\n 2,\n 3,\n 1\n ];\n super(vertices, indices, radius, detail);\n this.type = \"TetrahedronGeometry\";\n this.parameters = {\n radius,\n detail\n };\n }\n static fromJSON(data) {\n return new TetrahedronGeometry(data.radius, data.detail);\n }\n}\nclass TorusGeometry extends BufferGeometry {\n constructor(radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2) {\n super();\n this.type = \"TorusGeometry\";\n this.parameters = {\n radius,\n tube,\n radialSegments,\n tubularSegments,\n arc\n };\n radialSegments = Math.floor(radialSegments);\n tubularSegments = Math.floor(tubularSegments);\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n const center = new Vector3();\n const vertex2 = new Vector3();\n const normal = new Vector3();\n for (let j = 0; j <= radialSegments; j++) {\n for (let i = 0; i <= tubularSegments; i++) {\n const u = i / tubularSegments * arc;\n const v = j / radialSegments * Math.PI * 2;\n vertex2.x = (radius + tube * Math.cos(v)) * Math.cos(u);\n vertex2.y = (radius + tube * Math.cos(v)) * Math.sin(u);\n vertex2.z = tube * Math.sin(v);\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n center.x = radius * Math.cos(u);\n center.y = radius * Math.sin(u);\n normal.subVectors(vertex2, center).normalize();\n normals.push(normal.x, normal.y, normal.z);\n uvs.push(i / tubularSegments);\n uvs.push(j / radialSegments);\n }\n }\n for (let j = 1; j <= radialSegments; j++) {\n for (let i = 1; i <= tubularSegments; i++) {\n const a = (tubularSegments + 1) * j + i - 1;\n const b = (tubularSegments + 1) * (j - 1) + i - 1;\n const c = (tubularSegments + 1) * (j - 1) + i;\n const d = (tubularSegments + 1) * j + i;\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n }\n static fromJSON(data) {\n return new TorusGeometry(data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc);\n }\n}\nclass TorusKnotGeometry extends BufferGeometry {\n constructor(radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3) {\n super();\n this.type = \"TorusKnotGeometry\";\n this.parameters = {\n radius,\n tube,\n tubularSegments,\n radialSegments,\n p,\n q\n };\n tubularSegments = Math.floor(tubularSegments);\n radialSegments = Math.floor(radialSegments);\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n const vertex2 = new Vector3();\n const normal = new Vector3();\n const P1 = new Vector3();\n const P2 = new Vector3();\n const B = new Vector3();\n const T = new Vector3();\n const N = new Vector3();\n for (let i = 0; i <= tubularSegments; ++i) {\n const u = i / tubularSegments * p * Math.PI * 2;\n calculatePositionOnCurve(u, p, q, radius, P1);\n calculatePositionOnCurve(u + 0.01, p, q, radius, P2);\n T.subVectors(P2, P1);\n N.addVectors(P2, P1);\n B.crossVectors(T, N);\n N.crossVectors(B, T);\n B.normalize();\n N.normalize();\n for (let j = 0; j <= radialSegments; ++j) {\n const v = j / radialSegments * Math.PI * 2;\n const cx = -tube * Math.cos(v);\n const cy = tube * Math.sin(v);\n vertex2.x = P1.x + (cx * N.x + cy * B.x);\n vertex2.y = P1.y + (cx * N.y + cy * B.y);\n vertex2.z = P1.z + (cx * N.z + cy * B.z);\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n normal.subVectors(vertex2, P1).normalize();\n normals.push(normal.x, normal.y, normal.z);\n uvs.push(i / tubularSegments);\n uvs.push(j / radialSegments);\n }\n }\n for (let j = 1; j <= tubularSegments; j++) {\n for (let i = 1; i <= radialSegments; i++) {\n const a = (radialSegments + 1) * (j - 1) + (i - 1);\n const b = (radialSegments + 1) * j + (i - 1);\n const c = (radialSegments + 1) * j + i;\n const d = (radialSegments + 1) * (j - 1) + i;\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n function calculatePositionOnCurve(u, p2, q2, radius2, position) {\n const cu = Math.cos(u);\n const su = Math.sin(u);\n const quOverP = q2 / p2 * u;\n const cs = Math.cos(quOverP);\n position.x = radius2 * (2 + cs) * 0.5 * cu;\n position.y = radius2 * (2 + cs) * su * 0.5;\n position.z = radius2 * Math.sin(quOverP) * 0.5;\n }\n }\n static fromJSON(data) {\n return new TorusKnotGeometry(data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q);\n }\n}\nclass TubeGeometry extends BufferGeometry {\n constructor(path = new QuadraticBezierCurve3(new Vector3(-1, -1, 0), new Vector3(-1, 1, 0), new Vector3(1, 1, 0)), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false) {\n super();\n this.type = \"TubeGeometry\";\n this.parameters = {\n path,\n tubularSegments,\n radius,\n radialSegments,\n closed\n };\n const frames = path.computeFrenetFrames(tubularSegments, closed);\n this.tangents = frames.tangents;\n this.normals = frames.normals;\n this.binormals = frames.binormals;\n const vertex2 = new Vector3();\n const normal = new Vector3();\n const uv = new Vector2();\n let P = new Vector3();\n const vertices = [];\n const normals = [];\n const uvs = [];\n const indices = [];\n generateBufferData();\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n function generateBufferData() {\n for (let i = 0; i < tubularSegments; i++) {\n generateSegment(i);\n }\n generateSegment(closed === false ? tubularSegments : 0);\n generateUVs();\n generateIndices();\n }\n function generateSegment(i) {\n P = path.getPointAt(i / tubularSegments, P);\n const N = frames.normals[i];\n const B = frames.binormals[i];\n for (let j = 0; j <= radialSegments; j++) {\n const v = j / radialSegments * Math.PI * 2;\n const sin = Math.sin(v);\n const cos = -Math.cos(v);\n normal.x = cos * N.x + sin * B.x;\n normal.y = cos * N.y + sin * B.y;\n normal.z = cos * N.z + sin * B.z;\n normal.normalize();\n normals.push(normal.x, normal.y, normal.z);\n vertex2.x = P.x + radius * normal.x;\n vertex2.y = P.y + radius * normal.y;\n vertex2.z = P.z + radius * normal.z;\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n }\n }\n function generateIndices() {\n for (let j = 1; j <= tubularSegments; j++) {\n for (let i = 1; i <= radialSegments; i++) {\n const a = (radialSegments + 1) * (j - 1) + (i - 1);\n const b = (radialSegments + 1) * j + (i - 1);\n const c = (radialSegments + 1) * j + i;\n const d = (radialSegments + 1) * (j - 1) + i;\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n }\n function generateUVs() {\n for (let i = 0; i <= tubularSegments; i++) {\n for (let j = 0; j <= radialSegments; j++) {\n uv.x = i / tubularSegments;\n uv.y = j / radialSegments;\n uvs.push(uv.x, uv.y);\n }\n }\n }\n }\n toJSON() {\n const data = super.toJSON();\n data.path = this.parameters.path.toJSON();\n return data;\n }\n static fromJSON(data) {\n return new TubeGeometry(new Curves[data.path.type]().fromJSON(data.path), data.tubularSegments, data.radius, data.radialSegments, data.closed);\n }\n}\nclass WireframeGeometry extends BufferGeometry {\n constructor(geometry = null) {\n super();\n this.type = \"WireframeGeometry\";\n this.parameters = {\n geometry\n };\n if (geometry !== null) {\n const vertices = [];\n const edges = new Set();\n const start = new Vector3();\n const end = new Vector3();\n if (geometry.index !== null) {\n const position = geometry.attributes.position;\n const indices = geometry.index;\n let groups = geometry.groups;\n if (groups.length === 0) {\n groups = [{start: 0, count: indices.count, materialIndex: 0}];\n }\n for (let o = 0, ol = groups.length; o < ol; ++o) {\n const group = groups[o];\n const groupStart = group.start;\n const groupCount = group.count;\n for (let i = groupStart, l = groupStart + groupCount; i < l; i += 3) {\n for (let j = 0; j < 3; j++) {\n const index1 = indices.getX(i + j);\n const index2 = indices.getX(i + (j + 1) % 3);\n start.fromBufferAttribute(position, index1);\n end.fromBufferAttribute(position, index2);\n if (isUniqueEdge(start, end, edges) === true) {\n vertices.push(start.x, start.y, start.z);\n vertices.push(end.x, end.y, end.z);\n }\n }\n }\n }\n } else {\n const position = geometry.attributes.position;\n for (let i = 0, l = position.count / 3; i < l; i++) {\n for (let j = 0; j < 3; j++) {\n const index1 = 3 * i + j;\n const index2 = 3 * i + (j + 1) % 3;\n start.fromBufferAttribute(position, index1);\n end.fromBufferAttribute(position, index2);\n if (isUniqueEdge(start, end, edges) === true) {\n vertices.push(start.x, start.y, start.z);\n vertices.push(end.x, end.y, end.z);\n }\n }\n }\n }\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n }\n }\n}\nfunction isUniqueEdge(start, end, edges) {\n const hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n const hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`;\n if (edges.has(hash1) === true || edges.has(hash2) === true) {\n return false;\n } else {\n edges.add(hash1, hash2);\n return true;\n }\n}\nvar Geometries = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n BoxGeometry,\n BoxBufferGeometry: BoxGeometry,\n CircleGeometry,\n CircleBufferGeometry: CircleGeometry,\n ConeGeometry,\n ConeBufferGeometry: ConeGeometry,\n CylinderGeometry,\n CylinderBufferGeometry: CylinderGeometry,\n DodecahedronGeometry,\n DodecahedronBufferGeometry: DodecahedronGeometry,\n EdgesGeometry,\n ExtrudeGeometry,\n ExtrudeBufferGeometry: ExtrudeGeometry,\n IcosahedronGeometry,\n IcosahedronBufferGeometry: IcosahedronGeometry,\n LatheGeometry,\n LatheBufferGeometry: LatheGeometry,\n OctahedronGeometry,\n OctahedronBufferGeometry: OctahedronGeometry,\n PlaneGeometry,\n PlaneBufferGeometry: PlaneGeometry,\n PolyhedronGeometry,\n PolyhedronBufferGeometry: PolyhedronGeometry,\n RingGeometry,\n RingBufferGeometry: RingGeometry,\n ShapeGeometry,\n ShapeBufferGeometry: ShapeGeometry,\n SphereGeometry,\n SphereBufferGeometry: SphereGeometry,\n TetrahedronGeometry,\n TetrahedronBufferGeometry: TetrahedronGeometry,\n TorusGeometry,\n TorusBufferGeometry: TorusGeometry,\n TorusKnotGeometry,\n TorusKnotBufferGeometry: TorusKnotGeometry,\n TubeGeometry,\n TubeBufferGeometry: TubeGeometry,\n WireframeGeometry\n});\nclass ShadowMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"ShadowMaterial\";\n this.color = new Color(0);\n this.transparent = true;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n return this;\n }\n}\nShadowMaterial.prototype.isShadowMaterial = true;\nclass MeshStandardMaterial extends Material {\n constructor(parameters) {\n super();\n this.defines = {STANDARD: \"\"};\n this.type = \"MeshStandardMaterial\";\n this.color = new Color(16777215);\n this.roughness = 1;\n this.metalness = 0;\n this.map = null;\n this.lightMap = null;\n this.lightMapIntensity = 1;\n this.aoMap = null;\n this.aoMapIntensity = 1;\n this.emissive = new Color(0);\n this.emissiveIntensity = 1;\n this.emissiveMap = null;\n this.bumpMap = null;\n this.bumpScale = 1;\n this.normalMap = null;\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.roughnessMap = null;\n this.metalnessMap = null;\n this.alphaMap = null;\n this.envMap = null;\n this.envMapIntensity = 1;\n this.refractionRatio = 0.98;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.wireframeLinecap = \"round\";\n this.wireframeLinejoin = \"round\";\n this.flatShading = false;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.defines = {STANDARD: \"\"};\n this.color.copy(source.color);\n this.roughness = source.roughness;\n this.metalness = source.metalness;\n this.map = source.map;\n this.lightMap = source.lightMap;\n this.lightMapIntensity = source.lightMapIntensity;\n this.aoMap = source.aoMap;\n this.aoMapIntensity = source.aoMapIntensity;\n this.emissive.copy(source.emissive);\n this.emissiveMap = source.emissiveMap;\n this.emissiveIntensity = source.emissiveIntensity;\n this.bumpMap = source.bumpMap;\n this.bumpScale = source.bumpScale;\n this.normalMap = source.normalMap;\n this.normalMapType = source.normalMapType;\n this.normalScale.copy(source.normalScale);\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.roughnessMap = source.roughnessMap;\n this.metalnessMap = source.metalnessMap;\n this.alphaMap = source.alphaMap;\n this.envMap = source.envMap;\n this.envMapIntensity = source.envMapIntensity;\n this.refractionRatio = source.refractionRatio;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.wireframeLinecap = source.wireframeLinecap;\n this.wireframeLinejoin = source.wireframeLinejoin;\n this.flatShading = source.flatShading;\n return this;\n }\n}\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n constructor(parameters) {\n super();\n this.defines = {\n STANDARD: \"\",\n PHYSICAL: \"\"\n };\n this.type = \"MeshPhysicalMaterial\";\n this.clearcoatMap = null;\n this.clearcoatRoughness = 0;\n this.clearcoatRoughnessMap = null;\n this.clearcoatNormalScale = new Vector2(1, 1);\n this.clearcoatNormalMap = null;\n this.ior = 1.5;\n Object.defineProperty(this, \"reflectivity\", {\n get: function() {\n return clamp(2.5 * (this.ior - 1) / (this.ior + 1), 0, 1);\n },\n set: function(reflectivity) {\n this.ior = (1 + 0.4 * reflectivity) / (1 - 0.4 * reflectivity);\n }\n });\n this.sheenColor = new Color(0);\n this.sheenColorMap = null;\n this.sheenRoughness = 1;\n this.sheenRoughnessMap = null;\n this.transmissionMap = null;\n this.thickness = 0;\n this.thicknessMap = null;\n this.attenuationDistance = 0;\n this.attenuationColor = new Color(1, 1, 1);\n this.specularIntensity = 1;\n this.specularIntensityMap = null;\n this.specularColor = new Color(1, 1, 1);\n this.specularColorMap = null;\n this._sheen = 0;\n this._clearcoat = 0;\n this._transmission = 0;\n this.setValues(parameters);\n }\n get sheen() {\n return this._sheen;\n }\n set sheen(value) {\n if (this._sheen > 0 !== value > 0) {\n this.version++;\n }\n this._sheen = value;\n }\n get clearcoat() {\n return this._clearcoat;\n }\n set clearcoat(value) {\n if (this._clearcoat > 0 !== value > 0) {\n this.version++;\n }\n this._clearcoat = value;\n }\n get transmission() {\n return this._transmission;\n }\n set transmission(value) {\n if (this._transmission > 0 !== value > 0) {\n this.version++;\n }\n this._transmission = value;\n }\n copy(source) {\n super.copy(source);\n this.defines = {\n STANDARD: \"\",\n PHYSICAL: \"\"\n };\n this.clearcoat = source.clearcoat;\n this.clearcoatMap = source.clearcoatMap;\n this.clearcoatRoughness = source.clearcoatRoughness;\n this.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n this.clearcoatNormalMap = source.clearcoatNormalMap;\n this.clearcoatNormalScale.copy(source.clearcoatNormalScale);\n this.ior = source.ior;\n this.sheen = source.sheen;\n this.sheenColor.copy(source.sheenColor);\n this.sheenColorMap = source.sheenColorMap;\n this.sheenRoughness = source.sheenRoughness;\n this.sheenRoughnessMap = source.sheenRoughnessMap;\n this.transmission = source.transmission;\n this.transmissionMap = source.transmissionMap;\n this.thickness = source.thickness;\n this.thicknessMap = source.thicknessMap;\n this.attenuationDistance = source.attenuationDistance;\n this.attenuationColor.copy(source.attenuationColor);\n this.specularIntensity = source.specularIntensity;\n this.specularIntensityMap = source.specularIntensityMap;\n this.specularColor.copy(source.specularColor);\n this.specularColorMap = source.specularColorMap;\n return this;\n }\n}\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\nclass MeshPhongMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"MeshPhongMaterial\";\n this.color = new Color(16777215);\n this.specular = new Color(1118481);\n this.shininess = 30;\n this.map = null;\n this.lightMap = null;\n this.lightMapIntensity = 1;\n this.aoMap = null;\n this.aoMapIntensity = 1;\n this.emissive = new Color(0);\n this.emissiveIntensity = 1;\n this.emissiveMap = null;\n this.bumpMap = null;\n this.bumpScale = 1;\n this.normalMap = null;\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.specularMap = null;\n this.alphaMap = null;\n this.envMap = null;\n this.combine = MultiplyOperation;\n this.reflectivity = 1;\n this.refractionRatio = 0.98;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.wireframeLinecap = \"round\";\n this.wireframeLinejoin = \"round\";\n this.flatShading = false;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.specular.copy(source.specular);\n this.shininess = source.shininess;\n this.map = source.map;\n this.lightMap = source.lightMap;\n this.lightMapIntensity = source.lightMapIntensity;\n this.aoMap = source.aoMap;\n this.aoMapIntensity = source.aoMapIntensity;\n this.emissive.copy(source.emissive);\n this.emissiveMap = source.emissiveMap;\n this.emissiveIntensity = source.emissiveIntensity;\n this.bumpMap = source.bumpMap;\n this.bumpScale = source.bumpScale;\n this.normalMap = source.normalMap;\n this.normalMapType = source.normalMapType;\n this.normalScale.copy(source.normalScale);\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.specularMap = source.specularMap;\n this.alphaMap = source.alphaMap;\n this.envMap = source.envMap;\n this.combine = source.combine;\n this.reflectivity = source.reflectivity;\n this.refractionRatio = source.refractionRatio;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.wireframeLinecap = source.wireframeLinecap;\n this.wireframeLinejoin = source.wireframeLinejoin;\n this.flatShading = source.flatShading;\n return this;\n }\n}\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\nclass MeshToonMaterial extends Material {\n constructor(parameters) {\n super();\n this.defines = {TOON: \"\"};\n this.type = \"MeshToonMaterial\";\n this.color = new Color(16777215);\n this.map = null;\n this.gradientMap = null;\n this.lightMap = null;\n this.lightMapIntensity = 1;\n this.aoMap = null;\n this.aoMapIntensity = 1;\n this.emissive = new Color(0);\n this.emissiveIntensity = 1;\n this.emissiveMap = null;\n this.bumpMap = null;\n this.bumpScale = 1;\n this.normalMap = null;\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.alphaMap = null;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.wireframeLinecap = \"round\";\n this.wireframeLinejoin = \"round\";\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.map = source.map;\n this.gradientMap = source.gradientMap;\n this.lightMap = source.lightMap;\n this.lightMapIntensity = source.lightMapIntensity;\n this.aoMap = source.aoMap;\n this.aoMapIntensity = source.aoMapIntensity;\n this.emissive.copy(source.emissive);\n this.emissiveMap = source.emissiveMap;\n this.emissiveIntensity = source.emissiveIntensity;\n this.bumpMap = source.bumpMap;\n this.bumpScale = source.bumpScale;\n this.normalMap = source.normalMap;\n this.normalMapType = source.normalMapType;\n this.normalScale.copy(source.normalScale);\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.alphaMap = source.alphaMap;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.wireframeLinecap = source.wireframeLinecap;\n this.wireframeLinejoin = source.wireframeLinejoin;\n return this;\n }\n}\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\nclass MeshNormalMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"MeshNormalMaterial\";\n this.bumpMap = null;\n this.bumpScale = 1;\n this.normalMap = null;\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.fog = false;\n this.flatShading = false;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.bumpMap = source.bumpMap;\n this.bumpScale = source.bumpScale;\n this.normalMap = source.normalMap;\n this.normalMapType = source.normalMapType;\n this.normalScale.copy(source.normalScale);\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.flatShading = source.flatShading;\n return this;\n }\n}\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\nclass MeshLambertMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"MeshLambertMaterial\";\n this.color = new Color(16777215);\n this.map = null;\n this.lightMap = null;\n this.lightMapIntensity = 1;\n this.aoMap = null;\n this.aoMapIntensity = 1;\n this.emissive = new Color(0);\n this.emissiveIntensity = 1;\n this.emissiveMap = null;\n this.specularMap = null;\n this.alphaMap = null;\n this.envMap = null;\n this.combine = MultiplyOperation;\n this.reflectivity = 1;\n this.refractionRatio = 0.98;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.wireframeLinecap = \"round\";\n this.wireframeLinejoin = \"round\";\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.map = source.map;\n this.lightMap = source.lightMap;\n this.lightMapIntensity = source.lightMapIntensity;\n this.aoMap = source.aoMap;\n this.aoMapIntensity = source.aoMapIntensity;\n this.emissive.copy(source.emissive);\n this.emissiveMap = source.emissiveMap;\n this.emissiveIntensity = source.emissiveIntensity;\n this.specularMap = source.specularMap;\n this.alphaMap = source.alphaMap;\n this.envMap = source.envMap;\n this.combine = source.combine;\n this.reflectivity = source.reflectivity;\n this.refractionRatio = source.refractionRatio;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.wireframeLinecap = source.wireframeLinecap;\n this.wireframeLinejoin = source.wireframeLinejoin;\n return this;\n }\n}\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\nclass MeshMatcapMaterial extends Material {\n constructor(parameters) {\n super();\n this.defines = {MATCAP: \"\"};\n this.type = \"MeshMatcapMaterial\";\n this.color = new Color(16777215);\n this.matcap = null;\n this.map = null;\n this.bumpMap = null;\n this.bumpScale = 1;\n this.normalMap = null;\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.alphaMap = null;\n this.flatShading = false;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.defines = {MATCAP: \"\"};\n this.color.copy(source.color);\n this.matcap = source.matcap;\n this.map = source.map;\n this.bumpMap = source.bumpMap;\n this.bumpScale = source.bumpScale;\n this.normalMap = source.normalMap;\n this.normalMapType = source.normalMapType;\n this.normalScale.copy(source.normalScale);\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.alphaMap = source.alphaMap;\n this.flatShading = source.flatShading;\n return this;\n }\n}\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\nclass LineDashedMaterial extends LineBasicMaterial {\n constructor(parameters) {\n super();\n this.type = \"LineDashedMaterial\";\n this.scale = 1;\n this.dashSize = 3;\n this.gapSize = 1;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.scale = source.scale;\n this.dashSize = source.dashSize;\n this.gapSize = source.gapSize;\n return this;\n }\n}\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\nvar Materials = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n ShadowMaterial,\n SpriteMaterial,\n RawShaderMaterial,\n ShaderMaterial,\n PointsMaterial,\n MeshPhysicalMaterial,\n MeshStandardMaterial,\n MeshPhongMaterial,\n MeshToonMaterial,\n MeshNormalMaterial,\n MeshLambertMaterial,\n MeshDepthMaterial,\n MeshDistanceMaterial,\n MeshBasicMaterial,\n MeshMatcapMaterial,\n LineDashedMaterial,\n LineBasicMaterial,\n Material\n});\nconst AnimationUtils = {\n arraySlice: function(array, from, to) {\n if (AnimationUtils.isTypedArray(array)) {\n return new array.constructor(array.subarray(from, to !== void 0 ? to : array.length));\n }\n return array.slice(from, to);\n },\n convertArray: function(array, type, forceClone) {\n if (!array || !forceClone && array.constructor === type)\n return array;\n if (typeof type.BYTES_PER_ELEMENT === \"number\") {\n return new type(array);\n }\n return Array.prototype.slice.call(array);\n },\n isTypedArray: function(object) {\n return ArrayBuffer.isView(object) && !(object instanceof DataView);\n },\n getKeyframeOrder: function(times) {\n function compareTime(i, j) {\n return times[i] - times[j];\n }\n const n = times.length;\n const result = new Array(n);\n for (let i = 0; i !== n; ++i)\n result[i] = i;\n result.sort(compareTime);\n return result;\n },\n sortedArray: function(values, stride, order) {\n const nValues = values.length;\n const result = new values.constructor(nValues);\n for (let i = 0, dstOffset = 0; dstOffset !== nValues; ++i) {\n const srcOffset = order[i] * stride;\n for (let j = 0; j !== stride; ++j) {\n result[dstOffset++] = values[srcOffset + j];\n }\n }\n return result;\n },\n flattenJSON: function(jsonKeys, times, values, valuePropertyName) {\n let i = 1, key = jsonKeys[0];\n while (key !== void 0 && key[valuePropertyName] === void 0) {\n key = jsonKeys[i++];\n }\n if (key === void 0)\n return;\n let value = key[valuePropertyName];\n if (value === void 0)\n return;\n if (Array.isArray(value)) {\n do {\n value = key[valuePropertyName];\n if (value !== void 0) {\n times.push(key.time);\n values.push.apply(values, value);\n }\n key = jsonKeys[i++];\n } while (key !== void 0);\n } else if (value.toArray !== void 0) {\n do {\n value = key[valuePropertyName];\n if (value !== void 0) {\n times.push(key.time);\n value.toArray(values, values.length);\n }\n key = jsonKeys[i++];\n } while (key !== void 0);\n } else {\n do {\n value = key[valuePropertyName];\n if (value !== void 0) {\n times.push(key.time);\n values.push(value);\n }\n key = jsonKeys[i++];\n } while (key !== void 0);\n }\n },\n subclip: function(sourceClip, name, startFrame, endFrame, fps = 30) {\n const clip = sourceClip.clone();\n clip.name = name;\n const tracks = [];\n for (let i = 0; i < clip.tracks.length; ++i) {\n const track = clip.tracks[i];\n const valueSize = track.getValueSize();\n const times = [];\n const values = [];\n for (let j = 0; j < track.times.length; ++j) {\n const frame = track.times[j] * fps;\n if (frame < startFrame || frame >= endFrame)\n continue;\n times.push(track.times[j]);\n for (let k = 0; k < valueSize; ++k) {\n values.push(track.values[j * valueSize + k]);\n }\n }\n if (times.length === 0)\n continue;\n track.times = AnimationUtils.convertArray(times, track.times.constructor);\n track.values = AnimationUtils.convertArray(values, track.values.constructor);\n tracks.push(track);\n }\n clip.tracks = tracks;\n let minStartTime = Infinity;\n for (let i = 0; i < clip.tracks.length; ++i) {\n if (minStartTime > clip.tracks[i].times[0]) {\n minStartTime = clip.tracks[i].times[0];\n }\n }\n for (let i = 0; i < clip.tracks.length; ++i) {\n clip.tracks[i].shift(-1 * minStartTime);\n }\n clip.resetDuration();\n return clip;\n },\n makeClipAdditive: function(targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30) {\n if (fps <= 0)\n fps = 30;\n const numTracks = referenceClip.tracks.length;\n const referenceTime = referenceFrame / fps;\n for (let i = 0; i < numTracks; ++i) {\n const referenceTrack = referenceClip.tracks[i];\n const referenceTrackType = referenceTrack.ValueTypeName;\n if (referenceTrackType === \"bool\" || referenceTrackType === \"string\")\n continue;\n const targetTrack = targetClip.tracks.find(function(track) {\n return track.name === referenceTrack.name && track.ValueTypeName === referenceTrackType;\n });\n if (targetTrack === void 0)\n continue;\n let referenceOffset = 0;\n const referenceValueSize = referenceTrack.getValueSize();\n if (referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n referenceOffset = referenceValueSize / 3;\n }\n let targetOffset = 0;\n const targetValueSize = targetTrack.getValueSize();\n if (targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n targetOffset = targetValueSize / 3;\n }\n const lastIndex = referenceTrack.times.length - 1;\n let referenceValue;\n if (referenceTime <= referenceTrack.times[0]) {\n const startIndex = referenceOffset;\n const endIndex = referenceValueSize - referenceOffset;\n referenceValue = AnimationUtils.arraySlice(referenceTrack.values, startIndex, endIndex);\n } else if (referenceTime >= referenceTrack.times[lastIndex]) {\n const startIndex = lastIndex * referenceValueSize + referenceOffset;\n const endIndex = startIndex + referenceValueSize - referenceOffset;\n referenceValue = AnimationUtils.arraySlice(referenceTrack.values, startIndex, endIndex);\n } else {\n const interpolant = referenceTrack.createInterpolant();\n const startIndex = referenceOffset;\n const endIndex = referenceValueSize - referenceOffset;\n interpolant.evaluate(referenceTime);\n referenceValue = AnimationUtils.arraySlice(interpolant.resultBuffer, startIndex, endIndex);\n }\n if (referenceTrackType === \"quaternion\") {\n const referenceQuat = new Quaternion().fromArray(referenceValue).normalize().conjugate();\n referenceQuat.toArray(referenceValue);\n }\n const numTimes = targetTrack.times.length;\n for (let j = 0; j < numTimes; ++j) {\n const valueStart = j * targetValueSize + targetOffset;\n if (referenceTrackType === \"quaternion\") {\n Quaternion.multiplyQuaternionsFlat(targetTrack.values, valueStart, referenceValue, 0, targetTrack.values, valueStart);\n } else {\n const valueEnd = targetValueSize - targetOffset * 2;\n for (let k = 0; k < valueEnd; ++k) {\n targetTrack.values[valueStart + k] -= referenceValue[k];\n }\n }\n }\n }\n targetClip.blendMode = AdditiveAnimationBlendMode;\n return targetClip;\n }\n};\nclass Interpolant {\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n this.parameterPositions = parameterPositions;\n this._cachedIndex = 0;\n this.resultBuffer = resultBuffer !== void 0 ? resultBuffer : new sampleValues.constructor(sampleSize);\n this.sampleValues = sampleValues;\n this.valueSize = sampleSize;\n this.settings = null;\n this.DefaultSettings_ = {};\n }\n evaluate(t) {\n const pp = this.parameterPositions;\n let i1 = this._cachedIndex, t1 = pp[i1], t0 = pp[i1 - 1];\n validate_interval: {\n seek: {\n let right;\n linear_scan: {\n forward_scan:\n if (!(t < t1)) {\n for (let giveUpAt = i1 + 2; ; ) {\n if (t1 === void 0) {\n if (t < t0)\n break forward_scan;\n i1 = pp.length;\n this._cachedIndex = i1;\n return this.afterEnd_(i1 - 1, t, t0);\n }\n if (i1 === giveUpAt)\n break;\n t0 = t1;\n t1 = pp[++i1];\n if (t < t1) {\n break seek;\n }\n }\n right = pp.length;\n break linear_scan;\n }\n if (!(t >= t0)) {\n const t1global = pp[1];\n if (t < t1global) {\n i1 = 2;\n t0 = t1global;\n }\n for (let giveUpAt = i1 - 2; ; ) {\n if (t0 === void 0) {\n this._cachedIndex = 0;\n return this.beforeStart_(0, t, t1);\n }\n if (i1 === giveUpAt)\n break;\n t1 = t0;\n t0 = pp[--i1 - 1];\n if (t >= t0) {\n break seek;\n }\n }\n right = i1;\n i1 = 0;\n break linear_scan;\n }\n break validate_interval;\n }\n while (i1 < right) {\n const mid = i1 + right >>> 1;\n if (t < pp[mid]) {\n right = mid;\n } else {\n i1 = mid + 1;\n }\n }\n t1 = pp[i1];\n t0 = pp[i1 - 1];\n if (t0 === void 0) {\n this._cachedIndex = 0;\n return this.beforeStart_(0, t, t1);\n }\n if (t1 === void 0) {\n i1 = pp.length;\n this._cachedIndex = i1;\n return this.afterEnd_(i1 - 1, t0, t);\n }\n }\n this._cachedIndex = i1;\n this.intervalChanged_(i1, t0, t1);\n }\n return this.interpolate_(i1, t0, t, t1);\n }\n getSettings_() {\n return this.settings || this.DefaultSettings_;\n }\n copySampleValue_(index) {\n const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset = index * stride;\n for (let i = 0; i !== stride; ++i) {\n result[i] = values[offset + i];\n }\n return result;\n }\n interpolate_() {\n throw new Error(\"call to abstract method\");\n }\n intervalChanged_() {\n }\n}\nInterpolant.prototype.beforeStart_ = Interpolant.prototype.copySampleValue_;\nInterpolant.prototype.afterEnd_ = Interpolant.prototype.copySampleValue_;\nclass CubicInterpolant extends Interpolant {\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n this._weightPrev = -0;\n this._offsetPrev = -0;\n this._weightNext = -0;\n this._offsetNext = -0;\n this.DefaultSettings_ = {\n endingStart: ZeroCurvatureEnding,\n endingEnd: ZeroCurvatureEnding\n };\n }\n intervalChanged_(i1, t0, t1) {\n const pp = this.parameterPositions;\n let iPrev = i1 - 2, iNext = i1 + 1, tPrev = pp[iPrev], tNext = pp[iNext];\n if (tPrev === void 0) {\n switch (this.getSettings_().endingStart) {\n case ZeroSlopeEnding:\n iPrev = i1;\n tPrev = 2 * t0 - t1;\n break;\n case WrapAroundEnding:\n iPrev = pp.length - 2;\n tPrev = t0 + pp[iPrev] - pp[iPrev + 1];\n break;\n default:\n iPrev = i1;\n tPrev = t1;\n }\n }\n if (tNext === void 0) {\n switch (this.getSettings_().endingEnd) {\n case ZeroSlopeEnding:\n iNext = i1;\n tNext = 2 * t1 - t0;\n break;\n case WrapAroundEnding:\n iNext = 1;\n tNext = t1 + pp[1] - pp[0];\n break;\n default:\n iNext = i1 - 1;\n tNext = t0;\n }\n }\n const halfDt = (t1 - t0) * 0.5, stride = this.valueSize;\n this._weightPrev = halfDt / (t0 - tPrev);\n this._weightNext = halfDt / (tNext - t1);\n this._offsetPrev = iPrev * stride;\n this._offsetNext = iNext * stride;\n }\n interpolate_(i1, t0, t, t1) {\n const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, o1 = i1 * stride, o0 = o1 - stride, oP = this._offsetPrev, oN = this._offsetNext, wP = this._weightPrev, wN = this._weightNext, p = (t - t0) / (t1 - t0), pp = p * p, ppp = pp * p;\n const sP = -wP * ppp + 2 * wP * pp - wP * p;\n const s0 = (1 + wP) * ppp + (-1.5 - 2 * wP) * pp + (-0.5 + wP) * p + 1;\n const s1 = (-1 - wN) * ppp + (1.5 + wN) * pp + 0.5 * p;\n const sN = wN * ppp - wN * pp;\n for (let i = 0; i !== stride; ++i) {\n result[i] = sP * values[oP + i] + s0 * values[o0 + i] + s1 * values[o1 + i] + sN * values[oN + i];\n }\n return result;\n }\n}\nclass LinearInterpolant extends Interpolant {\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n }\n interpolate_(i1, t0, t, t1) {\n const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset1 = i1 * stride, offset0 = offset1 - stride, weight1 = (t - t0) / (t1 - t0), weight0 = 1 - weight1;\n for (let i = 0; i !== stride; ++i) {\n result[i] = values[offset0 + i] * weight0 + values[offset1 + i] * weight1;\n }\n return result;\n }\n}\nclass DiscreteInterpolant extends Interpolant {\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n }\n interpolate_(i1) {\n return this.copySampleValue_(i1 - 1);\n }\n}\nclass KeyframeTrack {\n constructor(name, times, values, interpolation) {\n if (name === void 0)\n throw new Error(\"THREE.KeyframeTrack: track name is undefined\");\n if (times === void 0 || times.length === 0)\n throw new Error(\"THREE.KeyframeTrack: no keyframes in track named \" + name);\n this.name = name;\n this.times = AnimationUtils.convertArray(times, this.TimeBufferType);\n this.values = AnimationUtils.convertArray(values, this.ValueBufferType);\n this.setInterpolation(interpolation || this.DefaultInterpolation);\n }\n static toJSON(track) {\n const trackType = track.constructor;\n let json;\n if (trackType.toJSON !== this.toJSON) {\n json = trackType.toJSON(track);\n } else {\n json = {\n name: track.name,\n times: AnimationUtils.convertArray(track.times, Array),\n values: AnimationUtils.convertArray(track.values, Array)\n };\n const interpolation = track.getInterpolation();\n if (interpolation !== track.DefaultInterpolation) {\n json.interpolation = interpolation;\n }\n }\n json.type = track.ValueTypeName;\n return json;\n }\n InterpolantFactoryMethodDiscrete(result) {\n return new DiscreteInterpolant(this.times, this.values, this.getValueSize(), result);\n }\n InterpolantFactoryMethodLinear(result) {\n return new LinearInterpolant(this.times, this.values, this.getValueSize(), result);\n }\n InterpolantFactoryMethodSmooth(result) {\n return new CubicInterpolant(this.times, this.values, this.getValueSize(), result);\n }\n setInterpolation(interpolation) {\n let factoryMethod;\n switch (interpolation) {\n case InterpolateDiscrete:\n factoryMethod = this.InterpolantFactoryMethodDiscrete;\n break;\n case InterpolateLinear:\n factoryMethod = this.InterpolantFactoryMethodLinear;\n break;\n case InterpolateSmooth:\n factoryMethod = this.InterpolantFactoryMethodSmooth;\n break;\n }\n if (factoryMethod === void 0) {\n const message = \"unsupported interpolation for \" + this.ValueTypeName + \" keyframe track named \" + this.name;\n if (this.createInterpolant === void 0) {\n if (interpolation !== this.DefaultInterpolation) {\n this.setInterpolation(this.DefaultInterpolation);\n } else {\n throw new Error(message);\n }\n }\n console.warn(\"THREE.KeyframeTrack:\", message);\n return this;\n }\n this.createInterpolant = factoryMethod;\n return this;\n }\n getInterpolation() {\n switch (this.createInterpolant) {\n case this.InterpolantFactoryMethodDiscrete:\n return InterpolateDiscrete;\n case this.InterpolantFactoryMethodLinear:\n return InterpolateLinear;\n case this.InterpolantFactoryMethodSmooth:\n return InterpolateSmooth;\n }\n }\n getValueSize() {\n return this.values.length / this.times.length;\n }\n shift(timeOffset) {\n if (timeOffset !== 0) {\n const times = this.times;\n for (let i = 0, n = times.length; i !== n; ++i) {\n times[i] += timeOffset;\n }\n }\n return this;\n }\n scale(timeScale) {\n if (timeScale !== 1) {\n const times = this.times;\n for (let i = 0, n = times.length; i !== n; ++i) {\n times[i] *= timeScale;\n }\n }\n return this;\n }\n trim(startTime, endTime) {\n const times = this.times, nKeys = times.length;\n let from = 0, to = nKeys - 1;\n while (from !== nKeys && times[from] < startTime) {\n ++from;\n }\n while (to !== -1 && times[to] > endTime) {\n --to;\n }\n ++to;\n if (from !== 0 || to !== nKeys) {\n if (from >= to) {\n to = Math.max(to, 1);\n from = to - 1;\n }\n const stride = this.getValueSize();\n this.times = AnimationUtils.arraySlice(times, from, to);\n this.values = AnimationUtils.arraySlice(this.values, from * stride, to * stride);\n }\n return this;\n }\n validate() {\n let valid = true;\n const valueSize = this.getValueSize();\n if (valueSize - Math.floor(valueSize) !== 0) {\n console.error(\"THREE.KeyframeTrack: Invalid value size in track.\", this);\n valid = false;\n }\n const times = this.times, values = this.values, nKeys = times.length;\n if (nKeys === 0) {\n console.error(\"THREE.KeyframeTrack: Track is empty.\", this);\n valid = false;\n }\n let prevTime = null;\n for (let i = 0; i !== nKeys; i++) {\n const currTime = times[i];\n if (typeof currTime === \"number\" && isNaN(currTime)) {\n console.error(\"THREE.KeyframeTrack: Time is not a valid number.\", this, i, currTime);\n valid = false;\n break;\n }\n if (prevTime !== null && prevTime > currTime) {\n console.error(\"THREE.KeyframeTrack: Out of order keys.\", this, i, currTime, prevTime);\n valid = false;\n break;\n }\n prevTime = currTime;\n }\n if (values !== void 0) {\n if (AnimationUtils.isTypedArray(values)) {\n for (let i = 0, n = values.length; i !== n; ++i) {\n const value = values[i];\n if (isNaN(value)) {\n console.error(\"THREE.KeyframeTrack: Value is not a valid number.\", this, i, value);\n valid = false;\n break;\n }\n }\n }\n }\n return valid;\n }\n optimize() {\n const times = AnimationUtils.arraySlice(this.times), values = AnimationUtils.arraySlice(this.values), stride = this.getValueSize(), smoothInterpolation = this.getInterpolation() === InterpolateSmooth, lastIndex = times.length - 1;\n let writeIndex = 1;\n for (let i = 1; i < lastIndex; ++i) {\n let keep = false;\n const time = times[i];\n const timeNext = times[i + 1];\n if (time !== timeNext && (i !== 1 || time !== times[0])) {\n if (!smoothInterpolation) {\n const offset = i * stride, offsetP = offset - stride, offsetN = offset + stride;\n for (let j = 0; j !== stride; ++j) {\n const value = values[offset + j];\n if (value !== values[offsetP + j] || value !== values[offsetN + j]) {\n keep = true;\n break;\n }\n }\n } else {\n keep = true;\n }\n }\n if (keep) {\n if (i !== writeIndex) {\n times[writeIndex] = times[i];\n const readOffset = i * stride, writeOffset = writeIndex * stride;\n for (let j = 0; j !== stride; ++j) {\n values[writeOffset + j] = values[readOffset + j];\n }\n }\n ++writeIndex;\n }\n }\n if (lastIndex > 0) {\n times[writeIndex] = times[lastIndex];\n for (let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++j) {\n values[writeOffset + j] = values[readOffset + j];\n }\n ++writeIndex;\n }\n if (writeIndex !== times.length) {\n this.times = AnimationUtils.arraySlice(times, 0, writeIndex);\n this.values = AnimationUtils.arraySlice(values, 0, writeIndex * stride);\n } else {\n this.times = times;\n this.values = values;\n }\n return this;\n }\n clone() {\n const times = AnimationUtils.arraySlice(this.times, 0);\n const values = AnimationUtils.arraySlice(this.values, 0);\n const TypedKeyframeTrack = this.constructor;\n const track = new TypedKeyframeTrack(this.name, times, values);\n track.createInterpolant = this.createInterpolant;\n return track;\n }\n}\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nclass BooleanKeyframeTrack extends KeyframeTrack {\n}\nBooleanKeyframeTrack.prototype.ValueTypeName = \"bool\";\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nclass ColorKeyframeTrack extends KeyframeTrack {\n}\nColorKeyframeTrack.prototype.ValueTypeName = \"color\";\nclass NumberKeyframeTrack extends KeyframeTrack {\n}\nNumberKeyframeTrack.prototype.ValueTypeName = \"number\";\nclass QuaternionLinearInterpolant extends Interpolant {\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n }\n interpolate_(i1, t0, t, t1) {\n const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, alpha = (t - t0) / (t1 - t0);\n let offset = i1 * stride;\n for (let end = offset + stride; offset !== end; offset += 4) {\n Quaternion.slerpFlat(result, 0, values, offset - stride, values, offset, alpha);\n }\n return result;\n }\n}\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n InterpolantFactoryMethodLinear(result) {\n return new QuaternionLinearInterpolant(this.times, this.values, this.getValueSize(), result);\n }\n}\nQuaternionKeyframeTrack.prototype.ValueTypeName = \"quaternion\";\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nclass StringKeyframeTrack extends KeyframeTrack {\n}\nStringKeyframeTrack.prototype.ValueTypeName = \"string\";\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nclass VectorKeyframeTrack extends KeyframeTrack {\n}\nVectorKeyframeTrack.prototype.ValueTypeName = \"vector\";\nclass AnimationClip {\n constructor(name, duration = -1, tracks, blendMode = NormalAnimationBlendMode) {\n this.name = name;\n this.tracks = tracks;\n this.duration = duration;\n this.blendMode = blendMode;\n this.uuid = generateUUID();\n if (this.duration < 0) {\n this.resetDuration();\n }\n }\n static parse(json) {\n const tracks = [], jsonTracks = json.tracks, frameTime = 1 / (json.fps || 1);\n for (let i = 0, n = jsonTracks.length; i !== n; ++i) {\n tracks.push(parseKeyframeTrack(jsonTracks[i]).scale(frameTime));\n }\n const clip = new this(json.name, json.duration, tracks, json.blendMode);\n clip.uuid = json.uuid;\n return clip;\n }\n static toJSON(clip) {\n const tracks = [], clipTracks = clip.tracks;\n const json = {\n name: clip.name,\n duration: clip.duration,\n tracks,\n uuid: clip.uuid,\n blendMode: clip.blendMode\n };\n for (let i = 0, n = clipTracks.length; i !== n; ++i) {\n tracks.push(KeyframeTrack.toJSON(clipTracks[i]));\n }\n return json;\n }\n static CreateFromMorphTargetSequence(name, morphTargetSequence, fps, noLoop) {\n const numMorphTargets = morphTargetSequence.length;\n const tracks = [];\n for (let i = 0; i < numMorphTargets; i++) {\n let times = [];\n let values = [];\n times.push((i + numMorphTargets - 1) % numMorphTargets, i, (i + 1) % numMorphTargets);\n values.push(0, 1, 0);\n const order = AnimationUtils.getKeyframeOrder(times);\n times = AnimationUtils.sortedArray(times, 1, order);\n values = AnimationUtils.sortedArray(values, 1, order);\n if (!noLoop && times[0] === 0) {\n times.push(numMorphTargets);\n values.push(values[0]);\n }\n tracks.push(new NumberKeyframeTrack(\".morphTargetInfluences[\" + morphTargetSequence[i].name + \"]\", times, values).scale(1 / fps));\n }\n return new this(name, -1, tracks);\n }\n static findByName(objectOrClipArray, name) {\n let clipArray = objectOrClipArray;\n if (!Array.isArray(objectOrClipArray)) {\n const o = objectOrClipArray;\n clipArray = o.geometry && o.geometry.animations || o.animations;\n }\n for (let i = 0; i < clipArray.length; i++) {\n if (clipArray[i].name === name) {\n return clipArray[i];\n }\n }\n return null;\n }\n static CreateClipsFromMorphTargetSequences(morphTargets, fps, noLoop) {\n const animationToMorphTargets = {};\n const pattern = /^([\\w-]*?)([\\d]+)$/;\n for (let i = 0, il = morphTargets.length; i < il; i++) {\n const morphTarget = morphTargets[i];\n const parts = morphTarget.name.match(pattern);\n if (parts && parts.length > 1) {\n const name = parts[1];\n let animationMorphTargets = animationToMorphTargets[name];\n if (!animationMorphTargets) {\n animationToMorphTargets[name] = animationMorphTargets = [];\n }\n animationMorphTargets.push(morphTarget);\n }\n }\n const clips = [];\n for (const name in animationToMorphTargets) {\n clips.push(this.CreateFromMorphTargetSequence(name, animationToMorphTargets[name], fps, noLoop));\n }\n return clips;\n }\n static parseAnimation(animation, bones) {\n if (!animation) {\n console.error(\"THREE.AnimationClip: No animation in JSONLoader data.\");\n return null;\n }\n const addNonemptyTrack = function(trackType, trackName, animationKeys, propertyName, destTracks) {\n if (animationKeys.length !== 0) {\n const times = [];\n const values = [];\n AnimationUtils.flattenJSON(animationKeys, times, values, propertyName);\n if (times.length !== 0) {\n destTracks.push(new trackType(trackName, times, values));\n }\n }\n };\n const tracks = [];\n const clipName = animation.name || \"default\";\n const fps = animation.fps || 30;\n const blendMode = animation.blendMode;\n let duration = animation.length || -1;\n const hierarchyTracks = animation.hierarchy || [];\n for (let h = 0; h < hierarchyTracks.length; h++) {\n const animationKeys = hierarchyTracks[h].keys;\n if (!animationKeys || animationKeys.length === 0)\n continue;\n if (animationKeys[0].morphTargets) {\n const morphTargetNames = {};\n let k;\n for (k = 0; k < animationKeys.length; k++) {\n if (animationKeys[k].morphTargets) {\n for (let m = 0; m < animationKeys[k].morphTargets.length; m++) {\n morphTargetNames[animationKeys[k].morphTargets[m]] = -1;\n }\n }\n }\n for (const morphTargetName in morphTargetNames) {\n const times = [];\n const values = [];\n for (let m = 0; m !== animationKeys[k].morphTargets.length; ++m) {\n const animationKey = animationKeys[k];\n times.push(animationKey.time);\n values.push(animationKey.morphTarget === morphTargetName ? 1 : 0);\n }\n tracks.push(new NumberKeyframeTrack(\".morphTargetInfluence[\" + morphTargetName + \"]\", times, values));\n }\n duration = morphTargetNames.length * (fps || 1);\n } else {\n const boneName = \".bones[\" + bones[h].name + \"]\";\n addNonemptyTrack(VectorKeyframeTrack, boneName + \".position\", animationKeys, \"pos\", tracks);\n addNonemptyTrack(QuaternionKeyframeTrack, boneName + \".quaternion\", animationKeys, \"rot\", tracks);\n addNonemptyTrack(VectorKeyframeTrack, boneName + \".scale\", animationKeys, \"scl\", tracks);\n }\n }\n if (tracks.length === 0) {\n return null;\n }\n const clip = new this(clipName, duration, tracks, blendMode);\n return clip;\n }\n resetDuration() {\n const tracks = this.tracks;\n let duration = 0;\n for (let i = 0, n = tracks.length; i !== n; ++i) {\n const track = this.tracks[i];\n duration = Math.max(duration, track.times[track.times.length - 1]);\n }\n this.duration = duration;\n return this;\n }\n trim() {\n for (let i = 0; i < this.tracks.length; i++) {\n this.tracks[i].trim(0, this.duration);\n }\n return this;\n }\n validate() {\n let valid = true;\n for (let i = 0; i < this.tracks.length; i++) {\n valid = valid && this.tracks[i].validate();\n }\n return valid;\n }\n optimize() {\n for (let i = 0; i < this.tracks.length; i++) {\n this.tracks[i].optimize();\n }\n return this;\n }\n clone() {\n const tracks = [];\n for (let i = 0; i < this.tracks.length; i++) {\n tracks.push(this.tracks[i].clone());\n }\n return new this.constructor(this.name, this.duration, tracks, this.blendMode);\n }\n toJSON() {\n return this.constructor.toJSON(this);\n }\n}\nfunction getTrackTypeForValueTypeName(typeName) {\n switch (typeName.toLowerCase()) {\n case \"scalar\":\n case \"double\":\n case \"float\":\n case \"number\":\n case \"integer\":\n return NumberKeyframeTrack;\n case \"vector\":\n case \"vector2\":\n case \"vector3\":\n case \"vector4\":\n return VectorKeyframeTrack;\n case \"color\":\n return ColorKeyframeTrack;\n case \"quaternion\":\n return QuaternionKeyframeTrack;\n case \"bool\":\n case \"boolean\":\n return BooleanKeyframeTrack;\n case \"string\":\n return StringKeyframeTrack;\n }\n throw new Error(\"THREE.KeyframeTrack: Unsupported typeName: \" + typeName);\n}\nfunction parseKeyframeTrack(json) {\n if (json.type === void 0) {\n throw new Error(\"THREE.KeyframeTrack: track type undefined, can not parse\");\n }\n const trackType = getTrackTypeForValueTypeName(json.type);\n if (json.times === void 0) {\n const times = [], values = [];\n AnimationUtils.flattenJSON(json.keys, times, values, \"value\");\n json.times = times;\n json.values = values;\n }\n if (trackType.parse !== void 0) {\n return trackType.parse(json);\n } else {\n return new trackType(json.name, json.times, json.values, json.interpolation);\n }\n}\nconst Cache = {\n enabled: false,\n files: {},\n add: function(key, file) {\n if (this.enabled === false)\n return;\n this.files[key] = file;\n },\n get: function(key) {\n if (this.enabled === false)\n return;\n return this.files[key];\n },\n remove: function(key) {\n delete this.files[key];\n },\n clear: function() {\n this.files = {};\n }\n};\nclass LoadingManager {\n constructor(onLoad, onProgress, onError) {\n const scope = this;\n let isLoading = false;\n let itemsLoaded = 0;\n let itemsTotal = 0;\n let urlModifier = void 0;\n const handlers = [];\n this.onStart = void 0;\n this.onLoad = onLoad;\n this.onProgress = onProgress;\n this.onError = onError;\n this.itemStart = function(url) {\n itemsTotal++;\n if (isLoading === false) {\n if (scope.onStart !== void 0) {\n scope.onStart(url, itemsLoaded, itemsTotal);\n }\n }\n isLoading = true;\n };\n this.itemEnd = function(url) {\n itemsLoaded++;\n if (scope.onProgress !== void 0) {\n scope.onProgress(url, itemsLoaded, itemsTotal);\n }\n if (itemsLoaded === itemsTotal) {\n isLoading = false;\n if (scope.onLoad !== void 0) {\n scope.onLoad();\n }\n }\n };\n this.itemError = function(url) {\n if (scope.onError !== void 0) {\n scope.onError(url);\n }\n };\n this.resolveURL = function(url) {\n if (urlModifier) {\n return urlModifier(url);\n }\n return url;\n };\n this.setURLModifier = function(transform) {\n urlModifier = transform;\n return this;\n };\n this.addHandler = function(regex, loader) {\n handlers.push(regex, loader);\n return this;\n };\n this.removeHandler = function(regex) {\n const index = handlers.indexOf(regex);\n if (index !== -1) {\n handlers.splice(index, 2);\n }\n return this;\n };\n this.getHandler = function(file) {\n for (let i = 0, l = handlers.length; i < l; i += 2) {\n const regex = handlers[i];\n const loader = handlers[i + 1];\n if (regex.global)\n regex.lastIndex = 0;\n if (regex.test(file)) {\n return loader;\n }\n }\n return null;\n };\n }\n}\nconst DefaultLoadingManager = new LoadingManager();\nclass Loader {\n constructor(manager) {\n this.manager = manager !== void 0 ? manager : DefaultLoadingManager;\n this.crossOrigin = \"anonymous\";\n this.withCredentials = false;\n this.path = \"\";\n this.resourcePath = \"\";\n this.requestHeader = {};\n }\n load() {\n }\n loadAsync(url, onProgress) {\n const scope = this;\n return new Promise(function(resolve, reject) {\n scope.load(url, resolve, onProgress, reject);\n });\n }\n parse() {\n }\n setCrossOrigin(crossOrigin) {\n this.crossOrigin = crossOrigin;\n return this;\n }\n setWithCredentials(value) {\n this.withCredentials = value;\n return this;\n }\n setPath(path) {\n this.path = path;\n return this;\n }\n setResourcePath(resourcePath) {\n this.resourcePath = resourcePath;\n return this;\n }\n setRequestHeader(requestHeader) {\n this.requestHeader = requestHeader;\n return this;\n }\n}\nconst loading = {};\nclass FileLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n if (url === void 0)\n url = \"\";\n if (this.path !== void 0)\n url = this.path + url;\n url = this.manager.resolveURL(url);\n const cached = Cache.get(url);\n if (cached !== void 0) {\n this.manager.itemStart(url);\n setTimeout(() => {\n if (onLoad)\n onLoad(cached);\n this.manager.itemEnd(url);\n }, 0);\n return cached;\n }\n if (loading[url] !== void 0) {\n loading[url].push({\n onLoad,\n onProgress,\n onError\n });\n return;\n }\n loading[url] = [];\n loading[url].push({\n onLoad,\n onProgress,\n onError\n });\n const req = new Request(url, {\n headers: new Headers(this.requestHeader),\n credentials: this.withCredentials ? \"include\" : \"same-origin\"\n });\n fetch(req).then((response) => {\n if (response.status === 200 || response.status === 0) {\n if (response.status === 0) {\n console.warn(\"THREE.FileLoader: HTTP Status 0 received.\");\n }\n const callbacks = loading[url];\n const reader = response.body.getReader();\n const contentLength = response.headers.get(\"Content-Length\");\n const total = contentLength ? parseInt(contentLength) : 0;\n const lengthComputable = total !== 0;\n let loaded = 0;\n return new ReadableStream({\n start(controller) {\n readData();\n function readData() {\n reader.read().then(({done, value}) => {\n if (done) {\n controller.close();\n } else {\n loaded += value.byteLength;\n const event = new ProgressEvent(\"progress\", {lengthComputable, loaded, total});\n for (let i = 0, il = callbacks.length; i < il; i++) {\n const callback = callbacks[i];\n if (callback.onProgress)\n callback.onProgress(event);\n }\n controller.enqueue(value);\n readData();\n }\n });\n }\n }\n });\n } else {\n throw Error(`fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`);\n }\n }).then((stream) => {\n const response = new Response(stream);\n switch (this.responseType) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"document\":\n return response.text().then((text) => {\n const parser = new DOMParser();\n return parser.parseFromString(text, this.mimeType);\n });\n case \"json\":\n return response.json();\n default:\n return response.text();\n }\n }).then((data) => {\n Cache.add(url, data);\n const callbacks = loading[url];\n delete loading[url];\n for (let i = 0, il = callbacks.length; i < il; i++) {\n const callback = callbacks[i];\n if (callback.onLoad)\n callback.onLoad(data);\n }\n this.manager.itemEnd(url);\n }).catch((err) => {\n const callbacks = loading[url];\n delete loading[url];\n for (let i = 0, il = callbacks.length; i < il; i++) {\n const callback = callbacks[i];\n if (callback.onError)\n callback.onError(err);\n }\n this.manager.itemError(url);\n this.manager.itemEnd(url);\n });\n this.manager.itemStart(url);\n }\n setResponseType(value) {\n this.responseType = value;\n return this;\n }\n setMimeType(value) {\n this.mimeType = value;\n return this;\n }\n}\nclass AnimationLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\n loader.load(url, function(text) {\n try {\n onLoad(scope.parse(JSON.parse(text)));\n } catch (e) {\n if (onError) {\n onError(e);\n } else {\n console.error(e);\n }\n scope.manager.itemError(url);\n }\n }, onProgress, onError);\n }\n parse(json) {\n const animations = [];\n for (let i = 0; i < json.length; i++) {\n const clip = AnimationClip.parse(json[i]);\n animations.push(clip);\n }\n return animations;\n }\n}\nclass CompressedTextureLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const images = [];\n const texture = new CompressedTexture();\n const loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setResponseType(\"arraybuffer\");\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(scope.withCredentials);\n let loaded = 0;\n function loadTexture(i) {\n loader.load(url[i], function(buffer) {\n const texDatas = scope.parse(buffer, true);\n images[i] = {\n width: texDatas.width,\n height: texDatas.height,\n format: texDatas.format,\n mipmaps: texDatas.mipmaps\n };\n loaded += 1;\n if (loaded === 6) {\n if (texDatas.mipmapCount === 1)\n texture.minFilter = LinearFilter;\n texture.image = images;\n texture.format = texDatas.format;\n texture.needsUpdate = true;\n if (onLoad)\n onLoad(texture);\n }\n }, onProgress, onError);\n }\n if (Array.isArray(url)) {\n for (let i = 0, il = url.length; i < il; ++i) {\n loadTexture(i);\n }\n } else {\n loader.load(url, function(buffer) {\n const texDatas = scope.parse(buffer, true);\n if (texDatas.isCubemap) {\n const faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n for (let f = 0; f < faces; f++) {\n images[f] = {mipmaps: []};\n for (let i = 0; i < texDatas.mipmapCount; i++) {\n images[f].mipmaps.push(texDatas.mipmaps[f * texDatas.mipmapCount + i]);\n images[f].format = texDatas.format;\n images[f].width = texDatas.width;\n images[f].height = texDatas.height;\n }\n }\n texture.image = images;\n } else {\n texture.image.width = texDatas.width;\n texture.image.height = texDatas.height;\n texture.mipmaps = texDatas.mipmaps;\n }\n if (texDatas.mipmapCount === 1) {\n texture.minFilter = LinearFilter;\n }\n texture.format = texDatas.format;\n texture.needsUpdate = true;\n if (onLoad)\n onLoad(texture);\n }, onProgress, onError);\n }\n return texture;\n }\n}\nclass ImageLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n if (this.path !== void 0)\n url = this.path + url;\n url = this.manager.resolveURL(url);\n const scope = this;\n const cached = Cache.get(url);\n if (cached !== void 0) {\n scope.manager.itemStart(url);\n setTimeout(function() {\n if (onLoad)\n onLoad(cached);\n scope.manager.itemEnd(url);\n }, 0);\n return cached;\n }\n const image = createElementNS(\"img\");\n function onImageLoad() {\n removeEventListeners();\n Cache.add(url, this);\n if (onLoad)\n onLoad(this);\n scope.manager.itemEnd(url);\n }\n function onImageError(event) {\n removeEventListeners();\n if (onError)\n onError(event);\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n }\n function removeEventListeners() {\n image.removeEventListener(\"load\", onImageLoad, false);\n image.removeEventListener(\"error\", onImageError, false);\n }\n image.addEventListener(\"load\", onImageLoad, false);\n image.addEventListener(\"error\", onImageError, false);\n if (url.substr(0, 5) !== \"data:\") {\n if (this.crossOrigin !== void 0)\n image.crossOrigin = this.crossOrigin;\n }\n scope.manager.itemStart(url);\n image.src = url;\n return image;\n }\n}\nclass CubeTextureLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(urls, onLoad, onProgress, onError) {\n const texture = new CubeTexture();\n const loader = new ImageLoader(this.manager);\n loader.setCrossOrigin(this.crossOrigin);\n loader.setPath(this.path);\n let loaded = 0;\n function loadTexture(i) {\n loader.load(urls[i], function(image) {\n texture.images[i] = image;\n loaded++;\n if (loaded === 6) {\n texture.needsUpdate = true;\n if (onLoad)\n onLoad(texture);\n }\n }, void 0, onError);\n }\n for (let i = 0; i < urls.length; ++i) {\n loadTexture(i);\n }\n return texture;\n }\n}\nclass DataTextureLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const texture = new DataTexture();\n const loader = new FileLoader(this.manager);\n loader.setResponseType(\"arraybuffer\");\n loader.setRequestHeader(this.requestHeader);\n loader.setPath(this.path);\n loader.setWithCredentials(scope.withCredentials);\n loader.load(url, function(buffer) {\n const texData = scope.parse(buffer);\n if (!texData)\n return;\n if (texData.image !== void 0) {\n texture.image = texData.image;\n } else if (texData.data !== void 0) {\n texture.image.width = texData.width;\n texture.image.height = texData.height;\n texture.image.data = texData.data;\n }\n texture.wrapS = texData.wrapS !== void 0 ? texData.wrapS : ClampToEdgeWrapping;\n texture.wrapT = texData.wrapT !== void 0 ? texData.wrapT : ClampToEdgeWrapping;\n texture.magFilter = texData.magFilter !== void 0 ? texData.magFilter : LinearFilter;\n texture.minFilter = texData.minFilter !== void 0 ? texData.minFilter : LinearFilter;\n texture.anisotropy = texData.anisotropy !== void 0 ? texData.anisotropy : 1;\n if (texData.encoding !== void 0) {\n texture.encoding = texData.encoding;\n }\n if (texData.flipY !== void 0) {\n texture.flipY = texData.flipY;\n }\n if (texData.format !== void 0) {\n texture.format = texData.format;\n }\n if (texData.type !== void 0) {\n texture.type = texData.type;\n }\n if (texData.mipmaps !== void 0) {\n texture.mipmaps = texData.mipmaps;\n texture.minFilter = LinearMipmapLinearFilter;\n }\n if (texData.mipmapCount === 1) {\n texture.minFilter = LinearFilter;\n }\n if (texData.generateMipmaps !== void 0) {\n texture.generateMipmaps = texData.generateMipmaps;\n }\n texture.needsUpdate = true;\n if (onLoad)\n onLoad(texture, texData);\n }, onProgress, onError);\n return texture;\n }\n}\nclass TextureLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const texture = new Texture();\n const loader = new ImageLoader(this.manager);\n loader.setCrossOrigin(this.crossOrigin);\n loader.setPath(this.path);\n loader.load(url, function(image) {\n texture.image = image;\n texture.needsUpdate = true;\n if (onLoad !== void 0) {\n onLoad(texture);\n }\n }, onProgress, onError);\n return texture;\n }\n}\nclass Light extends Object3D {\n constructor(color, intensity = 1) {\n super();\n this.type = \"Light\";\n this.color = new Color(color);\n this.intensity = intensity;\n }\n dispose() {\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.intensity = source.intensity;\n return this;\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n data.object.color = this.color.getHex();\n data.object.intensity = this.intensity;\n if (this.groundColor !== void 0)\n data.object.groundColor = this.groundColor.getHex();\n if (this.distance !== void 0)\n data.object.distance = this.distance;\n if (this.angle !== void 0)\n data.object.angle = this.angle;\n if (this.decay !== void 0)\n data.object.decay = this.decay;\n if (this.penumbra !== void 0)\n data.object.penumbra = this.penumbra;\n if (this.shadow !== void 0)\n data.object.shadow = this.shadow.toJSON();\n return data;\n }\n}\nLight.prototype.isLight = true;\nclass HemisphereLight extends Light {\n constructor(skyColor, groundColor, intensity) {\n super(skyColor, intensity);\n this.type = \"HemisphereLight\";\n this.position.copy(Object3D.DefaultUp);\n this.updateMatrix();\n this.groundColor = new Color(groundColor);\n }\n copy(source) {\n Light.prototype.copy.call(this, source);\n this.groundColor.copy(source.groundColor);\n return this;\n }\n}\nHemisphereLight.prototype.isHemisphereLight = true;\nconst _projScreenMatrix$1 = /* @__PURE__ */ new Matrix4();\nconst _lightPositionWorld$1 = /* @__PURE__ */ new Vector3();\nconst _lookTarget$1 = /* @__PURE__ */ new Vector3();\nclass LightShadow {\n constructor(camera) {\n this.camera = camera;\n this.bias = 0;\n this.normalBias = 0;\n this.radius = 1;\n this.blurSamples = 8;\n this.mapSize = new Vector2(512, 512);\n this.map = null;\n this.mapPass = null;\n this.matrix = new Matrix4();\n this.autoUpdate = true;\n this.needsUpdate = false;\n this._frustum = new Frustum();\n this._frameExtents = new Vector2(1, 1);\n this._viewportCount = 1;\n this._viewports = [\n new Vector4(0, 0, 1, 1)\n ];\n }\n getViewportCount() {\n return this._viewportCount;\n }\n getFrustum() {\n return this._frustum;\n }\n updateMatrices(light) {\n const shadowCamera = this.camera;\n const shadowMatrix = this.matrix;\n _lightPositionWorld$1.setFromMatrixPosition(light.matrixWorld);\n shadowCamera.position.copy(_lightPositionWorld$1);\n _lookTarget$1.setFromMatrixPosition(light.target.matrixWorld);\n shadowCamera.lookAt(_lookTarget$1);\n shadowCamera.updateMatrixWorld();\n _projScreenMatrix$1.multiplyMatrices(shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse);\n this._frustum.setFromProjectionMatrix(_projScreenMatrix$1);\n shadowMatrix.set(0.5, 0, 0, 0.5, 0, 0.5, 0, 0.5, 0, 0, 0.5, 0.5, 0, 0, 0, 1);\n shadowMatrix.multiply(shadowCamera.projectionMatrix);\n shadowMatrix.multiply(shadowCamera.matrixWorldInverse);\n }\n getViewport(viewportIndex) {\n return this._viewports[viewportIndex];\n }\n getFrameExtents() {\n return this._frameExtents;\n }\n dispose() {\n if (this.map) {\n this.map.dispose();\n }\n if (this.mapPass) {\n this.mapPass.dispose();\n }\n }\n copy(source) {\n this.camera = source.camera.clone();\n this.bias = source.bias;\n this.radius = source.radius;\n this.mapSize.copy(source.mapSize);\n return this;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n toJSON() {\n const object = {};\n if (this.bias !== 0)\n object.bias = this.bias;\n if (this.normalBias !== 0)\n object.normalBias = this.normalBias;\n if (this.radius !== 1)\n object.radius = this.radius;\n if (this.mapSize.x !== 512 || this.mapSize.y !== 512)\n object.mapSize = this.mapSize.toArray();\n object.camera = this.camera.toJSON(false).object;\n delete object.camera.matrix;\n return object;\n }\n}\nclass SpotLightShadow extends LightShadow {\n constructor() {\n super(new PerspectiveCamera(50, 1, 0.5, 500));\n this.focus = 1;\n }\n updateMatrices(light) {\n const camera = this.camera;\n const fov2 = RAD2DEG * 2 * light.angle * this.focus;\n const aspect2 = this.mapSize.width / this.mapSize.height;\n const far = light.distance || camera.far;\n if (fov2 !== camera.fov || aspect2 !== camera.aspect || far !== camera.far) {\n camera.fov = fov2;\n camera.aspect = aspect2;\n camera.far = far;\n camera.updateProjectionMatrix();\n }\n super.updateMatrices(light);\n }\n copy(source) {\n super.copy(source);\n this.focus = source.focus;\n return this;\n }\n}\nSpotLightShadow.prototype.isSpotLightShadow = true;\nclass SpotLight extends Light {\n constructor(color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1) {\n super(color, intensity);\n this.type = \"SpotLight\";\n this.position.copy(Object3D.DefaultUp);\n this.updateMatrix();\n this.target = new Object3D();\n this.distance = distance;\n this.angle = angle;\n this.penumbra = penumbra;\n this.decay = decay;\n this.shadow = new SpotLightShadow();\n }\n get power() {\n return this.intensity * Math.PI;\n }\n set power(power) {\n this.intensity = power / Math.PI;\n }\n dispose() {\n this.shadow.dispose();\n }\n copy(source) {\n super.copy(source);\n this.distance = source.distance;\n this.angle = source.angle;\n this.penumbra = source.penumbra;\n this.decay = source.decay;\n this.target = source.target.clone();\n this.shadow = source.shadow.clone();\n return this;\n }\n}\nSpotLight.prototype.isSpotLight = true;\nconst _projScreenMatrix = /* @__PURE__ */ new Matrix4();\nconst _lightPositionWorld = /* @__PURE__ */ new Vector3();\nconst _lookTarget = /* @__PURE__ */ new Vector3();\nclass PointLightShadow extends LightShadow {\n constructor() {\n super(new PerspectiveCamera(90, 1, 0.5, 500));\n this._frameExtents = new Vector2(4, 2);\n this._viewportCount = 6;\n this._viewports = [\n new Vector4(2, 1, 1, 1),\n new Vector4(0, 1, 1, 1),\n new Vector4(3, 1, 1, 1),\n new Vector4(1, 1, 1, 1),\n new Vector4(3, 0, 1, 1),\n new Vector4(1, 0, 1, 1)\n ];\n this._cubeDirections = [\n new Vector3(1, 0, 0),\n new Vector3(-1, 0, 0),\n new Vector3(0, 0, 1),\n new Vector3(0, 0, -1),\n new Vector3(0, 1, 0),\n new Vector3(0, -1, 0)\n ];\n this._cubeUps = [\n new Vector3(0, 1, 0),\n new Vector3(0, 1, 0),\n new Vector3(0, 1, 0),\n new Vector3(0, 1, 0),\n new Vector3(0, 0, 1),\n new Vector3(0, 0, -1)\n ];\n }\n updateMatrices(light, viewportIndex = 0) {\n const camera = this.camera;\n const shadowMatrix = this.matrix;\n const far = light.distance || camera.far;\n if (far !== camera.far) {\n camera.far = far;\n camera.updateProjectionMatrix();\n }\n _lightPositionWorld.setFromMatrixPosition(light.matrixWorld);\n camera.position.copy(_lightPositionWorld);\n _lookTarget.copy(camera.position);\n _lookTarget.add(this._cubeDirections[viewportIndex]);\n camera.up.copy(this._cubeUps[viewportIndex]);\n camera.lookAt(_lookTarget);\n camera.updateMatrixWorld();\n shadowMatrix.makeTranslation(-_lightPositionWorld.x, -_lightPositionWorld.y, -_lightPositionWorld.z);\n _projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n this._frustum.setFromProjectionMatrix(_projScreenMatrix);\n }\n}\nPointLightShadow.prototype.isPointLightShadow = true;\nclass PointLight extends Light {\n constructor(color, intensity, distance = 0, decay = 1) {\n super(color, intensity);\n this.type = \"PointLight\";\n this.distance = distance;\n this.decay = decay;\n this.shadow = new PointLightShadow();\n }\n get power() {\n return this.intensity * 4 * Math.PI;\n }\n set power(power) {\n this.intensity = power / (4 * Math.PI);\n }\n dispose() {\n this.shadow.dispose();\n }\n copy(source) {\n super.copy(source);\n this.distance = source.distance;\n this.decay = source.decay;\n this.shadow = source.shadow.clone();\n return this;\n }\n}\nPointLight.prototype.isPointLight = true;\nclass DirectionalLightShadow extends LightShadow {\n constructor() {\n super(new OrthographicCamera(-5, 5, 5, -5, 0.5, 500));\n }\n}\nDirectionalLightShadow.prototype.isDirectionalLightShadow = true;\nclass DirectionalLight extends Light {\n constructor(color, intensity) {\n super(color, intensity);\n this.type = \"DirectionalLight\";\n this.position.copy(Object3D.DefaultUp);\n this.updateMatrix();\n this.target = new Object3D();\n this.shadow = new DirectionalLightShadow();\n }\n dispose() {\n this.shadow.dispose();\n }\n copy(source) {\n super.copy(source);\n this.target = source.target.clone();\n this.shadow = source.shadow.clone();\n return this;\n }\n}\nDirectionalLight.prototype.isDirectionalLight = true;\nclass AmbientLight extends Light {\n constructor(color, intensity) {\n super(color, intensity);\n this.type = \"AmbientLight\";\n }\n}\nAmbientLight.prototype.isAmbientLight = true;\nclass RectAreaLight extends Light {\n constructor(color, intensity, width = 10, height = 10) {\n super(color, intensity);\n this.type = \"RectAreaLight\";\n this.width = width;\n this.height = height;\n }\n get power() {\n return this.intensity * this.width * this.height * Math.PI;\n }\n set power(power) {\n this.intensity = power / (this.width * this.height * Math.PI);\n }\n copy(source) {\n super.copy(source);\n this.width = source.width;\n this.height = source.height;\n return this;\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n data.object.width = this.width;\n data.object.height = this.height;\n return data;\n }\n}\nRectAreaLight.prototype.isRectAreaLight = true;\nclass SphericalHarmonics3 {\n constructor() {\n this.coefficients = [];\n for (let i = 0; i < 9; i++) {\n this.coefficients.push(new Vector3());\n }\n }\n set(coefficients) {\n for (let i = 0; i < 9; i++) {\n this.coefficients[i].copy(coefficients[i]);\n }\n return this;\n }\n zero() {\n for (let i = 0; i < 9; i++) {\n this.coefficients[i].set(0, 0, 0);\n }\n return this;\n }\n getAt(normal, target) {\n const x = normal.x, y = normal.y, z = normal.z;\n const coeff = this.coefficients;\n target.copy(coeff[0]).multiplyScalar(0.282095);\n target.addScaledVector(coeff[1], 0.488603 * y);\n target.addScaledVector(coeff[2], 0.488603 * z);\n target.addScaledVector(coeff[3], 0.488603 * x);\n target.addScaledVector(coeff[4], 1.092548 * (x * y));\n target.addScaledVector(coeff[5], 1.092548 * (y * z));\n target.addScaledVector(coeff[6], 0.315392 * (3 * z * z - 1));\n target.addScaledVector(coeff[7], 1.092548 * (x * z));\n target.addScaledVector(coeff[8], 0.546274 * (x * x - y * y));\n return target;\n }\n getIrradianceAt(normal, target) {\n const x = normal.x, y = normal.y, z = normal.z;\n const coeff = this.coefficients;\n target.copy(coeff[0]).multiplyScalar(0.886227);\n target.addScaledVector(coeff[1], 2 * 0.511664 * y);\n target.addScaledVector(coeff[2], 2 * 0.511664 * z);\n target.addScaledVector(coeff[3], 2 * 0.511664 * x);\n target.addScaledVector(coeff[4], 2 * 0.429043 * x * y);\n target.addScaledVector(coeff[5], 2 * 0.429043 * y * z);\n target.addScaledVector(coeff[6], 0.743125 * z * z - 0.247708);\n target.addScaledVector(coeff[7], 2 * 0.429043 * x * z);\n target.addScaledVector(coeff[8], 0.429043 * (x * x - y * y));\n return target;\n }\n add(sh) {\n for (let i = 0; i < 9; i++) {\n this.coefficients[i].add(sh.coefficients[i]);\n }\n return this;\n }\n addScaledSH(sh, s) {\n for (let i = 0; i < 9; i++) {\n this.coefficients[i].addScaledVector(sh.coefficients[i], s);\n }\n return this;\n }\n scale(s) {\n for (let i = 0; i < 9; i++) {\n this.coefficients[i].multiplyScalar(s);\n }\n return this;\n }\n lerp(sh, alpha) {\n for (let i = 0; i < 9; i++) {\n this.coefficients[i].lerp(sh.coefficients[i], alpha);\n }\n return this;\n }\n equals(sh) {\n for (let i = 0; i < 9; i++) {\n if (!this.coefficients[i].equals(sh.coefficients[i])) {\n return false;\n }\n }\n return true;\n }\n copy(sh) {\n return this.set(sh.coefficients);\n }\n clone() {\n return new this.constructor().copy(this);\n }\n fromArray(array, offset = 0) {\n const coefficients = this.coefficients;\n for (let i = 0; i < 9; i++) {\n coefficients[i].fromArray(array, offset + i * 3);\n }\n return this;\n }\n toArray(array = [], offset = 0) {\n const coefficients = this.coefficients;\n for (let i = 0; i < 9; i++) {\n coefficients[i].toArray(array, offset + i * 3);\n }\n return array;\n }\n static getBasisAt(normal, shBasis) {\n const x = normal.x, y = normal.y, z = normal.z;\n shBasis[0] = 0.282095;\n shBasis[1] = 0.488603 * y;\n shBasis[2] = 0.488603 * z;\n shBasis[3] = 0.488603 * x;\n shBasis[4] = 1.092548 * x * y;\n shBasis[5] = 1.092548 * y * z;\n shBasis[6] = 0.315392 * (3 * z * z - 1);\n shBasis[7] = 1.092548 * x * z;\n shBasis[8] = 0.546274 * (x * x - y * y);\n }\n}\nSphericalHarmonics3.prototype.isSphericalHarmonics3 = true;\nclass LightProbe extends Light {\n constructor(sh = new SphericalHarmonics3(), intensity = 1) {\n super(void 0, intensity);\n this.sh = sh;\n }\n copy(source) {\n super.copy(source);\n this.sh.copy(source.sh);\n return this;\n }\n fromJSON(json) {\n this.intensity = json.intensity;\n this.sh.fromArray(json.sh);\n return this;\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n data.object.sh = this.sh.toArray();\n return data;\n }\n}\nLightProbe.prototype.isLightProbe = true;\nclass MaterialLoader extends Loader {\n constructor(manager) {\n super(manager);\n this.textures = {};\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const loader = new FileLoader(scope.manager);\n loader.setPath(scope.path);\n loader.setRequestHeader(scope.requestHeader);\n loader.setWithCredentials(scope.withCredentials);\n loader.load(url, function(text) {\n try {\n onLoad(scope.parse(JSON.parse(text)));\n } catch (e) {\n if (onError) {\n onError(e);\n } else {\n console.error(e);\n }\n scope.manager.itemError(url);\n }\n }, onProgress, onError);\n }\n parse(json) {\n const textures = this.textures;\n function getTexture(name) {\n if (textures[name] === void 0) {\n console.warn(\"THREE.MaterialLoader: Undefined texture\", name);\n }\n return textures[name];\n }\n const material = new Materials[json.type]();\n if (json.uuid !== void 0)\n material.uuid = json.uuid;\n if (json.name !== void 0)\n material.name = json.name;\n if (json.color !== void 0 && material.color !== void 0)\n material.color.setHex(json.color);\n if (json.roughness !== void 0)\n material.roughness = json.roughness;\n if (json.metalness !== void 0)\n material.metalness = json.metalness;\n if (json.sheen !== void 0)\n material.sheen = json.sheen;\n if (json.sheenColor !== void 0)\n material.sheenColor = new Color().setHex(json.sheenColor);\n if (json.sheenRoughness !== void 0)\n material.sheenRoughness = json.sheenRoughness;\n if (json.emissive !== void 0 && material.emissive !== void 0)\n material.emissive.setHex(json.emissive);\n if (json.specular !== void 0 && material.specular !== void 0)\n material.specular.setHex(json.specular);\n if (json.specularIntensity !== void 0)\n material.specularIntensity = json.specularIntensity;\n if (json.specularColor !== void 0 && material.specularColor !== void 0)\n material.specularColor.setHex(json.specularColor);\n if (json.shininess !== void 0)\n material.shininess = json.shininess;\n if (json.clearcoat !== void 0)\n material.clearcoat = json.clearcoat;\n if (json.clearcoatRoughness !== void 0)\n material.clearcoatRoughness = json.clearcoatRoughness;\n if (json.transmission !== void 0)\n material.transmission = json.transmission;\n if (json.thickness !== void 0)\n material.thickness = json.thickness;\n if (json.attenuationDistance !== void 0)\n material.attenuationDistance = json.attenuationDistance;\n if (json.attenuationColor !== void 0 && material.attenuationColor !== void 0)\n material.attenuationColor.setHex(json.attenuationColor);\n if (json.fog !== void 0)\n material.fog = json.fog;\n if (json.flatShading !== void 0)\n material.flatShading = json.flatShading;\n if (json.blending !== void 0)\n material.blending = json.blending;\n if (json.combine !== void 0)\n material.combine = json.combine;\n if (json.side !== void 0)\n material.side = json.side;\n if (json.shadowSide !== void 0)\n material.shadowSide = json.shadowSide;\n if (json.opacity !== void 0)\n material.opacity = json.opacity;\n if (json.format !== void 0)\n material.format = json.format;\n if (json.transparent !== void 0)\n material.transparent = json.transparent;\n if (json.alphaTest !== void 0)\n material.alphaTest = json.alphaTest;\n if (json.depthTest !== void 0)\n material.depthTest = json.depthTest;\n if (json.depthWrite !== void 0)\n material.depthWrite = json.depthWrite;\n if (json.colorWrite !== void 0)\n material.colorWrite = json.colorWrite;\n if (json.stencilWrite !== void 0)\n material.stencilWrite = json.stencilWrite;\n if (json.stencilWriteMask !== void 0)\n material.stencilWriteMask = json.stencilWriteMask;\n if (json.stencilFunc !== void 0)\n material.stencilFunc = json.stencilFunc;\n if (json.stencilRef !== void 0)\n material.stencilRef = json.stencilRef;\n if (json.stencilFuncMask !== void 0)\n material.stencilFuncMask = json.stencilFuncMask;\n if (json.stencilFail !== void 0)\n material.stencilFail = json.stencilFail;\n if (json.stencilZFail !== void 0)\n material.stencilZFail = json.stencilZFail;\n if (json.stencilZPass !== void 0)\n material.stencilZPass = json.stencilZPass;\n if (json.wireframe !== void 0)\n material.wireframe = json.wireframe;\n if (json.wireframeLinewidth !== void 0)\n material.wireframeLinewidth = json.wireframeLinewidth;\n if (json.wireframeLinecap !== void 0)\n material.wireframeLinecap = json.wireframeLinecap;\n if (json.wireframeLinejoin !== void 0)\n material.wireframeLinejoin = json.wireframeLinejoin;\n if (json.rotation !== void 0)\n material.rotation = json.rotation;\n if (json.linewidth !== 1)\n material.linewidth = json.linewidth;\n if (json.dashSize !== void 0)\n material.dashSize = json.dashSize;\n if (json.gapSize !== void 0)\n material.gapSize = json.gapSize;\n if (json.scale !== void 0)\n material.scale = json.scale;\n if (json.polygonOffset !== void 0)\n material.polygonOffset = json.polygonOffset;\n if (json.polygonOffsetFactor !== void 0)\n material.polygonOffsetFactor = json.polygonOffsetFactor;\n if (json.polygonOffsetUnits !== void 0)\n material.polygonOffsetUnits = json.polygonOffsetUnits;\n if (json.dithering !== void 0)\n material.dithering = json.dithering;\n if (json.alphaToCoverage !== void 0)\n material.alphaToCoverage = json.alphaToCoverage;\n if (json.premultipliedAlpha !== void 0)\n material.premultipliedAlpha = json.premultipliedAlpha;\n if (json.visible !== void 0)\n material.visible = json.visible;\n if (json.toneMapped !== void 0)\n material.toneMapped = json.toneMapped;\n if (json.userData !== void 0)\n material.userData = json.userData;\n if (json.vertexColors !== void 0) {\n if (typeof json.vertexColors === \"number\") {\n material.vertexColors = json.vertexColors > 0 ? true : false;\n } else {\n material.vertexColors = json.vertexColors;\n }\n }\n if (json.uniforms !== void 0) {\n for (const name in json.uniforms) {\n const uniform = json.uniforms[name];\n material.uniforms[name] = {};\n switch (uniform.type) {\n case \"t\":\n material.uniforms[name].value = getTexture(uniform.value);\n break;\n case \"c\":\n material.uniforms[name].value = new Color().setHex(uniform.value);\n break;\n case \"v2\":\n material.uniforms[name].value = new Vector2().fromArray(uniform.value);\n break;\n case \"v3\":\n material.uniforms[name].value = new Vector3().fromArray(uniform.value);\n break;\n case \"v4\":\n material.uniforms[name].value = new Vector4().fromArray(uniform.value);\n break;\n case \"m3\":\n material.uniforms[name].value = new Matrix3().fromArray(uniform.value);\n break;\n case \"m4\":\n material.uniforms[name].value = new Matrix4().fromArray(uniform.value);\n break;\n default:\n material.uniforms[name].value = uniform.value;\n }\n }\n }\n if (json.defines !== void 0)\n material.defines = json.defines;\n if (json.vertexShader !== void 0)\n material.vertexShader = json.vertexShader;\n if (json.fragmentShader !== void 0)\n material.fragmentShader = json.fragmentShader;\n if (json.extensions !== void 0) {\n for (const key in json.extensions) {\n material.extensions[key] = json.extensions[key];\n }\n }\n if (json.shading !== void 0)\n material.flatShading = json.shading === 1;\n if (json.size !== void 0)\n material.size = json.size;\n if (json.sizeAttenuation !== void 0)\n material.sizeAttenuation = json.sizeAttenuation;\n if (json.map !== void 0)\n material.map = getTexture(json.map);\n if (json.matcap !== void 0)\n material.matcap = getTexture(json.matcap);\n if (json.alphaMap !== void 0)\n material.alphaMap = getTexture(json.alphaMap);\n if (json.bumpMap !== void 0)\n material.bumpMap = getTexture(json.bumpMap);\n if (json.bumpScale !== void 0)\n material.bumpScale = json.bumpScale;\n if (json.normalMap !== void 0)\n material.normalMap = getTexture(json.normalMap);\n if (json.normalMapType !== void 0)\n material.normalMapType = json.normalMapType;\n if (json.normalScale !== void 0) {\n let normalScale = json.normalScale;\n if (Array.isArray(normalScale) === false) {\n normalScale = [normalScale, normalScale];\n }\n material.normalScale = new Vector2().fromArray(normalScale);\n }\n if (json.displacementMap !== void 0)\n material.displacementMap = getTexture(json.displacementMap);\n if (json.displacementScale !== void 0)\n material.displacementScale = json.displacementScale;\n if (json.displacementBias !== void 0)\n material.displacementBias = json.displacementBias;\n if (json.roughnessMap !== void 0)\n material.roughnessMap = getTexture(json.roughnessMap);\n if (json.metalnessMap !== void 0)\n material.metalnessMap = getTexture(json.metalnessMap);\n if (json.emissiveMap !== void 0)\n material.emissiveMap = getTexture(json.emissiveMap);\n if (json.emissiveIntensity !== void 0)\n material.emissiveIntensity = json.emissiveIntensity;\n if (json.specularMap !== void 0)\n material.specularMap = getTexture(json.specularMap);\n if (json.specularIntensityMap !== void 0)\n material.specularIntensityMap = getTexture(json.specularIntensityMap);\n if (json.specularColorMap !== void 0)\n material.specularColorMap = getTexture(json.specularColorMap);\n if (json.envMap !== void 0)\n material.envMap = getTexture(json.envMap);\n if (json.envMapIntensity !== void 0)\n material.envMapIntensity = json.envMapIntensity;\n if (json.reflectivity !== void 0)\n material.reflectivity = json.reflectivity;\n if (json.refractionRatio !== void 0)\n material.refractionRatio = json.refractionRatio;\n if (json.lightMap !== void 0)\n material.lightMap = getTexture(json.lightMap);\n if (json.lightMapIntensity !== void 0)\n material.lightMapIntensity = json.lightMapIntensity;\n if (json.aoMap !== void 0)\n material.aoMap = getTexture(json.aoMap);\n if (json.aoMapIntensity !== void 0)\n material.aoMapIntensity = json.aoMapIntensity;\n if (json.gradientMap !== void 0)\n material.gradientMap = getTexture(json.gradientMap);\n if (json.clearcoatMap !== void 0)\n material.clearcoatMap = getTexture(json.clearcoatMap);\n if (json.clearcoatRoughnessMap !== void 0)\n material.clearcoatRoughnessMap = getTexture(json.clearcoatRoughnessMap);\n if (json.clearcoatNormalMap !== void 0)\n material.clearcoatNormalMap = getTexture(json.clearcoatNormalMap);\n if (json.clearcoatNormalScale !== void 0)\n material.clearcoatNormalScale = new Vector2().fromArray(json.clearcoatNormalScale);\n if (json.transmissionMap !== void 0)\n material.transmissionMap = getTexture(json.transmissionMap);\n if (json.thicknessMap !== void 0)\n material.thicknessMap = getTexture(json.thicknessMap);\n if (json.sheenColorMap !== void 0)\n material.sheenColorMap = getTexture(json.sheenColorMap);\n if (json.sheenRoughnessMap !== void 0)\n material.sheenRoughnessMap = getTexture(json.sheenRoughnessMap);\n return material;\n }\n setTextures(value) {\n this.textures = value;\n return this;\n }\n}\nclass LoaderUtils {\n static decodeText(array) {\n if (typeof TextDecoder !== \"undefined\") {\n return new TextDecoder().decode(array);\n }\n let s = \"\";\n for (let i = 0, il = array.length; i < il; i++) {\n s += String.fromCharCode(array[i]);\n }\n try {\n return decodeURIComponent(escape(s));\n } catch (e) {\n return s;\n }\n }\n static extractUrlBase(url) {\n const index = url.lastIndexOf(\"/\");\n if (index === -1)\n return \"./\";\n return url.substr(0, index + 1);\n }\n static resolveURL(url, path) {\n if (typeof url !== \"string\" || url === \"\")\n return \"\";\n if (/^https?:\\/\\//i.test(path) && /^\\//.test(url)) {\n path = path.replace(/(^https?:\\/\\/[^\\/]+).*/i, \"$1\");\n }\n if (/^(https?:)?\\/\\//i.test(url))\n return url;\n if (/^data:.*,.*$/i.test(url))\n return url;\n if (/^blob:.*$/i.test(url))\n return url;\n return path + url;\n }\n}\nclass InstancedBufferGeometry extends BufferGeometry {\n constructor() {\n super();\n this.type = \"InstancedBufferGeometry\";\n this.instanceCount = Infinity;\n }\n copy(source) {\n super.copy(source);\n this.instanceCount = source.instanceCount;\n return this;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n toJSON() {\n const data = super.toJSON(this);\n data.instanceCount = this.instanceCount;\n data.isInstancedBufferGeometry = true;\n return data;\n }\n}\nInstancedBufferGeometry.prototype.isInstancedBufferGeometry = true;\nclass BufferGeometryLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const loader = new FileLoader(scope.manager);\n loader.setPath(scope.path);\n loader.setRequestHeader(scope.requestHeader);\n loader.setWithCredentials(scope.withCredentials);\n loader.load(url, function(text) {\n try {\n onLoad(scope.parse(JSON.parse(text)));\n } catch (e) {\n if (onError) {\n onError(e);\n } else {\n console.error(e);\n }\n scope.manager.itemError(url);\n }\n }, onProgress, onError);\n }\n parse(json) {\n const interleavedBufferMap = {};\n const arrayBufferMap = {};\n function getInterleavedBuffer(json2, uuid) {\n if (interleavedBufferMap[uuid] !== void 0)\n return interleavedBufferMap[uuid];\n const interleavedBuffers = json2.interleavedBuffers;\n const interleavedBuffer = interleavedBuffers[uuid];\n const buffer = getArrayBuffer(json2, interleavedBuffer.buffer);\n const array = getTypedArray(interleavedBuffer.type, buffer);\n const ib = new InterleavedBuffer(array, interleavedBuffer.stride);\n ib.uuid = interleavedBuffer.uuid;\n interleavedBufferMap[uuid] = ib;\n return ib;\n }\n function getArrayBuffer(json2, uuid) {\n if (arrayBufferMap[uuid] !== void 0)\n return arrayBufferMap[uuid];\n const arrayBuffers = json2.arrayBuffers;\n const arrayBuffer = arrayBuffers[uuid];\n const ab = new Uint32Array(arrayBuffer).buffer;\n arrayBufferMap[uuid] = ab;\n return ab;\n }\n const geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n const index = json.data.index;\n if (index !== void 0) {\n const typedArray = getTypedArray(index.type, index.array);\n geometry.setIndex(new BufferAttribute(typedArray, 1));\n }\n const attributes = json.data.attributes;\n for (const key in attributes) {\n const attribute = attributes[key];\n let bufferAttribute;\n if (attribute.isInterleavedBufferAttribute) {\n const interleavedBuffer = getInterleavedBuffer(json.data, attribute.data);\n bufferAttribute = new InterleavedBufferAttribute(interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized);\n } else {\n const typedArray = getTypedArray(attribute.type, attribute.array);\n const bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n bufferAttribute = new bufferAttributeConstr(typedArray, attribute.itemSize, attribute.normalized);\n }\n if (attribute.name !== void 0)\n bufferAttribute.name = attribute.name;\n if (attribute.usage !== void 0)\n bufferAttribute.setUsage(attribute.usage);\n if (attribute.updateRange !== void 0) {\n bufferAttribute.updateRange.offset = attribute.updateRange.offset;\n bufferAttribute.updateRange.count = attribute.updateRange.count;\n }\n geometry.setAttribute(key, bufferAttribute);\n }\n const morphAttributes = json.data.morphAttributes;\n if (morphAttributes) {\n for (const key in morphAttributes) {\n const attributeArray = morphAttributes[key];\n const array = [];\n for (let i = 0, il = attributeArray.length; i < il; i++) {\n const attribute = attributeArray[i];\n let bufferAttribute;\n if (attribute.isInterleavedBufferAttribute) {\n const interleavedBuffer = getInterleavedBuffer(json.data, attribute.data);\n bufferAttribute = new InterleavedBufferAttribute(interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized);\n } else {\n const typedArray = getTypedArray(attribute.type, attribute.array);\n bufferAttribute = new BufferAttribute(typedArray, attribute.itemSize, attribute.normalized);\n }\n if (attribute.name !== void 0)\n bufferAttribute.name = attribute.name;\n array.push(bufferAttribute);\n }\n geometry.morphAttributes[key] = array;\n }\n }\n const morphTargetsRelative = json.data.morphTargetsRelative;\n if (morphTargetsRelative) {\n geometry.morphTargetsRelative = true;\n }\n const groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n if (groups !== void 0) {\n for (let i = 0, n = groups.length; i !== n; ++i) {\n const group = groups[i];\n geometry.addGroup(group.start, group.count, group.materialIndex);\n }\n }\n const boundingSphere = json.data.boundingSphere;\n if (boundingSphere !== void 0) {\n const center = new Vector3();\n if (boundingSphere.center !== void 0) {\n center.fromArray(boundingSphere.center);\n }\n geometry.boundingSphere = new Sphere(center, boundingSphere.radius);\n }\n if (json.name)\n geometry.name = json.name;\n if (json.userData)\n geometry.userData = json.userData;\n return geometry;\n }\n}\nclass ObjectLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const path = this.path === \"\" ? LoaderUtils.extractUrlBase(url) : this.path;\n this.resourcePath = this.resourcePath || path;\n const loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\n loader.load(url, function(text) {\n let json = null;\n try {\n json = JSON.parse(text);\n } catch (error) {\n if (onError !== void 0)\n onError(error);\n console.error(\"THREE:ObjectLoader: Can't parse \" + url + \".\", error.message);\n return;\n }\n const metadata = json.metadata;\n if (metadata === void 0 || metadata.type === void 0 || metadata.type.toLowerCase() === \"geometry\") {\n console.error(\"THREE.ObjectLoader: Can't load \" + url);\n return;\n }\n scope.parse(json, onLoad);\n }, onProgress, onError);\n }\n async loadAsync(url, onProgress) {\n const scope = this;\n const path = this.path === \"\" ? LoaderUtils.extractUrlBase(url) : this.path;\n this.resourcePath = this.resourcePath || path;\n const loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\n const text = await loader.loadAsync(url, onProgress);\n const json = JSON.parse(text);\n const metadata = json.metadata;\n if (metadata === void 0 || metadata.type === void 0 || metadata.type.toLowerCase() === \"geometry\") {\n throw new Error(\"THREE.ObjectLoader: Can't load \" + url);\n }\n return await scope.parseAsync(json);\n }\n parse(json, onLoad) {\n const animations = this.parseAnimations(json.animations);\n const shapes = this.parseShapes(json.shapes);\n const geometries = this.parseGeometries(json.geometries, shapes);\n const images = this.parseImages(json.images, function() {\n if (onLoad !== void 0)\n onLoad(object);\n });\n const textures = this.parseTextures(json.textures, images);\n const materials = this.parseMaterials(json.materials, textures);\n const object = this.parseObject(json.object, geometries, materials, textures, animations);\n const skeletons = this.parseSkeletons(json.skeletons, object);\n this.bindSkeletons(object, skeletons);\n if (onLoad !== void 0) {\n let hasImages = false;\n for (const uuid in images) {\n if (images[uuid] instanceof HTMLImageElement) {\n hasImages = true;\n break;\n }\n }\n if (hasImages === false)\n onLoad(object);\n }\n return object;\n }\n async parseAsync(json) {\n const animations = this.parseAnimations(json.animations);\n const shapes = this.parseShapes(json.shapes);\n const geometries = this.parseGeometries(json.geometries, shapes);\n const images = await this.parseImagesAsync(json.images);\n const textures = this.parseTextures(json.textures, images);\n const materials = this.parseMaterials(json.materials, textures);\n const object = this.parseObject(json.object, geometries, materials, textures, animations);\n const skeletons = this.parseSkeletons(json.skeletons, object);\n this.bindSkeletons(object, skeletons);\n return object;\n }\n parseShapes(json) {\n const shapes = {};\n if (json !== void 0) {\n for (let i = 0, l = json.length; i < l; i++) {\n const shape = new Shape().fromJSON(json[i]);\n shapes[shape.uuid] = shape;\n }\n }\n return shapes;\n }\n parseSkeletons(json, object) {\n const skeletons = {};\n const bones = {};\n object.traverse(function(child) {\n if (child.isBone)\n bones[child.uuid] = child;\n });\n if (json !== void 0) {\n for (let i = 0, l = json.length; i < l; i++) {\n const skeleton = new Skeleton().fromJSON(json[i], bones);\n skeletons[skeleton.uuid] = skeleton;\n }\n }\n return skeletons;\n }\n parseGeometries(json, shapes) {\n const geometries = {};\n if (json !== void 0) {\n const bufferGeometryLoader = new BufferGeometryLoader();\n for (let i = 0, l = json.length; i < l; i++) {\n let geometry;\n const data = json[i];\n switch (data.type) {\n case \"BufferGeometry\":\n case \"InstancedBufferGeometry\":\n geometry = bufferGeometryLoader.parse(data);\n break;\n case \"Geometry\":\n console.error(\"THREE.ObjectLoader: The legacy Geometry type is no longer supported.\");\n break;\n default:\n if (data.type in Geometries) {\n geometry = Geometries[data.type].fromJSON(data, shapes);\n } else {\n console.warn(`THREE.ObjectLoader: Unsupported geometry type \"${data.type}\"`);\n }\n }\n geometry.uuid = data.uuid;\n if (data.name !== void 0)\n geometry.name = data.name;\n if (geometry.isBufferGeometry === true && data.userData !== void 0)\n geometry.userData = data.userData;\n geometries[data.uuid] = geometry;\n }\n }\n return geometries;\n }\n parseMaterials(json, textures) {\n const cache = {};\n const materials = {};\n if (json !== void 0) {\n const loader = new MaterialLoader();\n loader.setTextures(textures);\n for (let i = 0, l = json.length; i < l; i++) {\n const data = json[i];\n if (data.type === \"MultiMaterial\") {\n const array = [];\n for (let j = 0; j < data.materials.length; j++) {\n const material = data.materials[j];\n if (cache[material.uuid] === void 0) {\n cache[material.uuid] = loader.parse(material);\n }\n array.push(cache[material.uuid]);\n }\n materials[data.uuid] = array;\n } else {\n if (cache[data.uuid] === void 0) {\n cache[data.uuid] = loader.parse(data);\n }\n materials[data.uuid] = cache[data.uuid];\n }\n }\n }\n return materials;\n }\n parseAnimations(json) {\n const animations = {};\n if (json !== void 0) {\n for (let i = 0; i < json.length; i++) {\n const data = json[i];\n const clip = AnimationClip.parse(data);\n animations[clip.uuid] = clip;\n }\n }\n return animations;\n }\n parseImages(json, onLoad) {\n const scope = this;\n const images = {};\n let loader;\n function loadImage(url) {\n scope.manager.itemStart(url);\n return loader.load(url, function() {\n scope.manager.itemEnd(url);\n }, void 0, function() {\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n });\n }\n function deserializeImage(image) {\n if (typeof image === \"string\") {\n const url = image;\n const path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(url) ? url : scope.resourcePath + url;\n return loadImage(path);\n } else {\n if (image.data) {\n return {\n data: getTypedArray(image.type, image.data),\n width: image.width,\n height: image.height\n };\n } else {\n return null;\n }\n }\n }\n if (json !== void 0 && json.length > 0) {\n const manager = new LoadingManager(onLoad);\n loader = new ImageLoader(manager);\n loader.setCrossOrigin(this.crossOrigin);\n for (let i = 0, il = json.length; i < il; i++) {\n const image = json[i];\n const url = image.url;\n if (Array.isArray(url)) {\n images[image.uuid] = [];\n for (let j = 0, jl = url.length; j < jl; j++) {\n const currentUrl = url[j];\n const deserializedImage = deserializeImage(currentUrl);\n if (deserializedImage !== null) {\n if (deserializedImage instanceof HTMLImageElement) {\n images[image.uuid].push(deserializedImage);\n } else {\n images[image.uuid].push(new DataTexture(deserializedImage.data, deserializedImage.width, deserializedImage.height));\n }\n }\n }\n } else {\n const deserializedImage = deserializeImage(image.url);\n if (deserializedImage !== null) {\n images[image.uuid] = deserializedImage;\n }\n }\n }\n }\n return images;\n }\n async parseImagesAsync(json) {\n const scope = this;\n const images = {};\n let loader;\n async function deserializeImage(image) {\n if (typeof image === \"string\") {\n const url = image;\n const path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(url) ? url : scope.resourcePath + url;\n return await loader.loadAsync(path);\n } else {\n if (image.data) {\n return {\n data: getTypedArray(image.type, image.data),\n width: image.width,\n height: image.height\n };\n } else {\n return null;\n }\n }\n }\n if (json !== void 0 && json.length > 0) {\n loader = new ImageLoader(this.manager);\n loader.setCrossOrigin(this.crossOrigin);\n for (let i = 0, il = json.length; i < il; i++) {\n const image = json[i];\n const url = image.url;\n if (Array.isArray(url)) {\n images[image.uuid] = [];\n for (let j = 0, jl = url.length; j < jl; j++) {\n const currentUrl = url[j];\n const deserializedImage = await deserializeImage(currentUrl);\n if (deserializedImage !== null) {\n if (deserializedImage instanceof HTMLImageElement) {\n images[image.uuid].push(deserializedImage);\n } else {\n images[image.uuid].push(new DataTexture(deserializedImage.data, deserializedImage.width, deserializedImage.height));\n }\n }\n }\n } else {\n const deserializedImage = await deserializeImage(image.url);\n if (deserializedImage !== null) {\n images[image.uuid] = deserializedImage;\n }\n }\n }\n }\n return images;\n }\n parseTextures(json, images) {\n function parseConstant(value, type) {\n if (typeof value === \"number\")\n return value;\n console.warn(\"THREE.ObjectLoader.parseTexture: Constant should be in numeric form.\", value);\n return type[value];\n }\n const textures = {};\n if (json !== void 0) {\n for (let i = 0, l = json.length; i < l; i++) {\n const data = json[i];\n if (data.image === void 0) {\n console.warn('THREE.ObjectLoader: No \"image\" specified for', data.uuid);\n }\n if (images[data.image] === void 0) {\n console.warn(\"THREE.ObjectLoader: Undefined image\", data.image);\n }\n let texture;\n const image = images[data.image];\n if (Array.isArray(image)) {\n texture = new CubeTexture(image);\n if (image.length === 6)\n texture.needsUpdate = true;\n } else {\n if (image && image.data) {\n texture = new DataTexture(image.data, image.width, image.height);\n } else {\n texture = new Texture(image);\n }\n if (image)\n texture.needsUpdate = true;\n }\n texture.uuid = data.uuid;\n if (data.name !== void 0)\n texture.name = data.name;\n if (data.mapping !== void 0)\n texture.mapping = parseConstant(data.mapping, TEXTURE_MAPPING);\n if (data.offset !== void 0)\n texture.offset.fromArray(data.offset);\n if (data.repeat !== void 0)\n texture.repeat.fromArray(data.repeat);\n if (data.center !== void 0)\n texture.center.fromArray(data.center);\n if (data.rotation !== void 0)\n texture.rotation = data.rotation;\n if (data.wrap !== void 0) {\n texture.wrapS = parseConstant(data.wrap[0], TEXTURE_WRAPPING);\n texture.wrapT = parseConstant(data.wrap[1], TEXTURE_WRAPPING);\n }\n if (data.format !== void 0)\n texture.format = data.format;\n if (data.type !== void 0)\n texture.type = data.type;\n if (data.encoding !== void 0)\n texture.encoding = data.encoding;\n if (data.minFilter !== void 0)\n texture.minFilter = parseConstant(data.minFilter, TEXTURE_FILTER);\n if (data.magFilter !== void 0)\n texture.magFilter = parseConstant(data.magFilter, TEXTURE_FILTER);\n if (data.anisotropy !== void 0)\n texture.anisotropy = data.anisotropy;\n if (data.flipY !== void 0)\n texture.flipY = data.flipY;\n if (data.premultiplyAlpha !== void 0)\n texture.premultiplyAlpha = data.premultiplyAlpha;\n if (data.unpackAlignment !== void 0)\n texture.unpackAlignment = data.unpackAlignment;\n if (data.userData !== void 0)\n texture.userData = data.userData;\n textures[data.uuid] = texture;\n }\n }\n return textures;\n }\n parseObject(data, geometries, materials, textures, animations) {\n let object;\n function getGeometry(name) {\n if (geometries[name] === void 0) {\n console.warn(\"THREE.ObjectLoader: Undefined geometry\", name);\n }\n return geometries[name];\n }\n function getMaterial(name) {\n if (name === void 0)\n return void 0;\n if (Array.isArray(name)) {\n const array = [];\n for (let i = 0, l = name.length; i < l; i++) {\n const uuid = name[i];\n if (materials[uuid] === void 0) {\n console.warn(\"THREE.ObjectLoader: Undefined material\", uuid);\n }\n array.push(materials[uuid]);\n }\n return array;\n }\n if (materials[name] === void 0) {\n console.warn(\"THREE.ObjectLoader: Undefined material\", name);\n }\n return materials[name];\n }\n function getTexture(uuid) {\n if (textures[uuid] === void 0) {\n console.warn(\"THREE.ObjectLoader: Undefined texture\", uuid);\n }\n return textures[uuid];\n }\n let geometry, material;\n switch (data.type) {\n case \"Scene\":\n object = new Scene();\n if (data.background !== void 0) {\n if (Number.isInteger(data.background)) {\n object.background = new Color(data.background);\n } else {\n object.background = getTexture(data.background);\n }\n }\n if (data.environment !== void 0) {\n object.environment = getTexture(data.environment);\n }\n if (data.fog !== void 0) {\n if (data.fog.type === \"Fog\") {\n object.fog = new Fog(data.fog.color, data.fog.near, data.fog.far);\n } else if (data.fog.type === \"FogExp2\") {\n object.fog = new FogExp2(data.fog.color, data.fog.density);\n }\n }\n break;\n case \"PerspectiveCamera\":\n object = new PerspectiveCamera(data.fov, data.aspect, data.near, data.far);\n if (data.focus !== void 0)\n object.focus = data.focus;\n if (data.zoom !== void 0)\n object.zoom = data.zoom;\n if (data.filmGauge !== void 0)\n object.filmGauge = data.filmGauge;\n if (data.filmOffset !== void 0)\n object.filmOffset = data.filmOffset;\n if (data.view !== void 0)\n object.view = Object.assign({}, data.view);\n break;\n case \"OrthographicCamera\":\n object = new OrthographicCamera(data.left, data.right, data.top, data.bottom, data.near, data.far);\n if (data.zoom !== void 0)\n object.zoom = data.zoom;\n if (data.view !== void 0)\n object.view = Object.assign({}, data.view);\n break;\n case \"AmbientLight\":\n object = new AmbientLight(data.color, data.intensity);\n break;\n case \"DirectionalLight\":\n object = new DirectionalLight(data.color, data.intensity);\n break;\n case \"PointLight\":\n object = new PointLight(data.color, data.intensity, data.distance, data.decay);\n break;\n case \"RectAreaLight\":\n object = new RectAreaLight(data.color, data.intensity, data.width, data.height);\n break;\n case \"SpotLight\":\n object = new SpotLight(data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay);\n break;\n case \"HemisphereLight\":\n object = new HemisphereLight(data.color, data.groundColor, data.intensity);\n break;\n case \"LightProbe\":\n object = new LightProbe().fromJSON(data);\n break;\n case \"SkinnedMesh\":\n geometry = getGeometry(data.geometry);\n material = getMaterial(data.material);\n object = new SkinnedMesh(geometry, material);\n if (data.bindMode !== void 0)\n object.bindMode = data.bindMode;\n if (data.bindMatrix !== void 0)\n object.bindMatrix.fromArray(data.bindMatrix);\n if (data.skeleton !== void 0)\n object.skeleton = data.skeleton;\n break;\n case \"Mesh\":\n geometry = getGeometry(data.geometry);\n material = getMaterial(data.material);\n object = new Mesh(geometry, material);\n break;\n case \"InstancedMesh\":\n geometry = getGeometry(data.geometry);\n material = getMaterial(data.material);\n const count = data.count;\n const instanceMatrix = data.instanceMatrix;\n const instanceColor = data.instanceColor;\n object = new InstancedMesh(geometry, material, count);\n object.instanceMatrix = new InstancedBufferAttribute(new Float32Array(instanceMatrix.array), 16);\n if (instanceColor !== void 0)\n object.instanceColor = new InstancedBufferAttribute(new Float32Array(instanceColor.array), instanceColor.itemSize);\n break;\n case \"LOD\":\n object = new LOD();\n break;\n case \"Line\":\n object = new Line(getGeometry(data.geometry), getMaterial(data.material));\n break;\n case \"LineLoop\":\n object = new LineLoop(getGeometry(data.geometry), getMaterial(data.material));\n break;\n case \"LineSegments\":\n object = new LineSegments(getGeometry(data.geometry), getMaterial(data.material));\n break;\n case \"PointCloud\":\n case \"Points\":\n object = new Points(getGeometry(data.geometry), getMaterial(data.material));\n break;\n case \"Sprite\":\n object = new Sprite(getMaterial(data.material));\n break;\n case \"Group\":\n object = new Group();\n break;\n case \"Bone\":\n object = new Bone();\n break;\n default:\n object = new Object3D();\n }\n object.uuid = data.uuid;\n if (data.name !== void 0)\n object.name = data.name;\n if (data.matrix !== void 0) {\n object.matrix.fromArray(data.matrix);\n if (data.matrixAutoUpdate !== void 0)\n object.matrixAutoUpdate = data.matrixAutoUpdate;\n if (object.matrixAutoUpdate)\n object.matrix.decompose(object.position, object.quaternion, object.scale);\n } else {\n if (data.position !== void 0)\n object.position.fromArray(data.position);\n if (data.rotation !== void 0)\n object.rotation.fromArray(data.rotation);\n if (data.quaternion !== void 0)\n object.quaternion.fromArray(data.quaternion);\n if (data.scale !== void 0)\n object.scale.fromArray(data.scale);\n }\n if (data.castShadow !== void 0)\n object.castShadow = data.castShadow;\n if (data.receiveShadow !== void 0)\n object.receiveShadow = data.receiveShadow;\n if (data.shadow) {\n if (data.shadow.bias !== void 0)\n object.shadow.bias = data.shadow.bias;\n if (data.shadow.normalBias !== void 0)\n object.shadow.normalBias = data.shadow.normalBias;\n if (data.shadow.radius !== void 0)\n object.shadow.radius = data.shadow.radius;\n if (data.shadow.mapSize !== void 0)\n object.shadow.mapSize.fromArray(data.shadow.mapSize);\n if (data.shadow.camera !== void 0)\n object.shadow.camera = this.parseObject(data.shadow.camera);\n }\n if (data.visible !== void 0)\n object.visible = data.visible;\n if (data.frustumCulled !== void 0)\n object.frustumCulled = data.frustumCulled;\n if (data.renderOrder !== void 0)\n object.renderOrder = data.renderOrder;\n if (data.userData !== void 0)\n object.userData = data.userData;\n if (data.layers !== void 0)\n object.layers.mask = data.layers;\n if (data.children !== void 0) {\n const children = data.children;\n for (let i = 0; i < children.length; i++) {\n object.add(this.parseObject(children[i], geometries, materials, textures, animations));\n }\n }\n if (data.animations !== void 0) {\n const objectAnimations = data.animations;\n for (let i = 0; i < objectAnimations.length; i++) {\n const uuid = objectAnimations[i];\n object.animations.push(animations[uuid]);\n }\n }\n if (data.type === \"LOD\") {\n if (data.autoUpdate !== void 0)\n object.autoUpdate = data.autoUpdate;\n const levels = data.levels;\n for (let l = 0; l < levels.length; l++) {\n const level = levels[l];\n const child = object.getObjectByProperty(\"uuid\", level.object);\n if (child !== void 0) {\n object.addLevel(child, level.distance);\n }\n }\n }\n return object;\n }\n bindSkeletons(object, skeletons) {\n if (Object.keys(skeletons).length === 0)\n return;\n object.traverse(function(child) {\n if (child.isSkinnedMesh === true && child.skeleton !== void 0) {\n const skeleton = skeletons[child.skeleton];\n if (skeleton === void 0) {\n console.warn(\"THREE.ObjectLoader: No skeleton found with UUID:\", child.skeleton);\n } else {\n child.bind(skeleton, child.bindMatrix);\n }\n }\n });\n }\n setTexturePath(value) {\n console.warn(\"THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().\");\n return this.setResourcePath(value);\n }\n}\nconst TEXTURE_MAPPING = {\n UVMapping,\n CubeReflectionMapping,\n CubeRefractionMapping,\n EquirectangularReflectionMapping,\n EquirectangularRefractionMapping,\n CubeUVReflectionMapping,\n CubeUVRefractionMapping\n};\nconst TEXTURE_WRAPPING = {\n RepeatWrapping,\n ClampToEdgeWrapping,\n MirroredRepeatWrapping\n};\nconst TEXTURE_FILTER = {\n NearestFilter,\n NearestMipmapNearestFilter,\n NearestMipmapLinearFilter,\n LinearFilter,\n LinearMipmapNearestFilter,\n LinearMipmapLinearFilter\n};\nclass ImageBitmapLoader extends Loader {\n constructor(manager) {\n super(manager);\n if (typeof createImageBitmap === \"undefined\") {\n console.warn(\"THREE.ImageBitmapLoader: createImageBitmap() not supported.\");\n }\n if (typeof fetch === \"undefined\") {\n console.warn(\"THREE.ImageBitmapLoader: fetch() not supported.\");\n }\n this.options = {premultiplyAlpha: \"none\"};\n }\n setOptions(options) {\n this.options = options;\n return this;\n }\n load(url, onLoad, onProgress, onError) {\n if (url === void 0)\n url = \"\";\n if (this.path !== void 0)\n url = this.path + url;\n url = this.manager.resolveURL(url);\n const scope = this;\n const cached = Cache.get(url);\n if (cached !== void 0) {\n scope.manager.itemStart(url);\n setTimeout(function() {\n if (onLoad)\n onLoad(cached);\n scope.manager.itemEnd(url);\n }, 0);\n return cached;\n }\n const fetchOptions = {};\n fetchOptions.credentials = this.crossOrigin === \"anonymous\" ? \"same-origin\" : \"include\";\n fetchOptions.headers = this.requestHeader;\n fetch(url, fetchOptions).then(function(res) {\n return res.blob();\n }).then(function(blob) {\n return createImageBitmap(blob, Object.assign(scope.options, {colorSpaceConversion: \"none\"}));\n }).then(function(imageBitmap) {\n Cache.add(url, imageBitmap);\n if (onLoad)\n onLoad(imageBitmap);\n scope.manager.itemEnd(url);\n }).catch(function(e) {\n if (onError)\n onError(e);\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n });\n scope.manager.itemStart(url);\n }\n}\nImageBitmapLoader.prototype.isImageBitmapLoader = true;\nlet _context;\nconst AudioContext = {\n getContext: function() {\n if (_context === void 0) {\n _context = new (window.AudioContext || window.webkitAudioContext)();\n }\n return _context;\n },\n setContext: function(value) {\n _context = value;\n }\n};\nclass AudioLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const loader = new FileLoader(this.manager);\n loader.setResponseType(\"arraybuffer\");\n loader.setPath(this.path);\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\n loader.load(url, function(buffer) {\n try {\n const bufferCopy = buffer.slice(0);\n const context = AudioContext.getContext();\n context.decodeAudioData(bufferCopy, function(audioBuffer) {\n onLoad(audioBuffer);\n });\n } catch (e) {\n if (onError) {\n onError(e);\n } else {\n console.error(e);\n }\n scope.manager.itemError(url);\n }\n }, onProgress, onError);\n }\n}\nclass HemisphereLightProbe extends LightProbe {\n constructor(skyColor, groundColor, intensity = 1) {\n super(void 0, intensity);\n const color1 = new Color().set(skyColor);\n const color2 = new Color().set(groundColor);\n const sky = new Vector3(color1.r, color1.g, color1.b);\n const ground = new Vector3(color2.r, color2.g, color2.b);\n const c0 = Math.sqrt(Math.PI);\n const c1 = c0 * Math.sqrt(0.75);\n this.sh.coefficients[0].copy(sky).add(ground).multiplyScalar(c0);\n this.sh.coefficients[1].copy(sky).sub(ground).multiplyScalar(c1);\n }\n}\nHemisphereLightProbe.prototype.isHemisphereLightProbe = true;\nclass AmbientLightProbe extends LightProbe {\n constructor(color, intensity = 1) {\n super(void 0, intensity);\n const color1 = new Color().set(color);\n this.sh.coefficients[0].set(color1.r, color1.g, color1.b).multiplyScalar(2 * Math.sqrt(Math.PI));\n }\n}\nAmbientLightProbe.prototype.isAmbientLightProbe = true;\nconst _eyeRight = /* @__PURE__ */ new Matrix4();\nconst _eyeLeft = /* @__PURE__ */ new Matrix4();\nconst _projectionMatrix = /* @__PURE__ */ new Matrix4();\nclass StereoCamera {\n constructor() {\n this.type = \"StereoCamera\";\n this.aspect = 1;\n this.eyeSep = 0.064;\n this.cameraL = new PerspectiveCamera();\n this.cameraL.layers.enable(1);\n this.cameraL.matrixAutoUpdate = false;\n this.cameraR = new PerspectiveCamera();\n this.cameraR.layers.enable(2);\n this.cameraR.matrixAutoUpdate = false;\n this._cache = {\n focus: null,\n fov: null,\n aspect: null,\n near: null,\n far: null,\n zoom: null,\n eyeSep: null\n };\n }\n update(camera) {\n const cache = this._cache;\n const needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov || cache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near || cache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n if (needsUpdate) {\n cache.focus = camera.focus;\n cache.fov = camera.fov;\n cache.aspect = camera.aspect * this.aspect;\n cache.near = camera.near;\n cache.far = camera.far;\n cache.zoom = camera.zoom;\n cache.eyeSep = this.eyeSep;\n _projectionMatrix.copy(camera.projectionMatrix);\n const eyeSepHalf = cache.eyeSep / 2;\n const eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n const ymax = cache.near * Math.tan(DEG2RAD * cache.fov * 0.5) / cache.zoom;\n let xmin, xmax;\n _eyeLeft.elements[12] = -eyeSepHalf;\n _eyeRight.elements[12] = eyeSepHalf;\n xmin = -ymax * cache.aspect + eyeSepOnProjection;\n xmax = ymax * cache.aspect + eyeSepOnProjection;\n _projectionMatrix.elements[0] = 2 * cache.near / (xmax - xmin);\n _projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin);\n this.cameraL.projectionMatrix.copy(_projectionMatrix);\n xmin = -ymax * cache.aspect - eyeSepOnProjection;\n xmax = ymax * cache.aspect - eyeSepOnProjection;\n _projectionMatrix.elements[0] = 2 * cache.near / (xmax - xmin);\n _projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin);\n this.cameraR.projectionMatrix.copy(_projectionMatrix);\n }\n this.cameraL.matrixWorld.copy(camera.matrixWorld).multiply(_eyeLeft);\n this.cameraR.matrixWorld.copy(camera.matrixWorld).multiply(_eyeRight);\n }\n}\nclass Clock {\n constructor(autoStart = true) {\n this.autoStart = autoStart;\n this.startTime = 0;\n this.oldTime = 0;\n this.elapsedTime = 0;\n this.running = false;\n }\n start() {\n this.startTime = now();\n this.oldTime = this.startTime;\n this.elapsedTime = 0;\n this.running = true;\n }\n stop() {\n this.getElapsedTime();\n this.running = false;\n this.autoStart = false;\n }\n getElapsedTime() {\n this.getDelta();\n return this.elapsedTime;\n }\n getDelta() {\n let diff = 0;\n if (this.autoStart && !this.running) {\n this.start();\n return 0;\n }\n if (this.running) {\n const newTime = now();\n diff = (newTime - this.oldTime) / 1e3;\n this.oldTime = newTime;\n this.elapsedTime += diff;\n }\n return diff;\n }\n}\nfunction now() {\n return (typeof performance === \"undefined\" ? Date : performance).now();\n}\nconst _position$1 = /* @__PURE__ */ new Vector3();\nconst _quaternion$1 = /* @__PURE__ */ new Quaternion();\nconst _scale$1 = /* @__PURE__ */ new Vector3();\nconst _orientation$1 = /* @__PURE__ */ new Vector3();\nclass AudioListener extends Object3D {\n constructor() {\n super();\n this.type = \"AudioListener\";\n this.context = AudioContext.getContext();\n this.gain = this.context.createGain();\n this.gain.connect(this.context.destination);\n this.filter = null;\n this.timeDelta = 0;\n this._clock = new Clock();\n }\n getInput() {\n return this.gain;\n }\n removeFilter() {\n if (this.filter !== null) {\n this.gain.disconnect(this.filter);\n this.filter.disconnect(this.context.destination);\n this.gain.connect(this.context.destination);\n this.filter = null;\n }\n return this;\n }\n getFilter() {\n return this.filter;\n }\n setFilter(value) {\n if (this.filter !== null) {\n this.gain.disconnect(this.filter);\n this.filter.disconnect(this.context.destination);\n } else {\n this.gain.disconnect(this.context.destination);\n }\n this.filter = value;\n this.gain.connect(this.filter);\n this.filter.connect(this.context.destination);\n return this;\n }\n getMasterVolume() {\n return this.gain.gain.value;\n }\n setMasterVolume(value) {\n this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01);\n return this;\n }\n updateMatrixWorld(force) {\n super.updateMatrixWorld(force);\n const listener = this.context.listener;\n const up = this.up;\n this.timeDelta = this._clock.getDelta();\n this.matrixWorld.decompose(_position$1, _quaternion$1, _scale$1);\n _orientation$1.set(0, 0, -1).applyQuaternion(_quaternion$1);\n if (listener.positionX) {\n const endTime = this.context.currentTime + this.timeDelta;\n listener.positionX.linearRampToValueAtTime(_position$1.x, endTime);\n listener.positionY.linearRampToValueAtTime(_position$1.y, endTime);\n listener.positionZ.linearRampToValueAtTime(_position$1.z, endTime);\n listener.forwardX.linearRampToValueAtTime(_orientation$1.x, endTime);\n listener.forwardY.linearRampToValueAtTime(_orientation$1.y, endTime);\n listener.forwardZ.linearRampToValueAtTime(_orientation$1.z, endTime);\n listener.upX.linearRampToValueAtTime(up.x, endTime);\n listener.upY.linearRampToValueAtTime(up.y, endTime);\n listener.upZ.linearRampToValueAtTime(up.z, endTime);\n } else {\n listener.setPosition(_position$1.x, _position$1.y, _position$1.z);\n listener.setOrientation(_orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z);\n }\n }\n}\nclass Audio extends Object3D {\n constructor(listener) {\n super();\n this.type = \"Audio\";\n this.listener = listener;\n this.context = listener.context;\n this.gain = this.context.createGain();\n this.gain.connect(listener.getInput());\n this.autoplay = false;\n this.buffer = null;\n this.detune = 0;\n this.loop = false;\n this.loopStart = 0;\n this.loopEnd = 0;\n this.offset = 0;\n this.duration = void 0;\n this.playbackRate = 1;\n this.isPlaying = false;\n this.hasPlaybackControl = true;\n this.source = null;\n this.sourceType = \"empty\";\n this._startedAt = 0;\n this._progress = 0;\n this._connected = false;\n this.filters = [];\n }\n getOutput() {\n return this.gain;\n }\n setNodeSource(audioNode) {\n this.hasPlaybackControl = false;\n this.sourceType = \"audioNode\";\n this.source = audioNode;\n this.connect();\n return this;\n }\n setMediaElementSource(mediaElement) {\n this.hasPlaybackControl = false;\n this.sourceType = \"mediaNode\";\n this.source = this.context.createMediaElementSource(mediaElement);\n this.connect();\n return this;\n }\n setMediaStreamSource(mediaStream) {\n this.hasPlaybackControl = false;\n this.sourceType = \"mediaStreamNode\";\n this.source = this.context.createMediaStreamSource(mediaStream);\n this.connect();\n return this;\n }\n setBuffer(audioBuffer) {\n this.buffer = audioBuffer;\n this.sourceType = \"buffer\";\n if (this.autoplay)\n this.play();\n return this;\n }\n play(delay = 0) {\n if (this.isPlaying === true) {\n console.warn(\"THREE.Audio: Audio is already playing.\");\n return;\n }\n if (this.hasPlaybackControl === false) {\n console.warn(\"THREE.Audio: this Audio has no playback control.\");\n return;\n }\n this._startedAt = this.context.currentTime + delay;\n const source = this.context.createBufferSource();\n source.buffer = this.buffer;\n source.loop = this.loop;\n source.loopStart = this.loopStart;\n source.loopEnd = this.loopEnd;\n source.onended = this.onEnded.bind(this);\n source.start(this._startedAt, this._progress + this.offset, this.duration);\n this.isPlaying = true;\n this.source = source;\n this.setDetune(this.detune);\n this.setPlaybackRate(this.playbackRate);\n return this.connect();\n }\n pause() {\n if (this.hasPlaybackControl === false) {\n console.warn(\"THREE.Audio: this Audio has no playback control.\");\n return;\n }\n if (this.isPlaying === true) {\n this._progress += Math.max(this.context.currentTime - this._startedAt, 0) * this.playbackRate;\n if (this.loop === true) {\n this._progress = this._progress % (this.duration || this.buffer.duration);\n }\n this.source.stop();\n this.source.onended = null;\n this.isPlaying = false;\n }\n return this;\n }\n stop() {\n if (this.hasPlaybackControl === false) {\n console.warn(\"THREE.Audio: this Audio has no playback control.\");\n return;\n }\n this._progress = 0;\n this.source.stop();\n this.source.onended = null;\n this.isPlaying = false;\n return this;\n }\n connect() {\n if (this.filters.length > 0) {\n this.source.connect(this.filters[0]);\n for (let i = 1, l = this.filters.length; i < l; i++) {\n this.filters[i - 1].connect(this.filters[i]);\n }\n this.filters[this.filters.length - 1].connect(this.getOutput());\n } else {\n this.source.connect(this.getOutput());\n }\n this._connected = true;\n return this;\n }\n disconnect() {\n if (this.filters.length > 0) {\n this.source.disconnect(this.filters[0]);\n for (let i = 1, l = this.filters.length; i < l; i++) {\n this.filters[i - 1].disconnect(this.filters[i]);\n }\n this.filters[this.filters.length - 1].disconnect(this.getOutput());\n } else {\n this.source.disconnect(this.getOutput());\n }\n this._connected = false;\n return this;\n }\n getFilters() {\n return this.filters;\n }\n setFilters(value) {\n if (!value)\n value = [];\n if (this._connected === true) {\n this.disconnect();\n this.filters = value.slice();\n this.connect();\n } else {\n this.filters = value.slice();\n }\n return this;\n }\n setDetune(value) {\n this.detune = value;\n if (this.source.detune === void 0)\n return;\n if (this.isPlaying === true) {\n this.source.detune.setTargetAtTime(this.detune, this.context.currentTime, 0.01);\n }\n return this;\n }\n getDetune() {\n return this.detune;\n }\n getFilter() {\n return this.getFilters()[0];\n }\n setFilter(filter) {\n return this.setFilters(filter ? [filter] : []);\n }\n setPlaybackRate(value) {\n if (this.hasPlaybackControl === false) {\n console.warn(\"THREE.Audio: this Audio has no playback control.\");\n return;\n }\n this.playbackRate = value;\n if (this.isPlaying === true) {\n this.source.playbackRate.setTargetAtTime(this.playbackRate, this.context.currentTime, 0.01);\n }\n return this;\n }\n getPlaybackRate() {\n return this.playbackRate;\n }\n onEnded() {\n this.isPlaying = false;\n }\n getLoop() {\n if (this.hasPlaybackControl === false) {\n console.warn(\"THREE.Audio: this Audio has no playback control.\");\n return false;\n }\n return this.loop;\n }\n setLoop(value) {\n if (this.hasPlaybackControl === false) {\n console.warn(\"THREE.Audio: this Audio has no playback control.\");\n return;\n }\n this.loop = value;\n if (this.isPlaying === true) {\n this.source.loop = this.loop;\n }\n return this;\n }\n setLoopStart(value) {\n this.loopStart = value;\n return this;\n }\n setLoopEnd(value) {\n this.loopEnd = value;\n return this;\n }\n getVolume() {\n return this.gain.gain.value;\n }\n setVolume(value) {\n this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01);\n return this;\n }\n}\nconst _position = /* @__PURE__ */ new Vector3();\nconst _quaternion = /* @__PURE__ */ new Quaternion();\nconst _scale = /* @__PURE__ */ new Vector3();\nconst _orientation = /* @__PURE__ */ new Vector3();\nclass PositionalAudio extends Audio {\n constructor(listener) {\n super(listener);\n this.panner = this.context.createPanner();\n this.panner.panningModel = \"HRTF\";\n this.panner.connect(this.gain);\n }\n getOutput() {\n return this.panner;\n }\n getRefDistance() {\n return this.panner.refDistance;\n }\n setRefDistance(value) {\n this.panner.refDistance = value;\n return this;\n }\n getRolloffFactor() {\n return this.panner.rolloffFactor;\n }\n setRolloffFactor(value) {\n this.panner.rolloffFactor = value;\n return this;\n }\n getDistanceModel() {\n return this.panner.distanceModel;\n }\n setDistanceModel(value) {\n this.panner.distanceModel = value;\n return this;\n }\n getMaxDistance() {\n return this.panner.maxDistance;\n }\n setMaxDistance(value) {\n this.panner.maxDistance = value;\n return this;\n }\n setDirectionalCone(coneInnerAngle, coneOuterAngle, coneOuterGain) {\n this.panner.coneInnerAngle = coneInnerAngle;\n this.panner.coneOuterAngle = coneOuterAngle;\n this.panner.coneOuterGain = coneOuterGain;\n return this;\n }\n updateMatrixWorld(force) {\n super.updateMatrixWorld(force);\n if (this.hasPlaybackControl === true && this.isPlaying === false)\n return;\n this.matrixWorld.decompose(_position, _quaternion, _scale);\n _orientation.set(0, 0, 1).applyQuaternion(_quaternion);\n const panner = this.panner;\n if (panner.positionX) {\n const endTime = this.context.currentTime + this.listener.timeDelta;\n panner.positionX.linearRampToValueAtTime(_position.x, endTime);\n panner.positionY.linearRampToValueAtTime(_position.y, endTime);\n panner.positionZ.linearRampToValueAtTime(_position.z, endTime);\n panner.orientationX.linearRampToValueAtTime(_orientation.x, endTime);\n panner.orientationY.linearRampToValueAtTime(_orientation.y, endTime);\n panner.orientationZ.linearRampToValueAtTime(_orientation.z, endTime);\n } else {\n panner.setPosition(_position.x, _position.y, _position.z);\n panner.setOrientation(_orientation.x, _orientation.y, _orientation.z);\n }\n }\n}\nclass AudioAnalyser {\n constructor(audio, fftSize = 2048) {\n this.analyser = audio.context.createAnalyser();\n this.analyser.fftSize = fftSize;\n this.data = new Uint8Array(this.analyser.frequencyBinCount);\n audio.getOutput().connect(this.analyser);\n }\n getFrequencyData() {\n this.analyser.getByteFrequencyData(this.data);\n return this.data;\n }\n getAverageFrequency() {\n let value = 0;\n const data = this.getFrequencyData();\n for (let i = 0; i < data.length; i++) {\n value += data[i];\n }\n return value / data.length;\n }\n}\nclass PropertyMixer {\n constructor(binding, typeName, valueSize) {\n this.binding = binding;\n this.valueSize = valueSize;\n let mixFunction, mixFunctionAdditive, setIdentity;\n switch (typeName) {\n case \"quaternion\":\n mixFunction = this._slerp;\n mixFunctionAdditive = this._slerpAdditive;\n setIdentity = this._setAdditiveIdentityQuaternion;\n this.buffer = new Float64Array(valueSize * 6);\n this._workIndex = 5;\n break;\n case \"string\":\n case \"bool\":\n mixFunction = this._select;\n mixFunctionAdditive = this._select;\n setIdentity = this._setAdditiveIdentityOther;\n this.buffer = new Array(valueSize * 5);\n break;\n default:\n mixFunction = this._lerp;\n mixFunctionAdditive = this._lerpAdditive;\n setIdentity = this._setAdditiveIdentityNumeric;\n this.buffer = new Float64Array(valueSize * 5);\n }\n this._mixBufferRegion = mixFunction;\n this._mixBufferRegionAdditive = mixFunctionAdditive;\n this._setIdentity = setIdentity;\n this._origIndex = 3;\n this._addIndex = 4;\n this.cumulativeWeight = 0;\n this.cumulativeWeightAdditive = 0;\n this.useCount = 0;\n this.referenceCount = 0;\n }\n accumulate(accuIndex, weight) {\n const buffer = this.buffer, stride = this.valueSize, offset = accuIndex * stride + stride;\n let currentWeight = this.cumulativeWeight;\n if (currentWeight === 0) {\n for (let i = 0; i !== stride; ++i) {\n buffer[offset + i] = buffer[i];\n }\n currentWeight = weight;\n } else {\n currentWeight += weight;\n const mix = weight / currentWeight;\n this._mixBufferRegion(buffer, offset, 0, mix, stride);\n }\n this.cumulativeWeight = currentWeight;\n }\n accumulateAdditive(weight) {\n const buffer = this.buffer, stride = this.valueSize, offset = stride * this._addIndex;\n if (this.cumulativeWeightAdditive === 0) {\n this._setIdentity();\n }\n this._mixBufferRegionAdditive(buffer, offset, 0, weight, stride);\n this.cumulativeWeightAdditive += weight;\n }\n apply(accuIndex) {\n const stride = this.valueSize, buffer = this.buffer, offset = accuIndex * stride + stride, weight = this.cumulativeWeight, weightAdditive = this.cumulativeWeightAdditive, binding = this.binding;\n this.cumulativeWeight = 0;\n this.cumulativeWeightAdditive = 0;\n if (weight < 1) {\n const originalValueOffset = stride * this._origIndex;\n this._mixBufferRegion(buffer, offset, originalValueOffset, 1 - weight, stride);\n }\n if (weightAdditive > 0) {\n this._mixBufferRegionAdditive(buffer, offset, this._addIndex * stride, 1, stride);\n }\n for (let i = stride, e = stride + stride; i !== e; ++i) {\n if (buffer[i] !== buffer[i + stride]) {\n binding.setValue(buffer, offset);\n break;\n }\n }\n }\n saveOriginalState() {\n const binding = this.binding;\n const buffer = this.buffer, stride = this.valueSize, originalValueOffset = stride * this._origIndex;\n binding.getValue(buffer, originalValueOffset);\n for (let i = stride, e = originalValueOffset; i !== e; ++i) {\n buffer[i] = buffer[originalValueOffset + i % stride];\n }\n this._setIdentity();\n this.cumulativeWeight = 0;\n this.cumulativeWeightAdditive = 0;\n }\n restoreOriginalState() {\n const originalValueOffset = this.valueSize * 3;\n this.binding.setValue(this.buffer, originalValueOffset);\n }\n _setAdditiveIdentityNumeric() {\n const startIndex = this._addIndex * this.valueSize;\n const endIndex = startIndex + this.valueSize;\n for (let i = startIndex; i < endIndex; i++) {\n this.buffer[i] = 0;\n }\n }\n _setAdditiveIdentityQuaternion() {\n this._setAdditiveIdentityNumeric();\n this.buffer[this._addIndex * this.valueSize + 3] = 1;\n }\n _setAdditiveIdentityOther() {\n const startIndex = this._origIndex * this.valueSize;\n const targetIndex = this._addIndex * this.valueSize;\n for (let i = 0; i < this.valueSize; i++) {\n this.buffer[targetIndex + i] = this.buffer[startIndex + i];\n }\n }\n _select(buffer, dstOffset, srcOffset, t, stride) {\n if (t >= 0.5) {\n for (let i = 0; i !== stride; ++i) {\n buffer[dstOffset + i] = buffer[srcOffset + i];\n }\n }\n }\n _slerp(buffer, dstOffset, srcOffset, t) {\n Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t);\n }\n _slerpAdditive(buffer, dstOffset, srcOffset, t, stride) {\n const workOffset = this._workIndex * stride;\n Quaternion.multiplyQuaternionsFlat(buffer, workOffset, buffer, dstOffset, buffer, srcOffset);\n Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t);\n }\n _lerp(buffer, dstOffset, srcOffset, t, stride) {\n const s = 1 - t;\n for (let i = 0; i !== stride; ++i) {\n const j = dstOffset + i;\n buffer[j] = buffer[j] * s + buffer[srcOffset + i] * t;\n }\n }\n _lerpAdditive(buffer, dstOffset, srcOffset, t, stride) {\n for (let i = 0; i !== stride; ++i) {\n const j = dstOffset + i;\n buffer[j] = buffer[j] + buffer[srcOffset + i] * t;\n }\n }\n}\nconst _RESERVED_CHARS_RE = \"\\\\[\\\\]\\\\.:\\\\/\";\nconst _reservedRe = new RegExp(\"[\" + _RESERVED_CHARS_RE + \"]\", \"g\");\nconst _wordChar = \"[^\" + _RESERVED_CHARS_RE + \"]\";\nconst _wordCharOrDot = \"[^\" + _RESERVED_CHARS_RE.replace(\"\\\\.\", \"\") + \"]\";\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace(\"WC\", _wordChar);\nconst _nodeRe = /(WCOD+)?/.source.replace(\"WCOD\", _wordCharOrDot);\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace(\"WC\", _wordChar);\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace(\"WC\", _wordChar);\nconst _trackRe = new RegExp(\"^\" + _directoryRe + _nodeRe + _objectRe + _propertyRe + \"$\");\nconst _supportedObjectNames = [\"material\", \"materials\", \"bones\"];\nclass Composite {\n constructor(targetGroup, path, optionalParsedPath) {\n const parsedPath = optionalParsedPath || PropertyBinding.parseTrackName(path);\n this._targetGroup = targetGroup;\n this._bindings = targetGroup.subscribe_(path, parsedPath);\n }\n getValue(array, offset) {\n this.bind();\n const firstValidIndex = this._targetGroup.nCachedObjects_, binding = this._bindings[firstValidIndex];\n if (binding !== void 0)\n binding.getValue(array, offset);\n }\n setValue(array, offset) {\n const bindings = this._bindings;\n for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n bindings[i].setValue(array, offset);\n }\n }\n bind() {\n const bindings = this._bindings;\n for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n bindings[i].bind();\n }\n }\n unbind() {\n const bindings = this._bindings;\n for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n bindings[i].unbind();\n }\n }\n}\nclass PropertyBinding {\n constructor(rootNode, path, parsedPath) {\n this.path = path;\n this.parsedPath = parsedPath || PropertyBinding.parseTrackName(path);\n this.node = PropertyBinding.findNode(rootNode, this.parsedPath.nodeName) || rootNode;\n this.rootNode = rootNode;\n this.getValue = this._getValue_unbound;\n this.setValue = this._setValue_unbound;\n }\n static create(root, path, parsedPath) {\n if (!(root && root.isAnimationObjectGroup)) {\n return new PropertyBinding(root, path, parsedPath);\n } else {\n return new PropertyBinding.Composite(root, path, parsedPath);\n }\n }\n static sanitizeNodeName(name) {\n return name.replace(/\\s/g, \"_\").replace(_reservedRe, \"\");\n }\n static parseTrackName(trackName) {\n const matches = _trackRe.exec(trackName);\n if (!matches) {\n throw new Error(\"PropertyBinding: Cannot parse trackName: \" + trackName);\n }\n const results = {\n nodeName: matches[2],\n objectName: matches[3],\n objectIndex: matches[4],\n propertyName: matches[5],\n propertyIndex: matches[6]\n };\n const lastDot = results.nodeName && results.nodeName.lastIndexOf(\".\");\n if (lastDot !== void 0 && lastDot !== -1) {\n const objectName = results.nodeName.substring(lastDot + 1);\n if (_supportedObjectNames.indexOf(objectName) !== -1) {\n results.nodeName = results.nodeName.substring(0, lastDot);\n results.objectName = objectName;\n }\n }\n if (results.propertyName === null || results.propertyName.length === 0) {\n throw new Error(\"PropertyBinding: can not parse propertyName from trackName: \" + trackName);\n }\n return results;\n }\n static findNode(root, nodeName) {\n if (!nodeName || nodeName === \"\" || nodeName === \".\" || nodeName === -1 || nodeName === root.name || nodeName === root.uuid) {\n return root;\n }\n if (root.skeleton) {\n const bone = root.skeleton.getBoneByName(nodeName);\n if (bone !== void 0) {\n return bone;\n }\n }\n if (root.children) {\n const searchNodeSubtree = function(children) {\n for (let i = 0; i < children.length; i++) {\n const childNode = children[i];\n if (childNode.name === nodeName || childNode.uuid === nodeName) {\n return childNode;\n }\n const result = searchNodeSubtree(childNode.children);\n if (result)\n return result;\n }\n return null;\n };\n const subTreeNode = searchNodeSubtree(root.children);\n if (subTreeNode) {\n return subTreeNode;\n }\n }\n return null;\n }\n _getValue_unavailable() {\n }\n _setValue_unavailable() {\n }\n _getValue_direct(buffer, offset) {\n buffer[offset] = this.targetObject[this.propertyName];\n }\n _getValue_array(buffer, offset) {\n const source = this.resolvedProperty;\n for (let i = 0, n = source.length; i !== n; ++i) {\n buffer[offset++] = source[i];\n }\n }\n _getValue_arrayElement(buffer, offset) {\n buffer[offset] = this.resolvedProperty[this.propertyIndex];\n }\n _getValue_toArray(buffer, offset) {\n this.resolvedProperty.toArray(buffer, offset);\n }\n _setValue_direct(buffer, offset) {\n this.targetObject[this.propertyName] = buffer[offset];\n }\n _setValue_direct_setNeedsUpdate(buffer, offset) {\n this.targetObject[this.propertyName] = buffer[offset];\n this.targetObject.needsUpdate = true;\n }\n _setValue_direct_setMatrixWorldNeedsUpdate(buffer, offset) {\n this.targetObject[this.propertyName] = buffer[offset];\n this.targetObject.matrixWorldNeedsUpdate = true;\n }\n _setValue_array(buffer, offset) {\n const dest = this.resolvedProperty;\n for (let i = 0, n = dest.length; i !== n; ++i) {\n dest[i] = buffer[offset++];\n }\n }\n _setValue_array_setNeedsUpdate(buffer, offset) {\n const dest = this.resolvedProperty;\n for (let i = 0, n = dest.length; i !== n; ++i) {\n dest[i] = buffer[offset++];\n }\n this.targetObject.needsUpdate = true;\n }\n _setValue_array_setMatrixWorldNeedsUpdate(buffer, offset) {\n const dest = this.resolvedProperty;\n for (let i = 0, n = dest.length; i !== n; ++i) {\n dest[i] = buffer[offset++];\n }\n this.targetObject.matrixWorldNeedsUpdate = true;\n }\n _setValue_arrayElement(buffer, offset) {\n this.resolvedProperty[this.propertyIndex] = buffer[offset];\n }\n _setValue_arrayElement_setNeedsUpdate(buffer, offset) {\n this.resolvedProperty[this.propertyIndex] = buffer[offset];\n this.targetObject.needsUpdate = true;\n }\n _setValue_arrayElement_setMatrixWorldNeedsUpdate(buffer, offset) {\n this.resolvedProperty[this.propertyIndex] = buffer[offset];\n this.targetObject.matrixWorldNeedsUpdate = true;\n }\n _setValue_fromArray(buffer, offset) {\n this.resolvedProperty.fromArray(buffer, offset);\n }\n _setValue_fromArray_setNeedsUpdate(buffer, offset) {\n this.resolvedProperty.fromArray(buffer, offset);\n this.targetObject.needsUpdate = true;\n }\n _setValue_fromArray_setMatrixWorldNeedsUpdate(buffer, offset) {\n this.resolvedProperty.fromArray(buffer, offset);\n this.targetObject.matrixWorldNeedsUpdate = true;\n }\n _getValue_unbound(targetArray, offset) {\n this.bind();\n this.getValue(targetArray, offset);\n }\n _setValue_unbound(sourceArray, offset) {\n this.bind();\n this.setValue(sourceArray, offset);\n }\n bind() {\n let targetObject = this.node;\n const parsedPath = this.parsedPath;\n const objectName = parsedPath.objectName;\n const propertyName = parsedPath.propertyName;\n let propertyIndex = parsedPath.propertyIndex;\n if (!targetObject) {\n targetObject = PropertyBinding.findNode(this.rootNode, parsedPath.nodeName) || this.rootNode;\n this.node = targetObject;\n }\n this.getValue = this._getValue_unavailable;\n this.setValue = this._setValue_unavailable;\n if (!targetObject) {\n console.error(\"THREE.PropertyBinding: Trying to update node for track: \" + this.path + \" but it wasn't found.\");\n return;\n }\n if (objectName) {\n let objectIndex = parsedPath.objectIndex;\n switch (objectName) {\n case \"materials\":\n if (!targetObject.material) {\n console.error(\"THREE.PropertyBinding: Can not bind to material as node does not have a material.\", this);\n return;\n }\n if (!targetObject.material.materials) {\n console.error(\"THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.\", this);\n return;\n }\n targetObject = targetObject.material.materials;\n break;\n case \"bones\":\n if (!targetObject.skeleton) {\n console.error(\"THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.\", this);\n return;\n }\n targetObject = targetObject.skeleton.bones;\n for (let i = 0; i < targetObject.length; i++) {\n if (targetObject[i].name === objectIndex) {\n objectIndex = i;\n break;\n }\n }\n break;\n default:\n if (targetObject[objectName] === void 0) {\n console.error(\"THREE.PropertyBinding: Can not bind to objectName of node undefined.\", this);\n return;\n }\n targetObject = targetObject[objectName];\n }\n if (objectIndex !== void 0) {\n if (targetObject[objectIndex] === void 0) {\n console.error(\"THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.\", this, targetObject);\n return;\n }\n targetObject = targetObject[objectIndex];\n }\n }\n const nodeProperty = targetObject[propertyName];\n if (nodeProperty === void 0) {\n const nodeName = parsedPath.nodeName;\n console.error(\"THREE.PropertyBinding: Trying to update property for track: \" + nodeName + \".\" + propertyName + \" but it wasn't found.\", targetObject);\n return;\n }\n let versioning = this.Versioning.None;\n this.targetObject = targetObject;\n if (targetObject.needsUpdate !== void 0) {\n versioning = this.Versioning.NeedsUpdate;\n } else if (targetObject.matrixWorldNeedsUpdate !== void 0) {\n versioning = this.Versioning.MatrixWorldNeedsUpdate;\n }\n let bindingType = this.BindingType.Direct;\n if (propertyIndex !== void 0) {\n if (propertyName === \"morphTargetInfluences\") {\n if (!targetObject.geometry) {\n console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.\", this);\n return;\n }\n if (targetObject.geometry.isBufferGeometry) {\n if (!targetObject.geometry.morphAttributes) {\n console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.\", this);\n return;\n }\n if (targetObject.morphTargetDictionary[propertyIndex] !== void 0) {\n propertyIndex = targetObject.morphTargetDictionary[propertyIndex];\n }\n } else {\n console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.\", this);\n return;\n }\n }\n bindingType = this.BindingType.ArrayElement;\n this.resolvedProperty = nodeProperty;\n this.propertyIndex = propertyIndex;\n } else if (nodeProperty.fromArray !== void 0 && nodeProperty.toArray !== void 0) {\n bindingType = this.BindingType.HasFromToArray;\n this.resolvedProperty = nodeProperty;\n } else if (Array.isArray(nodeProperty)) {\n bindingType = this.BindingType.EntireArray;\n this.resolvedProperty = nodeProperty;\n } else {\n this.propertyName = propertyName;\n }\n this.getValue = this.GetterByBindingType[bindingType];\n this.setValue = this.SetterByBindingTypeAndVersioning[bindingType][versioning];\n }\n unbind() {\n this.node = null;\n this.getValue = this._getValue_unbound;\n this.setValue = this._setValue_unbound;\n }\n}\nPropertyBinding.Composite = Composite;\nPropertyBinding.prototype.BindingType = {\n Direct: 0,\n EntireArray: 1,\n ArrayElement: 2,\n HasFromToArray: 3\n};\nPropertyBinding.prototype.Versioning = {\n None: 0,\n NeedsUpdate: 1,\n MatrixWorldNeedsUpdate: 2\n};\nPropertyBinding.prototype.GetterByBindingType = [\n PropertyBinding.prototype._getValue_direct,\n PropertyBinding.prototype._getValue_array,\n PropertyBinding.prototype._getValue_arrayElement,\n PropertyBinding.prototype._getValue_toArray\n];\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n [\n PropertyBinding.prototype._setValue_direct,\n PropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n PropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate\n ],\n [\n PropertyBinding.prototype._setValue_array,\n PropertyBinding.prototype._setValue_array_setNeedsUpdate,\n PropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate\n ],\n [\n PropertyBinding.prototype._setValue_arrayElement,\n PropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n PropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate\n ],\n [\n PropertyBinding.prototype._setValue_fromArray,\n PropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n PropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate\n ]\n];\nclass AnimationObjectGroup {\n constructor() {\n this.uuid = generateUUID();\n this._objects = Array.prototype.slice.call(arguments);\n this.nCachedObjects_ = 0;\n const indices = {};\n this._indicesByUUID = indices;\n for (let i = 0, n = arguments.length; i !== n; ++i) {\n indices[arguments[i].uuid] = i;\n }\n this._paths = [];\n this._parsedPaths = [];\n this._bindings = [];\n this._bindingsIndicesByPath = {};\n const scope = this;\n this.stats = {\n objects: {\n get total() {\n return scope._objects.length;\n },\n get inUse() {\n return this.total - scope.nCachedObjects_;\n }\n },\n get bindingsPerObject() {\n return scope._bindings.length;\n }\n };\n }\n add() {\n const objects = this._objects, indicesByUUID = this._indicesByUUID, paths = this._paths, parsedPaths = this._parsedPaths, bindings = this._bindings, nBindings = bindings.length;\n let knownObject = void 0, nObjects = objects.length, nCachedObjects = this.nCachedObjects_;\n for (let i = 0, n = arguments.length; i !== n; ++i) {\n const object = arguments[i], uuid = object.uuid;\n let index = indicesByUUID[uuid];\n if (index === void 0) {\n index = nObjects++;\n indicesByUUID[uuid] = index;\n objects.push(object);\n for (let j = 0, m = nBindings; j !== m; ++j) {\n bindings[j].push(new PropertyBinding(object, paths[j], parsedPaths[j]));\n }\n } else if (index < nCachedObjects) {\n knownObject = objects[index];\n const firstActiveIndex = --nCachedObjects, lastCachedObject = objects[firstActiveIndex];\n indicesByUUID[lastCachedObject.uuid] = index;\n objects[index] = lastCachedObject;\n indicesByUUID[uuid] = firstActiveIndex;\n objects[firstActiveIndex] = object;\n for (let j = 0, m = nBindings; j !== m; ++j) {\n const bindingsForPath = bindings[j], lastCached = bindingsForPath[firstActiveIndex];\n let binding = bindingsForPath[index];\n bindingsForPath[index] = lastCached;\n if (binding === void 0) {\n binding = new PropertyBinding(object, paths[j], parsedPaths[j]);\n }\n bindingsForPath[firstActiveIndex] = binding;\n }\n } else if (objects[index] !== knownObject) {\n console.error(\"THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.\");\n }\n }\n this.nCachedObjects_ = nCachedObjects;\n }\n remove() {\n const objects = this._objects, indicesByUUID = this._indicesByUUID, bindings = this._bindings, nBindings = bindings.length;\n let nCachedObjects = this.nCachedObjects_;\n for (let i = 0, n = arguments.length; i !== n; ++i) {\n const object = arguments[i], uuid = object.uuid, index = indicesByUUID[uuid];\n if (index !== void 0 && index >= nCachedObjects) {\n const lastCachedIndex = nCachedObjects++, firstActiveObject = objects[lastCachedIndex];\n indicesByUUID[firstActiveObject.uuid] = index;\n objects[index] = firstActiveObject;\n indicesByUUID[uuid] = lastCachedIndex;\n objects[lastCachedIndex] = object;\n for (let j = 0, m = nBindings; j !== m; ++j) {\n const bindingsForPath = bindings[j], firstActive = bindingsForPath[lastCachedIndex], binding = bindingsForPath[index];\n bindingsForPath[index] = firstActive;\n bindingsForPath[lastCachedIndex] = binding;\n }\n }\n }\n this.nCachedObjects_ = nCachedObjects;\n }\n uncache() {\n const objects = this._objects, indicesByUUID = this._indicesByUUID, bindings = this._bindings, nBindings = bindings.length;\n let nCachedObjects = this.nCachedObjects_, nObjects = objects.length;\n for (let i = 0, n = arguments.length; i !== n; ++i) {\n const object = arguments[i], uuid = object.uuid, index = indicesByUUID[uuid];\n if (index !== void 0) {\n delete indicesByUUID[uuid];\n if (index < nCachedObjects) {\n const firstActiveIndex = --nCachedObjects, lastCachedObject = objects[firstActiveIndex], lastIndex = --nObjects, lastObject = objects[lastIndex];\n indicesByUUID[lastCachedObject.uuid] = index;\n objects[index] = lastCachedObject;\n indicesByUUID[lastObject.uuid] = firstActiveIndex;\n objects[firstActiveIndex] = lastObject;\n objects.pop();\n for (let j = 0, m = nBindings; j !== m; ++j) {\n const bindingsForPath = bindings[j], lastCached = bindingsForPath[firstActiveIndex], last = bindingsForPath[lastIndex];\n bindingsForPath[index] = lastCached;\n bindingsForPath[firstActiveIndex] = last;\n bindingsForPath.pop();\n }\n } else {\n const lastIndex = --nObjects, lastObject = objects[lastIndex];\n if (lastIndex > 0) {\n indicesByUUID[lastObject.uuid] = index;\n }\n objects[index] = lastObject;\n objects.pop();\n for (let j = 0, m = nBindings; j !== m; ++j) {\n const bindingsForPath = bindings[j];\n bindingsForPath[index] = bindingsForPath[lastIndex];\n bindingsForPath.pop();\n }\n }\n }\n }\n this.nCachedObjects_ = nCachedObjects;\n }\n subscribe_(path, parsedPath) {\n const indicesByPath = this._bindingsIndicesByPath;\n let index = indicesByPath[path];\n const bindings = this._bindings;\n if (index !== void 0)\n return bindings[index];\n const paths = this._paths, parsedPaths = this._parsedPaths, objects = this._objects, nObjects = objects.length, nCachedObjects = this.nCachedObjects_, bindingsForPath = new Array(nObjects);\n index = bindings.length;\n indicesByPath[path] = index;\n paths.push(path);\n parsedPaths.push(parsedPath);\n bindings.push(bindingsForPath);\n for (let i = nCachedObjects, n = objects.length; i !== n; ++i) {\n const object = objects[i];\n bindingsForPath[i] = new PropertyBinding(object, path, parsedPath);\n }\n return bindingsForPath;\n }\n unsubscribe_(path) {\n const indicesByPath = this._bindingsIndicesByPath, index = indicesByPath[path];\n if (index !== void 0) {\n const paths = this._paths, parsedPaths = this._parsedPaths, bindings = this._bindings, lastBindingsIndex = bindings.length - 1, lastBindings = bindings[lastBindingsIndex], lastBindingsPath = path[lastBindingsIndex];\n indicesByPath[lastBindingsPath] = index;\n bindings[index] = lastBindings;\n bindings.pop();\n parsedPaths[index] = parsedPaths[lastBindingsIndex];\n parsedPaths.pop();\n paths[index] = paths[lastBindingsIndex];\n paths.pop();\n }\n }\n}\nAnimationObjectGroup.prototype.isAnimationObjectGroup = true;\nclass AnimationAction {\n constructor(mixer, clip, localRoot = null, blendMode = clip.blendMode) {\n this._mixer = mixer;\n this._clip = clip;\n this._localRoot = localRoot;\n this.blendMode = blendMode;\n const tracks = clip.tracks, nTracks = tracks.length, interpolants = new Array(nTracks);\n const interpolantSettings = {\n endingStart: ZeroCurvatureEnding,\n endingEnd: ZeroCurvatureEnding\n };\n for (let i = 0; i !== nTracks; ++i) {\n const interpolant = tracks[i].createInterpolant(null);\n interpolants[i] = interpolant;\n interpolant.settings = interpolantSettings;\n }\n this._interpolantSettings = interpolantSettings;\n this._interpolants = interpolants;\n this._propertyBindings = new Array(nTracks);\n this._cacheIndex = null;\n this._byClipCacheIndex = null;\n this._timeScaleInterpolant = null;\n this._weightInterpolant = null;\n this.loop = LoopRepeat;\n this._loopCount = -1;\n this._startTime = null;\n this.time = 0;\n this.timeScale = 1;\n this._effectiveTimeScale = 1;\n this.weight = 1;\n this._effectiveWeight = 1;\n this.repetitions = Infinity;\n this.paused = false;\n this.enabled = true;\n this.clampWhenFinished = false;\n this.zeroSlopeAtStart = true;\n this.zeroSlopeAtEnd = true;\n }\n play() {\n this._mixer._activateAction(this);\n return this;\n }\n stop() {\n this._mixer._deactivateAction(this);\n return this.reset();\n }\n reset() {\n this.paused = false;\n this.enabled = true;\n this.time = 0;\n this._loopCount = -1;\n this._startTime = null;\n return this.stopFading().stopWarping();\n }\n isRunning() {\n return this.enabled && !this.paused && this.timeScale !== 0 && this._startTime === null && this._mixer._isActiveAction(this);\n }\n isScheduled() {\n return this._mixer._isActiveAction(this);\n }\n startAt(time) {\n this._startTime = time;\n return this;\n }\n setLoop(mode, repetitions) {\n this.loop = mode;\n this.repetitions = repetitions;\n return this;\n }\n setEffectiveWeight(weight) {\n this.weight = weight;\n this._effectiveWeight = this.enabled ? weight : 0;\n return this.stopFading();\n }\n getEffectiveWeight() {\n return this._effectiveWeight;\n }\n fadeIn(duration) {\n return this._scheduleFading(duration, 0, 1);\n }\n fadeOut(duration) {\n return this._scheduleFading(duration, 1, 0);\n }\n crossFadeFrom(fadeOutAction, duration, warp) {\n fadeOutAction.fadeOut(duration);\n this.fadeIn(duration);\n if (warp) {\n const fadeInDuration = this._clip.duration, fadeOutDuration = fadeOutAction._clip.duration, startEndRatio = fadeOutDuration / fadeInDuration, endStartRatio = fadeInDuration / fadeOutDuration;\n fadeOutAction.warp(1, startEndRatio, duration);\n this.warp(endStartRatio, 1, duration);\n }\n return this;\n }\n crossFadeTo(fadeInAction, duration, warp) {\n return fadeInAction.crossFadeFrom(this, duration, warp);\n }\n stopFading() {\n const weightInterpolant = this._weightInterpolant;\n if (weightInterpolant !== null) {\n this._weightInterpolant = null;\n this._mixer._takeBackControlInterpolant(weightInterpolant);\n }\n return this;\n }\n setEffectiveTimeScale(timeScale) {\n this.timeScale = timeScale;\n this._effectiveTimeScale = this.paused ? 0 : timeScale;\n return this.stopWarping();\n }\n getEffectiveTimeScale() {\n return this._effectiveTimeScale;\n }\n setDuration(duration) {\n this.timeScale = this._clip.duration / duration;\n return this.stopWarping();\n }\n syncWith(action) {\n this.time = action.time;\n this.timeScale = action.timeScale;\n return this.stopWarping();\n }\n halt(duration) {\n return this.warp(this._effectiveTimeScale, 0, duration);\n }\n warp(startTimeScale, endTimeScale, duration) {\n const mixer = this._mixer, now2 = mixer.time, timeScale = this.timeScale;\n let interpolant = this._timeScaleInterpolant;\n if (interpolant === null) {\n interpolant = mixer._lendControlInterpolant();\n this._timeScaleInterpolant = interpolant;\n }\n const times = interpolant.parameterPositions, values = interpolant.sampleValues;\n times[0] = now2;\n times[1] = now2 + duration;\n values[0] = startTimeScale / timeScale;\n values[1] = endTimeScale / timeScale;\n return this;\n }\n stopWarping() {\n const timeScaleInterpolant = this._timeScaleInterpolant;\n if (timeScaleInterpolant !== null) {\n this._timeScaleInterpolant = null;\n this._mixer._takeBackControlInterpolant(timeScaleInterpolant);\n }\n return this;\n }\n getMixer() {\n return this._mixer;\n }\n getClip() {\n return this._clip;\n }\n getRoot() {\n return this._localRoot || this._mixer._root;\n }\n _update(time, deltaTime, timeDirection, accuIndex) {\n if (!this.enabled) {\n this._updateWeight(time);\n return;\n }\n const startTime = this._startTime;\n if (startTime !== null) {\n const timeRunning = (time - startTime) * timeDirection;\n if (timeRunning < 0 || timeDirection === 0) {\n return;\n }\n this._startTime = null;\n deltaTime = timeDirection * timeRunning;\n }\n deltaTime *= this._updateTimeScale(time);\n const clipTime = this._updateTime(deltaTime);\n const weight = this._updateWeight(time);\n if (weight > 0) {\n const interpolants = this._interpolants;\n const propertyMixers = this._propertyBindings;\n switch (this.blendMode) {\n case AdditiveAnimationBlendMode:\n for (let j = 0, m = interpolants.length; j !== m; ++j) {\n interpolants[j].evaluate(clipTime);\n propertyMixers[j].accumulateAdditive(weight);\n }\n break;\n case NormalAnimationBlendMode:\n default:\n for (let j = 0, m = interpolants.length; j !== m; ++j) {\n interpolants[j].evaluate(clipTime);\n propertyMixers[j].accumulate(accuIndex, weight);\n }\n }\n }\n }\n _updateWeight(time) {\n let weight = 0;\n if (this.enabled) {\n weight = this.weight;\n const interpolant = this._weightInterpolant;\n if (interpolant !== null) {\n const interpolantValue = interpolant.evaluate(time)[0];\n weight *= interpolantValue;\n if (time > interpolant.parameterPositions[1]) {\n this.stopFading();\n if (interpolantValue === 0) {\n this.enabled = false;\n }\n }\n }\n }\n this._effectiveWeight = weight;\n return weight;\n }\n _updateTimeScale(time) {\n let timeScale = 0;\n if (!this.paused) {\n timeScale = this.timeScale;\n const interpolant = this._timeScaleInterpolant;\n if (interpolant !== null) {\n const interpolantValue = interpolant.evaluate(time)[0];\n timeScale *= interpolantValue;\n if (time > interpolant.parameterPositions[1]) {\n this.stopWarping();\n if (timeScale === 0) {\n this.paused = true;\n } else {\n this.timeScale = timeScale;\n }\n }\n }\n }\n this._effectiveTimeScale = timeScale;\n return timeScale;\n }\n _updateTime(deltaTime) {\n const duration = this._clip.duration;\n const loop = this.loop;\n let time = this.time + deltaTime;\n let loopCount = this._loopCount;\n const pingPong = loop === LoopPingPong;\n if (deltaTime === 0) {\n if (loopCount === -1)\n return time;\n return pingPong && (loopCount & 1) === 1 ? duration - time : time;\n }\n if (loop === LoopOnce) {\n if (loopCount === -1) {\n this._loopCount = 0;\n this._setEndings(true, true, false);\n }\n handle_stop: {\n if (time >= duration) {\n time = duration;\n } else if (time < 0) {\n time = 0;\n } else {\n this.time = time;\n break handle_stop;\n }\n if (this.clampWhenFinished)\n this.paused = true;\n else\n this.enabled = false;\n this.time = time;\n this._mixer.dispatchEvent({\n type: \"finished\",\n action: this,\n direction: deltaTime < 0 ? -1 : 1\n });\n }\n } else {\n if (loopCount === -1) {\n if (deltaTime >= 0) {\n loopCount = 0;\n this._setEndings(true, this.repetitions === 0, pingPong);\n } else {\n this._setEndings(this.repetitions === 0, true, pingPong);\n }\n }\n if (time >= duration || time < 0) {\n const loopDelta = Math.floor(time / duration);\n time -= duration * loopDelta;\n loopCount += Math.abs(loopDelta);\n const pending = this.repetitions - loopCount;\n if (pending <= 0) {\n if (this.clampWhenFinished)\n this.paused = true;\n else\n this.enabled = false;\n time = deltaTime > 0 ? duration : 0;\n this.time = time;\n this._mixer.dispatchEvent({\n type: \"finished\",\n action: this,\n direction: deltaTime > 0 ? 1 : -1\n });\n } else {\n if (pending === 1) {\n const atStart = deltaTime < 0;\n this._setEndings(atStart, !atStart, pingPong);\n } else {\n this._setEndings(false, false, pingPong);\n }\n this._loopCount = loopCount;\n this.time = time;\n this._mixer.dispatchEvent({\n type: \"loop\",\n action: this,\n loopDelta\n });\n }\n } else {\n this.time = time;\n }\n if (pingPong && (loopCount & 1) === 1) {\n return duration - time;\n }\n }\n return time;\n }\n _setEndings(atStart, atEnd, pingPong) {\n const settings = this._interpolantSettings;\n if (pingPong) {\n settings.endingStart = ZeroSlopeEnding;\n settings.endingEnd = ZeroSlopeEnding;\n } else {\n if (atStart) {\n settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n } else {\n settings.endingStart = WrapAroundEnding;\n }\n if (atEnd) {\n settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n } else {\n settings.endingEnd = WrapAroundEnding;\n }\n }\n }\n _scheduleFading(duration, weightNow, weightThen) {\n const mixer = this._mixer, now2 = mixer.time;\n let interpolant = this._weightInterpolant;\n if (interpolant === null) {\n interpolant = mixer._lendControlInterpolant();\n this._weightInterpolant = interpolant;\n }\n const times = interpolant.parameterPositions, values = interpolant.sampleValues;\n times[0] = now2;\n values[0] = weightNow;\n times[1] = now2 + duration;\n values[1] = weightThen;\n return this;\n }\n}\nclass AnimationMixer extends EventDispatcher {\n constructor(root) {\n super();\n this._root = root;\n this._initMemoryManager();\n this._accuIndex = 0;\n this.time = 0;\n this.timeScale = 1;\n }\n _bindAction(action, prototypeAction) {\n const root = action._localRoot || this._root, tracks = action._clip.tracks, nTracks = tracks.length, bindings = action._propertyBindings, interpolants = action._interpolants, rootUuid = root.uuid, bindingsByRoot = this._bindingsByRootAndName;\n let bindingsByName = bindingsByRoot[rootUuid];\n if (bindingsByName === void 0) {\n bindingsByName = {};\n bindingsByRoot[rootUuid] = bindingsByName;\n }\n for (let i = 0; i !== nTracks; ++i) {\n const track = tracks[i], trackName = track.name;\n let binding = bindingsByName[trackName];\n if (binding !== void 0) {\n bindings[i] = binding;\n } else {\n binding = bindings[i];\n if (binding !== void 0) {\n if (binding._cacheIndex === null) {\n ++binding.referenceCount;\n this._addInactiveBinding(binding, rootUuid, trackName);\n }\n continue;\n }\n const path = prototypeAction && prototypeAction._propertyBindings[i].binding.parsedPath;\n binding = new PropertyMixer(PropertyBinding.create(root, trackName, path), track.ValueTypeName, track.getValueSize());\n ++binding.referenceCount;\n this._addInactiveBinding(binding, rootUuid, trackName);\n bindings[i] = binding;\n }\n interpolants[i].resultBuffer = binding.buffer;\n }\n }\n _activateAction(action) {\n if (!this._isActiveAction(action)) {\n if (action._cacheIndex === null) {\n const rootUuid = (action._localRoot || this._root).uuid, clipUuid = action._clip.uuid, actionsForClip = this._actionsByClip[clipUuid];\n this._bindAction(action, actionsForClip && actionsForClip.knownActions[0]);\n this._addInactiveAction(action, clipUuid, rootUuid);\n }\n const bindings = action._propertyBindings;\n for (let i = 0, n = bindings.length; i !== n; ++i) {\n const binding = bindings[i];\n if (binding.useCount++ === 0) {\n this._lendBinding(binding);\n binding.saveOriginalState();\n }\n }\n this._lendAction(action);\n }\n }\n _deactivateAction(action) {\n if (this._isActiveAction(action)) {\n const bindings = action._propertyBindings;\n for (let i = 0, n = bindings.length; i !== n; ++i) {\n const binding = bindings[i];\n if (--binding.useCount === 0) {\n binding.restoreOriginalState();\n this._takeBackBinding(binding);\n }\n }\n this._takeBackAction(action);\n }\n }\n _initMemoryManager() {\n this._actions = [];\n this._nActiveActions = 0;\n this._actionsByClip = {};\n this._bindings = [];\n this._nActiveBindings = 0;\n this._bindingsByRootAndName = {};\n this._controlInterpolants = [];\n this._nActiveControlInterpolants = 0;\n const scope = this;\n this.stats = {\n actions: {\n get total() {\n return scope._actions.length;\n },\n get inUse() {\n return scope._nActiveActions;\n }\n },\n bindings: {\n get total() {\n return scope._bindings.length;\n },\n get inUse() {\n return scope._nActiveBindings;\n }\n },\n controlInterpolants: {\n get total() {\n return scope._controlInterpolants.length;\n },\n get inUse() {\n return scope._nActiveControlInterpolants;\n }\n }\n };\n }\n _isActiveAction(action) {\n const index = action._cacheIndex;\n return index !== null && index < this._nActiveActions;\n }\n _addInactiveAction(action, clipUuid, rootUuid) {\n const actions = this._actions, actionsByClip = this._actionsByClip;\n let actionsForClip = actionsByClip[clipUuid];\n if (actionsForClip === void 0) {\n actionsForClip = {\n knownActions: [action],\n actionByRoot: {}\n };\n action._byClipCacheIndex = 0;\n actionsByClip[clipUuid] = actionsForClip;\n } else {\n const knownActions = actionsForClip.knownActions;\n action._byClipCacheIndex = knownActions.length;\n knownActions.push(action);\n }\n action._cacheIndex = actions.length;\n actions.push(action);\n actionsForClip.actionByRoot[rootUuid] = action;\n }\n _removeInactiveAction(action) {\n const actions = this._actions, lastInactiveAction = actions[actions.length - 1], cacheIndex = action._cacheIndex;\n lastInactiveAction._cacheIndex = cacheIndex;\n actions[cacheIndex] = lastInactiveAction;\n actions.pop();\n action._cacheIndex = null;\n const clipUuid = action._clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid], knownActionsForClip = actionsForClip.knownActions, lastKnownAction = knownActionsForClip[knownActionsForClip.length - 1], byClipCacheIndex = action._byClipCacheIndex;\n lastKnownAction._byClipCacheIndex = byClipCacheIndex;\n knownActionsForClip[byClipCacheIndex] = lastKnownAction;\n knownActionsForClip.pop();\n action._byClipCacheIndex = null;\n const actionByRoot = actionsForClip.actionByRoot, rootUuid = (action._localRoot || this._root).uuid;\n delete actionByRoot[rootUuid];\n if (knownActionsForClip.length === 0) {\n delete actionsByClip[clipUuid];\n }\n this._removeInactiveBindingsForAction(action);\n }\n _removeInactiveBindingsForAction(action) {\n const bindings = action._propertyBindings;\n for (let i = 0, n = bindings.length; i !== n; ++i) {\n const binding = bindings[i];\n if (--binding.referenceCount === 0) {\n this._removeInactiveBinding(binding);\n }\n }\n }\n _lendAction(action) {\n const actions = this._actions, prevIndex = action._cacheIndex, lastActiveIndex = this._nActiveActions++, firstInactiveAction = actions[lastActiveIndex];\n action._cacheIndex = lastActiveIndex;\n actions[lastActiveIndex] = action;\n firstInactiveAction._cacheIndex = prevIndex;\n actions[prevIndex] = firstInactiveAction;\n }\n _takeBackAction(action) {\n const actions = this._actions, prevIndex = action._cacheIndex, firstInactiveIndex = --this._nActiveActions, lastActiveAction = actions[firstInactiveIndex];\n action._cacheIndex = firstInactiveIndex;\n actions[firstInactiveIndex] = action;\n lastActiveAction._cacheIndex = prevIndex;\n actions[prevIndex] = lastActiveAction;\n }\n _addInactiveBinding(binding, rootUuid, trackName) {\n const bindingsByRoot = this._bindingsByRootAndName, bindings = this._bindings;\n let bindingByName = bindingsByRoot[rootUuid];\n if (bindingByName === void 0) {\n bindingByName = {};\n bindingsByRoot[rootUuid] = bindingByName;\n }\n bindingByName[trackName] = binding;\n binding._cacheIndex = bindings.length;\n bindings.push(binding);\n }\n _removeInactiveBinding(binding) {\n const bindings = this._bindings, propBinding = binding.binding, rootUuid = propBinding.rootNode.uuid, trackName = propBinding.path, bindingsByRoot = this._bindingsByRootAndName, bindingByName = bindingsByRoot[rootUuid], lastInactiveBinding = bindings[bindings.length - 1], cacheIndex = binding._cacheIndex;\n lastInactiveBinding._cacheIndex = cacheIndex;\n bindings[cacheIndex] = lastInactiveBinding;\n bindings.pop();\n delete bindingByName[trackName];\n if (Object.keys(bindingByName).length === 0) {\n delete bindingsByRoot[rootUuid];\n }\n }\n _lendBinding(binding) {\n const bindings = this._bindings, prevIndex = binding._cacheIndex, lastActiveIndex = this._nActiveBindings++, firstInactiveBinding = bindings[lastActiveIndex];\n binding._cacheIndex = lastActiveIndex;\n bindings[lastActiveIndex] = binding;\n firstInactiveBinding._cacheIndex = prevIndex;\n bindings[prevIndex] = firstInactiveBinding;\n }\n _takeBackBinding(binding) {\n const bindings = this._bindings, prevIndex = binding._cacheIndex, firstInactiveIndex = --this._nActiveBindings, lastActiveBinding = bindings[firstInactiveIndex];\n binding._cacheIndex = firstInactiveIndex;\n bindings[firstInactiveIndex] = binding;\n lastActiveBinding._cacheIndex = prevIndex;\n bindings[prevIndex] = lastActiveBinding;\n }\n _lendControlInterpolant() {\n const interpolants = this._controlInterpolants, lastActiveIndex = this._nActiveControlInterpolants++;\n let interpolant = interpolants[lastActiveIndex];\n if (interpolant === void 0) {\n interpolant = new LinearInterpolant(new Float32Array(2), new Float32Array(2), 1, this._controlInterpolantsResultBuffer);\n interpolant.__cacheIndex = lastActiveIndex;\n interpolants[lastActiveIndex] = interpolant;\n }\n return interpolant;\n }\n _takeBackControlInterpolant(interpolant) {\n const interpolants = this._controlInterpolants, prevIndex = interpolant.__cacheIndex, firstInactiveIndex = --this._nActiveControlInterpolants, lastActiveInterpolant = interpolants[firstInactiveIndex];\n interpolant.__cacheIndex = firstInactiveIndex;\n interpolants[firstInactiveIndex] = interpolant;\n lastActiveInterpolant.__cacheIndex = prevIndex;\n interpolants[prevIndex] = lastActiveInterpolant;\n }\n clipAction(clip, optionalRoot, blendMode) {\n const root = optionalRoot || this._root, rootUuid = root.uuid;\n let clipObject = typeof clip === \"string\" ? AnimationClip.findByName(root, clip) : clip;\n const clipUuid = clipObject !== null ? clipObject.uuid : clip;\n const actionsForClip = this._actionsByClip[clipUuid];\n let prototypeAction = null;\n if (blendMode === void 0) {\n if (clipObject !== null) {\n blendMode = clipObject.blendMode;\n } else {\n blendMode = NormalAnimationBlendMode;\n }\n }\n if (actionsForClip !== void 0) {\n const existingAction = actionsForClip.actionByRoot[rootUuid];\n if (existingAction !== void 0 && existingAction.blendMode === blendMode) {\n return existingAction;\n }\n prototypeAction = actionsForClip.knownActions[0];\n if (clipObject === null)\n clipObject = prototypeAction._clip;\n }\n if (clipObject === null)\n return null;\n const newAction = new AnimationAction(this, clipObject, optionalRoot, blendMode);\n this._bindAction(newAction, prototypeAction);\n this._addInactiveAction(newAction, clipUuid, rootUuid);\n return newAction;\n }\n existingAction(clip, optionalRoot) {\n const root = optionalRoot || this._root, rootUuid = root.uuid, clipObject = typeof clip === \"string\" ? AnimationClip.findByName(root, clip) : clip, clipUuid = clipObject ? clipObject.uuid : clip, actionsForClip = this._actionsByClip[clipUuid];\n if (actionsForClip !== void 0) {\n return actionsForClip.actionByRoot[rootUuid] || null;\n }\n return null;\n }\n stopAllAction() {\n const actions = this._actions, nActions = this._nActiveActions;\n for (let i = nActions - 1; i >= 0; --i) {\n actions[i].stop();\n }\n return this;\n }\n update(deltaTime) {\n deltaTime *= this.timeScale;\n const actions = this._actions, nActions = this._nActiveActions, time = this.time += deltaTime, timeDirection = Math.sign(deltaTime), accuIndex = this._accuIndex ^= 1;\n for (let i = 0; i !== nActions; ++i) {\n const action = actions[i];\n action._update(time, deltaTime, timeDirection, accuIndex);\n }\n const bindings = this._bindings, nBindings = this._nActiveBindings;\n for (let i = 0; i !== nBindings; ++i) {\n bindings[i].apply(accuIndex);\n }\n return this;\n }\n setTime(timeInSeconds) {\n this.time = 0;\n for (let i = 0; i < this._actions.length; i++) {\n this._actions[i].time = 0;\n }\n return this.update(timeInSeconds);\n }\n getRoot() {\n return this._root;\n }\n uncacheClip(clip) {\n const actions = this._actions, clipUuid = clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid];\n if (actionsForClip !== void 0) {\n const actionsToRemove = actionsForClip.knownActions;\n for (let i = 0, n = actionsToRemove.length; i !== n; ++i) {\n const action = actionsToRemove[i];\n this._deactivateAction(action);\n const cacheIndex = action._cacheIndex, lastInactiveAction = actions[actions.length - 1];\n action._cacheIndex = null;\n action._byClipCacheIndex = null;\n lastInactiveAction._cacheIndex = cacheIndex;\n actions[cacheIndex] = lastInactiveAction;\n actions.pop();\n this._removeInactiveBindingsForAction(action);\n }\n delete actionsByClip[clipUuid];\n }\n }\n uncacheRoot(root) {\n const rootUuid = root.uuid, actionsByClip = this._actionsByClip;\n for (const clipUuid in actionsByClip) {\n const actionByRoot = actionsByClip[clipUuid].actionByRoot, action = actionByRoot[rootUuid];\n if (action !== void 0) {\n this._deactivateAction(action);\n this._removeInactiveAction(action);\n }\n }\n const bindingsByRoot = this._bindingsByRootAndName, bindingByName = bindingsByRoot[rootUuid];\n if (bindingByName !== void 0) {\n for (const trackName in bindingByName) {\n const binding = bindingByName[trackName];\n binding.restoreOriginalState();\n this._removeInactiveBinding(binding);\n }\n }\n }\n uncacheAction(clip, optionalRoot) {\n const action = this.existingAction(clip, optionalRoot);\n if (action !== null) {\n this._deactivateAction(action);\n this._removeInactiveAction(action);\n }\n }\n}\nAnimationMixer.prototype._controlInterpolantsResultBuffer = new Float32Array(1);\nclass Uniform {\n constructor(value) {\n if (typeof value === \"string\") {\n console.warn(\"THREE.Uniform: Type parameter is no longer needed.\");\n value = arguments[1];\n }\n this.value = value;\n }\n clone() {\n return new Uniform(this.value.clone === void 0 ? this.value : this.value.clone());\n }\n}\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n constructor(array, stride, meshPerAttribute = 1) {\n super(array, stride);\n this.meshPerAttribute = meshPerAttribute;\n }\n copy(source) {\n super.copy(source);\n this.meshPerAttribute = source.meshPerAttribute;\n return this;\n }\n clone(data) {\n const ib = super.clone(data);\n ib.meshPerAttribute = this.meshPerAttribute;\n return ib;\n }\n toJSON(data) {\n const json = super.toJSON(data);\n json.isInstancedInterleavedBuffer = true;\n json.meshPerAttribute = this.meshPerAttribute;\n return json;\n }\n}\nInstancedInterleavedBuffer.prototype.isInstancedInterleavedBuffer = true;\nclass GLBufferAttribute {\n constructor(buffer, type, itemSize, elementSize, count) {\n this.buffer = buffer;\n this.type = type;\n this.itemSize = itemSize;\n this.elementSize = elementSize;\n this.count = count;\n this.version = 0;\n }\n set needsUpdate(value) {\n if (value === true)\n this.version++;\n }\n setBuffer(buffer) {\n this.buffer = buffer;\n return this;\n }\n setType(type, elementSize) {\n this.type = type;\n this.elementSize = elementSize;\n return this;\n }\n setItemSize(itemSize) {\n this.itemSize = itemSize;\n return this;\n }\n setCount(count) {\n this.count = count;\n return this;\n }\n}\nGLBufferAttribute.prototype.isGLBufferAttribute = true;\nclass Raycaster {\n constructor(origin, direction, near = 0, far = Infinity) {\n this.ray = new Ray(origin, direction);\n this.near = near;\n this.far = far;\n this.camera = null;\n this.layers = new Layers();\n this.params = {\n Mesh: {},\n Line: {threshold: 1},\n LOD: {},\n Points: {threshold: 1},\n Sprite: {}\n };\n }\n set(origin, direction) {\n this.ray.set(origin, direction);\n }\n setFromCamera(coords, camera) {\n if (camera && camera.isPerspectiveCamera) {\n this.ray.origin.setFromMatrixPosition(camera.matrixWorld);\n this.ray.direction.set(coords.x, coords.y, 0.5).unproject(camera).sub(this.ray.origin).normalize();\n this.camera = camera;\n } else if (camera && camera.isOrthographicCamera) {\n this.ray.origin.set(coords.x, coords.y, (camera.near + camera.far) / (camera.near - camera.far)).unproject(camera);\n this.ray.direction.set(0, 0, -1).transformDirection(camera.matrixWorld);\n this.camera = camera;\n } else {\n console.error(\"THREE.Raycaster: Unsupported camera type: \" + camera.type);\n }\n }\n intersectObject(object, recursive = true, intersects2 = []) {\n intersectObject(object, this, intersects2, recursive);\n intersects2.sort(ascSort);\n return intersects2;\n }\n intersectObjects(objects, recursive = true, intersects2 = []) {\n for (let i = 0, l = objects.length; i < l; i++) {\n intersectObject(objects[i], this, intersects2, recursive);\n }\n intersects2.sort(ascSort);\n return intersects2;\n }\n}\nfunction ascSort(a, b) {\n return a.distance - b.distance;\n}\nfunction intersectObject(object, raycaster, intersects2, recursive) {\n if (object.layers.test(raycaster.layers)) {\n object.raycast(raycaster, intersects2);\n }\n if (recursive === true) {\n const children = object.children;\n for (let i = 0, l = children.length; i < l; i++) {\n intersectObject(children[i], raycaster, intersects2, true);\n }\n }\n}\nclass Spherical {\n constructor(radius = 1, phi = 0, theta = 0) {\n this.radius = radius;\n this.phi = phi;\n this.theta = theta;\n return this;\n }\n set(radius, phi, theta) {\n this.radius = radius;\n this.phi = phi;\n this.theta = theta;\n return this;\n }\n copy(other) {\n this.radius = other.radius;\n this.phi = other.phi;\n this.theta = other.theta;\n return this;\n }\n makeSafe() {\n const EPS = 1e-6;\n this.phi = Math.max(EPS, Math.min(Math.PI - EPS, this.phi));\n return this;\n }\n setFromVector3(v) {\n return this.setFromCartesianCoords(v.x, v.y, v.z);\n }\n setFromCartesianCoords(x, y, z) {\n this.radius = Math.sqrt(x * x + y * y + z * z);\n if (this.radius === 0) {\n this.theta = 0;\n this.phi = 0;\n } else {\n this.theta = Math.atan2(x, z);\n this.phi = Math.acos(clamp(y / this.radius, -1, 1));\n }\n return this;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nclass Cylindrical {\n constructor(radius = 1, theta = 0, y = 0) {\n this.radius = radius;\n this.theta = theta;\n this.y = y;\n return this;\n }\n set(radius, theta, y) {\n this.radius = radius;\n this.theta = theta;\n this.y = y;\n return this;\n }\n copy(other) {\n this.radius = other.radius;\n this.theta = other.theta;\n this.y = other.y;\n return this;\n }\n setFromVector3(v) {\n return this.setFromCartesianCoords(v.x, v.y, v.z);\n }\n setFromCartesianCoords(x, y, z) {\n this.radius = Math.sqrt(x * x + z * z);\n this.theta = Math.atan2(x, z);\n this.y = y;\n return this;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nconst _vector$4 = /* @__PURE__ */ new Vector2();\nclass Box2 {\n constructor(min = new Vector2(Infinity, Infinity), max = new Vector2(-Infinity, -Infinity)) {\n this.min = min;\n this.max = max;\n }\n set(min, max) {\n this.min.copy(min);\n this.max.copy(max);\n return this;\n }\n setFromPoints(points) {\n this.makeEmpty();\n for (let i = 0, il = points.length; i < il; i++) {\n this.expandByPoint(points[i]);\n }\n return this;\n }\n setFromCenterAndSize(center, size) {\n const halfSize = _vector$4.copy(size).multiplyScalar(0.5);\n this.min.copy(center).sub(halfSize);\n this.max.copy(center).add(halfSize);\n return this;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(box) {\n this.min.copy(box.min);\n this.max.copy(box.max);\n return this;\n }\n makeEmpty() {\n this.min.x = this.min.y = Infinity;\n this.max.x = this.max.y = -Infinity;\n return this;\n }\n isEmpty() {\n return this.max.x < this.min.x || this.max.y < this.min.y;\n }\n getCenter(target) {\n return this.isEmpty() ? target.set(0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n }\n getSize(target) {\n return this.isEmpty() ? target.set(0, 0) : target.subVectors(this.max, this.min);\n }\n expandByPoint(point) {\n this.min.min(point);\n this.max.max(point);\n return this;\n }\n expandByVector(vector) {\n this.min.sub(vector);\n this.max.add(vector);\n return this;\n }\n expandByScalar(scalar) {\n this.min.addScalar(-scalar);\n this.max.addScalar(scalar);\n return this;\n }\n containsPoint(point) {\n return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y ? false : true;\n }\n containsBox(box) {\n return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y;\n }\n getParameter(point, target) {\n return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y));\n }\n intersectsBox(box) {\n return box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n }\n clampPoint(point, target) {\n return target.copy(point).clamp(this.min, this.max);\n }\n distanceToPoint(point) {\n const clampedPoint = _vector$4.copy(point).clamp(this.min, this.max);\n return clampedPoint.sub(point).length();\n }\n intersect(box) {\n this.min.max(box.min);\n this.max.min(box.max);\n return this;\n }\n union(box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n }\n translate(offset) {\n this.min.add(offset);\n this.max.add(offset);\n return this;\n }\n equals(box) {\n return box.min.equals(this.min) && box.max.equals(this.max);\n }\n}\nBox2.prototype.isBox2 = true;\nconst _startP = /* @__PURE__ */ new Vector3();\nconst _startEnd = /* @__PURE__ */ new Vector3();\nclass Line3 {\n constructor(start = new Vector3(), end = new Vector3()) {\n this.start = start;\n this.end = end;\n }\n set(start, end) {\n this.start.copy(start);\n this.end.copy(end);\n return this;\n }\n copy(line) {\n this.start.copy(line.start);\n this.end.copy(line.end);\n return this;\n }\n getCenter(target) {\n return target.addVectors(this.start, this.end).multiplyScalar(0.5);\n }\n delta(target) {\n return target.subVectors(this.end, this.start);\n }\n distanceSq() {\n return this.start.distanceToSquared(this.end);\n }\n distance() {\n return this.start.distanceTo(this.end);\n }\n at(t, target) {\n return this.delta(target).multiplyScalar(t).add(this.start);\n }\n closestPointToPointParameter(point, clampToLine) {\n _startP.subVectors(point, this.start);\n _startEnd.subVectors(this.end, this.start);\n const startEnd2 = _startEnd.dot(_startEnd);\n const startEnd_startP = _startEnd.dot(_startP);\n let t = startEnd_startP / startEnd2;\n if (clampToLine) {\n t = clamp(t, 0, 1);\n }\n return t;\n }\n closestPointToPoint(point, clampToLine, target) {\n const t = this.closestPointToPointParameter(point, clampToLine);\n return this.delta(target).multiplyScalar(t).add(this.start);\n }\n applyMatrix4(matrix) {\n this.start.applyMatrix4(matrix);\n this.end.applyMatrix4(matrix);\n return this;\n }\n equals(line) {\n return line.start.equals(this.start) && line.end.equals(this.end);\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nconst _vector$3 = /* @__PURE__ */ new Vector3();\nclass SpotLightHelper extends Object3D {\n constructor(light, color) {\n super();\n this.light = light;\n this.light.updateMatrixWorld();\n this.matrix = light.matrixWorld;\n this.matrixAutoUpdate = false;\n this.color = color;\n const geometry = new BufferGeometry();\n const positions = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 1,\n 0,\n 0,\n 0,\n -1,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n -1,\n 1\n ];\n for (let i = 0, j = 1, l = 32; i < l; i++, j++) {\n const p1 = i / l * Math.PI * 2;\n const p2 = j / l * Math.PI * 2;\n positions.push(Math.cos(p1), Math.sin(p1), 1, Math.cos(p2), Math.sin(p2), 1);\n }\n geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n const material = new LineBasicMaterial({fog: false, toneMapped: false});\n this.cone = new LineSegments(geometry, material);\n this.add(this.cone);\n this.update();\n }\n dispose() {\n this.cone.geometry.dispose();\n this.cone.material.dispose();\n }\n update() {\n this.light.updateMatrixWorld();\n const coneLength = this.light.distance ? this.light.distance : 1e3;\n const coneWidth = coneLength * Math.tan(this.light.angle);\n this.cone.scale.set(coneWidth, coneWidth, coneLength);\n _vector$3.setFromMatrixPosition(this.light.target.matrixWorld);\n this.cone.lookAt(_vector$3);\n if (this.color !== void 0) {\n this.cone.material.color.set(this.color);\n } else {\n this.cone.material.color.copy(this.light.color);\n }\n }\n}\nconst _vector$2 = /* @__PURE__ */ new Vector3();\nconst _boneMatrix = /* @__PURE__ */ new Matrix4();\nconst _matrixWorldInv = /* @__PURE__ */ new Matrix4();\nclass SkeletonHelper extends LineSegments {\n constructor(object) {\n const bones = getBoneList(object);\n const geometry = new BufferGeometry();\n const vertices = [];\n const colors = [];\n const color1 = new Color(0, 0, 1);\n const color2 = new Color(0, 1, 0);\n for (let i = 0; i < bones.length; i++) {\n const bone = bones[i];\n if (bone.parent && bone.parent.isBone) {\n vertices.push(0, 0, 0);\n vertices.push(0, 0, 0);\n colors.push(color1.r, color1.g, color1.b);\n colors.push(color2.r, color2.g, color2.b);\n }\n }\n geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n const material = new LineBasicMaterial({vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true});\n super(geometry, material);\n this.type = \"SkeletonHelper\";\n this.isSkeletonHelper = true;\n this.root = object;\n this.bones = bones;\n this.matrix = object.matrixWorld;\n this.matrixAutoUpdate = false;\n }\n updateMatrixWorld(force) {\n const bones = this.bones;\n const geometry = this.geometry;\n const position = geometry.getAttribute(\"position\");\n _matrixWorldInv.copy(this.root.matrixWorld).invert();\n for (let i = 0, j = 0; i < bones.length; i++) {\n const bone = bones[i];\n if (bone.parent && bone.parent.isBone) {\n _boneMatrix.multiplyMatrices(_matrixWorldInv, bone.matrixWorld);\n _vector$2.setFromMatrixPosition(_boneMatrix);\n position.setXYZ(j, _vector$2.x, _vector$2.y, _vector$2.z);\n _boneMatrix.multiplyMatrices(_matrixWorldInv, bone.parent.matrixWorld);\n _vector$2.setFromMatrixPosition(_boneMatrix);\n position.setXYZ(j + 1, _vector$2.x, _vector$2.y, _vector$2.z);\n j += 2;\n }\n }\n geometry.getAttribute(\"position\").needsUpdate = true;\n super.updateMatrixWorld(force);\n }\n}\nfunction getBoneList(object) {\n const boneList = [];\n if (object && object.isBone) {\n boneList.push(object);\n }\n for (let i = 0; i < object.children.length; i++) {\n boneList.push.apply(boneList, getBoneList(object.children[i]));\n }\n return boneList;\n}\nclass PointLightHelper extends Mesh {\n constructor(light, sphereSize, color) {\n const geometry = new SphereGeometry(sphereSize, 4, 2);\n const material = new MeshBasicMaterial({wireframe: true, fog: false, toneMapped: false});\n super(geometry, material);\n this.light = light;\n this.light.updateMatrixWorld();\n this.color = color;\n this.type = \"PointLightHelper\";\n this.matrix = this.light.matrixWorld;\n this.matrixAutoUpdate = false;\n this.update();\n }\n dispose() {\n this.geometry.dispose();\n this.material.dispose();\n }\n update() {\n if (this.color !== void 0) {\n this.material.color.set(this.color);\n } else {\n this.material.color.copy(this.light.color);\n }\n }\n}\nconst _vector$1 = /* @__PURE__ */ new Vector3();\nconst _color1 = /* @__PURE__ */ new Color();\nconst _color2 = /* @__PURE__ */ new Color();\nclass HemisphereLightHelper extends Object3D {\n constructor(light, size, color) {\n super();\n this.light = light;\n this.light.updateMatrixWorld();\n this.matrix = light.matrixWorld;\n this.matrixAutoUpdate = false;\n this.color = color;\n const geometry = new OctahedronGeometry(size);\n geometry.rotateY(Math.PI * 0.5);\n this.material = new MeshBasicMaterial({wireframe: true, fog: false, toneMapped: false});\n if (this.color === void 0)\n this.material.vertexColors = true;\n const position = geometry.getAttribute(\"position\");\n const colors = new Float32Array(position.count * 3);\n geometry.setAttribute(\"color\", new BufferAttribute(colors, 3));\n this.add(new Mesh(geometry, this.material));\n this.update();\n }\n dispose() {\n this.children[0].geometry.dispose();\n this.children[0].material.dispose();\n }\n update() {\n const mesh = this.children[0];\n if (this.color !== void 0) {\n this.material.color.set(this.color);\n } else {\n const colors = mesh.geometry.getAttribute(\"color\");\n _color1.copy(this.light.color);\n _color2.copy(this.light.groundColor);\n for (let i = 0, l = colors.count; i < l; i++) {\n const color = i < l / 2 ? _color1 : _color2;\n colors.setXYZ(i, color.r, color.g, color.b);\n }\n colors.needsUpdate = true;\n }\n mesh.lookAt(_vector$1.setFromMatrixPosition(this.light.matrixWorld).negate());\n }\n}\nclass GridHelper extends LineSegments {\n constructor(size = 10, divisions = 10, color1 = 4473924, color2 = 8947848) {\n color1 = new Color(color1);\n color2 = new Color(color2);\n const center = divisions / 2;\n const step = size / divisions;\n const halfSize = size / 2;\n const vertices = [], colors = [];\n for (let i = 0, j = 0, k = -halfSize; i <= divisions; i++, k += step) {\n vertices.push(-halfSize, 0, k, halfSize, 0, k);\n vertices.push(k, 0, -halfSize, k, 0, halfSize);\n const color = i === center ? color1 : color2;\n color.toArray(colors, j);\n j += 3;\n color.toArray(colors, j);\n j += 3;\n color.toArray(colors, j);\n j += 3;\n color.toArray(colors, j);\n j += 3;\n }\n const geometry = new BufferGeometry();\n geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n const material = new LineBasicMaterial({vertexColors: true, toneMapped: false});\n super(geometry, material);\n this.type = \"GridHelper\";\n }\n}\nclass PolarGridHelper extends LineSegments {\n constructor(radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 4473924, color2 = 8947848) {\n color1 = new Color(color1);\n color2 = new Color(color2);\n const vertices = [];\n const colors = [];\n for (let i = 0; i <= radials; i++) {\n const v = i / radials * (Math.PI * 2);\n const x = Math.sin(v) * radius;\n const z = Math.cos(v) * radius;\n vertices.push(0, 0, 0);\n vertices.push(x, 0, z);\n const color = i & 1 ? color1 : color2;\n colors.push(color.r, color.g, color.b);\n colors.push(color.r, color.g, color.b);\n }\n for (let i = 0; i <= circles; i++) {\n const color = i & 1 ? color1 : color2;\n const r = radius - radius / circles * i;\n for (let j = 0; j < divisions; j++) {\n let v = j / divisions * (Math.PI * 2);\n let x = Math.sin(v) * r;\n let z = Math.cos(v) * r;\n vertices.push(x, 0, z);\n colors.push(color.r, color.g, color.b);\n v = (j + 1) / divisions * (Math.PI * 2);\n x = Math.sin(v) * r;\n z = Math.cos(v) * r;\n vertices.push(x, 0, z);\n colors.push(color.r, color.g, color.b);\n }\n }\n const geometry = new BufferGeometry();\n geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n const material = new LineBasicMaterial({vertexColors: true, toneMapped: false});\n super(geometry, material);\n this.type = \"PolarGridHelper\";\n }\n}\nconst _v1 = /* @__PURE__ */ new Vector3();\nconst _v2 = /* @__PURE__ */ new Vector3();\nconst _v3 = /* @__PURE__ */ new Vector3();\nclass DirectionalLightHelper extends Object3D {\n constructor(light, size, color) {\n super();\n this.light = light;\n this.light.updateMatrixWorld();\n this.matrix = light.matrixWorld;\n this.matrixAutoUpdate = false;\n this.color = color;\n if (size === void 0)\n size = 1;\n let geometry = new BufferGeometry();\n geometry.setAttribute(\"position\", new Float32BufferAttribute([\n -size,\n size,\n 0,\n size,\n size,\n 0,\n size,\n -size,\n 0,\n -size,\n -size,\n 0,\n -size,\n size,\n 0\n ], 3));\n const material = new LineBasicMaterial({fog: false, toneMapped: false});\n this.lightPlane = new Line(geometry, material);\n this.add(this.lightPlane);\n geometry = new BufferGeometry();\n geometry.setAttribute(\"position\", new Float32BufferAttribute([0, 0, 0, 0, 0, 1], 3));\n this.targetLine = new Line(geometry, material);\n this.add(this.targetLine);\n this.update();\n }\n dispose() {\n this.lightPlane.geometry.dispose();\n this.lightPlane.material.dispose();\n this.targetLine.geometry.dispose();\n this.targetLine.material.dispose();\n }\n update() {\n _v1.setFromMatrixPosition(this.light.matrixWorld);\n _v2.setFromMatrixPosition(this.light.target.matrixWorld);\n _v3.subVectors(_v2, _v1);\n this.lightPlane.lookAt(_v2);\n if (this.color !== void 0) {\n this.lightPlane.material.color.set(this.color);\n this.targetLine.material.color.set(this.color);\n } else {\n this.lightPlane.material.color.copy(this.light.color);\n this.targetLine.material.color.copy(this.light.color);\n }\n this.targetLine.lookAt(_v2);\n this.targetLine.scale.z = _v3.length();\n }\n}\nconst _vector = /* @__PURE__ */ new Vector3();\nconst _camera = /* @__PURE__ */ new Camera();\nclass CameraHelper extends LineSegments {\n constructor(camera) {\n const geometry = new BufferGeometry();\n const material = new LineBasicMaterial({color: 16777215, vertexColors: true, toneMapped: false});\n const vertices = [];\n const colors = [];\n const pointMap = {};\n const colorFrustum = new Color(16755200);\n const colorCone = new Color(16711680);\n const colorUp = new Color(43775);\n const colorTarget = new Color(16777215);\n const colorCross = new Color(3355443);\n addLine(\"n1\", \"n2\", colorFrustum);\n addLine(\"n2\", \"n4\", colorFrustum);\n addLine(\"n4\", \"n3\", colorFrustum);\n addLine(\"n3\", \"n1\", colorFrustum);\n addLine(\"f1\", \"f2\", colorFrustum);\n addLine(\"f2\", \"f4\", colorFrustum);\n addLine(\"f4\", \"f3\", colorFrustum);\n addLine(\"f3\", \"f1\", colorFrustum);\n addLine(\"n1\", \"f1\", colorFrustum);\n addLine(\"n2\", \"f2\", colorFrustum);\n addLine(\"n3\", \"f3\", colorFrustum);\n addLine(\"n4\", \"f4\", colorFrustum);\n addLine(\"p\", \"n1\", colorCone);\n addLine(\"p\", \"n2\", colorCone);\n addLine(\"p\", \"n3\", colorCone);\n addLine(\"p\", \"n4\", colorCone);\n addLine(\"u1\", \"u2\", colorUp);\n addLine(\"u2\", \"u3\", colorUp);\n addLine(\"u3\", \"u1\", colorUp);\n addLine(\"c\", \"t\", colorTarget);\n addLine(\"p\", \"c\", colorCross);\n addLine(\"cn1\", \"cn2\", colorCross);\n addLine(\"cn3\", \"cn4\", colorCross);\n addLine(\"cf1\", \"cf2\", colorCross);\n addLine(\"cf3\", \"cf4\", colorCross);\n function addLine(a, b, color) {\n addPoint(a, color);\n addPoint(b, color);\n }\n function addPoint(id, color) {\n vertices.push(0, 0, 0);\n colors.push(color.r, color.g, color.b);\n if (pointMap[id] === void 0) {\n pointMap[id] = [];\n }\n pointMap[id].push(vertices.length / 3 - 1);\n }\n geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n super(geometry, material);\n this.type = \"CameraHelper\";\n this.camera = camera;\n if (this.camera.updateProjectionMatrix)\n this.camera.updateProjectionMatrix();\n this.matrix = camera.matrixWorld;\n this.matrixAutoUpdate = false;\n this.pointMap = pointMap;\n this.update();\n }\n update() {\n const geometry = this.geometry;\n const pointMap = this.pointMap;\n const w = 1, h = 1;\n _camera.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse);\n setPoint(\"c\", pointMap, geometry, _camera, 0, 0, -1);\n setPoint(\"t\", pointMap, geometry, _camera, 0, 0, 1);\n setPoint(\"n1\", pointMap, geometry, _camera, -w, -h, -1);\n setPoint(\"n2\", pointMap, geometry, _camera, w, -h, -1);\n setPoint(\"n3\", pointMap, geometry, _camera, -w, h, -1);\n setPoint(\"n4\", pointMap, geometry, _camera, w, h, -1);\n setPoint(\"f1\", pointMap, geometry, _camera, -w, -h, 1);\n setPoint(\"f2\", pointMap, geometry, _camera, w, -h, 1);\n setPoint(\"f3\", pointMap, geometry, _camera, -w, h, 1);\n setPoint(\"f4\", pointMap, geometry, _camera, w, h, 1);\n setPoint(\"u1\", pointMap, geometry, _camera, w * 0.7, h * 1.1, -1);\n setPoint(\"u2\", pointMap, geometry, _camera, -w * 0.7, h * 1.1, -1);\n setPoint(\"u3\", pointMap, geometry, _camera, 0, h * 2, -1);\n setPoint(\"cf1\", pointMap, geometry, _camera, -w, 0, 1);\n setPoint(\"cf2\", pointMap, geometry, _camera, w, 0, 1);\n setPoint(\"cf3\", pointMap, geometry, _camera, 0, -h, 1);\n setPoint(\"cf4\", pointMap, geometry, _camera, 0, h, 1);\n setPoint(\"cn1\", pointMap, geometry, _camera, -w, 0, -1);\n setPoint(\"cn2\", pointMap, geometry, _camera, w, 0, -1);\n setPoint(\"cn3\", pointMap, geometry, _camera, 0, -h, -1);\n setPoint(\"cn4\", pointMap, geometry, _camera, 0, h, -1);\n geometry.getAttribute(\"position\").needsUpdate = true;\n }\n dispose() {\n this.geometry.dispose();\n this.material.dispose();\n }\n}\nfunction setPoint(point, pointMap, geometry, camera, x, y, z) {\n _vector.set(x, y, z).unproject(camera);\n const points = pointMap[point];\n if (points !== void 0) {\n const position = geometry.getAttribute(\"position\");\n for (let i = 0, l = points.length; i < l; i++) {\n position.setXYZ(points[i], _vector.x, _vector.y, _vector.z);\n }\n }\n}\nconst _box = /* @__PURE__ */ new Box3();\nclass BoxHelper extends LineSegments {\n constructor(object, color = 16776960) {\n const 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 const positions = new Float32Array(8 * 3);\n const geometry = new BufferGeometry();\n geometry.setIndex(new BufferAttribute(indices, 1));\n geometry.setAttribute(\"position\", new BufferAttribute(positions, 3));\n super(geometry, new LineBasicMaterial({color, toneMapped: false}));\n this.object = object;\n this.type = \"BoxHelper\";\n this.matrixAutoUpdate = false;\n this.update();\n }\n update(object) {\n if (object !== void 0) {\n console.warn(\"THREE.BoxHelper: .update() has no longer arguments.\");\n }\n if (this.object !== void 0) {\n _box.setFromObject(this.object);\n }\n if (_box.isEmpty())\n return;\n const min = _box.min;\n const max = _box.max;\n const position = this.geometry.attributes.position;\n const array = position.array;\n array[0] = max.x;\n array[1] = max.y;\n array[2] = max.z;\n array[3] = min.x;\n array[4] = max.y;\n array[5] = max.z;\n array[6] = min.x;\n array[7] = min.y;\n array[8] = max.z;\n array[9] = max.x;\n array[10] = min.y;\n array[11] = max.z;\n array[12] = max.x;\n array[13] = max.y;\n array[14] = min.z;\n array[15] = min.x;\n array[16] = max.y;\n array[17] = min.z;\n array[18] = min.x;\n array[19] = min.y;\n array[20] = min.z;\n array[21] = max.x;\n array[22] = min.y;\n array[23] = min.z;\n position.needsUpdate = true;\n this.geometry.computeBoundingSphere();\n }\n setFromObject(object) {\n this.object = object;\n this.update();\n return this;\n }\n copy(source) {\n LineSegments.prototype.copy.call(this, source);\n this.object = source.object;\n return this;\n }\n}\nclass Box3Helper extends LineSegments {\n constructor(box, color = 16776960) {\n const 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 const 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 const geometry = new BufferGeometry();\n geometry.setIndex(new BufferAttribute(indices, 1));\n geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n super(geometry, new LineBasicMaterial({color, toneMapped: false}));\n this.box = box;\n this.type = \"Box3Helper\";\n this.geometry.computeBoundingSphere();\n }\n updateMatrixWorld(force) {\n const box = this.box;\n if (box.isEmpty())\n return;\n box.getCenter(this.position);\n box.getSize(this.scale);\n this.scale.multiplyScalar(0.5);\n super.updateMatrixWorld(force);\n }\n}\nclass PlaneHelper extends Line {\n constructor(plane, size = 1, hex = 16776960) {\n const color = hex;\n const 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 const geometry = new BufferGeometry();\n geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n geometry.computeBoundingSphere();\n super(geometry, new LineBasicMaterial({color, toneMapped: false}));\n this.type = \"PlaneHelper\";\n this.plane = plane;\n this.size = size;\n const positions2 = [1, 1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1, -1, 1];\n const geometry2 = new BufferGeometry();\n geometry2.setAttribute(\"position\", new Float32BufferAttribute(positions2, 3));\n geometry2.computeBoundingSphere();\n this.add(new Mesh(geometry2, new MeshBasicMaterial({color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false})));\n }\n updateMatrixWorld(force) {\n let scale = -this.plane.constant;\n if (Math.abs(scale) < 1e-8)\n scale = 1e-8;\n this.scale.set(0.5 * this.size, 0.5 * this.size, scale);\n this.children[0].material.side = scale < 0 ? BackSide : FrontSide;\n this.lookAt(this.plane.normal);\n super.updateMatrixWorld(force);\n }\n}\nconst _axis = /* @__PURE__ */ new Vector3();\nlet _lineGeometry, _coneGeometry;\nclass ArrowHelper extends Object3D {\n constructor(dir = new Vector3(0, 0, 1), origin = new Vector3(0, 0, 0), length = 1, color = 16776960, headLength = length * 0.2, headWidth = headLength * 0.2) {\n super();\n this.type = \"ArrowHelper\";\n if (_lineGeometry === void 0) {\n _lineGeometry = new BufferGeometry();\n _lineGeometry.setAttribute(\"position\", new Float32BufferAttribute([0, 0, 0, 0, 1, 0], 3));\n _coneGeometry = new CylinderGeometry(0, 0.5, 1, 5, 1);\n _coneGeometry.translate(0, -0.5, 0);\n }\n this.position.copy(origin);\n this.line = new Line(_lineGeometry, new LineBasicMaterial({color, toneMapped: false}));\n this.line.matrixAutoUpdate = false;\n this.add(this.line);\n this.cone = new Mesh(_coneGeometry, new MeshBasicMaterial({color, toneMapped: false}));\n this.cone.matrixAutoUpdate = false;\n this.add(this.cone);\n this.setDirection(dir);\n this.setLength(length, headLength, headWidth);\n }\n setDirection(dir) {\n if (dir.y > 0.99999) {\n this.quaternion.set(0, 0, 0, 1);\n } else if (dir.y < -0.99999) {\n this.quaternion.set(1, 0, 0, 0);\n } else {\n _axis.set(dir.z, 0, -dir.x).normalize();\n const radians = Math.acos(dir.y);\n this.quaternion.setFromAxisAngle(_axis, radians);\n }\n }\n setLength(length, headLength = length * 0.2, headWidth = headLength * 0.2) {\n this.line.scale.set(1, Math.max(1e-4, length - headLength), 1);\n this.line.updateMatrix();\n this.cone.scale.set(headWidth, headLength, headWidth);\n this.cone.position.y = length;\n this.cone.updateMatrix();\n }\n setColor(color) {\n this.line.material.color.set(color);\n this.cone.material.color.set(color);\n }\n copy(source) {\n super.copy(source, false);\n this.line.copy(source.line);\n this.cone.copy(source.cone);\n return this;\n }\n}\nclass AxesHelper extends LineSegments {\n constructor(size = 1) {\n const vertices = [\n 0,\n 0,\n 0,\n size,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n size,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n size\n ];\n const colors = [\n 1,\n 0,\n 0,\n 1,\n 0.6,\n 0,\n 0,\n 1,\n 0,\n 0.6,\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0.6,\n 1\n ];\n const geometry = new BufferGeometry();\n geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n const material = new LineBasicMaterial({vertexColors: true, toneMapped: false});\n super(geometry, material);\n this.type = \"AxesHelper\";\n }\n setColors(xAxisColor, yAxisColor, zAxisColor) {\n const color = new Color();\n const array = this.geometry.attributes.color.array;\n color.set(xAxisColor);\n color.toArray(array, 0);\n color.toArray(array, 3);\n color.set(yAxisColor);\n color.toArray(array, 6);\n color.toArray(array, 9);\n color.set(zAxisColor);\n color.toArray(array, 12);\n color.toArray(array, 15);\n this.geometry.attributes.color.needsUpdate = true;\n return this;\n }\n dispose() {\n this.geometry.dispose();\n this.material.dispose();\n }\n}\nclass ShapePath {\n constructor() {\n this.type = \"ShapePath\";\n this.color = new Color();\n this.subPaths = [];\n this.currentPath = null;\n }\n moveTo(x, y) {\n this.currentPath = new Path();\n this.subPaths.push(this.currentPath);\n this.currentPath.moveTo(x, y);\n return this;\n }\n lineTo(x, y) {\n this.currentPath.lineTo(x, y);\n return this;\n }\n quadraticCurveTo(aCPx, aCPy, aX, aY) {\n this.currentPath.quadraticCurveTo(aCPx, aCPy, aX, aY);\n return this;\n }\n bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n this.currentPath.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY);\n return this;\n }\n splineThru(pts) {\n this.currentPath.splineThru(pts);\n return this;\n }\n toShapes(isCCW, noHoles) {\n function toShapesNoHoles(inSubpaths) {\n const shapes2 = [];\n for (let i = 0, l = inSubpaths.length; i < l; i++) {\n const tmpPath2 = inSubpaths[i];\n const tmpShape2 = new Shape();\n tmpShape2.curves = tmpPath2.curves;\n shapes2.push(tmpShape2);\n }\n return shapes2;\n }\n function isPointInsidePolygon(inPt, inPolygon) {\n const polyLen = inPolygon.length;\n let inside = false;\n for (let p = polyLen - 1, q = 0; q < polyLen; p = q++) {\n let edgeLowPt = inPolygon[p];\n let edgeHighPt = inPolygon[q];\n let edgeDx = edgeHighPt.x - edgeLowPt.x;\n let edgeDy = edgeHighPt.y - edgeLowPt.y;\n if (Math.abs(edgeDy) > Number.EPSILON) {\n if (edgeDy < 0) {\n edgeLowPt = inPolygon[q];\n edgeDx = -edgeDx;\n edgeHighPt = inPolygon[p];\n edgeDy = -edgeDy;\n }\n if (inPt.y < edgeLowPt.y || inPt.y > edgeHighPt.y)\n continue;\n if (inPt.y === edgeLowPt.y) {\n if (inPt.x === edgeLowPt.x)\n return true;\n } else {\n const perpEdge = edgeDy * (inPt.x - edgeLowPt.x) - edgeDx * (inPt.y - edgeLowPt.y);\n if (perpEdge === 0)\n return true;\n if (perpEdge < 0)\n continue;\n inside = !inside;\n }\n } else {\n if (inPt.y !== edgeLowPt.y)\n continue;\n if (edgeHighPt.x <= inPt.x && inPt.x <= edgeLowPt.x || edgeLowPt.x <= inPt.x && inPt.x <= edgeHighPt.x)\n return true;\n }\n }\n return inside;\n }\n const isClockWise = ShapeUtils.isClockWise;\n const subPaths = this.subPaths;\n if (subPaths.length === 0)\n return [];\n if (noHoles === true)\n return toShapesNoHoles(subPaths);\n let solid, tmpPath, tmpShape;\n const shapes = [];\n if (subPaths.length === 1) {\n tmpPath = subPaths[0];\n tmpShape = new Shape();\n tmpShape.curves = tmpPath.curves;\n shapes.push(tmpShape);\n return shapes;\n }\n let holesFirst = !isClockWise(subPaths[0].getPoints());\n holesFirst = isCCW ? !holesFirst : holesFirst;\n const betterShapeHoles = [];\n const newShapes = [];\n let newShapeHoles = [];\n let mainIdx = 0;\n let tmpPoints;\n newShapes[mainIdx] = void 0;\n newShapeHoles[mainIdx] = [];\n for (let i = 0, l = subPaths.length; i < l; i++) {\n tmpPath = subPaths[i];\n tmpPoints = tmpPath.getPoints();\n solid = isClockWise(tmpPoints);\n solid = isCCW ? !solid : solid;\n if (solid) {\n if (!holesFirst && newShapes[mainIdx])\n mainIdx++;\n newShapes[mainIdx] = {s: new Shape(), p: tmpPoints};\n newShapes[mainIdx].s.curves = tmpPath.curves;\n if (holesFirst)\n mainIdx++;\n newShapeHoles[mainIdx] = [];\n } else {\n newShapeHoles[mainIdx].push({h: tmpPath, p: tmpPoints[0]});\n }\n }\n if (!newShapes[0])\n return toShapesNoHoles(subPaths);\n if (newShapes.length > 1) {\n let ambiguous = false;\n const toChange = [];\n for (let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) {\n betterShapeHoles[sIdx] = [];\n }\n for (let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) {\n const sho = newShapeHoles[sIdx];\n for (let hIdx = 0; hIdx < sho.length; hIdx++) {\n const ho = sho[hIdx];\n let hole_unassigned = true;\n for (let s2Idx = 0; s2Idx < newShapes.length; s2Idx++) {\n if (isPointInsidePolygon(ho.p, newShapes[s2Idx].p)) {\n if (sIdx !== s2Idx)\n toChange.push({froms: sIdx, tos: s2Idx, hole: hIdx});\n if (hole_unassigned) {\n hole_unassigned = false;\n betterShapeHoles[s2Idx].push(ho);\n } else {\n ambiguous = true;\n }\n }\n }\n if (hole_unassigned) {\n betterShapeHoles[sIdx].push(ho);\n }\n }\n }\n if (toChange.length > 0) {\n if (!ambiguous)\n newShapeHoles = betterShapeHoles;\n }\n }\n let tmpHoles;\n for (let i = 0, il = newShapes.length; i < il; i++) {\n tmpShape = newShapes[i].s;\n shapes.push(tmpShape);\n tmpHoles = newShapeHoles[i];\n for (let j = 0, jl = tmpHoles.length; j < jl; j++) {\n tmpShape.holes.push(tmpHoles[j].h);\n }\n }\n return shapes;\n }\n}\nconst _floatView = new Float32Array(1);\nconst _int32View = new Int32Array(_floatView.buffer);\nclass DataUtils {\n static toHalfFloat(val) {\n if (val > 65504) {\n console.warn(\"THREE.DataUtils.toHalfFloat(): value exceeds 65504.\");\n val = 65504;\n }\n _floatView[0] = val;\n const x = _int32View[0];\n let bits = x >> 16 & 32768;\n let m = x >> 12 & 2047;\n const e = x >> 23 & 255;\n if (e < 103)\n return bits;\n if (e > 142) {\n bits |= 31744;\n bits |= (e == 255 ? 0 : 1) && x & 8388607;\n return bits;\n }\n if (e < 113) {\n m |= 2048;\n bits |= (m >> 114 - e) + (m >> 113 - e & 1);\n return bits;\n }\n bits |= e - 112 << 10 | m >> 1;\n bits += m & 1;\n return bits;\n }\n}\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\nfunction MeshFaceMaterial(materials) {\n console.warn(\"THREE.MeshFaceMaterial has been removed. Use an Array instead.\");\n return materials;\n}\nfunction MultiMaterial(materials = []) {\n console.warn(\"THREE.MultiMaterial has been removed. Use an Array instead.\");\n materials.isMultiMaterial = true;\n materials.materials = materials;\n materials.clone = function() {\n return materials.slice();\n };\n return materials;\n}\nfunction PointCloud(geometry, material) {\n console.warn(\"THREE.PointCloud has been renamed to THREE.Points.\");\n return new Points(geometry, material);\n}\nfunction Particle(material) {\n console.warn(\"THREE.Particle has been renamed to THREE.Sprite.\");\n return new Sprite(material);\n}\nfunction ParticleSystem(geometry, material) {\n console.warn(\"THREE.ParticleSystem has been renamed to THREE.Points.\");\n return new Points(geometry, material);\n}\nfunction PointCloudMaterial(parameters) {\n console.warn(\"THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.\");\n return new PointsMaterial(parameters);\n}\nfunction ParticleBasicMaterial(parameters) {\n console.warn(\"THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.\");\n return new PointsMaterial(parameters);\n}\nfunction ParticleSystemMaterial(parameters) {\n console.warn(\"THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.\");\n return new PointsMaterial(parameters);\n}\nfunction Vertex(x, y, z) {\n console.warn(\"THREE.Vertex has been removed. Use THREE.Vector3 instead.\");\n return new Vector3(x, y, z);\n}\nfunction DynamicBufferAttribute(array, itemSize) {\n console.warn(\"THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.\");\n return new BufferAttribute(array, itemSize).setUsage(DynamicDrawUsage);\n}\nfunction Int8Attribute(array, itemSize) {\n console.warn(\"THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.\");\n return new Int8BufferAttribute(array, itemSize);\n}\nfunction Uint8Attribute(array, itemSize) {\n console.warn(\"THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.\");\n return new Uint8BufferAttribute(array, itemSize);\n}\nfunction Uint8ClampedAttribute(array, itemSize) {\n console.warn(\"THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.\");\n return new Uint8ClampedBufferAttribute(array, itemSize);\n}\nfunction Int16Attribute(array, itemSize) {\n console.warn(\"THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.\");\n return new Int16BufferAttribute(array, itemSize);\n}\nfunction Uint16Attribute(array, itemSize) {\n console.warn(\"THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.\");\n return new Uint16BufferAttribute(array, itemSize);\n}\nfunction Int32Attribute(array, itemSize) {\n console.warn(\"THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.\");\n return new Int32BufferAttribute(array, itemSize);\n}\nfunction Uint32Attribute(array, itemSize) {\n console.warn(\"THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.\");\n return new Uint32BufferAttribute(array, itemSize);\n}\nfunction Float32Attribute(array, itemSize) {\n console.warn(\"THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.\");\n return new Float32BufferAttribute(array, itemSize);\n}\nfunction Float64Attribute(array, itemSize) {\n console.warn(\"THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.\");\n return new Float64BufferAttribute(array, itemSize);\n}\nCurve.create = function(construct, getPoint) {\n console.log(\"THREE.Curve.create() has been deprecated\");\n construct.prototype = Object.create(Curve.prototype);\n construct.prototype.constructor = construct;\n construct.prototype.getPoint = getPoint;\n return construct;\n};\nPath.prototype.fromPoints = function(points) {\n console.warn(\"THREE.Path: .fromPoints() has been renamed to .setFromPoints().\");\n return this.setFromPoints(points);\n};\nfunction AxisHelper(size) {\n console.warn(\"THREE.AxisHelper has been renamed to THREE.AxesHelper.\");\n return new AxesHelper(size);\n}\nfunction BoundingBoxHelper(object, color) {\n console.warn(\"THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.\");\n return new BoxHelper(object, color);\n}\nfunction EdgesHelper(object, hex) {\n console.warn(\"THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.\");\n return new LineSegments(new EdgesGeometry(object.geometry), new LineBasicMaterial({color: hex !== void 0 ? hex : 16777215}));\n}\nGridHelper.prototype.setColors = function() {\n console.error(\"THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.\");\n};\nSkeletonHelper.prototype.update = function() {\n console.error(\"THREE.SkeletonHelper: update() no longer needs to be called.\");\n};\nfunction WireframeHelper(object, hex) {\n console.warn(\"THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.\");\n return new LineSegments(new WireframeGeometry(object.geometry), new LineBasicMaterial({color: hex !== void 0 ? hex : 16777215}));\n}\nLoader.prototype.extractUrlBase = function(url) {\n console.warn(\"THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.\");\n return LoaderUtils.extractUrlBase(url);\n};\nLoader.Handlers = {\n add: function() {\n console.error(\"THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.\");\n },\n get: function() {\n console.error(\"THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.\");\n }\n};\nfunction XHRLoader(manager) {\n console.warn(\"THREE.XHRLoader has been renamed to THREE.FileLoader.\");\n return new FileLoader(manager);\n}\nfunction BinaryTextureLoader(manager) {\n console.warn(\"THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.\");\n return new DataTextureLoader(manager);\n}\nBox2.prototype.center = function(optionalTarget) {\n console.warn(\"THREE.Box2: .center() has been renamed to .getCenter().\");\n return this.getCenter(optionalTarget);\n};\nBox2.prototype.empty = function() {\n console.warn(\"THREE.Box2: .empty() has been renamed to .isEmpty().\");\n return this.isEmpty();\n};\nBox2.prototype.isIntersectionBox = function(box) {\n console.warn(\"THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().\");\n return this.intersectsBox(box);\n};\nBox2.prototype.size = function(optionalTarget) {\n console.warn(\"THREE.Box2: .size() has been renamed to .getSize().\");\n return this.getSize(optionalTarget);\n};\nBox3.prototype.center = function(optionalTarget) {\n console.warn(\"THREE.Box3: .center() has been renamed to .getCenter().\");\n return this.getCenter(optionalTarget);\n};\nBox3.prototype.empty = function() {\n console.warn(\"THREE.Box3: .empty() has been renamed to .isEmpty().\");\n return this.isEmpty();\n};\nBox3.prototype.isIntersectionBox = function(box) {\n console.warn(\"THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().\");\n return this.intersectsBox(box);\n};\nBox3.prototype.isIntersectionSphere = function(sphere) {\n console.warn(\"THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().\");\n return this.intersectsSphere(sphere);\n};\nBox3.prototype.size = function(optionalTarget) {\n console.warn(\"THREE.Box3: .size() has been renamed to .getSize().\");\n return this.getSize(optionalTarget);\n};\nSphere.prototype.empty = function() {\n console.warn(\"THREE.Sphere: .empty() has been renamed to .isEmpty().\");\n return this.isEmpty();\n};\nFrustum.prototype.setFromMatrix = function(m) {\n console.warn(\"THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().\");\n return this.setFromProjectionMatrix(m);\n};\nLine3.prototype.center = function(optionalTarget) {\n console.warn(\"THREE.Line3: .center() has been renamed to .getCenter().\");\n return this.getCenter(optionalTarget);\n};\nMatrix3.prototype.flattenToArrayOffset = function(array, offset) {\n console.warn(\"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\");\n return this.toArray(array, offset);\n};\nMatrix3.prototype.multiplyVector3 = function(vector) {\n console.warn(\"THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.\");\n return vector.applyMatrix3(this);\n};\nMatrix3.prototype.multiplyVector3Array = function() {\n console.error(\"THREE.Matrix3: .multiplyVector3Array() has been removed.\");\n};\nMatrix3.prototype.applyToBufferAttribute = function(attribute) {\n console.warn(\"THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.\");\n return attribute.applyMatrix3(this);\n};\nMatrix3.prototype.applyToVector3Array = function() {\n console.error(\"THREE.Matrix3: .applyToVector3Array() has been removed.\");\n};\nMatrix3.prototype.getInverse = function(matrix) {\n console.warn(\"THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.\");\n return this.copy(matrix).invert();\n};\nMatrix4.prototype.extractPosition = function(m) {\n console.warn(\"THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().\");\n return this.copyPosition(m);\n};\nMatrix4.prototype.flattenToArrayOffset = function(array, offset) {\n console.warn(\"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\");\n return this.toArray(array, offset);\n};\nMatrix4.prototype.getPosition = function() {\n console.warn(\"THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.\");\n return new Vector3().setFromMatrixColumn(this, 3);\n};\nMatrix4.prototype.setRotationFromQuaternion = function(q) {\n console.warn(\"THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().\");\n return this.makeRotationFromQuaternion(q);\n};\nMatrix4.prototype.multiplyToArray = function() {\n console.warn(\"THREE.Matrix4: .multiplyToArray() has been removed.\");\n};\nMatrix4.prototype.multiplyVector3 = function(vector) {\n console.warn(\"THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.\");\n return vector.applyMatrix4(this);\n};\nMatrix4.prototype.multiplyVector4 = function(vector) {\n console.warn(\"THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.\");\n return vector.applyMatrix4(this);\n};\nMatrix4.prototype.multiplyVector3Array = function() {\n console.error(\"THREE.Matrix4: .multiplyVector3Array() has been removed.\");\n};\nMatrix4.prototype.rotateAxis = function(v) {\n console.warn(\"THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.\");\n v.transformDirection(this);\n};\nMatrix4.prototype.crossVector = function(vector) {\n console.warn(\"THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.\");\n return vector.applyMatrix4(this);\n};\nMatrix4.prototype.translate = function() {\n console.error(\"THREE.Matrix4: .translate() has been removed.\");\n};\nMatrix4.prototype.rotateX = function() {\n console.error(\"THREE.Matrix4: .rotateX() has been removed.\");\n};\nMatrix4.prototype.rotateY = function() {\n console.error(\"THREE.Matrix4: .rotateY() has been removed.\");\n};\nMatrix4.prototype.rotateZ = function() {\n console.error(\"THREE.Matrix4: .rotateZ() has been removed.\");\n};\nMatrix4.prototype.rotateByAxis = function() {\n console.error(\"THREE.Matrix4: .rotateByAxis() has been removed.\");\n};\nMatrix4.prototype.applyToBufferAttribute = function(attribute) {\n console.warn(\"THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.\");\n return attribute.applyMatrix4(this);\n};\nMatrix4.prototype.applyToVector3Array = function() {\n console.error(\"THREE.Matrix4: .applyToVector3Array() has been removed.\");\n};\nMatrix4.prototype.makeFrustum = function(left, right, bottom, top, near, far) {\n console.warn(\"THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.\");\n return this.makePerspective(left, right, top, bottom, near, far);\n};\nMatrix4.prototype.getInverse = function(matrix) {\n console.warn(\"THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.\");\n return this.copy(matrix).invert();\n};\nPlane.prototype.isIntersectionLine = function(line) {\n console.warn(\"THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().\");\n return this.intersectsLine(line);\n};\nQuaternion.prototype.multiplyVector3 = function(vector) {\n console.warn(\"THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.\");\n return vector.applyQuaternion(this);\n};\nQuaternion.prototype.inverse = function() {\n console.warn(\"THREE.Quaternion: .inverse() has been renamed to invert().\");\n return this.invert();\n};\nRay.prototype.isIntersectionBox = function(box) {\n console.warn(\"THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().\");\n return this.intersectsBox(box);\n};\nRay.prototype.isIntersectionPlane = function(plane) {\n console.warn(\"THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().\");\n return this.intersectsPlane(plane);\n};\nRay.prototype.isIntersectionSphere = function(sphere) {\n console.warn(\"THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().\");\n return this.intersectsSphere(sphere);\n};\nTriangle.prototype.area = function() {\n console.warn(\"THREE.Triangle: .area() has been renamed to .getArea().\");\n return this.getArea();\n};\nTriangle.prototype.barycoordFromPoint = function(point, target) {\n console.warn(\"THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().\");\n return this.getBarycoord(point, target);\n};\nTriangle.prototype.midpoint = function(target) {\n console.warn(\"THREE.Triangle: .midpoint() has been renamed to .getMidpoint().\");\n return this.getMidpoint(target);\n};\nTriangle.prototypenormal = function(target) {\n console.warn(\"THREE.Triangle: .normal() has been renamed to .getNormal().\");\n return this.getNormal(target);\n};\nTriangle.prototype.plane = function(target) {\n console.warn(\"THREE.Triangle: .plane() has been renamed to .getPlane().\");\n return this.getPlane(target);\n};\nTriangle.barycoordFromPoint = function(point, a, b, c, target) {\n console.warn(\"THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().\");\n return Triangle.getBarycoord(point, a, b, c, target);\n};\nTriangle.normal = function(a, b, c, target) {\n console.warn(\"THREE.Triangle: .normal() has been renamed to .getNormal().\");\n return Triangle.getNormal(a, b, c, target);\n};\nShape.prototype.extractAllPoints = function(divisions) {\n console.warn(\"THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.\");\n return this.extractPoints(divisions);\n};\nShape.prototype.extrude = function(options) {\n console.warn(\"THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.\");\n return new ExtrudeGeometry(this, options);\n};\nShape.prototype.makeGeometry = function(options) {\n console.warn(\"THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.\");\n return new ShapeGeometry(this, options);\n};\nVector2.prototype.fromAttribute = function(attribute, index, offset) {\n console.warn(\"THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().\");\n return this.fromBufferAttribute(attribute, index, offset);\n};\nVector2.prototype.distanceToManhattan = function(v) {\n console.warn(\"THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().\");\n return this.manhattanDistanceTo(v);\n};\nVector2.prototype.lengthManhattan = function() {\n console.warn(\"THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().\");\n return this.manhattanLength();\n};\nVector3.prototype.setEulerFromRotationMatrix = function() {\n console.error(\"THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.\");\n};\nVector3.prototype.setEulerFromQuaternion = function() {\n console.error(\"THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.\");\n};\nVector3.prototype.getPositionFromMatrix = function(m) {\n console.warn(\"THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().\");\n return this.setFromMatrixPosition(m);\n};\nVector3.prototype.getScaleFromMatrix = function(m) {\n console.warn(\"THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().\");\n return this.setFromMatrixScale(m);\n};\nVector3.prototype.getColumnFromMatrix = function(index, matrix) {\n console.warn(\"THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().\");\n return this.setFromMatrixColumn(matrix, index);\n};\nVector3.prototype.applyProjection = function(m) {\n console.warn(\"THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.\");\n return this.applyMatrix4(m);\n};\nVector3.prototype.fromAttribute = function(attribute, index, offset) {\n console.warn(\"THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().\");\n return this.fromBufferAttribute(attribute, index, offset);\n};\nVector3.prototype.distanceToManhattan = function(v) {\n console.warn(\"THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().\");\n return this.manhattanDistanceTo(v);\n};\nVector3.prototype.lengthManhattan = function() {\n console.warn(\"THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().\");\n return this.manhattanLength();\n};\nVector4.prototype.fromAttribute = function(attribute, index, offset) {\n console.warn(\"THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().\");\n return this.fromBufferAttribute(attribute, index, offset);\n};\nVector4.prototype.lengthManhattan = function() {\n console.warn(\"THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().\");\n return this.manhattanLength();\n};\nObject3D.prototype.getChildByName = function(name) {\n console.warn(\"THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().\");\n return this.getObjectByName(name);\n};\nObject3D.prototype.renderDepth = function() {\n console.warn(\"THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.\");\n};\nObject3D.prototype.translate = function(distance, axis) {\n console.warn(\"THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.\");\n return this.translateOnAxis(axis, distance);\n};\nObject3D.prototype.getWorldRotation = function() {\n console.error(\"THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.\");\n};\nObject3D.prototype.applyMatrix = function(matrix) {\n console.warn(\"THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().\");\n return this.applyMatrix4(matrix);\n};\nObject.defineProperties(Object3D.prototype, {\n eulerOrder: {\n get: function() {\n console.warn(\"THREE.Object3D: .eulerOrder is now .rotation.order.\");\n return this.rotation.order;\n },\n set: function(value) {\n console.warn(\"THREE.Object3D: .eulerOrder is now .rotation.order.\");\n this.rotation.order = value;\n }\n },\n useQuaternion: {\n get: function() {\n console.warn(\"THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.\");\n },\n set: function() {\n console.warn(\"THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.\");\n }\n }\n});\nMesh.prototype.setDrawMode = function() {\n console.error(\"THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.\");\n};\nObject.defineProperties(Mesh.prototype, {\n drawMode: {\n get: function() {\n console.error(\"THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.\");\n return TrianglesDrawMode;\n },\n set: function() {\n console.error(\"THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.\");\n }\n }\n});\nSkinnedMesh.prototype.initBones = function() {\n console.error(\"THREE.SkinnedMesh: initBones() has been removed.\");\n};\nPerspectiveCamera.prototype.setLens = function(focalLength, filmGauge) {\n console.warn(\"THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup.\");\n if (filmGauge !== void 0)\n this.filmGauge = filmGauge;\n this.setFocalLength(focalLength);\n};\nObject.defineProperties(Light.prototype, {\n onlyShadow: {\n set: function() {\n console.warn(\"THREE.Light: .onlyShadow has been removed.\");\n }\n },\n shadowCameraFov: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowCameraFov is now .shadow.camera.fov.\");\n this.shadow.camera.fov = value;\n }\n },\n shadowCameraLeft: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowCameraLeft is now .shadow.camera.left.\");\n this.shadow.camera.left = value;\n }\n },\n shadowCameraRight: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowCameraRight is now .shadow.camera.right.\");\n this.shadow.camera.right = value;\n }\n },\n shadowCameraTop: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowCameraTop is now .shadow.camera.top.\");\n this.shadow.camera.top = value;\n }\n },\n shadowCameraBottom: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.\");\n this.shadow.camera.bottom = value;\n }\n },\n shadowCameraNear: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowCameraNear is now .shadow.camera.near.\");\n this.shadow.camera.near = value;\n }\n },\n shadowCameraFar: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowCameraFar is now .shadow.camera.far.\");\n this.shadow.camera.far = value;\n }\n },\n shadowCameraVisible: {\n set: function() {\n console.warn(\"THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.\");\n }\n },\n shadowBias: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowBias is now .shadow.bias.\");\n this.shadow.bias = value;\n }\n },\n shadowDarkness: {\n set: function() {\n console.warn(\"THREE.Light: .shadowDarkness has been removed.\");\n }\n },\n shadowMapWidth: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.\");\n this.shadow.mapSize.width = value;\n }\n },\n shadowMapHeight: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.\");\n this.shadow.mapSize.height = value;\n }\n }\n});\nObject.defineProperties(BufferAttribute.prototype, {\n length: {\n get: function() {\n console.warn(\"THREE.BufferAttribute: .length has been deprecated. Use .count instead.\");\n return this.array.length;\n }\n },\n dynamic: {\n get: function() {\n console.warn(\"THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.\");\n return this.usage === DynamicDrawUsage;\n },\n set: function() {\n console.warn(\"THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.\");\n this.setUsage(DynamicDrawUsage);\n }\n }\n});\nBufferAttribute.prototype.setDynamic = function(value) {\n console.warn(\"THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.\");\n this.setUsage(value === true ? DynamicDrawUsage : StaticDrawUsage);\n return this;\n};\nBufferAttribute.prototype.copyIndicesArray = function() {\n console.error(\"THREE.BufferAttribute: .copyIndicesArray() has been removed.\");\n}, BufferAttribute.prototype.setArray = function() {\n console.error(\"THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers\");\n};\nBufferGeometry.prototype.addIndex = function(index) {\n console.warn(\"THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().\");\n this.setIndex(index);\n};\nBufferGeometry.prototype.addAttribute = function(name, attribute) {\n console.warn(\"THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().\");\n if (!(attribute && attribute.isBufferAttribute) && !(attribute && attribute.isInterleavedBufferAttribute)) {\n console.warn(\"THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).\");\n return this.setAttribute(name, new BufferAttribute(arguments[1], arguments[2]));\n }\n if (name === \"index\") {\n console.warn(\"THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.\");\n this.setIndex(attribute);\n return this;\n }\n return this.setAttribute(name, attribute);\n};\nBufferGeometry.prototype.addDrawCall = function(start, count, indexOffset) {\n if (indexOffset !== void 0) {\n console.warn(\"THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.\");\n }\n console.warn(\"THREE.BufferGeometry: .addDrawCall() is now .addGroup().\");\n this.addGroup(start, count);\n};\nBufferGeometry.prototype.clearDrawCalls = function() {\n console.warn(\"THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().\");\n this.clearGroups();\n};\nBufferGeometry.prototype.computeOffsets = function() {\n console.warn(\"THREE.BufferGeometry: .computeOffsets() has been removed.\");\n};\nBufferGeometry.prototype.removeAttribute = function(name) {\n console.warn(\"THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().\");\n return this.deleteAttribute(name);\n};\nBufferGeometry.prototype.applyMatrix = function(matrix) {\n console.warn(\"THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().\");\n return this.applyMatrix4(matrix);\n};\nObject.defineProperties(BufferGeometry.prototype, {\n drawcalls: {\n get: function() {\n console.error(\"THREE.BufferGeometry: .drawcalls has been renamed to .groups.\");\n return this.groups;\n }\n },\n offsets: {\n get: function() {\n console.warn(\"THREE.BufferGeometry: .offsets has been renamed to .groups.\");\n return this.groups;\n }\n }\n});\nInterleavedBuffer.prototype.setDynamic = function(value) {\n console.warn(\"THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.\");\n this.setUsage(value === true ? DynamicDrawUsage : StaticDrawUsage);\n return this;\n};\nInterleavedBuffer.prototype.setArray = function() {\n console.error(\"THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers\");\n};\nExtrudeGeometry.prototype.getArrays = function() {\n console.error(\"THREE.ExtrudeGeometry: .getArrays() has been removed.\");\n};\nExtrudeGeometry.prototype.addShapeList = function() {\n console.error(\"THREE.ExtrudeGeometry: .addShapeList() has been removed.\");\n};\nExtrudeGeometry.prototype.addShape = function() {\n console.error(\"THREE.ExtrudeGeometry: .addShape() has been removed.\");\n};\nScene.prototype.dispose = function() {\n console.error(\"THREE.Scene: .dispose() has been removed.\");\n};\nUniform.prototype.onUpdate = function() {\n console.warn(\"THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.\");\n return this;\n};\nObject.defineProperties(Material.prototype, {\n wrapAround: {\n get: function() {\n console.warn(\"THREE.Material: .wrapAround has been removed.\");\n },\n set: function() {\n console.warn(\"THREE.Material: .wrapAround has been removed.\");\n }\n },\n overdraw: {\n get: function() {\n console.warn(\"THREE.Material: .overdraw has been removed.\");\n },\n set: function() {\n console.warn(\"THREE.Material: .overdraw has been removed.\");\n }\n },\n wrapRGB: {\n get: function() {\n console.warn(\"THREE.Material: .wrapRGB has been removed.\");\n return new Color();\n }\n },\n shading: {\n get: function() {\n console.error(\"THREE.\" + this.type + \": .shading has been removed. Use the boolean .flatShading instead.\");\n },\n set: function(value) {\n console.warn(\"THREE.\" + this.type + \": .shading has been removed. Use the boolean .flatShading instead.\");\n this.flatShading = value === FlatShading;\n }\n },\n stencilMask: {\n get: function() {\n console.warn(\"THREE.\" + this.type + \": .stencilMask has been removed. Use .stencilFuncMask instead.\");\n return this.stencilFuncMask;\n },\n set: function(value) {\n console.warn(\"THREE.\" + this.type + \": .stencilMask has been removed. Use .stencilFuncMask instead.\");\n this.stencilFuncMask = value;\n }\n },\n vertexTangents: {\n get: function() {\n console.warn(\"THREE.\" + this.type + \": .vertexTangents has been removed.\");\n },\n set: function() {\n console.warn(\"THREE.\" + this.type + \": .vertexTangents has been removed.\");\n }\n }\n});\nObject.defineProperties(ShaderMaterial.prototype, {\n derivatives: {\n get: function() {\n console.warn(\"THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.\");\n return this.extensions.derivatives;\n },\n set: function(value) {\n console.warn(\"THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.\");\n this.extensions.derivatives = value;\n }\n }\n});\nWebGLRenderer.prototype.clearTarget = function(renderTarget, color, depth, stencil) {\n console.warn(\"THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.\");\n this.setRenderTarget(renderTarget);\n this.clear(color, depth, stencil);\n};\nWebGLRenderer.prototype.animate = function(callback) {\n console.warn(\"THREE.WebGLRenderer: .animate() is now .setAnimationLoop().\");\n this.setAnimationLoop(callback);\n};\nWebGLRenderer.prototype.getCurrentRenderTarget = function() {\n console.warn(\"THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().\");\n return this.getRenderTarget();\n};\nWebGLRenderer.prototype.getMaxAnisotropy = function() {\n console.warn(\"THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().\");\n return this.capabilities.getMaxAnisotropy();\n};\nWebGLRenderer.prototype.getPrecision = function() {\n console.warn(\"THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.\");\n return this.capabilities.precision;\n};\nWebGLRenderer.prototype.resetGLState = function() {\n console.warn(\"THREE.WebGLRenderer: .resetGLState() is now .state.reset().\");\n return this.state.reset();\n};\nWebGLRenderer.prototype.supportsFloatTextures = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' ).\");\n return this.extensions.get(\"OES_texture_float\");\n};\nWebGLRenderer.prototype.supportsHalfFloatTextures = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' ).\");\n return this.extensions.get(\"OES_texture_half_float\");\n};\nWebGLRenderer.prototype.supportsStandardDerivatives = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' ).\");\n return this.extensions.get(\"OES_standard_derivatives\");\n};\nWebGLRenderer.prototype.supportsCompressedTextureS3TC = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' ).\");\n return this.extensions.get(\"WEBGL_compressed_texture_s3tc\");\n};\nWebGLRenderer.prototype.supportsCompressedTexturePVRTC = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' ).\");\n return this.extensions.get(\"WEBGL_compressed_texture_pvrtc\");\n};\nWebGLRenderer.prototype.supportsBlendMinMax = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' ).\");\n return this.extensions.get(\"EXT_blend_minmax\");\n};\nWebGLRenderer.prototype.supportsVertexTextures = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.\");\n return this.capabilities.vertexTextures;\n};\nWebGLRenderer.prototype.supportsInstancedArrays = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' ).\");\n return this.extensions.get(\"ANGLE_instanced_arrays\");\n};\nWebGLRenderer.prototype.enableScissorTest = function(boolean) {\n console.warn(\"THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().\");\n this.setScissorTest(boolean);\n};\nWebGLRenderer.prototype.initMaterial = function() {\n console.warn(\"THREE.WebGLRenderer: .initMaterial() has been removed.\");\n};\nWebGLRenderer.prototype.addPrePlugin = function() {\n console.warn(\"THREE.WebGLRenderer: .addPrePlugin() has been removed.\");\n};\nWebGLRenderer.prototype.addPostPlugin = function() {\n console.warn(\"THREE.WebGLRenderer: .addPostPlugin() has been removed.\");\n};\nWebGLRenderer.prototype.updateShadowMap = function() {\n console.warn(\"THREE.WebGLRenderer: .updateShadowMap() has been removed.\");\n};\nWebGLRenderer.prototype.setFaceCulling = function() {\n console.warn(\"THREE.WebGLRenderer: .setFaceCulling() has been removed.\");\n};\nWebGLRenderer.prototype.allocTextureUnit = function() {\n console.warn(\"THREE.WebGLRenderer: .allocTextureUnit() has been removed.\");\n};\nWebGLRenderer.prototype.setTexture = function() {\n console.warn(\"THREE.WebGLRenderer: .setTexture() has been removed.\");\n};\nWebGLRenderer.prototype.setTexture2D = function() {\n console.warn(\"THREE.WebGLRenderer: .setTexture2D() has been removed.\");\n};\nWebGLRenderer.prototype.setTextureCube = function() {\n console.warn(\"THREE.WebGLRenderer: .setTextureCube() has been removed.\");\n};\nWebGLRenderer.prototype.getActiveMipMapLevel = function() {\n console.warn(\"THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().\");\n return this.getActiveMipmapLevel();\n};\nObject.defineProperties(WebGLRenderer.prototype, {\n shadowMapEnabled: {\n get: function() {\n return this.shadowMap.enabled;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.\");\n this.shadowMap.enabled = value;\n }\n },\n shadowMapType: {\n get: function() {\n return this.shadowMap.type;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.\");\n this.shadowMap.type = value;\n }\n },\n shadowMapCullFace: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.\");\n return void 0;\n },\n set: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.\");\n }\n },\n context: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.\");\n return this.getContext();\n }\n },\n vr: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .vr has been renamed to .xr\");\n return this.xr;\n }\n },\n gammaInput: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.\");\n return false;\n },\n set: function() {\n console.warn(\"THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.\");\n }\n },\n gammaOutput: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.\");\n return false;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.\");\n this.outputEncoding = value === true ? sRGBEncoding : LinearEncoding;\n }\n },\n toneMappingWhitePoint: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.\");\n return 1;\n },\n set: function() {\n console.warn(\"THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.\");\n }\n }\n});\nObject.defineProperties(WebGLShadowMap.prototype, {\n cullFace: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.\");\n return void 0;\n },\n set: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.\");\n }\n },\n renderReverseSided: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.\");\n return void 0;\n },\n set: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.\");\n }\n },\n renderSingleSided: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.\");\n return void 0;\n },\n set: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.\");\n }\n }\n});\nfunction WebGLRenderTargetCube(width, height, options) {\n console.warn(\"THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).\");\n return new WebGLCubeRenderTarget(width, options);\n}\nObject.defineProperties(WebGLRenderTarget.prototype, {\n wrapS: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.\");\n return this.texture.wrapS;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.\");\n this.texture.wrapS = value;\n }\n },\n wrapT: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.\");\n return this.texture.wrapT;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.\");\n this.texture.wrapT = value;\n }\n },\n magFilter: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.\");\n return this.texture.magFilter;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.\");\n this.texture.magFilter = value;\n }\n },\n minFilter: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.\");\n return this.texture.minFilter;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.\");\n this.texture.minFilter = value;\n }\n },\n anisotropy: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.\");\n return this.texture.anisotropy;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.\");\n this.texture.anisotropy = value;\n }\n },\n offset: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .offset is now .texture.offset.\");\n return this.texture.offset;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .offset is now .texture.offset.\");\n this.texture.offset = value;\n }\n },\n repeat: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .repeat is now .texture.repeat.\");\n return this.texture.repeat;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .repeat is now .texture.repeat.\");\n this.texture.repeat = value;\n }\n },\n format: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .format is now .texture.format.\");\n return this.texture.format;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .format is now .texture.format.\");\n this.texture.format = value;\n }\n },\n type: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .type is now .texture.type.\");\n return this.texture.type;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .type is now .texture.type.\");\n this.texture.type = value;\n }\n },\n generateMipmaps: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.\");\n return this.texture.generateMipmaps;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.\");\n this.texture.generateMipmaps = value;\n }\n }\n});\nAudio.prototype.load = function(file) {\n console.warn(\"THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.\");\n const scope = this;\n const audioLoader = new AudioLoader();\n audioLoader.load(file, function(buffer) {\n scope.setBuffer(buffer);\n });\n return this;\n};\nAudioAnalyser.prototype.getData = function() {\n console.warn(\"THREE.AudioAnalyser: .getData() is now .getFrequencyData().\");\n return this.getFrequencyData();\n};\nCubeCamera.prototype.updateCubeMap = function(renderer, scene) {\n console.warn(\"THREE.CubeCamera: .updateCubeMap() is now .update().\");\n return this.update(renderer, scene);\n};\nCubeCamera.prototype.clear = function(renderer, color, depth, stencil) {\n console.warn(\"THREE.CubeCamera: .clear() is now .renderTarget.clear().\");\n return this.renderTarget.clear(renderer, color, depth, stencil);\n};\nImageUtils.crossOrigin = void 0;\nImageUtils.loadTexture = function(url, mapping, onLoad, onError) {\n console.warn(\"THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.\");\n const loader = new TextureLoader();\n loader.setCrossOrigin(this.crossOrigin);\n const texture = loader.load(url, onLoad, void 0, onError);\n if (mapping)\n texture.mapping = mapping;\n return texture;\n};\nImageUtils.loadTextureCube = function(urls, mapping, onLoad, onError) {\n console.warn(\"THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.\");\n const loader = new CubeTextureLoader();\n loader.setCrossOrigin(this.crossOrigin);\n const texture = loader.load(urls, onLoad, void 0, onError);\n if (mapping)\n texture.mapping = mapping;\n return texture;\n};\nImageUtils.loadCompressedTexture = function() {\n console.error(\"THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.\");\n};\nImageUtils.loadCompressedTextureCube = function() {\n console.error(\"THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.\");\n};\nfunction CanvasRenderer() {\n console.error(\"THREE.CanvasRenderer has been removed\");\n}\nfunction JSONLoader() {\n console.error(\"THREE.JSONLoader has been removed.\");\n}\nconst SceneUtils = {\n createMultiMaterialObject: function() {\n console.error(\"THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js\");\n },\n detach: function() {\n console.error(\"THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js\");\n },\n attach: function() {\n console.error(\"THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js\");\n }\n};\nfunction LensFlare() {\n console.error(\"THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js\");\n}\nfunction ParametricGeometry() {\n console.error(\"THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js\");\n return new BufferGeometry();\n}\nfunction TextGeometry() {\n console.error(\"THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js\");\n return new BufferGeometry();\n}\nfunction FontLoader() {\n console.error(\"THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js\");\n}\nfunction Font() {\n console.error(\"THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js\");\n}\nfunction ImmediateRenderObject() {\n console.error(\"THREE.ImmediateRenderObject has been removed.\");\n}\nif (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"register\", {detail: {\n revision: REVISION\n }}));\n}\nif (typeof window !== \"undefined\") {\n if (window.__THREE__) {\n console.warn(\"WARNING: Multiple instances of Three.js being imported.\");\n } else {\n window.__THREE__ = REVISION;\n }\n}\nexport {ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, 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, BoxGeometry as BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleGeometry as CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeGeometry as ConeBufferGeometry, ConeGeometry, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry as CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry as DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry as ExtrudeBufferGeometry, ExtrudeGeometry, FaceColors, FileLoader, FlatShading, Float16BufferAttribute, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GammaEncoding, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronGeometry as IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry as LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry as OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneGeometry as PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry as PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, 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_BPTC_Format, RGBA_ETC2_EAC_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, RGBIntegerFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry as RingBufferGeometry, RingGeometry, SRGB8_ALPHA8_ASTC_10x10_Format, SRGB8_ALPHA8_ASTC_10x5_Format, SRGB8_ALPHA8_ASTC_10x6_Format, SRGB8_ALPHA8_ASTC_10x8_Format, SRGB8_ALPHA8_ASTC_12x10_Format, SRGB8_ALPHA8_ASTC_12x12_Format, SRGB8_ALPHA8_ASTC_4x4_Format, SRGB8_ALPHA8_ASTC_5x4_Format, SRGB8_ALPHA8_ASTC_5x5_Format, SRGB8_ALPHA8_ASTC_6x5_Format, SRGB8_ALPHA8_ASTC_6x6_Format, SRGB8_ALPHA8_ASTC_8x5_Format, SRGB8_ALPHA8_ASTC_8x6_Format, SRGB8_ALPHA8_ASTC_8x8_Format, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry as ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereGeometry as SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry as TetrahedronBufferGeometry, TetrahedronGeometry, TextGeometry, Texture, TextureLoader, TorusGeometry as TorusBufferGeometry, TorusGeometry, TorusKnotGeometry as TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry as TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding};\nexport default null;\n", "import { Three } from '../../Deps/Three.ts';\nimport { Component } from '../../Ontology/Entity/Component.ts';\nimport { IThreeJSObject3D } from '../API.ts';\nimport { Vector3, Vector3Like } from '../../Helpers/Vector3.ts';\nimport { Quaternion, QuaternionLike } from '../../Helpers/Quaternion.ts';\nimport { qnote } from '../../Helpers/Note.ts';\nimport { ThreeJSTransform } from './ThreeJSTransform.ts';\nimport { ITransform, ITransformData } from '../../Ontology/API.ts';\n\nexport type ThreeJSObjectData = {\n\thide?: boolean;\n\toffsetRotateEuler?: Vector3Like;\n\tflipZ?: boolean;\n};\n\nconst pendingPromise = Promise.race.bind(Promise, []);\n\nexport class ThreeJSComponent extends Component\n\timplements IThreeJSObject3D {\n\t_threeObject: Three.Object3D | null = null;\n\t_q: Quaternion = new Quaternion();\n\t_tq: Three.Quaternion = new Three.Quaternion();\n\n\t_cancelCreatePromise: (() => void) | undefined = undefined;\n\n\tvisible = true;\n\tupdateSelf = true;\n\n\tconstructor() {\n\t\tsuper();\n\t\t// TODO: wtf clean this up\n\t\tthis.super = { duper: this.super, ...this };\n\t}\n\n\tgetThreeObject = (): Three.Object3D | null => {\n\t\treturn this._threeObject;\n\t};\n\n\tcreateThreeObject = (): Promise => {\n\t\tthrow new Error(\n\t\t\t`Please implement createThreeObject() on ${this.constructor.name}`,\n\t\t);\n\t};\n\n\tmutateOverride = (data: T & ThreeJSObjectData) => {\n\t\treturn data;\n\t};\n\n\tinterruption = (): Promise => {\n\t\treturn new Promise((resolve) => {\n\t\t\tthis._cancelCreatePromise = function () {\n\t\t\t\tresolve(null);\n\t\t\t};\n\t\t});\n\t};\n\n\tcreate = async () => {\n\t\tconst threeObject = await Promise.race([\n\t\t\tthis.createThreeObject(),\n\t\t\tthis.interruption(),\n\t\t]);\n\t\tif (threeObject == null) {\n\t\t\t// interrupted\n\t\t\tqnote('interrupted');\n\t\t\treturn;\n\t\t}\n\t\t// qnote(\n\t\t// \t'ThreeJSComponent.create',\n\t\t// \tthis.constructor.name,\n\t\t// \tthis.state,\n\t\t// \tthis.data,\n\t\t// );\n\n\t\tif (this.state === 'dead') {\n\t\t\treturn;\n\t\t}\n\t\tthis._threeObject = threeObject!;\n\t\tthis.entity!.scene!.add(this);\n\t};\n\n\tdestroy = () => {\n\t\tqnote('destroying', this.constructor.name, this._threeObject);\n\t\tthis._cancelCreatePromise && this._cancelCreatePromise();\n\t\tthis._cancelCreatePromise = undefined;\n\t\tif (this._threeObject) {\n\t\t\tqnote('destroying', this.constructor.name, 'threeObject');\n\t\t\tthis.entity!.scene!.remove(this);\n\t\t\tthis._threeObject = null;\n\t\t}\n\t\t(this.super as any).duper.destroy();\n\t};\n\n\tupdate = () => {\n\t\tif (!this._threeObject) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this.updateSelf) {\n\t\t\treturn;\n\t\t}\n\t\tconst data = this.data!\n\t\tif (data.hide) {\n\t\t\tthis.visible = false;\n\t\t}\n\t\tthis._q.set(Quaternion.staticIdentity)\n\t\tif (data.offsetRotateEuler) {\n\t\t\tthis._q.rotateX(data.offsetRotateEuler.x);\n\t\t\tthis._q.rotateY(data.offsetRotateEuler.y);\n\t\t\tthis._q.rotateZ(data.offsetRotateEuler.z);\n\t\t}\n\t\tif (data.flipZ) {\n\t\t\tthis._q.rotateY(Math.PI);\n\t\t}\n\t\tthis._threeObject!.quaternion.set(\n\t\t\tthis._q.x,\n\t\t\tthis._q.y,\n\t\t\tthis._q.z,\n\t\t\tthis._q.w,\n\t\t);\n\t\treturn;\n\n\t\t// Everything is set by the underlying group!\n\n\t\t// const { position, rotation, scale } = this.transform.getWorld()!;\n\t\t// this._threeObject.position.set(position.x, position.y, position.z);\n\t\t// this._q.set(rotation.x, rotation.y, rotation.z, rotation.w);\n\t\t// if (this.data?.flipZ) {\n\t\t// \tthis._q.rotateY(\n\t\t// \t\tMath.PI,\n\t\t// \t);\n\t\t// }\n\t\t// if (this.data?.offsetRotateEuler) {\n\t\t// \tconst offsetRotateEuler = this.data.offsetRotateEuler;\n\t\t// \tthis._q.rotateX(offsetRotateEuler.x);\n\t\t// \tthis._q.rotateY(offsetRotateEuler.y);\n\t\t// \tthis._q.rotateZ(offsetRotateEuler.z);\n\t\t// }\n\t\t// this._tq.set(this._q.x, this._q.y, this._q.z, this._q.w);\n\t\t// this._threeObject.rotation.setFromQuaternion(this._tq);\n\n\t\t// const numberScale = typeof scale === 'number' ? scale as number : null;\n\t\t// const vectorScale = numberScale == null\n\t\t// \t? scale as unknown as (Vector3Like | null)\n\t\t// \t: null;\n\t\t// this._threeObject!.scale.set(\n\t\t// \tnumberScale ?? vectorScale?.x ?? 1,\n\t\t// \tnumberScale ?? vectorScale?.y ?? 1,\n\t\t// \tnumberScale ?? vectorScale?.z ?? 1,\n\t\t// );\n\t};\n\n\tget transform() {\n\t\treturn this.entity!.getComponent(\n\t\t\tThreeJSTransform,\n\t\t) as unknown as ITransform;\n\t}\n}\n", "import { Three } from '../Deps/Three.ts';\nimport { alloc } from './Alloc.ts';\nimport { Quaternion, QuaternionLike } from './Quaternion.ts';\nimport { Vector3, Vector3Like } from './Vector3.ts';\n\nexport class ThreeJSHelper {\n\t/// Convert into ThreeJS Quaternion type\n\tstatic toQuat = (\n\t\tq: QuaternionLike,\n\t\ttarget?: Three.Quaternion,\n\t): Three.Quaternion => {\n\t\tif (target) {\n\t\t\ttarget.set(q.x, q.y, q.z, q.w);\n\t\t\treturn target;\n\t\t}\n\t\treturn alloc(new Three.Quaternion(q.x, q.y, q.z, q.w));\n\t};\n\n\t/// Convert into Cosm Native Quaternion type\n\tstatic fromQuat = (q: Three.Quaternion): Quaternion => {\n\t\treturn alloc(new Quaternion(q.x, q.y, q.z, q.w));\n\t};\n\n\t/// Convert into ThreeJS Vector3 type\n\tstatic toVec = (v: Vector3Like, target?: Three.Vector3): Three.Vector3 => {\n\t\tif (target) {\n\t\t\ttarget.set(v.x, v.y, v.z);\n\t\t\treturn target;\n\t\t}\n\t\treturn alloc(new Three.Vector3(v.x, v.y, v.z));\n\t};\n\n\t/// Convert into Native Vector3 type\n\tstatic fromVec = (v: Three.Vector3): Vector3 => {\n\t\treturn alloc(new Vector3(v.x, v.y, v.z));\n\t};\n}\n", "export function randomBetween(min: number, max: number): number {\n return Math.random() * (max - min) + min;\n}\n\nfunction gaussianRand() {\n let rand = 0;\n for (let i = 0; i < 6; i += 1) rand += Math.random();\n return rand / 6;\n}\n\nexport function gaussian(min, max) {\n return Math.floor(min + gaussianRand() * (max - min + 1));\n}\n", "import { Vector3, Vector3Like } from '../../Helpers/Vector3.ts';\nimport { Quaternion, QuaternionLike } from '../../Helpers/Quaternion.ts';\nimport { ThreeJSComponent, ThreeJSObjectData } from './ThreeJSComponent.ts';\nimport { Three } from '../../Deps/Three.ts';\nimport { ITransform } from '../../Ontology/API.ts';\nimport { ThreeJSHelper } from '../../Helpers/ThreeJSHelper.ts';\nimport { alloc } from '../../Helpers/Alloc.ts';\nimport { qnote } from '../../Helpers/Note.ts';\nimport { gaussian } from '../../Helpers/Random.ts';\n\nexport type TransformData = {\n\tposition: Vector3Like;\n\trotation: QuaternionLike;\n\tscale: Vector3Like;\n};\n\nexport type ThreeJSTransformData = ThreeJSObjectData & TransformData & {\n\tgroup: boolean;\n};\n\nconst RANDOMIZE_DEFAULT = false;\n\nexport class ThreeJSTransform extends ThreeJSComponent\n\timplements ITransform {\n\tthreePos = new Three.Vector3();\n\tthreeRot = new Three.Quaternion();\n\tthreeScale = new Three.Vector3();\n\n\tcreateThreeObject = (): Promise => {\n\t\tif (this.data?.group) {\n\t\t\tconst group = new Three.Group();\n\t\t\tthis.updatePosRotScale(group, this.data!);\n\t\t\treturn Promise.resolve(group);\n\t\t} else {\n\t\t\treturn Promise.resolve(null);\n\t\t}\n\t};\n\n\tget position(): Vector3Like {\n\t\treturn this.data!.position;\n\t}\n\n\tset position(vec: Vector3Like) {\n\t\tthis.data!.position = vec;\n\t\tthis.mutateImmediate();\n\t}\n\n\tget forward_ALLOC(): Vector3Like {\n\t\treturn this.transformDirection_ALLOC(Vector3.forward);\n\t}\n\tget up_ALLOC(): Vector3Like {\n\t\treturn this.transformDirection_ALLOC(Vector3.up);\n\t}\n\tget right_ALLOC(): Vector3Like {\n\t\treturn this.transformDirection_ALLOC(Vector3.right);\n\t}\n\n\tforward(target: Vector3Like): Vector3Like {\n\t\treturn this.transformDirection(Vector3.staticForward, target);\n\t}\n\n\tup(target: Vector3Like): Vector3Like {\n\t\treturn this.transformDirection(Vector3.staticUp, target);\n\t}\n\n\tright(target: Vector3Like): Vector3Like {\n\t\treturn this.transformDirection(Vector3.staticRight, target);\n\t}\n\n\tget rotation(): QuaternionLike {\n\t\treturn this._threeObject!.getWorldQuaternion(this.threeRot);\n\t}\n\n\tset rotation(q: QuaternionLike) {\n\t\tthis.data!.rotation = q;\n\t\tthis.mutateImmediate();\n\t}\n\n\tget scale(): Vector3Like {\n\t\treturn Vector3.one;\n\t}\n\n\tget localPosition(): Vector3Like {\n\t\treturn this.data!.position;\n\t}\n\n\tset localPosition(vec: Vector3Like) {\n\t\tthis.data!.position = vec;\n\t\tthis.mutateImmediate();\n\t}\n\n\tget localRotation(): QuaternionLike {\n\t\treturn this.data!.rotation;\n\t}\n\n\tset localRotation(q: QuaternionLike) {\n\t\tthis.data!.rotation = q;\n\t\tthis.mutateImmediate();\n\t}\n\n\tget localScale(): Vector3Like {\n\t\treturn Vector3.one;\n\t}\n\n\ttransformPoint = (point: Vector3Like): Vector3Like => {\n\t\tconst worldOffset = this._threeObject!.getWorldPosition(this.threePos);\n\t\tconst worldPos = Vector3.subtract(point, worldOffset);\n\t\treturn worldPos;\n\t};\n\n\tinverseTransformPoint = (point: Vector3Like): Vector3Like => {\n\t\tconst worldOffset = this._threeObject!.getWorldPosition(this.threePos);\n\t\tconst localPos = Vector3.add(worldOffset, point);\n\t\treturn localPos;\n\t};\n\n\t__dummy1 = new Three.Vector3();\n\ttransformDirection = (\n\t\tdir: Vector3Like,\n\t\ttarget: Vector3Like,\n\t): Vector3Like => {\n\t\tconst localDir = ThreeJSHelper.toVec(dir, this.__dummy1)\n\t\t\t.transformDirection(\n\t\t\t\tthis._threeObject!.matrixWorld,\n\t\t\t);\n\t\tVector3.set(target, localDir);\n\t\treturn target;\n\t};\n\n\ttransformDirection_ALLOC = (dir: Vector3Like): Vector3Like => {\n\t\tconst localDir = ThreeJSHelper.toVec(dir).transformDirection(\n\t\t\tthis._threeObject!.matrixWorld,\n\t\t);\n\t\treturn localDir;\n\t};\n\n\tmutateOverride = (data: ThreeJSTransformData): ThreeJSTransformData => {\n\t\t// qnote(data)\n\t\tif (data.group && !this.data!.group) {\n\t\t\t// Now a group!\n\t\t\tthis._threeObject = new Three.Group();\n\t\t}\n\t\tif (!data.group && this.data!.group) {\n\t\t\t// No longer a group, currently unhandled\n\t\t\tthrow new Error('Unhandled disabling of group on ThreeJSTransform');\n\t\t}\n\t\tthis.updatePosRotScale(this._threeObject!, data);\n\t\treturn data;\n\t};\n\n\tupdate = () => {\n\t\tthis.updatePosRotScale(this._threeObject!, this.data!);\n\t};\n\n\tupdatePosRotScale = (\n\t\tthreeObject: Three.Object3D,\n\t\tdata: ThreeJSTransformData,\n\t): void => {\n\t\tthreeObject!.position.copy(\n\t\t\tThreeJSHelper.toVec(data.position, this.threePos),\n\t\t);\n\t\tthreeObject!.rotation.setFromQuaternion(\n\t\t\tThreeJSHelper.toQuat(data.rotation, this.threeRot),\n\t\t);\n\t\tthreeObject!.scale.copy(\n\t\t\tThreeJSHelper.toVec(data.scale, this.threeScale),\n\t\t);\n\t};\n\n\tgetDefaultData = (): ThreeJSTransformData => {\n\t\tif (!RANDOMIZE_DEFAULT) {\n\t\t\treturn alloc({\n\t\t\t\tposition: Vector3.zero,\n\t\t\t\trotation: Quaternion.identity,\n\t\t\t\tscale: Vector3.one,\n\t\t\t\tgroup: true,\n\t\t\t});\n\t\t} else {\n\t\t\treturn alloc({\n\t\t\t\t...ThreeJSTransform.getRandomTransformData(),\n\t\t\t\tgroup: true,\n\t\t\t});\n\t\t}\n\t};\n\n\tstatic getRandomTransformData(): TransformData {\n\t\tconst scale = Math.max(0.1, gaussian(0.1, 1.5));\n\t\treturn alloc({\n\t\t\tposition: {\n\t\t\t\tx: Math.random() * 10 - 5,\n\t\t\t\ty: Math.random() * 10 - 5,\n\t\t\t\tz: Math.random() * 10 - 5,\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tw: Math.random() * Math.PI * 2,\n\t\t\t\tx: Math.random() * Math.PI * 2,\n\t\t\t\ty: Math.random() * Math.PI * 2,\n\t\t\t\tz: Math.random() * Math.PI * 2,\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tx: scale,\n\t\t\t\ty: scale,\n\t\t\t\tz: scale,\n\t\t\t},\n\t\t});\n\t}\n}\n", "import { uuidLong } from '../Helpers/Uuid.ts';\nimport { Constructor } from '../Helpers/Types.ts';\nimport type {\n\tComponentBlueprintData,\n\tEntityBlueprintInstance,\n\tEntityEvents,\n\tGlobalEntityEvents,\n\tIComponent,\n\tIEntity,\n\tITransform,\n\tITransformData,\n\tPrivacy,\n} from './API.ts';\nimport { meta } from './Meta.ts';\nimport { Observable } from '../Helpers/Observable.ts';\nimport { IScene } from '../Animus/API.ts';\nimport { Note, qnote } from '../Helpers/Note.ts';\nimport { ThreeJSTransform } from '../Animus/Components/ThreeJSTransform.ts';\n\ntype EntityEventFn = (entity: IEntity, propagator: unknown | undefined) => void;\ntype ComponentEventFn = (\n\tentity: IEntity,\n\tcomponent: IComponent,\n\tpropagator: unknown | undefined,\n) => void;\n\nclass GlobalEntityInstance extends Observable {\n}\n\nexport const GlobalEntity = new GlobalEntityInstance();\n\nexport class Entity extends Observable implements IEntity {\n\tscene: IScene | undefined;\n\tname: string | undefined;\n\tsuper: Entity;\n\towner: IEntity | null = null;\n\tisOwner = true;\n\n\tget transform(): ITransform | null {\n\t\t// TODO: Fix this but idc\n\t\treturn this.getComponent(ThreeJSTransform) as unknown as ITransform<\n\t\t\tITransformData\n\t\t>;\n\t}\n\n\tparent: IEntity | null = null;\n\tchildren: IEntity[] = [];\n\n\tconstructor(\n\t\tpublic readonly tags: string[] | undefined = undefined,\n\t) {\n\t\tsuper();\n\t\tthis.name = 'UNINITIALIZED';\n\t\tthis.id = 'UNINITIALIZED';\n\t\tthis.super = {\n\t\t\t...this,\n\t\t};\n\t}\n\n\tid: string;\n\tprivacy: Privacy = 'public';\n\tstate: 'alive' | 'dead' = 'dead';\n\tupdating = false;\n\tcomponents: IComponent[] = [];\n\n\tcreateOverridable = () => {\n\t};\n\n\tcreate = (\n\t\tblueprint: EntityBlueprintInstance | null,\n\t\tscene: IScene,\n\t\tpropagator: unknown | undefined,\n\t): IEntity => {\n\t\tthis.id = uuidLong();\n\t\tthis.privacy = blueprint?.privacy ?? 'public';\n\t\tthis.scene = scene;\n\t\tlet defaultBlueprint: EntityBlueprintInstance | null = null;\n\t\tlet blueprintOrDefault = blueprint;\n\t\tif (!blueprintOrDefault) {\n\t\t\tdefaultBlueprint = this.getDefaultBlueprint();\n\t\t\tblueprintOrDefault = defaultBlueprint;\n\t\t}\n\t\tthis.name = blueprintOrDefault?.name ||\n\t\t\tblueprintOrDefault.entity?.constructor.name ||\n\t\t\tthis.constructor.name ||\n\t\t\t'unnamed';\n\n\t\t// Copy over ID\n\t\tif (blueprintOrDefault.id) {\n\t\t\tthis.id = blueprintOrDefault.id;\n\t\t}\n\n\t\tthis.state = 'alive';\n\n\t\tlet index = 0;\n\t\t// Copy over components\n\t\tfor (\n\t\t\tconst { component, privacy, data }\n\t\t\t\tof blueprintOrDefault!.components || []\n\t\t) {\n\t\t\tconst componentOrDefault = component ??\n\t\t\t\t(defaultBlueprint || this.getDefaultBlueprint())?.components\n\t\t\t\t\t?.[index]\n\t\t\t\t\t?.component;\n\n\t\t\tconst newComponent = componentOrDefault._internal_Create(\n\t\t\t\tthis,\n\t\t\t\t{\n\t\t\t\t\tprivacy,\n\t\t\t\t\tdata,\n\t\t\t\t},\n\t\t\t\tpropagator,\n\t\t\t);\n\t\t\tnewComponent.privacy =\n\t\t\t\tblueprintOrDefault?.components?.[index]?.privacy ??\n\t\t\t\t\t'public';\n\t\t\tnewComponent.isOwner = this.isOwner;\n\t\t\tthis.components.push(newComponent);\n\t\t\tnewComponent.subscribe('mutate', this.onComponentMutate);\n\t\t\tindex++;\n\t\t}\n\n\t\tfor (const child of blueprintOrDefault.children || []) {\n\t\t\tconst childEntity = child.entity ?? new Entity();\n\t\t\tchildEntity.parent = this;\n\t\t\tchildEntity.create(child, scene, propagator);\n\t\t\tthis.children.push(childEntity);\n\t\t}\n\n\t\tthis.createOverridable();\n\t\tGlobalEntity.emit('create', this, propagator);\n\n\t\tfor (const component of this.components) {\n\t\t\tGlobalEntity.emit('component-create', this, component, propagator);\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tdescribe = (): EntityBlueprintInstance => {\n\t\treturn {\n\t\t\tid: this.id,\n\t\t\tprivacy: this.privacy,\n\t\t\tparent: this.parent,\n\t\t\tchildren: this.children.map((child) => child.describe()),\n\t\t\tcomponents: this.components.flatMap((\n\t\t\t\tcomponent,\n\t\t\t) => (component.privacy === 'public'\n\t\t\t\t? [{\n\t\t\t\t\tcomponent,\n\t\t\t\t\tdata: component.describe(),\n\t\t\t\t}]\n\t\t\t\t: [])\n\t\t\t),\n\t\t};\n\t};\n\n\tdestroy = (propagator: unknown): void => {\n\t\tNote.trace('_', 'Entity.destroy', this.name, this.id);\n\t\tfor (const component of this.components) {\n\t\t\tcomponent.destroy(propagator);\n\t\t}\n\t\tfor (const child of this.children) {\n\t\t\tchild.destroy(propagator);\n\t\t}\n\t\tGlobalEntity.emit('destroy', this, propagator);\n\t\t// this.emit(\"destroy\", this, propagator);\n\t\tthis.parent = null;\n\t\tthis.components = [];\n\t\tthis.state = 'dead';\n\t\tthis.children = [];\n\t\tthis.name = 'UNINITIALIZED';\n\t\tthis.id = 'UNINITIALIZED';\n\t\tmeta.getPool(this.constructor as any)!.release(this);\n\t};\n\n\tmutate = (\n\t\tfn: (entity: IEntity) => void,\n\t\tpropagator: unknown | undefined,\n\t): IEntity => {\n\t\tfn(this);\n\t\tGlobalEntity.emit('mutate', this, propagator);\n\t\treturn this;\n\t};\n\n\tgetChildByName = (name: string): IEntity | undefined => {\n\t\tfor (let i = 0; i < this.children.length; i++) {\n\t\t\tif (this.children[i].name === name) {\n\t\t\t\treturn this.children[i];\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t};\n\n\tgetAllComponents = >(\n\t\tcomponent: Constructor | string,\n\t): TComponent[] => {\n\t\tconst results: TComponent[] = [];\n\t\tif (typeof component === 'string') {\n\t\t\tfor (let i = 0; i < this.components.length; i++) {\n\t\t\t\tif (this.components[i].constructor.name === component) {\n\t\t\t\t\tresults.push(this.components[i] as TComponent);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let i = 0; i < this.components.length; i++) {\n\t\t\t\tconst c = this.components[i];\n\t\t\t\tif (\n\t\t\t\t\tc instanceof\n\t\t\t\t\t\t(component as unknown as Constructor) ||\n\t\t\t\t\t((c as any).constructor.prototype instanceof\n\t\t\t\t\t\t(component as unknown as Constructor))\n\t\t\t\t) {\n\t\t\t\t\tresults.push(c as TComponent);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t};\n\n\tgetComponent = >(\n\t\tcomponent: Constructor | string,\n\t): (TComponent | null) => {\n\t\tif (typeof component === 'string') {\n\t\t\tfor (let i = 0; i < this.components.length; i++) {\n\t\t\t\tif (this.components[i].constructor.name === component) {\n\t\t\t\t\treturn this.components[i] as TComponent;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < this.components.length; i++) {\n\t\t\tconst c = this.components[i];\n\t\t\tif (\n\t\t\t\tc instanceof\n\t\t\t\t\t(component as unknown as Constructor) ||\n\t\t\t\t((c as any).constructor.prototype instanceof\n\t\t\t\t\t(component as unknown as Constructor))\n\t\t\t) {\n\t\t\t\treturn this.components[i] as TComponent;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t};\n\n\tgetData = (\n\t\tcomponent: Constructor> | string,\n\t): TData | undefined => {\n\t\tconst componentInstance = this.getComponent(component);\n\t\treturn componentInstance?.data;\n\t};\n\n\taddComponent = >(\n\t\tcomponent: Constructor,\n\t\tblueprint: ComponentBlueprintData | null,\n\t\tpropagator: unknown | undefined = undefined,\n\t): TComponent | undefined => {\n\t\tconst componentInstance = new component();\n\t\tif (componentInstance) {\n\t\t\tcomponentInstance.isOwner = this.isOwner;\n\t\t\tconst c = (componentInstance as TComponent)._internal_Create(\n\t\t\t\tthis,\n\t\t\t\tblueprint,\n\t\t\t\tpropagator,\n\t\t\t) as TComponent;\n\t\t\tthis.components.push(c);\n\t\t\tGlobalEntity.emit('component-create', this, c, propagator);\n\t\t\treturn c;\n\t\t}\n\t\treturn undefined;\n\t};\n\n\tremoveComponent = >(\n\t\tcomponent: Constructor,\n\t\tpropagator: unknown | undefined = undefined,\n\t): TComponent | undefined => {\n\t\tconst componentInstance = this.getComponent(component);\n\t\tif (componentInstance) {\n\t\t\tcomponentInstance._internal_Destroy(propagator);\n\t\t\tthis.components = this.components.filter(\n\t\t\t\t(c) => c !== componentInstance,\n\t\t\t);\n\t\t\treturn componentInstance;\n\t\t}\n\t\treturn undefined;\n\t};\n\n\tupdate = () => {\n\t\tfor (let i = 0; i < this.components.length; i++) {\n\t\t\tconst c = this.components[i];\n\t\t\tif (c.state === 'alive') {\n\t\t\t\tc.update?.();\n\t\t\t}\n\t\t}\n\t};\n\n\tgetDefaultBlueprint = (): EntityBlueprintInstance => {\n\t\treturn {\n\t\t\tcomponents: [],\n\t\t\tparent: null,\n\t\t};\n\t};\n\n\tonComponentMutate = (\n\t\tcomponent: IComponent,\n\t\tdata: unknown,\n\t\tpropagator: unknown | undefined,\n\t): void => {\n\t\tGlobalEntity.emit(\n\t\t\t'component-mutate',\n\t\t\tthis,\n\t\t\tcomponent,\n\t\t\tdata,\n\t\t\tpropagator,\n\t\t);\n\t};\n\n\tsetParent = (\n\t\tparent: IEntity | null,\n\t\tpropagator: unknown | undefined,\n\t): IEntity => {\n\t\tthis.parent = parent;\n\t\tGlobalEntity.emit('set-parent', this, parent, propagator);\n\t\treturn this;\n\t};\n}\n\nexport class UpdatingEntity extends Entity {\n\tupdating = true;\n}\n\nexport class StaticEntity extends Entity {\n\tupdating = false;\n}\n", "import { IScene } from '../Animus/API.ts';\nimport { Note } from '../Helpers/Note.ts';\nimport { Observable } from '../Helpers/Observable.ts';\nimport {\n\tEntityBlueprintInstance,\n\tIEntity,\n\tIWorld,\n\tWorldEvents,\n} from './API.ts';\nimport { GlobalEntity } from './Entity.ts';\n\nexport class World extends Observable implements IWorld {\n\tentities: IEntity[] = [];\n\n\tconstructor() {\n\t\tsuper();\n\t\tGlobalEntity.subscribe('component-create', (...params) => {\n\t\t\tthis.emit('component-create', ...params);\n\t\t});\n\t\tGlobalEntity.subscribe('component-mutate', (...params) => {\n\t\t\tthis.emit('component-mutate', ...params);\n\t\t});\n\t\tGlobalEntity.subscribe('component-destroy', (...params) => {\n\t\t\tthis.emit('component-destroy', ...params);\n\t\t});\n\t\tGlobalEntity.subscribe('set-parent', (...params) => {\n\t\t\tthis.emit('entity-set-parent', ...params);\n\t\t});\n\t\tGlobalEntity.subscribe('destroy', (entity, propagator) => {\n\t\t\tthis.destroy(entity, propagator);\n\t\t});\n\t}\n\n\tspawn = (\n\t\tentity: T,\n\t\tscene: IScene,\n\t\tblueprint: EntityBlueprintInstance | null,\n\t\tpropagator: unknown | null,\n\t): T => {\n\t\t// Note.trace(\"world\", \"adding entity to world\", blueprint);\n\t\tif (this.entities.includes(entity)) {\n\t\t\tNote.error(\n\t\t\t\t'world',\n\t\t\t\t`(create) Entity ${entity.id} already exists in world`,\n\t\t\t);\n\t\t\tthrow new Error();\n\t\t}\n\t\tthis.entities.push(entity);\n\t\tentity.create(blueprint ?? null, scene, propagator);\n\t\tthis.emit('entity-create', entity, propagator);\n\t\tif (entity.children) {\n\t\t\tthis.entities = this.entities.concat(entity.children);\n\t\t\tfor (const child of entity.children) {\n\t\t\t\tthis.emit('entity-create', child, propagator);\n\t\t\t\t// child.subscribe(\"destroy\", this.destroy);\n\t\t\t}\n\t\t}\n\n\t\t// entity.subscribe(\"destroy\", this.destroy);\n\n\t\treturn entity;\n\t};\n\n\t// DO NOT CALL THIS DIRECTLY\n\tprivate destroy = (entity: IEntity, propagator: unknown | null) => {\n\t\tif (propagator === this) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this.entities.includes(entity)) {\n\t\t\tNote.error(\n\t\t\t\t'world',\n\t\t\t\t`(destroy) Entity ${entity.id} does not exist in world`,\n\t\t\t);\n\t\t\tthrow new Error();\n\t\t}\n\t\tNote.trace('world', 'removing entity from world', entity);\n\t\t// entity.unsubscribe(\"destroy\", this.destroy);\n\t\tfor (const child of entity.children) {\n\t\t\tthis.emit('entity-destroy', child, propagator);\n\t\t}\n\t\tthis.emit('entity-destroy', entity, propagator);\n\t\tthis.entities = this.entities.filter((e) =>\n\t\t\te !== entity && !entity.children.includes(e)\n\t\t);\n\t\t// entity.destroy(propagator);\n\t};\n\t// END\n\n\tget = (id: string): IEntity | null => {\n\t\tfor (const entity of this.entities) {\n\t\t\tif (entity.id === id) {\n\t\t\t\treturn entity;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t};\n\n\ttick = () => {\n\t\tfor (let i = 0; i < this.entities.length; i++) {\n\t\t\tconst entity = this.entities[i];\n\t\t\tentity.update && entity.update();\n\t\t}\n\t};\n}\n\n//\n", "export const MESSAGE_DIVIDER = \"<$$NEXT_MESSAGE$$>\";\nexport const ID_DIVIDER = \"<$$$$>\";\nexport const SIMPLE_INLINE_DIVIDER = \",\"\nexport const SIMPLE_MESSAGE_DIVIDER = \"|\";", "import {\n ID_DIVIDER,\n MESSAGE_DIVIDER,\n SIMPLE_INLINE_DIVIDER,\n} from \"./Constants.ts\";\nimport {\n HostParams_PARTIALLY_ENCODED,\n HostParams,\n DirectedMessage,\n JoinParams_PARTIALLY_ENCODED,\n JoinParams,\n Message,\n} from \"./Types.ts\";\n\nexport const getRandomId = () => {\n return Math.random().toString(36).substring(2, 15) +\n Math.random().toString(36).substring(2, 15);\n};\n\nexport const getUrl = (path: string, params?: Record) => {\n if (!params) {\n return path;\n }\n return `${path}?${new URLSearchParams(params).toString()}`;\n};\n\nexport const encodeMessageList = (\n messages: Message[],\n): string => {\n return messages\n .map((msg) => `${msg.type}${ID_DIVIDER}${msg.payload}`)\n .join(MESSAGE_DIVIDER);\n};\n\nexport const encodeDirectedMessageList = (\n messages: DirectedMessage[],\n): string => {\n return messages\n .map((msg) =>\n `${msg.type}${ID_DIVIDER}${msg.payload}${ID_DIVIDER}${\n msg.targets?.join(SIMPLE_INLINE_DIVIDER)\n }`\n )\n .join(MESSAGE_DIVIDER);\n};\n\nexport const encodeAnnouncement = (\n announce: HostParams,\n): HostParams_PARTIALLY_ENCODED => {\n const params: HostParams_PARTIALLY_ENCODED = {\n lobbyId: announce.lobbyId,\n peerId: announce.peerId,\n key: announce.key,\n };\n if (announce.port) {\n params.port = announce.port.toString();\n }\n if (announce.numPlayers) {\n params.numPlayers = announce.numPlayers.toString();\n }\n if (announce.maxPlayers) {\n params.maxPlayers = announce.maxPlayers.toString();\n }\n if (announce.publicData) {\n params.publicData = announce.publicData;\n }\n if (announce.secretData) {\n params.secretData = announce.secretData;\n }\n if (announce.approvals) {\n params.approvals = announce.approvals.join(SIMPLE_INLINE_DIVIDER);\n }\n if (announce.rejections) {\n params.rejections = announce.rejections.join(SIMPLE_INLINE_DIVIDER);\n }\n if (announce.readIds) {\n params.readIds = announce.readIds.join(SIMPLE_INLINE_DIVIDER);\n }\n if (announce.messages) {\n params.messages = encodeDirectedMessageList(announce.messages);\n }\n return params;\n};\n\nexport const encodeJoin = (\n join: JoinParams,\n): JoinParams_PARTIALLY_ENCODED => {\n const params: JoinParams_PARTIALLY_ENCODED = {\n lobbyId: join.lobbyId,\n peerId: join.peerId,\n };\n if (join.address) {\n params.address = join.address;\n }\n if (join.port) {\n params.port = join.port.toString();\n }\n if (join.publicData) {\n params.publicData = join.publicData;\n }\n if (join.secretData) {\n params.secretData = join.secretData;\n }\n if (join.readIds) {\n params.readIds = join.readIds.join(SIMPLE_INLINE_DIVIDER);\n }\n if (join.messages) {\n params.messages = encodeMessageList(join.messages);\n }\n return params;\n};\n\n// \"123:hello bob!,456:how are you?\" --> { [\"123\", \"hello bob\"], [\"456\", \"how are you\"] }\nexport const decodeMessageList = (\n messages: string,\n): Message[] | null => {\n return messages\n ? String(messages).split(MESSAGE_DIVIDER).reduce(\n (acc: Message[], msg: string) => {\n const [type, payload] = msg.split(ID_DIVIDER);\n if (type && payload) {\n acc.push({ type, payload });\n }\n return acc;\n },\n [],\n )\n : null;\n};\n\nexport const decodeDirectedMessageList = (\n messages: string,\n): DirectedMessage[] | null => {\n return messages\n ? String(messages).split(MESSAGE_DIVIDER).reduce(\n (acc: DirectedMessage[], msg: string) => {\n const [type, payload, targets] = msg.split(ID_DIVIDER);\n if (type && payload) {\n acc.push({\n type,\n payload,\n targets: targets ? targets.split(SIMPLE_INLINE_DIVIDER) : undefined,\n });\n }\n return acc;\n },\n [],\n )\n : null;\n};\n", "import {\nConnectRequest,\nConnectResponse,\n HostParams,\n HostResponse,\n JoinParams,\n JoinResponse,\n LobbyView,\n} from \"./Cupid/Types.ts\";\nimport { encodeAnnouncement, encodeJoin, getUrl } from \"./Cupid/Helpers.ts\";\n\nexport const get = async (\n path: string,\n args: Record,\n): Promise => {\n const url = getUrl(path, args);\n return await fetch(url).then((res) => res.json()) as T | null;\n};\n\nexport const asRecord = (obj: T): Record => {\n return (obj as unknown) as Record;\n};\n\nexport class Cupid {\n // get hostname of current browser page\n static HOSTNAME = \"cupid.fly.dev\"; //window.location.hostname;\n static URL = `https://${Cupid.HOSTNAME}`;\n static ANNOUNCE_INTERVAL = 1000;\n static JOIN_INTERVAL = 500;\n static CONNECT_INTERVAL = 1000;\n\n static host = async (params: HostParams): Promise => {\n const getParams = encodeAnnouncement(params);\n return await get(`${Cupid.URL}/host`, asRecord(getParams));\n };\n\n static join = async (params: JoinParams): Promise => {\n const getParams = encodeJoin(params);\n return await get(`${Cupid.URL}/join`, asRecord(getParams));\n };\n\n static connect = async (params: ConnectRequest): Promise => {\n return await get(`${Cupid.URL}/connect`, asRecord(params));\n }\n\n static list = async (): Promise => {\n const response = await fetch(`${Cupid.URL}/list`);\n const json = await response.json();\n return json as LobbyView[];\n };\n\n static first = async (): Promise => {\n const response = await fetch(`${Cupid.URL}/first`);\n const json = await response.json();\n return json as LobbyView;\n };\n}\n", "import { Cupid } from './Cupid.ts';\nimport { Peer, PeerEvents } from './peer.ts';\nimport { getRandomId } from './Cupid/Helpers.ts';\nimport {\n\tConnectRequest,\n\tDirectedMessage,\n\tFullMessage,\n\tMessage,\n} from './Cupid/Types.ts';\nimport { Observable } from '../Helpers/Observable.ts';\nimport { Note } from '../Helpers/Note.ts';\nimport { alloc } from \"../Helpers/Alloc.ts\";\n\nconst CONFIGURATION = {\n\t'iceServers': [{ 'urls': 'stun:stun.l.google.com:19302' }],\n};\n\nconst UNRELIABLE_CHANNEL_NAME = 'data_unreliable';\nconst UNRELIABLE_CHANNEL_OPTIONS = {\n\tordered: false,\n\tmaxRetransmits: 0,\n};\n\nconst RELIABLE_CHANNEL_NAME = 'data_reliable';\nconst RELIABLE_CHANNEL_OPTIONS = {\n\tordered: true,\n};\n\nconst CONNECTION_TIMEOUT = 5000;\n\nenum MessageTypes {\n\tAnswer = 'webrtc-answer',\n\tOffer = 'webrtc-offer',\n\tIceCandidate = 'webrtc-ice-candidate',\n\tRenegotiation = 'webrtc-renegotiation',\n\tSuccess = 'webrtc-success',\n}\n\nconst setStatus = (status: string) => {\n\tconst statusText = document.getElementById('status-text');\n\tif (statusText != null) statusText.innerText = status;\n};\nconst setMsg = (status: string) => {\n\tconst statusText = document.getElementById('message-text');\n\tif (statusText != null) statusText.innerText = status;\n};\n\nsetStatus('\u26AB\uFE0F Idle');\n\nexport class WebRTCPeer extends Observable implements Peer {\n\tstatus: 'connected' | 'connecting' | 'disconnected';\n\tmode: 'host' | 'client' | null;\n\tid: string = getRandomId();\n\tkey: string = getRandomId();\n\n\tprivate lobbyId: string | undefined;\n\n\tprivate hostTimer: number | undefined;\n\tprivate joinTimer: number | undefined;\n\n\tprivate friendId: string | undefined;\n\tconn: RTCPeerConnection | undefined;\n\n\tprivate incomingMessages: FullMessage[] = [];\n\tprivate outgoingMessages: DirectedMessage[] = [];\n\n\tprivate iceCandidates: RTCIceCandidate[] = [];\n\tprivate unreliableChannel: RTCDataChannel | undefined;\n\tprivate reliableChannel: RTCDataChannel | undefined;\n\tprivate rtcStage:\n\t\t| 'idle'\n\t\t| 'calling'\n\t\t| 'exchanging_ice_candidates'\n\t\t| 'connected' = 'idle';\n\tprivate connectionTimestamp: number | undefined;\n\n\tprivate queuedReliableMessages: Message[] = [];\n\tprivate queuedUnreliableMessages: Message[] = [];\n\n\tprivate queuedIceCandidates: RTCIceCandidate[] = [];\n\n\taudioInitialized = false;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.status = 'disconnected';\n\t\tthis.rtcStage = 'idle';\n\t\tthis.mode = null;\n\n\t\t// do on startup\n\t\tthis.getMedia();\n\t\t// this.newPeer();\n\n\t\t// document.querySelector(\"#sned\")!.addEventListener(\"click\", () => {\n\t\t// const text =\n\t\t// (document.querySelector(\"#sned-text\") as HTMLInputElement).value;\n\t\t// this.send(\"message\", text);\n\t\t// });\n\t}\n\n\tcleanupChannels() {\n\t\tif (this.unreliableChannel) {\n\t\t\tthis.unreliableChannel.onopen = null;\n\t\t}\n\t\tif (this.reliableChannel) {\n\t\t\tthis.reliableChannel.onopen = null;\n\t\t}\n\t}\n\n\tcleanupMessages() {\n\t\tif (this.outgoingMessages.length > 0) {\n\t\t\tNote.warn(\n\t\t\t\t'axon',\n\t\t\t\t'dropping outgoing messages',\n\t\t\t\tthis.outgoingMessages.length,\n\t\t\t);\n\t\t}\n\t\tif (this.incomingMessages.length > 0) {\n\t\t\tNote.warn(\n\t\t\t\t'axon',\n\t\t\t\t'dropping incoming messages',\n\t\t\t\tthis.incomingMessages.length,\n\t\t\t);\n\t\t}\n\t\tthis.outgoingMessages = [];\n\t\tthis.incomingMessages = [];\n\t}\n\n\tcleanupPeer() {\n\t\tNote.info('axon', 'cleaning up peer');\n\t\tthis.cleanupMessages();\n\t\tthis.cleanupChannels();\n\t\tthis.emit('cleanup-peer', this.conn);\n\t\tthis.audioInitialized = false;\n\t\tif (this.conn != null) {\n\t\t\tthis.conn.close();\n\t\t\tthis.conn = undefined;\n\t\t}\n\t}\n\n\tstopTimers = () => {\n\t\tthis.connectionTimestamp = undefined;\n\t\tthis.hostTimer && clearTimeout(this.hostTimer);\n\t\tthis.hostTimer = undefined;\n\t\tthis.joinTimer && clearTimeout(this.joinTimer);\n\t\tthis.joinTimer = undefined;\n\t};\n\n\treset = () => {\n\t\tthis.stopTimers();\n\t\tNote.info('axon', 'reset');\n\t\tsetStatus('\u26AB\uFE0F Disconnected');\n\t\tthis.emit('disconnected');\n\t\tthis.status = 'disconnected';\n\t\tthis.rtcStage = 'idle';\n\t\tthis.queuedIceCandidates = [];\n\t};\n\n\tnewPeer = async () => {\n\t\tNote.info('axon', 'newPeer');\n\t\tthis.cleanupPeer();\n\t\tconst conn = new RTCPeerConnection(CONFIGURATION);\n\n\t\tthis.conn = conn;\n\n\t\t// @ts-ignore for debugging\n\t\twindow.conn = conn;\n\t\tthis.emit('new-peer', conn);\n\n\t\t// this.conn!.ontrack = (ev) => {\n\t\t// console.log(\"Got remote track\", ev.track.label);\n\t\t// // this.audioInitialized = true;\n\t\t// }\n\n\t\tthis.conn!.addEventListener('track', (event) => {\n\t\t\tNote.info('axon', '\uD83C\uDF89\uD83C\uDF89\uD83C\uDF89 got remote audio', event.track.label);\n\t\t\tconst audio = document.getElementById('remote-audio');\n\t\t\tconst stream = new MediaStream();\n\t\t\t(audio! as HTMLAudioElement).srcObject = stream;\n\t\t\tstream.addTrack(event.track);\n\t\t\t// (audio! as HTMLAudioElement).play()\n\t\t\t// this.audioInitialized\n\t\t});\n\n\t\t// use this b/c firefox doesn't support onconnectionstatechange\n\t\tconn.oniceconnectionstatechange = async (event: Event) => {\n\t\t\tconst target = event.target as RTCPeerConnection;\n\t\t\tif (\n\t\t\t\ttarget.iceConnectionState === 'disconnected' ||\n\t\t\t\ttarget.iceConnectionState === 'failed'\n\t\t\t) {\n\t\t\t\tawait this.reset();\n\t\t\t\tawait this.connect();\n\t\t\t} else if (target.iceConnectionState === 'connected') {\n\t\t\t\tthis.rtcStage = 'connected';\n\t\t\t\tthis.stopTimers();\n\t\t\t}\n\t\t};\n\n\t\tconn.addEventListener('datachannel', (event) => {\n\t\t\tthis.handleDataChannel(event.channel);\n\t\t});\n\n\t\tconn.addEventListener('icecandidate', (event) => {\n\t\t\tif (!event.candidate) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.iceCandidates.push(event.candidate);\n\t\t});\n\n\t\t// wait 250ms\n\t\tawait new Promise((resolve) => setTimeout(resolve, 250));\n\t};\n\n\t_cachedMediaStream: MediaStream | undefined;\n\tgetMedia = async () => {\n\t\tif (this._cachedMediaStream) {\n\t\t\treturn this._cachedMediaStream;\n\t\t}\n\t\ttry {\n\t\t\tthis._cachedMediaStream = await navigator.mediaDevices.getUserMedia(\n\t\t\t\t{\n\t\t\t\t\taudio: true,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn this._cachedMediaStream;\n\t\t} catch (err) {\n\t\t\tNote.error('axon', 'issue attaching audio track', err);\n\t\t\treturn null;\n\t\t}\n\t};\n\n\tattachAudioTrack = async () => {\n\t\tif (this.audioInitialized) return;\n\t\tNote.info('axon', 'attach audio track');\n\n\t\tconst stream = await this.getMedia();\n\t\tif (stream == null) {\n\t\t\tNote.error('axon', 'not attaching audio');\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const track of stream.getTracks()) {\n\t\t\tthis.conn!.addTrack(track, stream);\n\t\t\tNote.info('axon', 'add track', track.label);\n\t\t}\n\n\t\tthis.audioInitialized = true;\n\t};\n\n\tcheckAvailableServers = async () => {\n\t\tconst list = await Cupid.list();\n\t\tif (this.status === 'disconnected') {\n\t\t\tif (list.length === 0) {\n\t\t\t\tsetStatus('\uD83D\uDE10 No servers found');\n\t\t\t} else {\n\t\t\t\tsetStatus(`\uD83D\uDE42 ${list.length} servers found`);\n\t\t\t}\n\t\t}\n\t\treturn list.length;\n\t};\n\n\tprivate connectionSuccess = () => {\n\t\tif (this.reliableChannel == null || this.unreliableChannel == null) {\n\t\t\tNote.error(\n\t\t\t\t'axon',\n\t\t\t\t'connection error, marked successful before channels ready!',\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst reliableMessages = [...this.queuedReliableMessages];\n\t\tthis.queuedReliableMessages = [];\n\n\t\t// send queued messages\n\t\treliableMessages.forEach((message) => {\n\t\t\tthis.sendInternal(\n\t\t\t\tmessage.type,\n\t\t\t\tmessage.payload,\n\t\t\t\tundefined,\n\t\t\t\t'reliable',\n\t\t\t);\n\t\t});\n\n\t\tconst unreliableMessages = [...this.queuedUnreliableMessages];\n\t\tthis.queuedUnreliableMessages = [];\n\n\t\tunreliableMessages.forEach((message) => {\n\t\t\tthis.sendInternal(\n\t\t\t\tmessage.type,\n\t\t\t\tmessage.payload,\n\t\t\t\tundefined,\n\t\t\t\t'unreliable',\n\t\t\t);\n\t\t});\n\t\tsetStatus(`\uD83D\uDFE2 Connected (${this.mode})`);\n\t\tthis.status = 'connected';\n\t\tthis.emit('connected', this.mode === 'host');\n\t\tNote.info('axon', '\u2728 connected');\n\t};\n\n\tconnect = async () => {\n\t\tawait this.getMedia();\n\n\t\tsetStatus('\uD83D\uDD0D Waiting for match...');\n\t\tthis.stopTimers();\n\t\tawait this.newPeer();\n\t\tthis.status = 'disconnected';\n\t\tthis.rtcStage = 'idle';\n\n\t\tconst params: ConnectRequest = {\n\t\t\tpeerId: this.id,\n\t\t};\n\t\tconst MAX_TRIES = 1000;\n\t\tlet i = 0;\n\t\t// only do 1x\n\t\twhile (i++ < MAX_TRIES) {\n\t\t\tconst response = await Cupid.connect(params);\n\t\t\tif (response?.type === 'match' && response.role == 'host') {\n\t\t\t\tthis.stopTimers();\n\t\t\t\tthis.connectionTimestamp = Date.now();\n\t\t\t\tthis.mode = 'host';\n\t\t\t\tthis.status = 'connecting';\n\t\t\t\t// if not found, host\n\t\t\t\tthis.lobbyId = response.lobbyId;\n\t\t\t\tthis.hostTimer = setTimeout(this.host, Cupid.ANNOUNCE_INTERVAL);\n\t\t\t\tNote.info(\n\t\t\t\t\t'axon',\n\t\t\t\t\t'\uD83D\uDC40 potential client',\n\t\t\t\t\tthis.lobbyId,\n\t\t\t\t\tresponse.peerId,\n\t\t\t\t);\n\t\t\t\tsetStatus(`\uD83D\uDC40 Found friend, hosting`);\n\t\t\t} else if (\n\t\t\t\tresponse?.type === 'match' && response.role == 'client'\n\t\t\t) {\n\t\t\t\tthis.stopTimers();\n\t\t\t\tthis.connectionTimestamp = Date.now();\n\t\t\t\t// found, join\n\t\t\t\t// await this.attachAudioTrack();\n\t\t\t\tthis.mode = 'client';\n\t\t\t\tthis.status = 'connecting';\n\t\t\t\tthis.lobbyId = response.lobbyId;\n\t\t\t\tthis.joinTimer = setTimeout(this.join, Cupid.JOIN_INTERVAL);\n\t\t\t\tNote.info('axon', '\uD83D\uDC40 potential host', response.lobbyId);\n\t\t\t\tsetStatus(`\uD83D\uDC40 Found friend, joining...`);\n\t\t\t} else {\n\t\t\t\t// wait\n\t\t\t\tawait new Promise((resolve) =>\n\t\t\t\t\tsetTimeout(resolve, Cupid.CONNECT_INTERVAL)\n\t\t\t\t);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t};\n\n\tprivate host = async () => {\n\t\t// console.log(this);\n\t\tif (\n\t\t\tthis.mode === 'client' ||\n\t\t\tthis.status === 'connected' ||\n\t\t\tthis.connectionTimestamp === undefined ||\n\t\t\t!this.lobbyId\n\t\t) {\n\t\t\t// only self can host\n\t\t\treturn;\n\t\t}\n\n\t\tNote.info('axon', 'hosting...');\n\n\t\tif (Date.now() - this.connectionTimestamp! > CONNECTION_TIMEOUT) {\n\t\t\tsetStatus('\uD83D\uDE22 Connection timed out');\n\t\t\tNote.info('axon', '\uD83D\uDC94 connection timed out');\n\t\t\tawait this.reset();\n\t\t\tawait this.connect();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.rtcStage === 'exchanging_ice_candidates') {\n\t\t\tthis.iceCandidates.forEach((x) => {\n\t\t\t\tthis.cupidSendTo(\n\t\t\t\t\tthis.friendId!,\n\t\t\t\t\tMessageTypes.IceCandidate,\n\t\t\t\t\tJSON.stringify({ candidate: x }),\n\t\t\t\t);\n\t\t\t});\n\t\t\tthis.iceCandidates = [];\n\t\t}\n\n\t\tconst numOutgoingMessages = this.outgoingMessages.length;\n\t\tif (numOutgoingMessages > 0) {\n\t\t\tconst numIceCandidates = this.outgoingMessages.filter((x) =>\n\t\t\t\tx.type === MessageTypes.IceCandidate\n\t\t\t).length;\n\t\t\tif (numIceCandidates > 0) {\n\t\t\t\tNote.info(\n\t\t\t\t\t'axon',\n\t\t\t\t\t`\u2709\uFE0F sending ice candidates (${numIceCandidates})`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tthis.outgoingMessages.find((x) =>\n\t\t\t\t\tx.type === MessageTypes.Answer\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tNote.info('axon', `\u2709\uFE0F sending answer`);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tthis.outgoingMessages.find((x) =>\n\t\t\t\t\tx.type === MessageTypes.Offer\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tNote.error('axon', `\u2709\uFE0F dafuq sending offer`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tNote.info(\n\t\t\t\t'axon',\n\t\t\t\t`\u2709\uFE0F sending ${this.outgoingMessages.length} messages`,\n\t\t\t);\n\t\t}\n\n\t\tconst response = await Cupid.host({\n\t\t\tlobbyId: this.lobbyId,\n\t\t\tpeerId: this.id,\n\t\t\tkey: this.key,\n\t\t\treadIds: this.incomingMessages.map((m) => m.id),\n\t\t\tmessages: this.outgoingMessages,\n\t\t});\n\n\t\t// setMsg(`hostd ${this.lobbyId} ${jsonText(response)}`);\n\n\t\tif (this.rtcStage === 'idle') {\n\t\t\tsetStatus('\uD83C\uDF10 Hosting. Waiting for friend...');\n\t\t}\n\n\t\tif (response != null) {\n\t\t\tthis.outgoingMessages.splice(0, numOutgoingMessages);\n\n\t\t\tif (\n\t\t\t\tresponse != true && response.inboundMessages != null &&\n\t\t\t\tresponse.inboundMessages.length > 0\n\t\t\t) {\n\t\t\t\tthis.incomingMessages = response.inboundMessages;\n\t\t\t\tthis.incomingMessages.forEach((m) => {\n\t\t\t\t\tthis.onCupidReceive(m);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tthis.status = 'disconnected';\n\t\t}\n\n\t\tthis.hostTimer && clearTimeout(this.hostTimer);\n\t\tthis.hostTimer = setTimeout(this.host, Cupid.ANNOUNCE_INTERVAL);\n\t};\n\n\tprivate join = async () => {\n\t\tif (this.status === 'connected' || !this.lobbyId) {\n\t\t\treturn;\n\t\t}\n\n\t\tNote.info('axon', 'joining...');\n\n\t\tif (Date.now() - this.connectionTimestamp! > CONNECTION_TIMEOUT) {\n\t\t\tsetStatus('\uD83D\uDE22 Connection timed out');\n\t\t\tNote.info('axon', '\uD83D\uDC94 connection timed out');\n\t\t\tawait this.reset();\n\t\t\tawait this.connect();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.rtcStage === 'idle') {\n\t\t\tawait this.newPeer();\n\t\t\tawait this.makeCall();\n\t\t\tthis.rtcStage = 'calling';\n\t\t}\n\n\t\tif (this.rtcStage === 'exchanging_ice_candidates') {\n\t\t\tthis.iceCandidates.forEach((c) => {\n\t\t\t\tthis.cupidSend(\n\t\t\t\t\tMessageTypes.IceCandidate,\n\t\t\t\t\tJSON.stringify({\n\t\t\t\t\t\tcandidate: c,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t});\n\t\t\tthis.iceCandidates = [];\n\t\t}\n\n\t\tconst numOutgoingMessages = this.outgoingMessages.length;\n\n\t\tif (numOutgoingMessages > 0) {\n\t\t\tconst numIceCandidates = this.outgoingMessages.filter((x) =>\n\t\t\t\tx.type === MessageTypes.IceCandidate\n\t\t\t).length;\n\t\t\tif (numIceCandidates > 0) {\n\t\t\t\tNote.info(\n\t\t\t\t\t'axon',\n\t\t\t\t\t`\u2709\uFE0F sending ice candidates (${numIceCandidates})`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tthis.outgoingMessages.find((x) =>\n\t\t\t\t\tx.type === MessageTypes.Offer\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tNote.info('axon', `\u2709\uFE0F sending offer`);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tthis.outgoingMessages.find((x) =>\n\t\t\t\t\tx.type === MessageTypes.Answer\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tNote.error('axon', `\u2709\uFE0F dafuq sending answer`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tNote.info('axon', `\u2709\uFE0F sending ${numOutgoingMessages} messages`);\n\t\t}\n\n\t\tconst response = await Cupid.join({\n\t\t\tlobbyId: this.lobbyId,\n\t\t\tpeerId: this.id,\n\t\t\tmessages: this.outgoingMessages,\n\t\t\treadIds: this.incomingMessages.map((m) => m.id),\n\t\t});\n\n\t\t// setMsg(`Joining ${this.lobbyId} ${jsonText(response)}`);\n\n\t\tif (response != null) {\n\t\t\t// clear out inbound/outbound queues\n\t\t\tthis.outgoingMessages.splice(0, numOutgoingMessages);\n\t\t\tconst messages = response.messages;\n\n\t\t\tif (messages != null && messages.length > 0) {\n\t\t\t\tthis.incomingMessages = messages;\n\t\t\t\tthis.incomingMessages.forEach((message) => {\n\t\t\t\t\tthis.onCupidReceive(message);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis.joinTimer && clearTimeout(this.joinTimer);\n\t\tthis.joinTimer = setTimeout(this.join, Cupid.JOIN_INTERVAL);\n\t};\n\n\tprivate handleDataChannel = (channel: RTCDataChannel) => {\n\t\tif (\n\t\t\tchannel.label !== UNRELIABLE_CHANNEL_NAME &&\n\t\t\tchannel.label !== RELIABLE_CHANNEL_NAME\n\t\t) {\n\t\t\tNote.warn('axon', 'Unknown channel', channel.label);\n\t\t\treturn;\n\t\t}\n\n\t\tchannel.onmessage = async (event) => {\n\t\t\tsetMsg(`Received ${event.data}`);\n\t\t\ttry {\n\t\t\t\tconst message = JSON.parse(event.data);\n\t\t\t\tif (message.type === MessageTypes.Renegotiation) {\n\t\t\t\t\t// Handle renegotiation\n\t\t\t\t\tconst { payload } = message;\n\t\t\t\t\tconsole.warn('received reneg', payload);\n\n\t\t\t\t\tthis.conn!.setRemoteDescription(\n\t\t\t\t\t\tnew RTCSessionDescription(\n\t\t\t\t\t\t\tpayload.offer ?? payload.answer,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t\tif (payload.offer) {\n\t\t\t\t\t\tconst answer = await this.conn!.createAnswer();\n\t\t\t\t\t\tawait this.conn!.setLocalDescription(answer);\n\t\t\t\t\t\t// this.send(MessageTypes.Renegotiation, { answer });\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.emit('message', message);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\t\t};\n\n\t\tif (channel.label === UNRELIABLE_CHANNEL_NAME) {\n\t\t\tthis.unreliableChannel = channel;\n\t\t} else if (channel.label === RELIABLE_CHANNEL_NAME) {\n\t\t\tthis.reliableChannel = channel;\n\t\t}\n\t\tNote.info('axon', 'setup channel', channel.label, channel.id);\n\n\t\tif (this.reliableChannel != null && this.unreliableChannel != null) {\n\t\t\t// await waitUntilX(() =>\n\t\t\t// this.reliableChannel != null && this.unreliableChannel != null\n\t\t\t// );\n\t\t\tthis.connectionSuccess();\n\t\t}\n\t};\n\n\tsend = (\n\t\ttype: string,\n\t\tpayload: unknown,\n\t\treliability: 'reliable' | 'unreliable' = 'reliable',\n\t) => {\n\t\tthis.sendInternal(type, payload, undefined, reliability);\n\t};\n\n\tsendTo = (\n\t\tpeerId: string,\n\t\ttype: string,\n\t\tpayload: unknown,\n\t\treliability: 'reliable' | 'unreliable' = 'reliable',\n\t) => {\n\t\tthis.sendInternal(type, payload, [peerId], reliability);\n\t};\n\n\tprivate sendInternal = (\n\t\ttype: string,\n\t\tpayload: unknown,\n\t\ttargets: string[] | undefined,\n\t\treliability: 'reliable' | 'unreliable' = 'reliable',\n\t) => {\n\t\tlet message;\n\n\t\tif (targets) {\n\t\t\tmessage = {\n\t\t\t\ttargets,\n\t\t\t\ttype,\n\t\t\t\tpayload,\n\t\t\t};\n\t\t} else {\n\t\t\tmessage = {\n\t\t\t\ttype,\n\t\t\t\tpayload,\n\t\t\t};\n\t\t}\n\n\t\tif (this.status !== 'connected') {\n\t\t\t// Drop queued for now\n\t\t\tNote.error('axon', 'Dropping message', type);\n\t\t\t// if (reliability === \"reliable\") {\n\t\t\t// this.queuedReliableMessages.push(message);\n\t\t\t// } else {\n\t\t\t// this.queuedUnreliableMessages.push(message);\n\t\t\t// }\n\t\t\treturn;\n\t\t}\n\n\t\tconst channel = reliability === 'reliable'\n\t\t\t? this.reliableChannel\n\t\t\t: this.unreliableChannel;\n\n\t\tif (channel == null) {\n\t\t\tNote.error('axon', 'No channel for ', type);\n\t\t\treturn;\n\t\t}\n\n\t\tchannel.send(alloc(JSON.stringify(message)));\n\t};\n\n\tcupidSendTo = (peerId: string, type: string, payload: string) => {\n\t\t// Note.info(\"axon\", \"sending to\", peerId, type, payload);\n\t\tthis.outgoingMessages.push({\n\t\t\ttype,\n\t\t\tpayload,\n\t\t\ttargets: [peerId],\n\t\t});\n\t};\n\n\tcupidSend = (type: string, payload: string) => {\n\t\t// Note.info(\"axon\", \"sending\", type, payload);\n\t\tthis.outgoingMessages.push({\n\t\t\ttype,\n\t\t\tpayload,\n\t\t});\n\t};\n\n\tprivate makeCall = async () => {\n\t\tNote.info('axon', 'calling ' + this.lobbyId);\n\n\t\t// This happesn only as client\n\t\tsetStatus('\uD83D\uDFE0 Calling!');\n\n\t\tawait this.attachAudioTrack();\n\n\t\tthis.cleanupChannels();\n\n\t\t// do on first join\n\t\tconst unreliable = this.conn!.createDataChannel(\n\t\t\tUNRELIABLE_CHANNEL_NAME,\n\t\t\tUNRELIABLE_CHANNEL_OPTIONS,\n\t\t);\n\n\t\tconst reliable = this.conn!.createDataChannel(\n\t\t\tRELIABLE_CHANNEL_NAME,\n\t\t\tRELIABLE_CHANNEL_OPTIONS,\n\t\t);\n\n\t\tunreliable.onopen = () => {\n\t\t\tthis.handleDataChannel(unreliable);\n\t\t};\n\n\t\treliable.onopen = () => {\n\t\t\tthis.handleDataChannel(reliable);\n\t\t};\n\n\t\tconst offer = await this.conn!.createOffer({\n\t\t\tofferToReceiveAudio: true,\n\t\t});\n\t\tawait this.conn!.setLocalDescription(offer);\n\n\t\tthis.cupidSend(MessageTypes.Offer, JSON.stringify({ offer }));\n\n\t\tthis.rtcStage = 'calling';\n\t};\n\n\tprivate onReceiveAnswer = async (message: FullMessage) => {\n\t\tNote.info('axon', '\u2705 got answer');\n\t\tthis.connectionTimestamp = Date.now();\n\t\tthis.mode = 'client';\n\t\tsetStatus(`\uD83D\uDFE1 Connecting (${this.mode})`);\n\t\tthis.friendId = message.sender;\n\n\t\tconst { answer }: { answer: RTCSessionDescriptionInit } = JSON.parse(\n\t\t\tmessage.payload as string,\n\t\t);\n\n\t\ttry {\n\t\t\tconst desc = new RTCSessionDescription(answer);\n\t\t\tawait this.conn!.setRemoteDescription(desc);\n\t\t} catch (e) {\n\t\t\tNote.error('axon', 'handling answer failed', e);\n\t\t\treturn;\n\t\t}\n\n\t\t// this.send(MessageTypes.Renegotiation, { description: this.conn!.localDescription });\n\n\t\tif (this.rtcStage !== 'exchanging_ice_candidates') {\n\t\t\tthis.rtcStage = 'exchanging_ice_candidates';\n\t\t}\n\n\t\tif (this.queuedIceCandidates.length > 0) {\n\t\t\ttry {\n\t\t\t\tthis.queuedIceCandidates.forEach((candidate) => {\n\t\t\t\t\tthis.conn!.addIceCandidate(candidate);\n\t\t\t\t\tNote.info('axon', '\uD83D\uDFE2 added ice');\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tNote.error('axon', 'adding ice candidates failed', e);\n\t\t\t}\n\t\t\tNote.info(\n\t\t\t\t'axon',\n\t\t\t\t`\u2705 added ice candidates (${this.queuedIceCandidates.length})`,\n\t\t\t);\n\t\t\tthis.queuedIceCandidates = [];\n\t\t}\n\t};\n\n\tprivate onReceiveOffer = async (message: FullMessage) => {\n\t\tNote.info('axon', '\u2705 got offer');\n\t\tthis.connectionTimestamp = Date.now();\n\t\tthis.mode = 'host';\n\t\tsetStatus(`\uD83D\uDFE1 Connecting (${this.mode})`);\n\t\tthis.friendId = message.sender;\n\n\t\tconst { offer }: { offer: RTCSessionDescriptionInit } = JSON.parse(\n\t\t\tmessage.payload as string,\n\t\t);\n\n\t\tawait this.attachAudioTrack();\n\n\t\ttry {\n\t\t\tNote.info('axon', '(1) setting remote description');\n\t\t\tconst desc = new RTCSessionDescription(offer);\n\t\t\tawait this.conn!.setRemoteDescription(desc);\n\t\t\tconst answer = await this.conn!.createAnswer({\n\t\t\t\tofferToReceiveAudio: true,\n\t\t\t});\n\t\t\tawait this.conn!.setLocalDescription(\n\t\t\t\tnew RTCSessionDescription(answer),\n\t\t\t);\n\n\t\t\tthis.cupidSendTo(\n\t\t\t\tmessage.sender,\n\t\t\t\tMessageTypes.Answer,\n\t\t\t\tJSON.stringify({ answer }),\n\t\t\t);\n\t\t\tNote.info('axon', '(2) answer queued');\n\n\t\t\tthis.rtcStage = 'exchanging_ice_candidates';\n\t\t} catch (e) {\n\t\t\tNote.error('axon', 'handling offer failed', e);\n\t\t\treturn;\n\t\t}\n\t};\n\n\tprivate onReceiveIce = (message: FullMessage) => {\n\t\tthis.connectionTimestamp = Date.now();\n\t\t// if (this.rtcStage !== \"exchanging_ice_candidates\") {\n\t\t// Note.error(\n\t\t// \"axon\",\n\t\t// \"got ice but not in exchanging_ice_candidates. this is handled though\",\n\t\t// );\n\t\t// }\n\t\ttry {\n\t\t\tconst payload = JSON.parse(message.payload as string);\n\t\t\tif (this.rtcStage === 'exchanging_ice_candidates') {\n\t\t\t\tthis.conn!.addIceCandidate(payload.candidate);\n\t\t\t\tNote.info('axon', '\uD83D\uDFE2 added ice');\n\t\t\t} else {\n\t\t\t\tthis.queuedIceCandidates.push(payload.candidate);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tNote.error('axon', 'handling ice failed', e);\n\t\t\treturn;\n\t\t}\n\t};\n\n\tprivate onReceiveSuccess = (message: FullMessage) => {\n\t\tconst payload = JSON.parse(message.payload as string);\n\t};\n\n\tprivate onCupidReceive = async (message: FullMessage) => {\n\t\tif (message.type === MessageTypes.Offer) {\n\t\t\tawait this.onReceiveOffer(message);\n\t\t} else if (message.type === MessageTypes.Answer) {\n\t\t\tawait this.onReceiveAnswer(message);\n\t\t} else if (message.type === MessageTypes.IceCandidate) {\n\t\t\tawait this.onReceiveIce(message);\n\t\t} else if (message.type === MessageTypes.Success) {\n\t\t\tawait this.onReceiveSuccess(message);\n\t\t} else {\n\t\t\t// this.onMessage && this.onMessage(message);\n\t\t}\n\t};\n}\n\n// connectOld = async () => {\n// setStatus(\"\uD83D\uDD0D Looking for server...\");\n// this.status = \"disconnected\";\n// this.rtcStage = \"idle\";\n\n// if (this.type !== \"self\") {\n// // only self can connect\n// return;\n// }\n// // first, try to find server and join\n// const lobby = await Cupid.first();\n// if (lobby) {\n// setStatus(`\uD83D\uDD0D Found server, joining...`);\n// this.connectionTimestamp = Date.now();\n// this.lobbyId = lobby.id;\n// this.joinTimer && clearTimeout(this.joinTimer);\n// this.joinTimer = setTimeout(this.join, Cupid.JOIN_INTERVAL);\n// return;\n// } else {\n// setStatus(\"\uD83D\uDE43 No server found, hosting...\");\n// // if not found, host\n// this.status = \"hosting\";\n// this.lobbyId = getRandomId();\n// this.hostTimer && clearTimeout(this.hostTimer);\n// this.hostTimer = setTimeout(this.host, Cupid.ANNOUNCE_INTERVAL);\n// }\n// };\n", "import { Observable } from \"../Helpers/Observable.ts\";\nimport { AxonEvents, AxonMessage, IAxon } from \"./API.ts\";\nimport { WebRTCPeer } from \"./WebRTCPeer.ts\";\n\nclass Axon extends Observable implements IAxon {\n peer = new WebRTCPeer();\n\n init = () => {\n this.peer.subscribe(\"message\", this.receive);\n this.peer.subscribe(\"connected\", this.connected);\n this.peer.subscribe(\"disconnected\", this.disconnected);\n };\n\n connect = async (): Promise => {\n return await this.peer.connect();\n };\n\n send = async (message: AxonMessage): Promise => {\n if (this.peer.status !== \"connected\") {\n // drop if not connected\n return;\n }\n if (!message.targets || message.targets.length === 0) {\n await this.peer.send(message.type, message.payload, 'unreliable');\n } else {\n for (let i = 0; i < message.targets.length; i++) {\n const target = message.targets[i];\n await this.peer.sendTo(target, message.type, message.payload, 'unreliable');\n }\n }\n\n this.emit(\"send\", message);\n };\n\n receive = (message: AxonMessage): void => {\n this.emit(\"receive\", message);\n };\n\n private connected = (isHost: boolean): void => {\n this.emit(\"connected\", isHost);\n };\n\n private disconnected = (): void => {\n this.emit(\"disconnected\");\n };\n}\n\nconst axon = new Axon();\naxon.init();\n\nexport { axon as Axon };\n", "import { IScene } from '../Animus/API.ts';\nimport { AxonMessage, IAxon } from '../Axon/API.ts';\nimport { alloc } from '../Helpers/Alloc.ts';\nimport { Note } from '../Helpers/Note.ts';\nimport { IComponent, IEntity, IWorld } from '../Ontology/API.ts';\nimport {\n\tdeserializeEntityBlueprint,\n\tserializeEntity,\n} from '../Ontology/Helpers.ts';\nimport { meta } from '../Ontology/Meta.ts';\nimport { IOntologyAxonLink } from './API.ts';\n\ntype OntologyAxonMessageType =\n\t| 'oa-entity-create'\n\t| 'oa-entity-destroy'\n\t| 'oa-entity-mutate'\n\t| 'oa-entity-missing'\n\t| 'oa-entity-set-parent'\n\t| 'oa-component-add'\n\t| 'oa-component-remove'\n\t| 'oa-component-mutate'\n\t| 'oa-component-missing';\n\nexport class OntologyAxonLink implements IOntologyAxonLink {\n\tsendSpawnEntity:\n\t\t| ((entity: IEntity, propagator: unknown | undefined) => void)\n\t\t| undefined;\n\tsendMutateEntity:\n\t\t| ((entity: IEntity, propagator: unknown | undefined) => void)\n\t\t| undefined;\n\tsendDestroyEntity:\n\t\t| ((entity: IEntity, propagator: unknown | undefined) => void)\n\t\t| undefined;\n\tsendSetParent:\n\t\t| ((\n\t\t\tentity: IEntity,\n\t\t\tparent: IEntity,\n\t\t\tpropagator: unknown | undefined,\n\t\t) => void)\n\t\t| undefined;\n\n\treceiveSpawnEntity: ((message: AxonMessage) => void) | undefined;\n\treceiveMutateEntity: ((message: AxonMessage) => void) | undefined;\n\treceiveDestroyEntity: ((message: AxonMessage) => void) | undefined;\n\treceiveMissingEntity: ((message: AxonMessage) => void) | undefined;\n\treceiveSetParent: ((message: AxonMessage) => void) | undefined;\n\n\tsendAddComponent:\n\t\t| ((\n\t\t\tentity: IEntity,\n\t\t\tcomponent: IComponent,\n\t\t\tpropagator: unknown | undefined,\n\t\t) => void)\n\t\t| undefined;\n\tsendMutateComponent:\n\t\t| ((\n\t\t\tentity: IEntity,\n\t\t\tcomponent: IComponent,\n\t\t\tdata: any,\n\t\t\tpropagator: unknown | undefined,\n\t\t) => void)\n\t\t| undefined;\n\tsendRemoveComponent:\n\t\t| ((\n\t\t\tentity: IEntity,\n\t\t\tcomponent: IComponent,\n\t\t\tpropagator: unknown | undefined,\n\t\t) => void)\n\t\t| undefined;\n\n\treceiveAddComponent: ((message: AxonMessage) => void) | undefined;\n\treceiveMutateComponent: ((message: AxonMessage) => void) | undefined;\n\treceiveRemoveComponent: ((message: AxonMessage) => void) | undefined;\n\treceiveMissingComponent: ((message: AxonMessage) => void) | undefined;\n\n\tlink = (world: IWorld, scene: IScene, axon: IAxon) => {\n\t\t// Handle world spawn / destroy\n\t\tthis.sendAddComponent = (entity, component, propagator) => {\n\t\t\tif (\n\t\t\t\tentity.privacy === 'private' ||\n\t\t\t\tcomponent.privacy === 'private' ||\n\t\t\t\tpropagator == this ||\n\t\t\t\taxon.peer.status !== 'connected'\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\taxon.send(alloc({\n\t\t\t\ttype: 'oa-component-add',\n\t\t\t\tpayload: {\n\t\t\t\t\tentityId: entity.id,\n\t\t\t\t\tcomponent: component.constructor.name,\n\t\t\t\t\tprivacy: component.privacy,\n\t\t\t\t\tdata: component.data,\n\t\t\t\t},\n\t\t\t}));\n\t\t};\n\n\t\tthis.sendMutateComponent = (entity, component, data, propagator) => {\n\t\t\tif (\n\t\t\t\tentity.privacy === 'private' ||\n\t\t\t\tcomponent.privacy === 'private' ||\n\t\t\t\tpropagator == this ||\n\t\t\t\taxon.peer.status !== 'connected'\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\taxon.send(alloc({\n\t\t\t\ttype: 'oa-component-mutate',\n\t\t\t\tpayload: {\n\t\t\t\t\tentityId: entity.id,\n\t\t\t\t\tcomponent: component.constructor.name,\n\t\t\t\t\tdata,\n\t\t\t\t},\n\t\t\t}));\n\t\t};\n\n\t\tthis.sendRemoveComponent = (entity, component, propagator) => {\n\t\t\tif (\n\t\t\t\tentity.privacy === 'private' ||\n\t\t\t\tcomponent.privacy === 'private' ||\n\t\t\t\tpropagator == this ||\n\t\t\t\taxon.peer.status !== 'connected'\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\taxon.send(alloc({\n\t\t\t\ttype: 'oa-component-remove',\n\t\t\t\tpayload: {\n\t\t\t\t\tentityId: entity.id,\n\t\t\t\t\tcomponent: component.constructor.name,\n\t\t\t\t},\n\t\t\t}));\n\t\t};\n\n\t\tthis.sendSpawnEntity = (entity, propagator) => {\n\t\t\tif (\n\t\t\t\tentity.privacy === 'private' || propagator == this ||\n\t\t\t\taxon.peer.status !== 'connected'\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tNote.info('ontology-axon', 'Sending entity', entity.id);\n\t\t\taxon.send(alloc({\n\t\t\t\ttype: 'oa-entity-create',\n\t\t\t\tpayload: serializeEntity(entity),\n\t\t\t}));\n\t\t};\n\n\t\tthis.sendDestroyEntity = (entity, propagator) => {\n\t\t\tif (\n\t\t\t\tentity.privacy === 'private' || propagator == this ||\n\t\t\t\taxon.peer.status !== 'connected'\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\taxon.send(alloc({\n\t\t\t\ttype: 'oa-entity-destroy',\n\t\t\t\tpayload: entity.id,\n\t\t\t}));\n\t\t};\n\n\t\tthis.sendSetParent = (entity, parent, propagator) => {\n\t\t\tif (\n\t\t\t\tentity.privacy === 'private' || propagator == this ||\n\t\t\t\taxon.peer.status !== 'connected'\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\taxon.send(alloc({\n\t\t\t\ttype: 'oa-entity-set-parent',\n\t\t\t\tpayload: {\n\t\t\t\t\tentityId: entity.id,\n\t\t\t\t\tparentId: parent?.id,\n\t\t\t\t},\n\t\t\t}));\n\t\t};\n\n\t\tworld.subscribe('entity-create', this.sendSpawnEntity);\n\t\tworld.subscribe('entity-destroy', this.sendDestroyEntity);\n\t\tworld.subscribe('entity-set-parent', this.sendSetParent);\n\t\tworld.subscribe('component-create', this.sendAddComponent);\n\t\tworld.subscribe('component-destroy', this.sendRemoveComponent);\n\t\tworld.subscribe('component-mutate', this.sendMutateComponent);\n\n\t\t// ------------------------------------------------------------------------------\n\t\t// ------------------------------------------------------------------------------\n\t\t// ------------------------------------------------------------------------------\n\n\t\t// Handle axon spawn / destroy\n\t\tthis.receiveSpawnEntity = (message) => {\n\t\t\tif (message.type !== 'oa-entity-create') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst serializedBlueprint = message.payload as any;\n\t\t\tconst blueprint = deserializeEntityBlueprint(\n\t\t\t\tserializedBlueprint,\n\t\t\t\tworld,\n\t\t\t);\n\n\t\t\tif (!blueprint) {\n\t\t\t\tNote.warn('ontology-axon', `Unknown entity type: ${name}`);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (world.entities.find((e) => e.id === blueprint.id)) {\n\t\t\t\tNote.warn(\n\t\t\t\t\t'ontology-axon',\n\t\t\t\t\t`Entity already exists: ${blueprint.id}`,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tNote.info('ontology-axon', 'Receiving entity', blueprint.id);\n\n\t\t\tconst entity = blueprint.entity!;\n\t\t\tentity.isOwner = false;\n\t\t\tentity.parent = world.get(serializedBlueprint.parentId);\n\t\t\tworld.spawn(entity, scene, blueprint, this);\n\t\t};\n\n\t\tthis.receiveDestroyEntity = (message) => {\n\t\t\tif (message.type !== 'oa-entity-destroy') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst id = message.payload as any;\n\t\t\tconst entity = world.entities.find((e) => e.id === id);\n\t\t\tif (entity) {\n\t\t\t\tentity.destroy(this);\n\t\t\t} else {\n\t\t\t\tNote.warn(\n\t\t\t\t\t'ontology-axon',\n\t\t\t\t\t`Received destroy for unknown entity: ${id}`,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\tthis.receiveAddComponent = (message) => {\n\t\t\tif (message.type !== 'oa-component-add') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst payload = message.payload as any;\n\t\t\tconst entity = world.entities.find((e) =>\n\t\t\t\te.id === payload.entityId\n\t\t\t);\n\t\t\tif (entity) {\n\t\t\t\tconst component = meta.getClass(payload.component)!;\n\t\t\t\tif (component) {\n\t\t\t\t\tconst componentInstance = entity.addComponent(\n\t\t\t\t\t\tcomponent,\n\t\t\t\t\t\tpayload.blueprint,\n\t\t\t\t\t\tthis,\n\t\t\t\t\t);\n\t\t\t\t\tcomponentInstance.isOwner = false;\n\t\t\t\t} else {\n\t\t\t\t\tNote.error(\n\t\t\t\t\t\t'ontology-axon',\n\t\t\t\t\t\t`Component ${payload.component} not found`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tNote.warn(\n\t\t\t\t\t'ontology-axon',\n\t\t\t\t\t`Entity ${payload.entityId} not found (add component ${payload.component})`,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\tthis.receiveMutateComponent = (message) => {\n\t\t\tif (message.type !== 'oa-component-mutate') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst payload = message.payload as any;\n\t\t\tconst entity = world.entities.find((e) =>\n\t\t\t\te.id === payload.entityId\n\t\t\t);\n\t\t\tif (entity) {\n\t\t\t\tconst component = entity.getComponent(payload.component);\n\t\t\t\tif (component) {\n\t\t\t\t\tcomponent.data = payload.data;\n\t\t\t\t} else {\n\t\t\t\t\tNote.warn(\n\t\t\t\t\t\t'ontology-axon',\n\t\t\t\t\t\t`Component ${payload.component} not found on entity ${payload.entityId} (mutate)`,\n\t\t\t\t\t);\n\t\t\t\t\taxon.send({\n\t\t\t\t\t\ttype: 'oa-component-missing',\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tentityId: entity.id,\n\t\t\t\t\t\t\tcomponent: payload.component,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tNote.warn(\n\t\t\t\t\t'ontology-axon',\n\t\t\t\t\t`Entity ${payload.entityId} not found (mutate)`,\n\t\t\t\t);\n\t\t\t\taxon.send({\n\t\t\t\t\ttype: 'oa-entity-missing',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tentityId: payload.entityId,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tthis.receiveRemoveComponent = (message) => {\n\t\t\tif (message.type !== 'oa-component-remove') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst payload = message.payload as any;\n\t\t\tconst entity = world.entities.find((e) =>\n\t\t\t\te.id === payload.entityId\n\t\t\t);\n\t\t\tif (entity) {\n\t\t\t\tconst component = entity.removeComponent(\n\t\t\t\t\tpayload.component,\n\t\t\t\t\tthis,\n\t\t\t\t);\n\t\t\t\tif (component) {\n\t\t\t\t\t// nothing\n\t\t\t\t} else {\n\t\t\t\t\tNote.warn(\n\t\t\t\t\t\t'ontology-axon',\n\t\t\t\t\t\t`Component ${payload.component} not found on entity ${payload.entityId} (remove)`,\n\t\t\t\t\t);\n\t\t\t\t\t// ignore since we didn't have anyway\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tNote.warn(\n\t\t\t\t\t'ontology-axon',\n\t\t\t\t\t`Entity ${payload.entityId} not found (remove)`,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\tthis.receiveMissingEntity = (message) => {\n\t\t\tif (message.type !== 'oa-entity-missing') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst payload = message.payload as any;\n\t\t\tNote.warn(\n\t\t\t\t'ontology-axon',\n\t\t\t\t'Received missing entity',\n\t\t\t\tpayload.entityId,\n\t\t\t);\n\t\t\tconst entity = world.entities.find((e) =>\n\t\t\t\te.id === payload.entityId\n\t\t\t);\n\t\t\tif (entity) {\n\t\t\t\tthis.sendSpawnEntity!(entity, null);\n\t\t\t} else {\n\t\t\t\tNote.warn(\n\t\t\t\t\t'ontology-axon',\n\t\t\t\t\t`Entity ${payload.entityId} not found (missing)`,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\tthis.receiveMissingComponent = (message) => {\n\t\t\tif (message.type !== 'oa-component-missing') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst payload = message.payload as any;\n\t\t\tconst entity = world.entities.find((e) =>\n\t\t\t\te.id === payload.entityId\n\t\t\t);\n\t\t\tNote.warn(\n\t\t\t\t'ontology-axon',\n\t\t\t\t'Received missing component',\n\t\t\t\tpayload.entityId,\n\t\t\t\tpayload.component,\n\t\t\t);\n\t\t\tif (entity) {\n\t\t\t\tconst component = entity.getComponent(payload.component);\n\t\t\t\tif (component) {\n\t\t\t\t\tthis.sendAddComponent!(entity, component, null);\n\t\t\t\t} else {\n\t\t\t\t\tNote.warn(\n\t\t\t\t\t\t'ontology-axon',\n\t\t\t\t\t\t`Component ${payload.component} not found on entity ${payload.entityId} (missing)`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tNote.warn(\n\t\t\t\t\t'ontology-axon',\n\t\t\t\t\t`Entity ${payload.entityId} not found (missing)`,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\tthis.receiveSetParent = (message) => {\n\t\t\tif (message.type !== 'oa-entity-set-parent') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst payload = message.payload as any;\n\t\t\tconst entity = world.entities.find((e) =>\n\t\t\t\te.id === payload.entityId\n\t\t\t);\n\t\t\tif (entity) {\n\t\t\t\tconst parent = payload.parentId &&\n\t\t\t\t\tworld.entities.find((e) => e.id === payload.parentId);\n\t\t\t\tif (parent) {\n\t\t\t\t\tentity.setParent(parent);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tNote.warn(\n\t\t\t\t\t'ontology-axon',\n\t\t\t\t\t`Entity ${payload.entityId} not found (set parent)`,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\taxon.subscribe('receive', this.receiveSpawnEntity);\n\t\taxon.subscribe('receive', this.receiveDestroyEntity);\n\t\taxon.subscribe('receive', this.receiveMissingEntity);\n\t\taxon.subscribe('receive', this.receiveSetParent);\n\n\t\taxon.subscribe('receive', this.receiveAddComponent);\n\t\taxon.subscribe('receive', this.receiveMutateComponent);\n\t\taxon.subscribe('receive', this.receiveRemoveComponent);\n\t\taxon.subscribe('receive', this.receiveMissingComponent);\n\n\t\taxon.subscribe('connected', () => {\n\t\t\tworld.entities.forEach((entity) => {\n\t\t\t\tthis.sendSpawnEntity!(entity, null);\n\t\t\t});\n\t\t});\n\n\t\taxon.subscribe('disconnected', () => {\n\t\t\tworld.entities.forEach((entity) => {\n\t\t\t\tif (!entity.isOwner) {\n\t\t\t\t\tentity.destroy(this);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t};\n\n\tunlink = (world: IWorld, _scene: IScene, axon: IAxon) => {\n\t\tworld.unsubscribe('entity-create', this.sendSpawnEntity!);\n\t\tworld.unsubscribe('entity-destroy', this.sendDestroyEntity!);\n\t\tworld.unsubscribe('entity-set-parent', this.sendSetParent!);\n\t\tworld.unsubscribe('component-create', this.sendAddComponent!);\n\t\tworld.unsubscribe('component-destroy', this.sendRemoveComponent!);\n\t\tworld.unsubscribe('component-mutate', this.sendMutateComponent!);\n\n\t\taxon.unsubscribe('receive', this.receiveAddComponent!);\n\t\taxon.unsubscribe('receive', this.receiveMutateComponent!);\n\t\taxon.unsubscribe('receive', this.receiveRemoveComponent!);\n\t\taxon.unsubscribe('receive', this.receiveMissingComponent!);\n\t\taxon.unsubscribe('receive', this.receiveSpawnEntity!);\n\t\taxon.unsubscribe('receive', this.receiveDestroyEntity!);\n\t\taxon.unsubscribe('receive', this.receiveSetParent!);\n\t};\n}\n", "import {XRSession} from \"../Deps/WebXR.ts\"\n\nexport {}\n\ndeclare global {\n interface Array {\n remove(o: T): Array;\n }\n \n interface Navigator {\n xr: {\n isSessionSupported(sessionType: string): boolean;\n requestSession(sessionType: string): Promise;\n }\n }\n}\n\n\nArray.prototype.remove = function arrayShiftRemove(item) {\n let index = this.indexOf(item);\n\n const stop = this.length - 1;\n while (index < stop) {\n this[index] = this[++index];\n }\n\n this.pop();\n return this;\n};\n", "import './Extensions.ts';\nimport {\n\tXRFrame,\n\tXRInputSource,\n\tXRReferenceSpace,\n\tXRRigidTransform,\n\tXRSession,\n} from '../Deps/WebXR.ts';\nimport { Observable } from './Observable.ts';\n\nexport type XRStatusEvents = 'xr-started' | 'xr-stopped' | 'xr-ended';\n\nexport class XRButton {\n\tstatic async createButton(renderer) {\n\t\tconst button = document.createElement('button');\n\n\t\tfunction showEnterVR() {\n\t\t\tlet currentSession: XRSession | null = null;\n\t\t\tasync function onSessionStarted(session) {\n\t\t\t\tsession.addEventListener('end', onSessionEnded);\n\t\t\t\tawait renderer.xr.setSession(session);\n\t\t\t\tbutton.textContent = 'EXIT VR';\n\t\t\t\tcurrentSession = session;\n\t\t\t}\n\t\t\tfunction onSessionEnded() {\n\t\t\t\tcurrentSession?.removeEventListener('end', onSessionEnded);\n\t\t\t\tbutton.textContent = 'ENTER VR';\n\t\t\t\tcurrentSession = null;\n\t\t\t}\n\t\t\tbutton.style.display = '';\n\t\t\tbutton.style.cursor = 'pointer';\n\t\t\tbutton.style.left = 'calc(50% - 50px)';\n\t\t\tbutton.style.width = '100px';\n\t\t\tbutton.textContent = 'ENTER VR';\n\t\t\tbutton.onmouseenter = function () {\n\t\t\t\tbutton.style.opacity = '1.0';\n\t\t\t};\n\t\t\tbutton.onmouseleave = function () {\n\t\t\t\tbutton.style.opacity = '0.5';\n\t\t\t};\n\t\t\tbutton.onclick = async function () {\n\t\t\t\tif (currentSession === null) {\n\t\t\t\t\tonSessionStarted(await XR.requestSession());\n\t\t\t\t} else {\n\t\t\t\t\tcurrentSession.end();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tfunction disableButton() {\n\t\t\tbutton.style.display = '';\n\t\t\tbutton.style.cursor = 'auto';\n\t\t\tbutton.style.left = 'calc(50% - 75px)';\n\t\t\tbutton.style.width = '150px';\n\t\t\tbutton.onmouseenter = null;\n\t\t\tbutton.onmouseleave = null;\n\t\t\tbutton.onclick = null;\n\t\t}\n\t\tfunction showWebXRNotFound() {\n\t\t\tdisableButton();\n\t\t\tbutton.textContent = 'VR NOT SUPPORTED';\n\t\t}\n\t\tfunction stylizeElement(element) {\n\t\t\telement.style.position = 'absolute';\n\t\t\telement.style.bottom = '20px';\n\t\t\telement.style.padding = '12px 6px';\n\t\t\telement.style.border = '1px solid #fff';\n\t\t\telement.style.borderRadius = '4px';\n\t\t\telement.style.background = 'rgba(0,0,0,0.1)';\n\t\t\telement.style.color = '#fff';\n\t\t\telement.style.font = 'normal 13px sans-serif';\n\t\t\telement.style.textAlign = 'center';\n\t\t\telement.style.opacity = '0.5';\n\t\t\telement.style.outline = 'none';\n\t\t\telement.style.zIndex = '999';\n\t\t}\n\t\tif ('xr' in navigator) {\n\t\t\tbutton.id = 'VRButton';\n\t\t\tbutton.style.display = 'none';\n\t\t\tstylizeElement(button);\n\t\t\tconst supported = await XR.isSupported();\n\t\t\tif (supported) {\n\t\t\t\tshowEnterVR();\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t\t// showWebXRNotFound();\n\t\t\t}\n\t\t\treturn button;\n\t\t} else {\n\t\t\treturn null;\n\t\t\t// const message = document.createElement('a');\n\t\t\t// if (globalThis.window.isSecureContext === false) {\n\t\t\t// \tmessage.href = document.location.href.replace(\n\t\t\t// \t\t/^http:/,\n\t\t\t// \t\t'https:',\n\t\t\t// \t);\n\t\t\t// \tmessage.innerHTML = 'WEBXR NEEDS HTTPS';\n\t\t\t// } else {\n\t\t\t// \tmessage.href = 'https://immersiveweb.dev/';\n\t\t\t// \tmessage.innerHTML = 'WEBXR NOT AVAILABLE';\n\t\t\t// }\n\t\t\t// message.style.left = 'calc(50% - 90px)';\n\t\t\t// message.style.width = '180px';\n\t\t\t// message.style.textDecoration = 'none';\n\t\t\t// stylizeElement(message);\n\t\t\t// return message;\n\t\t}\n\t}\n}\n\nexport class XR {\n\tstatic session: XRSession | null = null;\n\tstatic frame: XRFrame | null = null;\n\n\tstatic worldReferenceSpace: XRReferenceSpace | null = null;\n\tstatic headsetTransform: XRRigidTransform | null = null;\n\tstatic handTransforms: { [key: string]: XRRigidTransform } = {};\n\n\tstatic subscriptions: Observable = new Observable();\n\n\tstatic async isSupported(): Promise {\n\t\tif ('xr' in globalThis.window.navigator) {\n\t\t\treturn await globalThis.window.navigator.xr.isSessionSupported(\n\t\t\t\t'immersive-vr',\n\t\t\t);\n\t\t}\n\t\treturn false;\n\t}\n\n\tstatic async isEnabled(): Promise {\n\t\treturn await XR.isSupported();\n\t}\n\n\tstatic isActive(): boolean {\n\t\treturn XR.session != null;\n\t}\n\n\tstatic async requestSession(): Promise {\n\t\tif (!XR.isEnabled()) {\n\t\t\treturn null;\n\t\t}\n\t\tif (this.session != null) {\n\t\t\treturn this.session;\n\t\t}\n\t\tconst sessionInit = {\n\t\t\toptionalFeatures: [\n\t\t\t\t'local-floor',\n\t\t\t\t'bounded-floor',\n\t\t\t\t'hand-tracking',\n\t\t\t\t'layers',\n\t\t\t],\n\t\t};\n\t\tthis.session = await globalThis.window.navigator.xr.requestSession(\n\t\t\t'immersive-vr', // @ts-ignore this is required\n\t\t\tsessionInit,\n\t\t);\n\t\t\n\t\t// @ts-ignore This exists for Oculus\n\t\tthis.session.updateTargetFrameRate &&\n\t\t// @ts-ignore This exists for Oculus\n\t\t\tawait this.session.updateTargetFrameRate(90);\n\t\treturn this.session;\n\t}\n\n\tstatic updateXRFrame(frame: XRFrame | null) {\n\t\tthis.headsetTransform = null;\n\t\tthis.handTransforms['left'] && delete this.handTransforms['left'];\n\t\tthis.handTransforms['right'] && delete this.handTransforms['right'];\n\t\tthis.frame = frame;\n\t}\n\n\tstatic getXRFrame(): XRFrame | null {\n\t\treturn this.frame;\n\t}\n\n\tstatic async getHeadsetTransform(\n\t\tcallback?: (XRRigidTransform) => void,\n\t): Promise {\n\t\tif (this.headsetTransform) {\n\t\t\tcallback?.(this.headsetTransform);\n\t\t\treturn;\n\t\t}\n\n\t\tconst session = await XR.requestSession();\n\t\tif (this.worldReferenceSpace == null) {\n\t\t\tthis.worldReferenceSpace = await this.session!\n\t\t\t\t.requestReferenceSpace(\n\t\t\t\t\t'unbounded',\n\t\t\t\t).catch(async () =>\n\t\t\t\t\tawait this.session!.requestReferenceSpace('bounded-floor')\n\t\t\t\t)\n\t\t\t\t.catch(async () =>\n\t\t\t\t\tawait this.session!.requestReferenceSpace('local-floor')\n\t\t\t\t)\n\t\t\t\t.catch(async () =>\n\t\t\t\t\tawait this.session!.requestReferenceSpace('local')\n\t\t\t\t)\n\t\t\t\t.catch(() => null);\n\t\t}\n\t\tif (!session || !this.worldReferenceSpace) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewerPose = this.frame!.getViewerPose(this.worldReferenceSpace);\n\n\t\tthis.headsetTransform = viewerPose!.transform;\n\t\tcallback?.(this.headsetTransform);\n\t}\n\n\tstatic getHandPose(\n\t\tkey: 'left' | 'right',\n\t\tcallback?: (transform: XRRigidTransform) => void,\n\t): void {\n\t\tif (!this.session || !this.frame || !this.worldReferenceSpace) {\n\t\t\treturn;\n\t\t\t// return Promise.resolve(null);\n\t\t}\n\t\tif (this.handTransforms && this.handTransforms[key] != null) {\n\t\t\tcallback?.(this.handTransforms[key]);\n\t\t\treturn;\n\t\t\t// return Promise.resolve(this.handTransforms[key]);\n\t\t}\n\n\t\tfor (const inputSource of this.session.inputSources) { // we loop through every input source (controller) caught by our session\n\t\t\tif (inputSource.gripSpace) { // we check if our controllers actually have their space\n\t\t\t\tconst gripPose = this.frame.getPose(\n\t\t\t\t\tinputSource.gripSpace,\n\t\t\t\t\tthis.worldReferenceSpace!,\n\t\t\t\t); // we get controller's pose, by comparing our controller's space to our referance space\n\t\t\t\tif (gripPose) { // we check if our controller's pose was gotten correctly\n\t\t\t\t\tthis.handTransforms[inputSource.handedness] =\n\t\t\t\t\t\tgripPose.transform; // inputSource.handedness returns a string representing in which hand we have our controller - that is \"left\" or \"right\". Which means that controllers.left and controllers.right will from now on contain an element named \"pose\", which will simply be their corresponding XRPose\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcallback?.(this.handTransforms[key]);\n\t}\n\n\tstatic getController(key: 'left' | 'right'): XRInputSource | null {\n\t\tif (!this.session || !this.frame) {\n\t\t\treturn null;\n\t\t}\n\t\tfor (const inputSource of this.session.inputSources) {\n\t\t\tif (inputSource.handedness === key) {\n\t\t\t\treturn inputSource;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n}\n", "import { XRRigidTransform } from '../../Deps/WebXR.ts';\nimport { XR } from '../../Helpers/XR.ts';\nimport { Component } from '../../Ontology/Entity/Component.ts';\nimport { Vector3, Vector3Like } from '../../Helpers/Vector3.ts';\nimport { Quaternion, QuaternionLike } from '../../Helpers/Quaternion.ts';\n\ntype XRFollowerData = {\n\tfollow?: 'head' | 'left-hand' | 'right-hand';\n};\n\nexport class XRFollower extends Component {\n\tenabled = false;\n\t_q = new Quaternion(Quaternion.identity);\n\n\tcreate = () => {\n\t};\n\n\tupdate = () => {\n\t\tif (!XR.isActive()) {\n\t\t\treturn;\n\t\t}\n\n\t\t// 1. Get XR display position and rotation\n\t\tif (this.data!.follow === 'head') {\n\t\t\tXR.getHeadsetTransform(this.applyRigidTransform);\n\t\t} else if (this.data!.follow === 'left-hand') {\n\t\t\tXR.getHandPose('left', this.applyRigidTransform);\n\t\t} else if (this.data!.follow === 'right-hand') {\n\t\t\tXR.getHandPose('right', this.applyRigidTransform);\n\t\t}\n\t};\n\n\tapplyRigidTransformFlipped = (xrTransform: XRRigidTransform | null) =>\n\t\tthis.applyRigidTransform(xrTransform, true);\n\n\tapplyRigidTransform = (\n\t\txrTransform: XRRigidTransform | null,\n\t\tflip: boolean | undefined = undefined,\n\t) => {\n\t\tif (xrTransform == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.entity!.transform!.localPosition = xrTransform!.position;\n\t\tthis.entity!.transform!.localRotation = xrTransform!.orientation;\n\n\t\t// this.entity!.getComponent(Transform)!.mutate((transform) => {\n\t\t// transform.position = xrTransform!.position;\n\t\t// if (flip) {\n\t\t// // Rotate 180 degrees about y-axis\n\t\t// transform.rotation = this._q.set(xrTransform!.orientation).rotateY(\n\t\t// Math.PI,\n\t\t// );\n\t\t// } else {\n\t\t// transform.rotation = xrTransform!.orientation;\n\t\t// }\n\t\t// return transform;\n\t\t// });\n\t};\n\n\tgetDefaultData = () => ({\n\t\tfollow: 'head' as const,\n\t});\n}\n", "/**\n * @license\n * Copyright 2010-2021 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = \"136\";\nconst MOUSE = {LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2};\nconst TOUCH = {ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3};\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1e3;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3e3;\nconst sRGBEncoding = 3001;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\nconst GLSL1 = \"100\";\nconst GLSL3 = \"300 es\";\nclass EventDispatcher {\n addEventListener(type, listener) {\n if (this._listeners === void 0)\n this._listeners = {};\n const listeners = this._listeners;\n if (listeners[type] === void 0) {\n listeners[type] = [];\n }\n if (listeners[type].indexOf(listener) === -1) {\n listeners[type].push(listener);\n }\n }\n hasEventListener(type, listener) {\n if (this._listeners === void 0)\n return false;\n const listeners = this._listeners;\n return listeners[type] !== void 0 && listeners[type].indexOf(listener) !== -1;\n }\n removeEventListener(type, listener) {\n if (this._listeners === void 0)\n return;\n const listeners = this._listeners;\n const listenerArray = listeners[type];\n if (listenerArray !== void 0) {\n const index = listenerArray.indexOf(listener);\n if (index !== -1) {\n listenerArray.splice(index, 1);\n }\n }\n }\n dispatchEvent(event) {\n if (this._listeners === void 0)\n return;\n const listeners = this._listeners;\n const listenerArray = listeners[event.type];\n if (listenerArray !== void 0) {\n event.target = this;\n const array = listenerArray.slice(0);\n for (let i = 0, l = array.length; i < l; i++) {\n array[i].call(this, event);\n }\n event.target = null;\n }\n }\n}\nconst _lut = [];\nfor (let i = 0; i < 256; i++) {\n _lut[i] = (i < 16 ? \"0\" : \"\") + i.toString(16);\n}\nlet _seed = 1234567;\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\nfunction generateUUID() {\n const d0 = Math.random() * 4294967295 | 0;\n const d1 = Math.random() * 4294967295 | 0;\n const d2 = Math.random() * 4294967295 | 0;\n const d3 = Math.random() * 4294967295 | 0;\n const uuid = _lut[d0 & 255] + _lut[d0 >> 8 & 255] + _lut[d0 >> 16 & 255] + _lut[d0 >> 24 & 255] + \"-\" + _lut[d1 & 255] + _lut[d1 >> 8 & 255] + \"-\" + _lut[d1 >> 16 & 15 | 64] + _lut[d1 >> 24 & 255] + \"-\" + _lut[d2 & 63 | 128] + _lut[d2 >> 8 & 255] + \"-\" + _lut[d2 >> 16 & 255] + _lut[d2 >> 24 & 255] + _lut[d3 & 255] + _lut[d3 >> 8 & 255] + _lut[d3 >> 16 & 255] + _lut[d3 >> 24 & 255];\n return uuid.toUpperCase();\n}\nfunction clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction euclideanModulo(n, m) {\n return (n % m + m) % m;\n}\nfunction mapLinear(x, a1, a2, b1, b2) {\n return b1 + (x - a1) * (b2 - b1) / (a2 - a1);\n}\nfunction inverseLerp(x, y, value) {\n if (x !== y) {\n return (value - x) / (y - x);\n } else {\n return 0;\n }\n}\nfunction lerp(x, y, t) {\n return (1 - t) * x + t * y;\n}\nfunction damp(x, y, lambda, dt) {\n return lerp(x, y, 1 - Math.exp(-lambda * dt));\n}\nfunction pingpong(x, length = 1) {\n return length - Math.abs(euclideanModulo(x, length * 2) - length);\n}\nfunction smoothstep(x, min, max) {\n if (x <= min)\n return 0;\n if (x >= max)\n return 1;\n x = (x - min) / (max - min);\n return x * x * (3 - 2 * x);\n}\nfunction smootherstep(x, min, max) {\n if (x <= min)\n return 0;\n if (x >= max)\n return 1;\n x = (x - min) / (max - min);\n return x * x * x * (x * (x * 6 - 15) + 10);\n}\nfunction randInt(low, high) {\n return low + Math.floor(Math.random() * (high - low + 1));\n}\nfunction randFloat(low, high) {\n return low + Math.random() * (high - low);\n}\nfunction randFloatSpread(range) {\n return range * (0.5 - Math.random());\n}\nfunction seededRandom(s) {\n if (s !== void 0)\n _seed = s % 2147483647;\n _seed = _seed * 16807 % 2147483647;\n return (_seed - 1) / 2147483646;\n}\nfunction degToRad(degrees) {\n return degrees * DEG2RAD;\n}\nfunction radToDeg(radians) {\n return radians * RAD2DEG;\n}\nfunction isPowerOfTwo(value) {\n return (value & value - 1) === 0 && value !== 0;\n}\nfunction ceilPowerOfTwo(value) {\n return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2));\n}\nfunction floorPowerOfTwo(value) {\n return Math.pow(2, Math.floor(Math.log(value) / Math.LN2));\n}\nfunction setQuaternionFromProperEuler(q, a, b, c, order) {\n const cos = Math.cos;\n const sin = Math.sin;\n const c2 = cos(b / 2);\n const s2 = sin(b / 2);\n const c13 = cos((a + c) / 2);\n const s13 = sin((a + c) / 2);\n const c1_3 = cos((a - c) / 2);\n const s1_3 = sin((a - c) / 2);\n const c3_1 = cos((c - a) / 2);\n const s3_1 = sin((c - a) / 2);\n switch (order) {\n case \"XYX\":\n q.set(c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13);\n break;\n case \"YZY\":\n q.set(s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13);\n break;\n case \"ZXZ\":\n q.set(s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13);\n break;\n case \"XZX\":\n q.set(c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13);\n break;\n case \"YXY\":\n q.set(s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13);\n break;\n case \"ZYZ\":\n q.set(s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13);\n break;\n default:\n console.warn(\"THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: \" + order);\n }\n}\nvar MathUtils = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n DEG2RAD,\n RAD2DEG,\n generateUUID,\n clamp,\n euclideanModulo,\n mapLinear,\n inverseLerp,\n lerp,\n damp,\n pingpong,\n smoothstep,\n smootherstep,\n randInt,\n randFloat,\n randFloatSpread,\n seededRandom,\n degToRad,\n radToDeg,\n isPowerOfTwo,\n ceilPowerOfTwo,\n floorPowerOfTwo,\n setQuaternionFromProperEuler\n});\nclass Vector2 {\n constructor(x = 0, y = 0) {\n this.x = x;\n this.y = y;\n }\n get width() {\n return this.x;\n }\n set width(value) {\n this.x = value;\n }\n get height() {\n return this.y;\n }\n set height(value) {\n this.y = value;\n }\n set(x, y) {\n this.x = x;\n this.y = y;\n return this;\n }\n setScalar(scalar) {\n this.x = scalar;\n this.y = scalar;\n return this;\n }\n setX(x) {\n this.x = x;\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n setComponent(index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n default:\n throw new Error(\"index is out of range: \" + index);\n }\n return this;\n }\n getComponent(index) {\n switch (index) {\n case 0:\n return this.x;\n case 1:\n return this.y;\n default:\n throw new Error(\"index is out of range: \" + index);\n }\n }\n clone() {\n return new this.constructor(this.x, this.y);\n }\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n return this;\n }\n add(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.\");\n return this.addVectors(v, w);\n }\n this.x += v.x;\n this.y += v.y;\n return this;\n }\n addScalar(s) {\n this.x += s;\n this.y += s;\n return this;\n }\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n return this;\n }\n addScaledVector(v, s) {\n this.x += v.x * s;\n this.y += v.y * s;\n return this;\n }\n sub(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\");\n return this.subVectors(v, w);\n }\n this.x -= v.x;\n this.y -= v.y;\n return this;\n }\n subScalar(s) {\n this.x -= s;\n this.y -= s;\n return this;\n }\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n return this;\n }\n multiply(v) {\n this.x *= v.x;\n this.y *= v.y;\n return this;\n }\n multiplyScalar(scalar) {\n this.x *= scalar;\n this.y *= scalar;\n return this;\n }\n divide(v) {\n this.x /= v.x;\n this.y /= v.y;\n return this;\n }\n divideScalar(scalar) {\n return this.multiplyScalar(1 / scalar);\n }\n applyMatrix3(m) {\n const x = this.x, y = this.y;\n const e = m.elements;\n this.x = e[0] * x + e[3] * y + e[6];\n this.y = e[1] * x + e[4] * y + e[7];\n return this;\n }\n min(v) {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n return this;\n }\n max(v) {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n return this;\n }\n clamp(min, max) {\n this.x = Math.max(min.x, Math.min(max.x, this.x));\n this.y = Math.max(min.y, Math.min(max.y, this.y));\n return this;\n }\n clampScalar(minVal, maxVal) {\n this.x = Math.max(minVal, Math.min(maxVal, this.x));\n this.y = Math.max(minVal, Math.min(maxVal, this.y));\n return this;\n }\n clampLength(min, max) {\n const length = this.length();\n return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n }\n floor() {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n return this;\n }\n ceil() {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n return this;\n }\n round() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n }\n roundToZero() {\n this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n return this;\n }\n negate() {\n this.x = -this.x;\n this.y = -this.y;\n return this;\n }\n dot(v) {\n return this.x * v.x + this.y * v.y;\n }\n cross(v) {\n return this.x * v.y - this.y * v.x;\n }\n lengthSq() {\n return this.x * this.x + this.y * this.y;\n }\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n manhattanLength() {\n return Math.abs(this.x) + Math.abs(this.y);\n }\n normalize() {\n return this.divideScalar(this.length() || 1);\n }\n angle() {\n const angle = Math.atan2(-this.y, -this.x) + Math.PI;\n return angle;\n }\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n distanceToSquared(v) {\n const dx = this.x - v.x, dy = this.y - v.y;\n return dx * dx + dy * dy;\n }\n manhattanDistanceTo(v) {\n return Math.abs(this.x - v.x) + Math.abs(this.y - v.y);\n }\n setLength(length) {\n return this.normalize().multiplyScalar(length);\n }\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n return this;\n }\n lerpVectors(v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n return this;\n }\n equals(v) {\n return v.x === this.x && v.y === this.y;\n }\n fromArray(array, offset = 0) {\n this.x = array[offset];\n this.y = array[offset + 1];\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this.x;\n array[offset + 1] = this.y;\n return array;\n }\n fromBufferAttribute(attribute, index, offset) {\n if (offset !== void 0) {\n console.warn(\"THREE.Vector2: offset has been removed from .fromBufferAttribute().\");\n }\n this.x = attribute.getX(index);\n this.y = attribute.getY(index);\n return this;\n }\n rotateAround(center, angle) {\n const c = Math.cos(angle), s = Math.sin(angle);\n const x = this.x - center.x;\n const y = this.y - center.y;\n this.x = x * c - y * s + center.x;\n this.y = x * s + y * c + center.y;\n return this;\n }\n random() {\n this.x = Math.random();\n this.y = Math.random();\n return this;\n }\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n }\n}\nVector2.prototype.isVector2 = true;\nclass Matrix3 {\n constructor() {\n this.elements = [\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ];\n if (arguments.length > 0) {\n console.error(\"THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.\");\n }\n }\n set(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n const te = this.elements;\n te[0] = n11;\n te[1] = n21;\n te[2] = n31;\n te[3] = n12;\n te[4] = n22;\n te[5] = n32;\n te[6] = n13;\n te[7] = n23;\n te[8] = n33;\n return this;\n }\n identity() {\n this.set(1, 0, 0, 0, 1, 0, 0, 0, 1);\n return this;\n }\n copy(m) {\n const te = this.elements;\n const me = m.elements;\n te[0] = me[0];\n te[1] = me[1];\n te[2] = me[2];\n te[3] = me[3];\n te[4] = me[4];\n te[5] = me[5];\n te[6] = me[6];\n te[7] = me[7];\n te[8] = me[8];\n return this;\n }\n extractBasis(xAxis, yAxis, zAxis) {\n xAxis.setFromMatrix3Column(this, 0);\n yAxis.setFromMatrix3Column(this, 1);\n zAxis.setFromMatrix3Column(this, 2);\n return this;\n }\n setFromMatrix4(m) {\n const me = m.elements;\n this.set(me[0], me[4], me[8], me[1], me[5], me[9], me[2], me[6], me[10]);\n return this;\n }\n multiply(m) {\n return this.multiplyMatrices(this, m);\n }\n premultiply(m) {\n return this.multiplyMatrices(m, this);\n }\n multiplyMatrices(a, b) {\n const ae = a.elements;\n const be = b.elements;\n const te = this.elements;\n const a11 = ae[0], a12 = ae[3], a13 = ae[6];\n const a21 = ae[1], a22 = ae[4], a23 = ae[7];\n const a31 = ae[2], a32 = ae[5], a33 = ae[8];\n const b11 = be[0], b12 = be[3], b13 = be[6];\n const b21 = be[1], b22 = be[4], b23 = be[7];\n const b31 = be[2], b32 = be[5], b33 = be[8];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n return this;\n }\n multiplyScalar(s) {\n const te = this.elements;\n te[0] *= s;\n te[3] *= s;\n te[6] *= s;\n te[1] *= s;\n te[4] *= s;\n te[7] *= s;\n te[2] *= s;\n te[5] *= s;\n te[8] *= s;\n return this;\n }\n determinant() {\n const te = this.elements;\n const a = te[0], b = te[1], c = te[2], d = te[3], e = te[4], f = te[5], g = te[6], h = te[7], i = te[8];\n return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n }\n invert() {\n const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n12 = te[3], n22 = te[4], n32 = te[5], n13 = te[6], n23 = te[7], n33 = te[8], t11 = n33 * n22 - n32 * n23, t12 = n32 * n13 - n33 * n12, t13 = n23 * n12 - n22 * n13, det = n11 * t11 + n21 * t12 + n31 * t13;\n if (det === 0)\n return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n const detInv = 1 / det;\n te[0] = t11 * detInv;\n te[1] = (n31 * n23 - n33 * n21) * detInv;\n te[2] = (n32 * n21 - n31 * n22) * detInv;\n te[3] = t12 * detInv;\n te[4] = (n33 * n11 - n31 * n13) * detInv;\n te[5] = (n31 * n12 - n32 * n11) * detInv;\n te[6] = t13 * detInv;\n te[7] = (n21 * n13 - n23 * n11) * detInv;\n te[8] = (n22 * n11 - n21 * n12) * detInv;\n return this;\n }\n transpose() {\n let tmp2;\n const m = this.elements;\n tmp2 = m[1];\n m[1] = m[3];\n m[3] = tmp2;\n tmp2 = m[2];\n m[2] = m[6];\n m[6] = tmp2;\n tmp2 = m[5];\n m[5] = m[7];\n m[7] = tmp2;\n return this;\n }\n getNormalMatrix(matrix4) {\n return this.setFromMatrix4(matrix4).invert().transpose();\n }\n transposeIntoArray(r) {\n const m = this.elements;\n r[0] = m[0];\n r[1] = m[3];\n r[2] = m[6];\n r[3] = m[1];\n r[4] = m[4];\n r[5] = m[7];\n r[6] = m[2];\n r[7] = m[5];\n r[8] = m[8];\n return this;\n }\n setUvTransform(tx, ty, sx, sy, rotation, cx, cy) {\n const c = Math.cos(rotation);\n const s = Math.sin(rotation);\n this.set(sx * c, sx * s, -sx * (c * cx + s * cy) + cx + tx, -sy * s, sy * c, -sy * (-s * cx + c * cy) + cy + ty, 0, 0, 1);\n return this;\n }\n scale(sx, sy) {\n const te = this.elements;\n te[0] *= sx;\n te[3] *= sx;\n te[6] *= sx;\n te[1] *= sy;\n te[4] *= sy;\n te[7] *= sy;\n return this;\n }\n rotate(theta) {\n const c = Math.cos(theta);\n const s = Math.sin(theta);\n const te = this.elements;\n const a11 = te[0], a12 = te[3], a13 = te[6];\n const a21 = te[1], a22 = te[4], a23 = te[7];\n te[0] = c * a11 + s * a21;\n te[3] = c * a12 + s * a22;\n te[6] = c * a13 + s * a23;\n te[1] = -s * a11 + c * a21;\n te[4] = -s * a12 + c * a22;\n te[7] = -s * a13 + c * a23;\n return this;\n }\n translate(tx, ty) {\n const te = this.elements;\n te[0] += tx * te[2];\n te[3] += tx * te[5];\n te[6] += tx * te[8];\n te[1] += ty * te[2];\n te[4] += ty * te[5];\n te[7] += ty * te[8];\n return this;\n }\n equals(matrix) {\n const te = this.elements;\n const me = matrix.elements;\n for (let i = 0; i < 9; i++) {\n if (te[i] !== me[i])\n return false;\n }\n return true;\n }\n fromArray(array, offset = 0) {\n for (let i = 0; i < 9; i++) {\n this.elements[i] = array[i + offset];\n }\n return this;\n }\n toArray(array = [], offset = 0) {\n const te = this.elements;\n array[offset] = te[0];\n array[offset + 1] = te[1];\n array[offset + 2] = te[2];\n array[offset + 3] = te[3];\n array[offset + 4] = te[4];\n array[offset + 5] = te[5];\n array[offset + 6] = te[6];\n array[offset + 7] = te[7];\n array[offset + 8] = te[8];\n return array;\n }\n clone() {\n return new this.constructor().fromArray(this.elements);\n }\n}\nMatrix3.prototype.isMatrix3 = true;\nfunction arrayMax(array) {\n if (array.length === 0)\n return -Infinity;\n let max = array[0];\n for (let i = 1, l = array.length; i < l; ++i) {\n if (array[i] > max)\n max = array[i];\n }\n return max;\n}\nconst TYPED_ARRAYS = {\n Int8Array,\n Uint8Array,\n Uint8ClampedArray,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array\n};\nfunction getTypedArray(type, buffer) {\n return new TYPED_ARRAYS[type](buffer);\n}\nfunction createElementNS(name) {\n return document.createElementNS(\"http://www.w3.org/1999/xhtml\", name);\n}\nlet _canvas;\nclass ImageUtils {\n static getDataURL(image) {\n if (/^data:/i.test(image.src)) {\n return image.src;\n }\n if (typeof HTMLCanvasElement == \"undefined\") {\n return image.src;\n }\n let canvas;\n if (image instanceof HTMLCanvasElement) {\n canvas = image;\n } else {\n if (_canvas === void 0)\n _canvas = createElementNS(\"canvas\");\n _canvas.width = image.width;\n _canvas.height = image.height;\n const context = _canvas.getContext(\"2d\");\n if (image instanceof ImageData) {\n context.putImageData(image, 0, 0);\n } else {\n context.drawImage(image, 0, 0, image.width, image.height);\n }\n canvas = _canvas;\n }\n if (canvas.width > 2048 || canvas.height > 2048) {\n console.warn(\"THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons\", image);\n return canvas.toDataURL(\"image/jpeg\", 0.6);\n } else {\n return canvas.toDataURL(\"image/png\");\n }\n }\n}\nlet textureId = 0;\nclass Texture extends EventDispatcher {\n constructor(image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding) {\n super();\n Object.defineProperty(this, \"id\", {value: textureId++});\n this.uuid = generateUUID();\n this.name = \"\";\n this.image = image;\n this.mipmaps = [];\n this.mapping = mapping;\n this.wrapS = wrapS;\n this.wrapT = wrapT;\n this.magFilter = magFilter;\n this.minFilter = minFilter;\n this.anisotropy = anisotropy;\n this.format = format;\n this.internalFormat = null;\n this.type = type;\n this.offset = new Vector2(0, 0);\n this.repeat = new Vector2(1, 1);\n this.center = new Vector2(0, 0);\n this.rotation = 0;\n this.matrixAutoUpdate = true;\n this.matrix = new Matrix3();\n this.generateMipmaps = true;\n this.premultiplyAlpha = false;\n this.flipY = true;\n this.unpackAlignment = 4;\n this.encoding = encoding;\n this.userData = {};\n this.version = 0;\n this.onUpdate = null;\n this.isRenderTargetTexture = false;\n }\n updateMatrix() {\n this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y);\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(source) {\n this.name = source.name;\n this.image = source.image;\n this.mipmaps = source.mipmaps.slice(0);\n this.mapping = source.mapping;\n this.wrapS = source.wrapS;\n this.wrapT = source.wrapT;\n this.magFilter = source.magFilter;\n this.minFilter = source.minFilter;\n this.anisotropy = source.anisotropy;\n this.format = source.format;\n this.internalFormat = source.internalFormat;\n this.type = source.type;\n this.offset.copy(source.offset);\n this.repeat.copy(source.repeat);\n this.center.copy(source.center);\n this.rotation = source.rotation;\n this.matrixAutoUpdate = source.matrixAutoUpdate;\n this.matrix.copy(source.matrix);\n this.generateMipmaps = source.generateMipmaps;\n this.premultiplyAlpha = source.premultiplyAlpha;\n this.flipY = source.flipY;\n this.unpackAlignment = source.unpackAlignment;\n this.encoding = source.encoding;\n this.userData = JSON.parse(JSON.stringify(source.userData));\n return this;\n }\n toJSON(meta) {\n const isRootObject = meta === void 0 || typeof meta === \"string\";\n if (!isRootObject && meta.textures[this.uuid] !== void 0) {\n return meta.textures[this.uuid];\n }\n const output = {\n metadata: {\n version: 4.5,\n type: \"Texture\",\n generator: \"Texture.toJSON\"\n },\n uuid: this.uuid,\n name: this.name,\n mapping: this.mapping,\n repeat: [this.repeat.x, this.repeat.y],\n offset: [this.offset.x, this.offset.y],\n center: [this.center.x, this.center.y],\n rotation: this.rotation,\n wrap: [this.wrapS, this.wrapT],\n format: this.format,\n type: this.type,\n encoding: this.encoding,\n minFilter: this.minFilter,\n magFilter: this.magFilter,\n anisotropy: this.anisotropy,\n flipY: this.flipY,\n premultiplyAlpha: this.premultiplyAlpha,\n unpackAlignment: this.unpackAlignment\n };\n if (this.image !== void 0) {\n const image = this.image;\n if (image.uuid === void 0) {\n image.uuid = generateUUID();\n }\n if (!isRootObject && meta.images[image.uuid] === void 0) {\n let url;\n if (Array.isArray(image)) {\n url = [];\n for (let i = 0, l = image.length; i < l; i++) {\n if (image[i].isDataTexture) {\n url.push(serializeImage(image[i].image));\n } else {\n url.push(serializeImage(image[i]));\n }\n }\n } else {\n url = serializeImage(image);\n }\n meta.images[image.uuid] = {\n uuid: image.uuid,\n url\n };\n }\n output.image = image.uuid;\n }\n if (JSON.stringify(this.userData) !== \"{}\")\n output.userData = this.userData;\n if (!isRootObject) {\n meta.textures[this.uuid] = output;\n }\n return output;\n }\n dispose() {\n this.dispatchEvent({type: \"dispose\"});\n }\n transformUv(uv) {\n if (this.mapping !== UVMapping)\n return uv;\n uv.applyMatrix3(this.matrix);\n if (uv.x < 0 || uv.x > 1) {\n switch (this.wrapS) {\n case RepeatWrapping:\n uv.x = uv.x - Math.floor(uv.x);\n break;\n case ClampToEdgeWrapping:\n uv.x = uv.x < 0 ? 0 : 1;\n break;\n case MirroredRepeatWrapping:\n if (Math.abs(Math.floor(uv.x) % 2) === 1) {\n uv.x = Math.ceil(uv.x) - uv.x;\n } else {\n uv.x = uv.x - Math.floor(uv.x);\n }\n break;\n }\n }\n if (uv.y < 0 || uv.y > 1) {\n switch (this.wrapT) {\n case RepeatWrapping:\n uv.y = uv.y - Math.floor(uv.y);\n break;\n case ClampToEdgeWrapping:\n uv.y = uv.y < 0 ? 0 : 1;\n break;\n case MirroredRepeatWrapping:\n if (Math.abs(Math.floor(uv.y) % 2) === 1) {\n uv.y = Math.ceil(uv.y) - uv.y;\n } else {\n uv.y = uv.y - Math.floor(uv.y);\n }\n break;\n }\n }\n if (this.flipY) {\n uv.y = 1 - uv.y;\n }\n return uv;\n }\n set needsUpdate(value) {\n if (value === true)\n this.version++;\n }\n}\nTexture.DEFAULT_IMAGE = void 0;\nTexture.DEFAULT_MAPPING = UVMapping;\nTexture.prototype.isTexture = true;\nfunction serializeImage(image) {\n if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n return ImageUtils.getDataURL(image);\n } else {\n if (image.data) {\n return {\n data: Array.prototype.slice.call(image.data),\n width: image.width,\n height: image.height,\n type: image.data.constructor.name\n };\n } else {\n console.warn(\"THREE.Texture: Unable to serialize Texture.\");\n return {};\n }\n }\n}\nclass Vector4 {\n constructor(x = 0, y = 0, z = 0, w = 1) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n get width() {\n return this.z;\n }\n set width(value) {\n this.z = value;\n }\n get height() {\n return this.w;\n }\n set height(value) {\n this.w = value;\n }\n set(x, y, z, w) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n }\n setScalar(scalar) {\n this.x = scalar;\n this.y = scalar;\n this.z = scalar;\n this.w = scalar;\n return this;\n }\n setX(x) {\n this.x = x;\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n setZ(z) {\n this.z = z;\n return this;\n }\n setW(w) {\n this.w = w;\n return this;\n }\n setComponent(index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n case 3:\n this.w = value;\n break;\n default:\n throw new Error(\"index is out of range: \" + index);\n }\n return this;\n }\n getComponent(index) {\n switch (index) {\n case 0:\n return this.x;\n case 1:\n return this.y;\n case 2:\n return this.z;\n case 3:\n return this.w;\n default:\n throw new Error(\"index is out of range: \" + index);\n }\n }\n clone() {\n return new this.constructor(this.x, this.y, this.z, this.w);\n }\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n this.w = v.w !== void 0 ? v.w : 1;\n return this;\n }\n add(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.\");\n return this.addVectors(v, w);\n }\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n this.w += v.w;\n return this;\n }\n addScalar(s) {\n this.x += s;\n this.y += s;\n this.z += s;\n this.w += s;\n return this;\n }\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n this.z = a.z + b.z;\n this.w = a.w + b.w;\n return this;\n }\n addScaledVector(v, s) {\n this.x += v.x * s;\n this.y += v.y * s;\n this.z += v.z * s;\n this.w += v.w * s;\n return this;\n }\n sub(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\");\n return this.subVectors(v, w);\n }\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n this.w -= v.w;\n return this;\n }\n subScalar(s) {\n this.x -= s;\n this.y -= s;\n this.z -= s;\n this.w -= s;\n return this;\n }\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n this.z = a.z - b.z;\n this.w = a.w - b.w;\n return this;\n }\n multiply(v) {\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n this.w *= v.w;\n return this;\n }\n multiplyScalar(scalar) {\n this.x *= scalar;\n this.y *= scalar;\n this.z *= scalar;\n this.w *= scalar;\n return this;\n }\n applyMatrix4(m) {\n const x = this.x, y = this.y, z = this.z, w = this.w;\n const e = m.elements;\n this.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w;\n this.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w;\n this.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w;\n this.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w;\n return this;\n }\n divideScalar(scalar) {\n return this.multiplyScalar(1 / scalar);\n }\n setAxisAngleFromQuaternion(q) {\n this.w = 2 * Math.acos(q.w);\n const s = Math.sqrt(1 - q.w * q.w);\n if (s < 1e-4) {\n this.x = 1;\n this.y = 0;\n this.z = 0;\n } else {\n this.x = q.x / s;\n this.y = q.y / s;\n this.z = q.z / s;\n }\n return this;\n }\n setAxisAngleFromRotationMatrix(m) {\n let angle, x, y, z;\n const epsilon = 0.01, epsilon2 = 0.1, te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10];\n if (Math.abs(m12 - m21) < epsilon && Math.abs(m13 - m31) < epsilon && Math.abs(m23 - m32) < epsilon) {\n if (Math.abs(m12 + m21) < epsilon2 && Math.abs(m13 + m31) < epsilon2 && Math.abs(m23 + m32) < epsilon2 && Math.abs(m11 + m22 + m33 - 3) < epsilon2) {\n this.set(1, 0, 0, 0);\n return this;\n }\n angle = Math.PI;\n const xx = (m11 + 1) / 2;\n const yy = (m22 + 1) / 2;\n const zz = (m33 + 1) / 2;\n const xy = (m12 + m21) / 4;\n const xz = (m13 + m31) / 4;\n const yz = (m23 + m32) / 4;\n if (xx > yy && xx > zz) {\n if (xx < epsilon) {\n x = 0;\n y = 0.707106781;\n z = 0.707106781;\n } else {\n x = Math.sqrt(xx);\n y = xy / x;\n z = xz / x;\n }\n } else if (yy > zz) {\n if (yy < epsilon) {\n x = 0.707106781;\n y = 0;\n z = 0.707106781;\n } else {\n y = Math.sqrt(yy);\n x = xy / y;\n z = yz / y;\n }\n } else {\n if (zz < epsilon) {\n x = 0.707106781;\n y = 0.707106781;\n z = 0;\n } else {\n z = Math.sqrt(zz);\n x = xz / z;\n y = yz / z;\n }\n }\n this.set(x, y, z, angle);\n return this;\n }\n let s = Math.sqrt((m32 - m23) * (m32 - m23) + (m13 - m31) * (m13 - m31) + (m21 - m12) * (m21 - m12));\n if (Math.abs(s) < 1e-3)\n s = 1;\n this.x = (m32 - m23) / s;\n this.y = (m13 - m31) / s;\n this.z = (m21 - m12) / s;\n this.w = Math.acos((m11 + m22 + m33 - 1) / 2);\n return this;\n }\n min(v) {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n this.w = Math.min(this.w, v.w);\n return this;\n }\n max(v) {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n this.w = Math.max(this.w, v.w);\n return this;\n }\n clamp(min, max) {\n this.x = Math.max(min.x, Math.min(max.x, this.x));\n this.y = Math.max(min.y, Math.min(max.y, this.y));\n this.z = Math.max(min.z, Math.min(max.z, this.z));\n this.w = Math.max(min.w, Math.min(max.w, this.w));\n return this;\n }\n clampScalar(minVal, maxVal) {\n this.x = Math.max(minVal, Math.min(maxVal, this.x));\n this.y = Math.max(minVal, Math.min(maxVal, this.y));\n this.z = Math.max(minVal, Math.min(maxVal, this.z));\n this.w = Math.max(minVal, Math.min(maxVal, this.w));\n return this;\n }\n clampLength(min, max) {\n const length = this.length();\n return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n }\n floor() {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n this.w = Math.floor(this.w);\n return this;\n }\n ceil() {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n this.w = Math.ceil(this.w);\n return this;\n }\n round() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n this.w = Math.round(this.w);\n return this;\n }\n roundToZero() {\n this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z);\n this.w = this.w < 0 ? Math.ceil(this.w) : Math.floor(this.w);\n return this;\n }\n negate() {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n this.w = -this.w;\n return this;\n }\n dot(v) {\n return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n }\n lengthSq() {\n return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n }\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n }\n manhattanLength() {\n return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w);\n }\n normalize() {\n return this.divideScalar(this.length() || 1);\n }\n setLength(length) {\n return this.normalize().multiplyScalar(length);\n }\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n this.z += (v.z - this.z) * alpha;\n this.w += (v.w - this.w) * alpha;\n return this;\n }\n lerpVectors(v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n this.w = v1.w + (v2.w - v1.w) * alpha;\n return this;\n }\n equals(v) {\n return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w;\n }\n fromArray(array, offset = 0) {\n this.x = array[offset];\n this.y = array[offset + 1];\n this.z = array[offset + 2];\n this.w = array[offset + 3];\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n array[offset + 3] = this.w;\n return array;\n }\n fromBufferAttribute(attribute, index, offset) {\n if (offset !== void 0) {\n console.warn(\"THREE.Vector4: offset has been removed from .fromBufferAttribute().\");\n }\n this.x = attribute.getX(index);\n this.y = attribute.getY(index);\n this.z = attribute.getZ(index);\n this.w = attribute.getW(index);\n return this;\n }\n random() {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n this.w = Math.random();\n return this;\n }\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n yield this.z;\n yield this.w;\n }\n}\nVector4.prototype.isVector4 = true;\nclass WebGLRenderTarget extends EventDispatcher {\n constructor(width, height, options = {}) {\n super();\n this.width = width;\n this.height = height;\n this.depth = 1;\n this.scissor = new Vector4(0, 0, width, height);\n this.scissorTest = false;\n this.viewport = new Vector4(0, 0, width, height);\n this.texture = new Texture(void 0, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding);\n this.texture.isRenderTargetTexture = true;\n this.texture.image = {width, height, depth: 1};\n this.texture.generateMipmaps = options.generateMipmaps !== void 0 ? options.generateMipmaps : false;\n this.texture.internalFormat = options.internalFormat !== void 0 ? options.internalFormat : null;\n this.texture.minFilter = options.minFilter !== void 0 ? options.minFilter : LinearFilter;\n this.depthBuffer = options.depthBuffer !== void 0 ? options.depthBuffer : true;\n this.stencilBuffer = options.stencilBuffer !== void 0 ? options.stencilBuffer : false;\n this.depthTexture = options.depthTexture !== void 0 ? options.depthTexture : null;\n }\n setTexture(texture) {\n texture.image = {\n width: this.width,\n height: this.height,\n depth: this.depth\n };\n this.texture = texture;\n }\n setSize(width, height, depth = 1) {\n if (this.width !== width || this.height !== height || this.depth !== depth) {\n this.width = width;\n this.height = height;\n this.depth = depth;\n this.texture.image.width = width;\n this.texture.image.height = height;\n this.texture.image.depth = depth;\n this.dispose();\n }\n this.viewport.set(0, 0, width, height);\n this.scissor.set(0, 0, width, height);\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(source) {\n this.width = source.width;\n this.height = source.height;\n this.depth = source.depth;\n this.viewport.copy(source.viewport);\n this.texture = source.texture.clone();\n this.texture.image = {...this.texture.image};\n this.depthBuffer = source.depthBuffer;\n this.stencilBuffer = source.stencilBuffer;\n this.depthTexture = source.depthTexture;\n return this;\n }\n dispose() {\n this.dispatchEvent({type: \"dispose\"});\n }\n}\nWebGLRenderTarget.prototype.isWebGLRenderTarget = true;\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n constructor(width, height, count) {\n super(width, height);\n const texture = this.texture;\n this.texture = [];\n for (let i = 0; i < count; i++) {\n this.texture[i] = texture.clone();\n }\n }\n setSize(width, height, depth = 1) {\n if (this.width !== width || this.height !== height || this.depth !== depth) {\n this.width = width;\n this.height = height;\n this.depth = depth;\n for (let i = 0, il = this.texture.length; i < il; i++) {\n this.texture[i].image.width = width;\n this.texture[i].image.height = height;\n this.texture[i].image.depth = depth;\n }\n this.dispose();\n }\n this.viewport.set(0, 0, width, height);\n this.scissor.set(0, 0, width, height);\n return this;\n }\n copy(source) {\n this.dispose();\n this.width = source.width;\n this.height = source.height;\n this.depth = source.depth;\n this.viewport.set(0, 0, this.width, this.height);\n this.scissor.set(0, 0, this.width, this.height);\n this.depthBuffer = source.depthBuffer;\n this.stencilBuffer = source.stencilBuffer;\n this.depthTexture = source.depthTexture;\n this.texture.length = 0;\n for (let i = 0, il = source.texture.length; i < il; i++) {\n this.texture[i] = source.texture[i].clone();\n }\n return this;\n }\n}\nWebGLMultipleRenderTargets.prototype.isWebGLMultipleRenderTargets = true;\nclass WebGLMultisampleRenderTarget extends WebGLRenderTarget {\n constructor(width, height, options = {}) {\n super(width, height, options);\n this.samples = 4;\n this.ignoreDepthForMultisampleCopy = options.ignoreDepth !== void 0 ? options.ignoreDepth : true;\n this.useRenderToTexture = options.useRenderToTexture !== void 0 ? options.useRenderToTexture : false;\n this.useRenderbuffer = this.useRenderToTexture === false;\n }\n copy(source) {\n super.copy.call(this, source);\n this.samples = source.samples;\n this.useRenderToTexture = source.useRenderToTexture;\n this.useRenderbuffer = source.useRenderbuffer;\n return this;\n }\n}\nWebGLMultisampleRenderTarget.prototype.isWebGLMultisampleRenderTarget = true;\nclass Quaternion {\n constructor(x = 0, y = 0, z = 0, w = 1) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._w = w;\n }\n static slerp(qa, qb, qm, t) {\n console.warn(\"THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead.\");\n return qm.slerpQuaternions(qa, qb, t);\n }\n static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) {\n let x0 = src0[srcOffset0 + 0], y0 = src0[srcOffset0 + 1], z0 = src0[srcOffset0 + 2], w0 = src0[srcOffset0 + 3];\n const x1 = src1[srcOffset1 + 0], y1 = src1[srcOffset1 + 1], z1 = src1[srcOffset1 + 2], w1 = src1[srcOffset1 + 3];\n if (t === 0) {\n dst[dstOffset + 0] = x0;\n dst[dstOffset + 1] = y0;\n dst[dstOffset + 2] = z0;\n dst[dstOffset + 3] = w0;\n return;\n }\n if (t === 1) {\n dst[dstOffset + 0] = x1;\n dst[dstOffset + 1] = y1;\n dst[dstOffset + 2] = z1;\n dst[dstOffset + 3] = w1;\n return;\n }\n if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\n let s = 1 - t;\n const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, dir = cos >= 0 ? 1 : -1, sqrSin = 1 - cos * cos;\n if (sqrSin > Number.EPSILON) {\n const sin = Math.sqrt(sqrSin), len = Math.atan2(sin, cos * dir);\n s = Math.sin(s * len) / sin;\n t = Math.sin(t * len) / sin;\n }\n const tDir = t * dir;\n x0 = x0 * s + x1 * tDir;\n y0 = y0 * s + y1 * tDir;\n z0 = z0 * s + z1 * tDir;\n w0 = w0 * s + w1 * tDir;\n if (s === 1 - t) {\n const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\n x0 *= f;\n y0 *= f;\n z0 *= f;\n w0 *= f;\n }\n }\n dst[dstOffset] = x0;\n dst[dstOffset + 1] = y0;\n dst[dstOffset + 2] = z0;\n dst[dstOffset + 3] = w0;\n }\n static multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) {\n const x0 = src0[srcOffset0];\n const y0 = src0[srcOffset0 + 1];\n const z0 = src0[srcOffset0 + 2];\n const w0 = src0[srcOffset0 + 3];\n const x1 = src1[srcOffset1];\n const y1 = src1[srcOffset1 + 1];\n const z1 = src1[srcOffset1 + 2];\n const w1 = src1[srcOffset1 + 3];\n dst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n dst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n dst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n dst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n return dst;\n }\n get x() {\n return this._x;\n }\n set x(value) {\n this._x = value;\n this._onChangeCallback();\n }\n get y() {\n return this._y;\n }\n set y(value) {\n this._y = value;\n this._onChangeCallback();\n }\n get z() {\n return this._z;\n }\n set z(value) {\n this._z = value;\n this._onChangeCallback();\n }\n get w() {\n return this._w;\n }\n set w(value) {\n this._w = value;\n this._onChangeCallback();\n }\n set(x, y, z, w) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._w = w;\n this._onChangeCallback();\n return this;\n }\n clone() {\n return new this.constructor(this._x, this._y, this._z, this._w);\n }\n copy(quaternion) {\n this._x = quaternion.x;\n this._y = quaternion.y;\n this._z = quaternion.z;\n this._w = quaternion.w;\n this._onChangeCallback();\n return this;\n }\n setFromEuler(euler, update) {\n if (!(euler && euler.isEuler)) {\n throw new Error(\"THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.\");\n }\n const x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n const cos = Math.cos;\n const sin = Math.sin;\n const c1 = cos(x / 2);\n const c2 = cos(y / 2);\n const c3 = cos(z / 2);\n const s1 = sin(x / 2);\n const s2 = sin(y / 2);\n const s3 = sin(z / 2);\n switch (order) {\n case \"XYZ\":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case \"YXZ\":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n case \"ZXY\":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case \"ZYX\":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n case \"YZX\":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case \"XZY\":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n default:\n console.warn(\"THREE.Quaternion: .setFromEuler() encountered an unknown order: \" + order);\n }\n if (update !== false)\n this._onChangeCallback();\n return this;\n }\n setFromAxisAngle(axis, angle) {\n const halfAngle = angle / 2, s = Math.sin(halfAngle);\n this._x = axis.x * s;\n this._y = axis.y * s;\n this._z = axis.z * s;\n this._w = Math.cos(halfAngle);\n this._onChangeCallback();\n return this;\n }\n setFromRotationMatrix(m) {\n const te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10], trace = m11 + m22 + m33;\n if (trace > 0) {\n const s = 0.5 / Math.sqrt(trace + 1);\n this._w = 0.25 / s;\n this._x = (m32 - m23) * s;\n this._y = (m13 - m31) * s;\n this._z = (m21 - m12) * s;\n } else if (m11 > m22 && m11 > m33) {\n const s = 2 * Math.sqrt(1 + m11 - m22 - m33);\n this._w = (m32 - m23) / s;\n this._x = 0.25 * s;\n this._y = (m12 + m21) / s;\n this._z = (m13 + m31) / s;\n } else if (m22 > m33) {\n const s = 2 * Math.sqrt(1 + m22 - m11 - m33);\n this._w = (m13 - m31) / s;\n this._x = (m12 + m21) / s;\n this._y = 0.25 * s;\n this._z = (m23 + m32) / s;\n } else {\n const s = 2 * Math.sqrt(1 + m33 - m11 - m22);\n this._w = (m21 - m12) / s;\n this._x = (m13 + m31) / s;\n this._y = (m23 + m32) / s;\n this._z = 0.25 * s;\n }\n this._onChangeCallback();\n return this;\n }\n setFromUnitVectors(vFrom, vTo) {\n let r = vFrom.dot(vTo) + 1;\n if (r < Number.EPSILON) {\n r = 0;\n if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\n this._x = -vFrom.y;\n this._y = vFrom.x;\n this._z = 0;\n this._w = r;\n } else {\n this._x = 0;\n this._y = -vFrom.z;\n this._z = vFrom.y;\n this._w = r;\n }\n } else {\n this._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n this._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n this._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n this._w = r;\n }\n return this.normalize();\n }\n angleTo(q) {\n return 2 * Math.acos(Math.abs(clamp(this.dot(q), -1, 1)));\n }\n rotateTowards(q, step) {\n const angle = this.angleTo(q);\n if (angle === 0)\n return this;\n const t = Math.min(1, step / angle);\n this.slerp(q, t);\n return this;\n }\n identity() {\n return this.set(0, 0, 0, 1);\n }\n invert() {\n return this.conjugate();\n }\n conjugate() {\n this._x *= -1;\n this._y *= -1;\n this._z *= -1;\n this._onChangeCallback();\n return this;\n }\n dot(v) {\n return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n }\n lengthSq() {\n return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n }\n length() {\n return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);\n }\n normalize() {\n let l = this.length();\n if (l === 0) {\n this._x = 0;\n this._y = 0;\n this._z = 0;\n this._w = 1;\n } else {\n l = 1 / l;\n this._x = this._x * l;\n this._y = this._y * l;\n this._z = this._z * l;\n this._w = this._w * l;\n }\n this._onChangeCallback();\n return this;\n }\n multiply(q, p) {\n if (p !== void 0) {\n console.warn(\"THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.\");\n return this.multiplyQuaternions(q, p);\n }\n return this.multiplyQuaternions(this, q);\n }\n premultiply(q) {\n return this.multiplyQuaternions(q, this);\n }\n multiplyQuaternions(a, b) {\n const qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n const qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n this._onChangeCallback();\n return this;\n }\n slerp(qb, t) {\n if (t === 0)\n return this;\n if (t === 1)\n return this.copy(qb);\n const x = this._x, y = this._y, z = this._z, w = this._w;\n let cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n if (cosHalfTheta < 0) {\n this._w = -qb._w;\n this._x = -qb._x;\n this._y = -qb._y;\n this._z = -qb._z;\n cosHalfTheta = -cosHalfTheta;\n } else {\n this.copy(qb);\n }\n if (cosHalfTheta >= 1) {\n this._w = w;\n this._x = x;\n this._y = y;\n this._z = z;\n return this;\n }\n const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta;\n if (sqrSinHalfTheta <= Number.EPSILON) {\n const s = 1 - t;\n this._w = s * w + t * this._w;\n this._x = s * x + t * this._x;\n this._y = s * y + t * this._y;\n this._z = s * z + t * this._z;\n this.normalize();\n this._onChangeCallback();\n return this;\n }\n const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta, ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n this._w = w * ratioA + this._w * ratioB;\n this._x = x * ratioA + this._x * ratioB;\n this._y = y * ratioA + this._y * ratioB;\n this._z = z * ratioA + this._z * ratioB;\n this._onChangeCallback();\n return this;\n }\n slerpQuaternions(qa, qb, t) {\n this.copy(qa).slerp(qb, t);\n }\n random() {\n const u1 = Math.random();\n const sqrt1u1 = Math.sqrt(1 - u1);\n const sqrtu1 = Math.sqrt(u1);\n const u2 = 2 * Math.PI * Math.random();\n const u3 = 2 * Math.PI * Math.random();\n return this.set(sqrt1u1 * Math.cos(u2), sqrtu1 * Math.sin(u3), sqrtu1 * Math.cos(u3), sqrt1u1 * Math.sin(u2));\n }\n equals(quaternion) {\n return quaternion._x === this._x && quaternion._y === this._y && quaternion._z === this._z && quaternion._w === this._w;\n }\n fromArray(array, offset = 0) {\n this._x = array[offset];\n this._y = array[offset + 1];\n this._z = array[offset + 2];\n this._w = array[offset + 3];\n this._onChangeCallback();\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this._x;\n array[offset + 1] = this._y;\n array[offset + 2] = this._z;\n array[offset + 3] = this._w;\n return array;\n }\n fromBufferAttribute(attribute, index) {\n this._x = attribute.getX(index);\n this._y = attribute.getY(index);\n this._z = attribute.getZ(index);\n this._w = attribute.getW(index);\n return this;\n }\n _onChange(callback) {\n this._onChangeCallback = callback;\n return this;\n }\n _onChangeCallback() {\n }\n}\nQuaternion.prototype.isQuaternion = true;\nclass Vector3 {\n constructor(x = 0, y = 0, z = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n set(x, y, z) {\n if (z === void 0)\n z = this.z;\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n setScalar(scalar) {\n this.x = scalar;\n this.y = scalar;\n this.z = scalar;\n return this;\n }\n setX(x) {\n this.x = x;\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n setZ(z) {\n this.z = z;\n return this;\n }\n setComponent(index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n default:\n throw new Error(\"index is out of range: \" + index);\n }\n return this;\n }\n getComponent(index) {\n switch (index) {\n case 0:\n return this.x;\n case 1:\n return this.y;\n case 2:\n return this.z;\n default:\n throw new Error(\"index is out of range: \" + index);\n }\n }\n clone() {\n return new this.constructor(this.x, this.y, this.z);\n }\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n return this;\n }\n add(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.\");\n return this.addVectors(v, w);\n }\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n return this;\n }\n addScalar(s) {\n this.x += s;\n this.y += s;\n this.z += s;\n return this;\n }\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n this.z = a.z + b.z;\n return this;\n }\n addScaledVector(v, s) {\n this.x += v.x * s;\n this.y += v.y * s;\n this.z += v.z * s;\n return this;\n }\n sub(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\");\n return this.subVectors(v, w);\n }\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n return this;\n }\n subScalar(s) {\n this.x -= s;\n this.y -= s;\n this.z -= s;\n return this;\n }\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n this.z = a.z - b.z;\n return this;\n }\n multiply(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.\");\n return this.multiplyVectors(v, w);\n }\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n return this;\n }\n multiplyScalar(scalar) {\n this.x *= scalar;\n this.y *= scalar;\n this.z *= scalar;\n return this;\n }\n multiplyVectors(a, b) {\n this.x = a.x * b.x;\n this.y = a.y * b.y;\n this.z = a.z * b.z;\n return this;\n }\n applyEuler(euler) {\n if (!(euler && euler.isEuler)) {\n console.error(\"THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.\");\n }\n return this.applyQuaternion(_quaternion$4.setFromEuler(euler));\n }\n applyAxisAngle(axis, angle) {\n return this.applyQuaternion(_quaternion$4.setFromAxisAngle(axis, angle));\n }\n applyMatrix3(m) {\n const x = this.x, y = this.y, z = this.z;\n const e = m.elements;\n this.x = e[0] * x + e[3] * y + e[6] * z;\n this.y = e[1] * x + e[4] * y + e[7] * z;\n this.z = e[2] * x + e[5] * y + e[8] * z;\n return this;\n }\n applyNormalMatrix(m) {\n return this.applyMatrix3(m).normalize();\n }\n applyMatrix4(m) {\n const x = this.x, y = this.y, z = this.z;\n const e = m.elements;\n const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]);\n this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w;\n this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w;\n this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w;\n return this;\n }\n applyQuaternion(q) {\n const x = this.x, y = this.y, z = this.z;\n const qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n const ix = qw * x + qy * z - qz * y;\n const iy = qw * y + qz * x - qx * z;\n const iz = qw * z + qx * y - qy * x;\n const iw = -qx * x - qy * y - qz * z;\n this.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n this.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n this.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n return this;\n }\n project(camera) {\n return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix);\n }\n unproject(camera) {\n return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld);\n }\n transformDirection(m) {\n const x = this.x, y = this.y, z = this.z;\n const e = m.elements;\n this.x = e[0] * x + e[4] * y + e[8] * z;\n this.y = e[1] * x + e[5] * y + e[9] * z;\n this.z = e[2] * x + e[6] * y + e[10] * z;\n return this.normalize();\n }\n divide(v) {\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n return this;\n }\n divideScalar(scalar) {\n return this.multiplyScalar(1 / scalar);\n }\n min(v) {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n return this;\n }\n max(v) {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n return this;\n }\n clamp(min, max) {\n this.x = Math.max(min.x, Math.min(max.x, this.x));\n this.y = Math.max(min.y, Math.min(max.y, this.y));\n this.z = Math.max(min.z, Math.min(max.z, this.z));\n return this;\n }\n clampScalar(minVal, maxVal) {\n this.x = Math.max(minVal, Math.min(maxVal, this.x));\n this.y = Math.max(minVal, Math.min(maxVal, this.y));\n this.z = Math.max(minVal, Math.min(maxVal, this.z));\n return this;\n }\n clampLength(min, max) {\n const length = this.length();\n return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n }\n floor() {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n return this;\n }\n ceil() {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n return this;\n }\n round() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n return this;\n }\n roundToZero() {\n this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z);\n return this;\n }\n negate() {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n }\n dot(v) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n }\n lengthSq() {\n return this.x * this.x + this.y * this.y + this.z * this.z;\n }\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n }\n manhattanLength() {\n return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n }\n normalize() {\n return this.divideScalar(this.length() || 1);\n }\n setLength(length) {\n return this.normalize().multiplyScalar(length);\n }\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n this.z += (v.z - this.z) * alpha;\n return this;\n }\n lerpVectors(v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n return this;\n }\n cross(v, w) {\n if (w !== void 0) {\n console.warn(\"THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.\");\n return this.crossVectors(v, w);\n }\n return this.crossVectors(this, v);\n }\n crossVectors(a, b) {\n const ax = a.x, ay = a.y, az = a.z;\n const bx = b.x, by = b.y, bz = b.z;\n this.x = ay * bz - az * by;\n this.y = az * bx - ax * bz;\n this.z = ax * by - ay * bx;\n return this;\n }\n projectOnVector(v) {\n const denominator = v.lengthSq();\n if (denominator === 0)\n return this.set(0, 0, 0);\n const scalar = v.dot(this) / denominator;\n return this.copy(v).multiplyScalar(scalar);\n }\n projectOnPlane(planeNormal) {\n _vector$c.copy(this).projectOnVector(planeNormal);\n return this.sub(_vector$c);\n }\n reflect(normal) {\n return this.sub(_vector$c.copy(normal).multiplyScalar(2 * this.dot(normal)));\n }\n angleTo(v) {\n const denominator = Math.sqrt(this.lengthSq() * v.lengthSq());\n if (denominator === 0)\n return Math.PI / 2;\n const theta = this.dot(v) / denominator;\n return Math.acos(clamp(theta, -1, 1));\n }\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n distanceToSquared(v) {\n const dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n return dx * dx + dy * dy + dz * dz;\n }\n manhattanDistanceTo(v) {\n return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z);\n }\n setFromSpherical(s) {\n return this.setFromSphericalCoords(s.radius, s.phi, s.theta);\n }\n setFromSphericalCoords(radius, phi, theta) {\n const sinPhiRadius = Math.sin(phi) * radius;\n this.x = sinPhiRadius * Math.sin(theta);\n this.y = Math.cos(phi) * radius;\n this.z = sinPhiRadius * Math.cos(theta);\n return this;\n }\n setFromCylindrical(c) {\n return this.setFromCylindricalCoords(c.radius, c.theta, c.y);\n }\n setFromCylindricalCoords(radius, theta, y) {\n this.x = radius * Math.sin(theta);\n this.y = y;\n this.z = radius * Math.cos(theta);\n return this;\n }\n setFromMatrixPosition(m) {\n const e = m.elements;\n this.x = e[12];\n this.y = e[13];\n this.z = e[14];\n return this;\n }\n setFromMatrixScale(m) {\n const sx = this.setFromMatrixColumn(m, 0).length();\n const sy = this.setFromMatrixColumn(m, 1).length();\n const sz = this.setFromMatrixColumn(m, 2).length();\n this.x = sx;\n this.y = sy;\n this.z = sz;\n return this;\n }\n setFromMatrixColumn(m, index) {\n return this.fromArray(m.elements, index * 4);\n }\n setFromMatrix3Column(m, index) {\n return this.fromArray(m.elements, index * 3);\n }\n equals(v) {\n return v.x === this.x && v.y === this.y && v.z === this.z;\n }\n fromArray(array, offset = 0) {\n this.x = array[offset];\n this.y = array[offset + 1];\n this.z = array[offset + 2];\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n return array;\n }\n fromBufferAttribute(attribute, index, offset) {\n if (offset !== void 0) {\n console.warn(\"THREE.Vector3: offset has been removed from .fromBufferAttribute().\");\n }\n this.x = attribute.getX(index);\n this.y = attribute.getY(index);\n this.z = attribute.getZ(index);\n return this;\n }\n random() {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n return this;\n }\n randomDirection() {\n const u = (Math.random() - 0.5) * 2;\n const t = Math.random() * Math.PI * 2;\n const f = Math.sqrt(1 - u ** 2);\n this.x = f * Math.cos(t);\n this.y = f * Math.sin(t);\n this.z = u;\n return this;\n }\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n yield this.z;\n }\n}\nVector3.prototype.isVector3 = true;\nconst _vector$c = /* @__PURE__ */ new Vector3();\nconst _quaternion$4 = /* @__PURE__ */ new Quaternion();\nclass Box3 {\n constructor(min = new Vector3(Infinity, Infinity, Infinity), max = new Vector3(-Infinity, -Infinity, -Infinity)) {\n this.min = min;\n this.max = max;\n }\n set(min, max) {\n this.min.copy(min);\n this.max.copy(max);\n return this;\n }\n setFromArray(array) {\n let minX = Infinity;\n let minY = Infinity;\n let minZ = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let maxZ = -Infinity;\n for (let i = 0, l = array.length; i < l; i += 3) {\n const x = array[i];\n const y = array[i + 1];\n const z = array[i + 2];\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (z < minZ)\n minZ = z;\n if (x > maxX)\n maxX = x;\n if (y > maxY)\n maxY = y;\n if (z > maxZ)\n maxZ = z;\n }\n this.min.set(minX, minY, minZ);\n this.max.set(maxX, maxY, maxZ);\n return this;\n }\n setFromBufferAttribute(attribute) {\n let minX = Infinity;\n let minY = Infinity;\n let minZ = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let maxZ = -Infinity;\n for (let i = 0, l = attribute.count; i < l; i++) {\n const x = attribute.getX(i);\n const y = attribute.getY(i);\n const z = attribute.getZ(i);\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (z < minZ)\n minZ = z;\n if (x > maxX)\n maxX = x;\n if (y > maxY)\n maxY = y;\n if (z > maxZ)\n maxZ = z;\n }\n this.min.set(minX, minY, minZ);\n this.max.set(maxX, maxY, maxZ);\n return this;\n }\n setFromPoints(points) {\n this.makeEmpty();\n for (let i = 0, il = points.length; i < il; i++) {\n this.expandByPoint(points[i]);\n }\n return this;\n }\n setFromCenterAndSize(center, size) {\n const halfSize = _vector$b.copy(size).multiplyScalar(0.5);\n this.min.copy(center).sub(halfSize);\n this.max.copy(center).add(halfSize);\n return this;\n }\n setFromObject(object) {\n this.makeEmpty();\n return this.expandByObject(object);\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(box) {\n this.min.copy(box.min);\n this.max.copy(box.max);\n return this;\n }\n makeEmpty() {\n this.min.x = this.min.y = this.min.z = Infinity;\n this.max.x = this.max.y = this.max.z = -Infinity;\n return this;\n }\n isEmpty() {\n return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z;\n }\n getCenter(target) {\n return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n }\n getSize(target) {\n return this.isEmpty() ? target.set(0, 0, 0) : target.subVectors(this.max, this.min);\n }\n expandByPoint(point) {\n this.min.min(point);\n this.max.max(point);\n return this;\n }\n expandByVector(vector) {\n this.min.sub(vector);\n this.max.add(vector);\n return this;\n }\n expandByScalar(scalar) {\n this.min.addScalar(-scalar);\n this.max.addScalar(scalar);\n return this;\n }\n expandByObject(object) {\n object.updateWorldMatrix(false, false);\n const geometry = object.geometry;\n if (geometry !== void 0) {\n if (geometry.boundingBox === null) {\n geometry.computeBoundingBox();\n }\n _box$3.copy(geometry.boundingBox);\n _box$3.applyMatrix4(object.matrixWorld);\n this.union(_box$3);\n }\n const children = object.children;\n for (let i = 0, l = children.length; i < l; i++) {\n this.expandByObject(children[i]);\n }\n return this;\n }\n containsPoint(point) {\n return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y || point.z < this.min.z || point.z > this.max.z ? false : true;\n }\n containsBox(box) {\n return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y && this.min.z <= box.min.z && box.max.z <= this.max.z;\n }\n getParameter(point, target) {\n return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y), (point.z - this.min.z) / (this.max.z - this.min.z));\n }\n intersectsBox(box) {\n return box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y || box.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n }\n intersectsSphere(sphere) {\n this.clampPoint(sphere.center, _vector$b);\n return _vector$b.distanceToSquared(sphere.center) <= sphere.radius * sphere.radius;\n }\n intersectsPlane(plane) {\n let min, max;\n if (plane.normal.x > 0) {\n min = plane.normal.x * this.min.x;\n max = plane.normal.x * this.max.x;\n } else {\n min = plane.normal.x * this.max.x;\n max = plane.normal.x * this.min.x;\n }\n if (plane.normal.y > 0) {\n min += plane.normal.y * this.min.y;\n max += plane.normal.y * this.max.y;\n } else {\n min += plane.normal.y * this.max.y;\n max += plane.normal.y * this.min.y;\n }\n if (plane.normal.z > 0) {\n min += plane.normal.z * this.min.z;\n max += plane.normal.z * this.max.z;\n } else {\n min += plane.normal.z * this.max.z;\n max += plane.normal.z * this.min.z;\n }\n return min <= -plane.constant && max >= -plane.constant;\n }\n intersectsTriangle(triangle) {\n if (this.isEmpty()) {\n return false;\n }\n this.getCenter(_center);\n _extents.subVectors(this.max, _center);\n _v0$2.subVectors(triangle.a, _center);\n _v1$7.subVectors(triangle.b, _center);\n _v2$3.subVectors(triangle.c, _center);\n _f0.subVectors(_v1$7, _v0$2);\n _f1.subVectors(_v2$3, _v1$7);\n _f2.subVectors(_v0$2, _v2$3);\n let axes = [\n 0,\n -_f0.z,\n _f0.y,\n 0,\n -_f1.z,\n _f1.y,\n 0,\n -_f2.z,\n _f2.y,\n _f0.z,\n 0,\n -_f0.x,\n _f1.z,\n 0,\n -_f1.x,\n _f2.z,\n 0,\n -_f2.x,\n -_f0.y,\n _f0.x,\n 0,\n -_f1.y,\n _f1.x,\n 0,\n -_f2.y,\n _f2.x,\n 0\n ];\n if (!satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents)) {\n return false;\n }\n axes = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (!satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents)) {\n return false;\n }\n _triangleNormal.crossVectors(_f0, _f1);\n axes = [_triangleNormal.x, _triangleNormal.y, _triangleNormal.z];\n return satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents);\n }\n clampPoint(point, target) {\n return target.copy(point).clamp(this.min, this.max);\n }\n distanceToPoint(point) {\n const clampedPoint = _vector$b.copy(point).clamp(this.min, this.max);\n return clampedPoint.sub(point).length();\n }\n getBoundingSphere(target) {\n this.getCenter(target.center);\n target.radius = this.getSize(_vector$b).length() * 0.5;\n return target;\n }\n intersect(box) {\n this.min.max(box.min);\n this.max.min(box.max);\n if (this.isEmpty())\n this.makeEmpty();\n return this;\n }\n union(box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n }\n applyMatrix4(matrix) {\n if (this.isEmpty())\n return this;\n _points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix);\n _points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix);\n _points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix);\n _points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix);\n _points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix);\n _points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix);\n _points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix);\n _points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix);\n this.setFromPoints(_points);\n return this;\n }\n translate(offset) {\n this.min.add(offset);\n this.max.add(offset);\n return this;\n }\n equals(box) {\n return box.min.equals(this.min) && box.max.equals(this.max);\n }\n}\nBox3.prototype.isBox3 = true;\nconst _points = [\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3()\n];\nconst _vector$b = /* @__PURE__ */ new Vector3();\nconst _box$3 = /* @__PURE__ */ new Box3();\nconst _v0$2 = /* @__PURE__ */ new Vector3();\nconst _v1$7 = /* @__PURE__ */ new Vector3();\nconst _v2$3 = /* @__PURE__ */ new Vector3();\nconst _f0 = /* @__PURE__ */ new Vector3();\nconst _f1 = /* @__PURE__ */ new Vector3();\nconst _f2 = /* @__PURE__ */ new Vector3();\nconst _center = /* @__PURE__ */ new Vector3();\nconst _extents = /* @__PURE__ */ new Vector3();\nconst _triangleNormal = /* @__PURE__ */ new Vector3();\nconst _testAxis = /* @__PURE__ */ new Vector3();\nfunction satForAxes(axes, v0, v1, v2, extents) {\n for (let i = 0, j = axes.length - 3; i <= j; i += 3) {\n _testAxis.fromArray(axes, i);\n const r = extents.x * Math.abs(_testAxis.x) + extents.y * Math.abs(_testAxis.y) + extents.z * Math.abs(_testAxis.z);\n const p0 = v0.dot(_testAxis);\n const p1 = v1.dot(_testAxis);\n const p2 = v2.dot(_testAxis);\n if (Math.max(-Math.max(p0, p1, p2), Math.min(p0, p1, p2)) > r) {\n return false;\n }\n }\n return true;\n}\nconst _box$2 = /* @__PURE__ */ new Box3();\nconst _v1$6 = /* @__PURE__ */ new Vector3();\nconst _toFarthestPoint = /* @__PURE__ */ new Vector3();\nconst _toPoint = /* @__PURE__ */ new Vector3();\nclass Sphere {\n constructor(center = new Vector3(), radius = -1) {\n this.center = center;\n this.radius = radius;\n }\n set(center, radius) {\n this.center.copy(center);\n this.radius = radius;\n return this;\n }\n setFromPoints(points, optionalCenter) {\n const center = this.center;\n if (optionalCenter !== void 0) {\n center.copy(optionalCenter);\n } else {\n _box$2.setFromPoints(points).getCenter(center);\n }\n let maxRadiusSq = 0;\n for (let i = 0, il = points.length; i < il; i++) {\n maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(points[i]));\n }\n this.radius = Math.sqrt(maxRadiusSq);\n return this;\n }\n copy(sphere) {\n this.center.copy(sphere.center);\n this.radius = sphere.radius;\n return this;\n }\n isEmpty() {\n return this.radius < 0;\n }\n makeEmpty() {\n this.center.set(0, 0, 0);\n this.radius = -1;\n return this;\n }\n containsPoint(point) {\n return point.distanceToSquared(this.center) <= this.radius * this.radius;\n }\n distanceToPoint(point) {\n return point.distanceTo(this.center) - this.radius;\n }\n intersectsSphere(sphere) {\n const radiusSum = this.radius + sphere.radius;\n return sphere.center.distanceToSquared(this.center) <= radiusSum * radiusSum;\n }\n intersectsBox(box) {\n return box.intersectsSphere(this);\n }\n intersectsPlane(plane) {\n return Math.abs(plane.distanceToPoint(this.center)) <= this.radius;\n }\n clampPoint(point, target) {\n const deltaLengthSq = this.center.distanceToSquared(point);\n target.copy(point);\n if (deltaLengthSq > this.radius * this.radius) {\n target.sub(this.center).normalize();\n target.multiplyScalar(this.radius).add(this.center);\n }\n return target;\n }\n getBoundingBox(target) {\n if (this.isEmpty()) {\n target.makeEmpty();\n return target;\n }\n target.set(this.center, this.center);\n target.expandByScalar(this.radius);\n return target;\n }\n applyMatrix4(matrix) {\n this.center.applyMatrix4(matrix);\n this.radius = this.radius * matrix.getMaxScaleOnAxis();\n return this;\n }\n translate(offset) {\n this.center.add(offset);\n return this;\n }\n expandByPoint(point) {\n _toPoint.subVectors(point, this.center);\n const lengthSq = _toPoint.lengthSq();\n if (lengthSq > this.radius * this.radius) {\n const length = Math.sqrt(lengthSq);\n const missingRadiusHalf = (length - this.radius) * 0.5;\n this.center.add(_toPoint.multiplyScalar(missingRadiusHalf / length));\n this.radius += missingRadiusHalf;\n }\n return this;\n }\n union(sphere) {\n if (this.center.equals(sphere.center) === true) {\n _toFarthestPoint.set(0, 0, 1).multiplyScalar(sphere.radius);\n } else {\n _toFarthestPoint.subVectors(sphere.center, this.center).normalize().multiplyScalar(sphere.radius);\n }\n this.expandByPoint(_v1$6.copy(sphere.center).add(_toFarthestPoint));\n this.expandByPoint(_v1$6.copy(sphere.center).sub(_toFarthestPoint));\n return this;\n }\n equals(sphere) {\n return sphere.center.equals(this.center) && sphere.radius === this.radius;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nconst _vector$a = /* @__PURE__ */ new Vector3();\nconst _segCenter = /* @__PURE__ */ new Vector3();\nconst _segDir = /* @__PURE__ */ new Vector3();\nconst _diff = /* @__PURE__ */ new Vector3();\nconst _edge1 = /* @__PURE__ */ new Vector3();\nconst _edge2 = /* @__PURE__ */ new Vector3();\nconst _normal$1 = /* @__PURE__ */ new Vector3();\nclass Ray {\n constructor(origin = new Vector3(), direction = new Vector3(0, 0, -1)) {\n this.origin = origin;\n this.direction = direction;\n }\n set(origin, direction) {\n this.origin.copy(origin);\n this.direction.copy(direction);\n return this;\n }\n copy(ray) {\n this.origin.copy(ray.origin);\n this.direction.copy(ray.direction);\n return this;\n }\n at(t, target) {\n return target.copy(this.direction).multiplyScalar(t).add(this.origin);\n }\n lookAt(v) {\n this.direction.copy(v).sub(this.origin).normalize();\n return this;\n }\n recast(t) {\n this.origin.copy(this.at(t, _vector$a));\n return this;\n }\n closestPointToPoint(point, target) {\n target.subVectors(point, this.origin);\n const directionDistance = target.dot(this.direction);\n if (directionDistance < 0) {\n return target.copy(this.origin);\n }\n return target.copy(this.direction).multiplyScalar(directionDistance).add(this.origin);\n }\n distanceToPoint(point) {\n return Math.sqrt(this.distanceSqToPoint(point));\n }\n distanceSqToPoint(point) {\n const directionDistance = _vector$a.subVectors(point, this.origin).dot(this.direction);\n if (directionDistance < 0) {\n return this.origin.distanceToSquared(point);\n }\n _vector$a.copy(this.direction).multiplyScalar(directionDistance).add(this.origin);\n return _vector$a.distanceToSquared(point);\n }\n distanceSqToSegment(v0, v1, optionalPointOnRay, optionalPointOnSegment) {\n _segCenter.copy(v0).add(v1).multiplyScalar(0.5);\n _segDir.copy(v1).sub(v0).normalize();\n _diff.copy(this.origin).sub(_segCenter);\n const segExtent = v0.distanceTo(v1) * 0.5;\n const a01 = -this.direction.dot(_segDir);\n const b0 = _diff.dot(this.direction);\n const b1 = -_diff.dot(_segDir);\n const c = _diff.lengthSq();\n const det = Math.abs(1 - a01 * a01);\n let s0, s1, sqrDist, extDet;\n if (det > 0) {\n s0 = a01 * b1 - b0;\n s1 = a01 * b0 - b1;\n extDet = segExtent * det;\n if (s0 >= 0) {\n if (s1 >= -extDet) {\n if (s1 <= extDet) {\n const invDet = 1 / det;\n s0 *= invDet;\n s1 *= invDet;\n sqrDist = s0 * (s0 + a01 * s1 + 2 * b0) + s1 * (a01 * s0 + s1 + 2 * b1) + c;\n } else {\n s1 = segExtent;\n s0 = Math.max(0, -(a01 * s1 + b0));\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n }\n } else {\n s1 = -segExtent;\n s0 = Math.max(0, -(a01 * s1 + b0));\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n }\n } else {\n if (s1 <= -extDet) {\n s0 = Math.max(0, -(-a01 * segExtent + b0));\n s1 = s0 > 0 ? -segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n } else if (s1 <= extDet) {\n s0 = 0;\n s1 = Math.min(Math.max(-segExtent, -b1), segExtent);\n sqrDist = s1 * (s1 + 2 * b1) + c;\n } else {\n s0 = Math.max(0, -(a01 * segExtent + b0));\n s1 = s0 > 0 ? segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n }\n }\n } else {\n s1 = a01 > 0 ? -segExtent : segExtent;\n s0 = Math.max(0, -(a01 * s1 + b0));\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n }\n if (optionalPointOnRay) {\n optionalPointOnRay.copy(this.direction).multiplyScalar(s0).add(this.origin);\n }\n if (optionalPointOnSegment) {\n optionalPointOnSegment.copy(_segDir).multiplyScalar(s1).add(_segCenter);\n }\n return sqrDist;\n }\n intersectSphere(sphere, target) {\n _vector$a.subVectors(sphere.center, this.origin);\n const tca = _vector$a.dot(this.direction);\n const d2 = _vector$a.dot(_vector$a) - tca * tca;\n const radius2 = sphere.radius * sphere.radius;\n if (d2 > radius2)\n return null;\n const thc = Math.sqrt(radius2 - d2);\n const t0 = tca - thc;\n const t1 = tca + thc;\n if (t0 < 0 && t1 < 0)\n return null;\n if (t0 < 0)\n return this.at(t1, target);\n return this.at(t0, target);\n }\n intersectsSphere(sphere) {\n return this.distanceSqToPoint(sphere.center) <= sphere.radius * sphere.radius;\n }\n distanceToPlane(plane) {\n const denominator = plane.normal.dot(this.direction);\n if (denominator === 0) {\n if (plane.distanceToPoint(this.origin) === 0) {\n return 0;\n }\n return null;\n }\n const t = -(this.origin.dot(plane.normal) + plane.constant) / denominator;\n return t >= 0 ? t : null;\n }\n intersectPlane(plane, target) {\n const t = this.distanceToPlane(plane);\n if (t === null) {\n return null;\n }\n return this.at(t, target);\n }\n intersectsPlane(plane) {\n const distToPoint = plane.distanceToPoint(this.origin);\n if (distToPoint === 0) {\n return true;\n }\n const denominator = plane.normal.dot(this.direction);\n if (denominator * distToPoint < 0) {\n return true;\n }\n return false;\n }\n intersectBox(box, target) {\n let tmin, tmax, tymin, tymax, tzmin, tzmax;\n const invdirx = 1 / this.direction.x, invdiry = 1 / this.direction.y, invdirz = 1 / this.direction.z;\n const origin = this.origin;\n if (invdirx >= 0) {\n tmin = (box.min.x - origin.x) * invdirx;\n tmax = (box.max.x - origin.x) * invdirx;\n } else {\n tmin = (box.max.x - origin.x) * invdirx;\n tmax = (box.min.x - origin.x) * invdirx;\n }\n if (invdiry >= 0) {\n tymin = (box.min.y - origin.y) * invdiry;\n tymax = (box.max.y - origin.y) * invdiry;\n } else {\n tymin = (box.max.y - origin.y) * invdiry;\n tymax = (box.min.y - origin.y) * invdiry;\n }\n if (tmin > tymax || tymin > tmax)\n return null;\n if (tymin > tmin || tmin !== tmin)\n tmin = tymin;\n if (tymax < tmax || tmax !== tmax)\n tmax = tymax;\n if (invdirz >= 0) {\n tzmin = (box.min.z - origin.z) * invdirz;\n tzmax = (box.max.z - origin.z) * invdirz;\n } else {\n tzmin = (box.max.z - origin.z) * invdirz;\n tzmax = (box.min.z - origin.z) * invdirz;\n }\n if (tmin > tzmax || tzmin > tmax)\n return null;\n if (tzmin > tmin || tmin !== tmin)\n tmin = tzmin;\n if (tzmax < tmax || tmax !== tmax)\n tmax = tzmax;\n if (tmax < 0)\n return null;\n return this.at(tmin >= 0 ? tmin : tmax, target);\n }\n intersectsBox(box) {\n return this.intersectBox(box, _vector$a) !== null;\n }\n intersectTriangle(a, b, c, backfaceCulling, target) {\n _edge1.subVectors(b, a);\n _edge2.subVectors(c, a);\n _normal$1.crossVectors(_edge1, _edge2);\n let DdN = this.direction.dot(_normal$1);\n let sign2;\n if (DdN > 0) {\n if (backfaceCulling)\n return null;\n sign2 = 1;\n } else if (DdN < 0) {\n sign2 = -1;\n DdN = -DdN;\n } else {\n return null;\n }\n _diff.subVectors(this.origin, a);\n const DdQxE2 = sign2 * this.direction.dot(_edge2.crossVectors(_diff, _edge2));\n if (DdQxE2 < 0) {\n return null;\n }\n const DdE1xQ = sign2 * this.direction.dot(_edge1.cross(_diff));\n if (DdE1xQ < 0) {\n return null;\n }\n if (DdQxE2 + DdE1xQ > DdN) {\n return null;\n }\n const QdN = -sign2 * _diff.dot(_normal$1);\n if (QdN < 0) {\n return null;\n }\n return this.at(QdN / DdN, target);\n }\n applyMatrix4(matrix4) {\n this.origin.applyMatrix4(matrix4);\n this.direction.transformDirection(matrix4);\n return this;\n }\n equals(ray) {\n return ray.origin.equals(this.origin) && ray.direction.equals(this.direction);\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nclass Matrix4 {\n constructor() {\n this.elements = [\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ];\n if (arguments.length > 0) {\n console.error(\"THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.\");\n }\n }\n set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\n const te = this.elements;\n te[0] = n11;\n te[4] = n12;\n te[8] = n13;\n te[12] = n14;\n te[1] = n21;\n te[5] = n22;\n te[9] = n23;\n te[13] = n24;\n te[2] = n31;\n te[6] = n32;\n te[10] = n33;\n te[14] = n34;\n te[3] = n41;\n te[7] = n42;\n te[11] = n43;\n te[15] = n44;\n return this;\n }\n identity() {\n this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n return this;\n }\n clone() {\n return new Matrix4().fromArray(this.elements);\n }\n copy(m) {\n const te = this.elements;\n const me = m.elements;\n te[0] = me[0];\n te[1] = me[1];\n te[2] = me[2];\n te[3] = me[3];\n te[4] = me[4];\n te[5] = me[5];\n te[6] = me[6];\n te[7] = me[7];\n te[8] = me[8];\n te[9] = me[9];\n te[10] = me[10];\n te[11] = me[11];\n te[12] = me[12];\n te[13] = me[13];\n te[14] = me[14];\n te[15] = me[15];\n return this;\n }\n copyPosition(m) {\n const te = this.elements, me = m.elements;\n te[12] = me[12];\n te[13] = me[13];\n te[14] = me[14];\n return this;\n }\n setFromMatrix3(m) {\n const me = m.elements;\n this.set(me[0], me[3], me[6], 0, me[1], me[4], me[7], 0, me[2], me[5], me[8], 0, 0, 0, 0, 1);\n return this;\n }\n extractBasis(xAxis, yAxis, zAxis) {\n xAxis.setFromMatrixColumn(this, 0);\n yAxis.setFromMatrixColumn(this, 1);\n zAxis.setFromMatrixColumn(this, 2);\n return this;\n }\n makeBasis(xAxis, yAxis, zAxis) {\n this.set(xAxis.x, yAxis.x, zAxis.x, 0, xAxis.y, yAxis.y, zAxis.y, 0, xAxis.z, yAxis.z, zAxis.z, 0, 0, 0, 0, 1);\n return this;\n }\n extractRotation(m) {\n const te = this.elements;\n const me = m.elements;\n const scaleX = 1 / _v1$5.setFromMatrixColumn(m, 0).length();\n const scaleY = 1 / _v1$5.setFromMatrixColumn(m, 1).length();\n const scaleZ = 1 / _v1$5.setFromMatrixColumn(m, 2).length();\n te[0] = me[0] * scaleX;\n te[1] = me[1] * scaleX;\n te[2] = me[2] * scaleX;\n te[3] = 0;\n te[4] = me[4] * scaleY;\n te[5] = me[5] * scaleY;\n te[6] = me[6] * scaleY;\n te[7] = 0;\n te[8] = me[8] * scaleZ;\n te[9] = me[9] * scaleZ;\n te[10] = me[10] * scaleZ;\n te[11] = 0;\n te[12] = 0;\n te[13] = 0;\n te[14] = 0;\n te[15] = 1;\n return this;\n }\n makeRotationFromEuler(euler) {\n if (!(euler && euler.isEuler)) {\n console.error(\"THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.\");\n }\n const te = this.elements;\n const x = euler.x, y = euler.y, z = euler.z;\n const a = Math.cos(x), b = Math.sin(x);\n const c = Math.cos(y), d = Math.sin(y);\n const e = Math.cos(z), f = Math.sin(z);\n if (euler.order === \"XYZ\") {\n const ae = a * e, af = a * f, be = b * e, bf = b * f;\n te[0] = c * e;\n te[4] = -c * f;\n te[8] = d;\n te[1] = af + be * d;\n te[5] = ae - bf * d;\n te[9] = -b * c;\n te[2] = bf - ae * d;\n te[6] = be + af * d;\n te[10] = a * c;\n } else if (euler.order === \"YXZ\") {\n const ce = c * e, cf = c * f, de = d * e, df = d * f;\n te[0] = ce + df * b;\n te[4] = de * b - cf;\n te[8] = a * d;\n te[1] = a * f;\n te[5] = a * e;\n te[9] = -b;\n te[2] = cf * b - de;\n te[6] = df + ce * b;\n te[10] = a * c;\n } else if (euler.order === \"ZXY\") {\n const ce = c * e, cf = c * f, de = d * e, df = d * f;\n te[0] = ce - df * b;\n te[4] = -a * f;\n te[8] = de + cf * b;\n te[1] = cf + de * b;\n te[5] = a * e;\n te[9] = df - ce * b;\n te[2] = -a * d;\n te[6] = b;\n te[10] = a * c;\n } else if (euler.order === \"ZYX\") {\n const ae = a * e, af = a * f, be = b * e, bf = b * f;\n te[0] = c * e;\n te[4] = be * d - af;\n te[8] = ae * d + bf;\n te[1] = c * f;\n te[5] = bf * d + ae;\n te[9] = af * d - be;\n te[2] = -d;\n te[6] = b * c;\n te[10] = a * c;\n } else if (euler.order === \"YZX\") {\n const ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n te[0] = c * e;\n te[4] = bd - ac * f;\n te[8] = bc * f + ad;\n te[1] = f;\n te[5] = a * e;\n te[9] = -b * e;\n te[2] = -d * e;\n te[6] = ad * f + bc;\n te[10] = ac - bd * f;\n } else if (euler.order === \"XZY\") {\n const ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n te[0] = c * e;\n te[4] = -f;\n te[8] = d * e;\n te[1] = ac * f + bd;\n te[5] = a * e;\n te[9] = ad * f - bc;\n te[2] = bc * f - ad;\n te[6] = b * e;\n te[10] = bd * f + ac;\n }\n te[3] = 0;\n te[7] = 0;\n te[11] = 0;\n te[12] = 0;\n te[13] = 0;\n te[14] = 0;\n te[15] = 1;\n return this;\n }\n makeRotationFromQuaternion(q) {\n return this.compose(_zero, q, _one);\n }\n lookAt(eye, target, up) {\n const te = this.elements;\n _z.subVectors(eye, target);\n if (_z.lengthSq() === 0) {\n _z.z = 1;\n }\n _z.normalize();\n _x.crossVectors(up, _z);\n if (_x.lengthSq() === 0) {\n if (Math.abs(up.z) === 1) {\n _z.x += 1e-4;\n } else {\n _z.z += 1e-4;\n }\n _z.normalize();\n _x.crossVectors(up, _z);\n }\n _x.normalize();\n _y.crossVectors(_z, _x);\n te[0] = _x.x;\n te[4] = _y.x;\n te[8] = _z.x;\n te[1] = _x.y;\n te[5] = _y.y;\n te[9] = _z.y;\n te[2] = _x.z;\n te[6] = _y.z;\n te[10] = _z.z;\n return this;\n }\n multiply(m, n) {\n if (n !== void 0) {\n console.warn(\"THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.\");\n return this.multiplyMatrices(m, n);\n }\n return this.multiplyMatrices(this, m);\n }\n premultiply(m) {\n return this.multiplyMatrices(m, this);\n }\n multiplyMatrices(a, b) {\n const ae = a.elements;\n const be = b.elements;\n const te = this.elements;\n const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];\n const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];\n const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];\n const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];\n const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];\n const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];\n const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];\n const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n return this;\n }\n multiplyScalar(s) {\n const te = this.elements;\n te[0] *= s;\n te[4] *= s;\n te[8] *= s;\n te[12] *= s;\n te[1] *= s;\n te[5] *= s;\n te[9] *= s;\n te[13] *= s;\n te[2] *= s;\n te[6] *= s;\n te[10] *= s;\n te[14] *= s;\n te[3] *= s;\n te[7] *= s;\n te[11] *= s;\n te[15] *= s;\n return this;\n }\n determinant() {\n const te = this.elements;\n const n11 = te[0], n12 = te[4], n13 = te[8], n14 = te[12];\n const n21 = te[1], n22 = te[5], n23 = te[9], n24 = te[13];\n const n31 = te[2], n32 = te[6], n33 = te[10], n34 = te[14];\n const n41 = te[3], n42 = te[7], n43 = te[11], n44 = te[15];\n return n41 * (+n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34) + n42 * (+n11 * n23 * n34 - n11 * n24 * n33 + n14 * n21 * n33 - n13 * n21 * n34 + n13 * n24 * n31 - n14 * n23 * n31) + n43 * (+n11 * n24 * n32 - n11 * n22 * n34 - n14 * n21 * n32 + n12 * n21 * n34 + n14 * n22 * n31 - n12 * n24 * n31) + n44 * (-n13 * n22 * n31 - n11 * n23 * n32 + n11 * n22 * n33 + n13 * n21 * n32 - n12 * n21 * n33 + n12 * n23 * n31);\n }\n transpose() {\n const te = this.elements;\n let tmp2;\n tmp2 = te[1];\n te[1] = te[4];\n te[4] = tmp2;\n tmp2 = te[2];\n te[2] = te[8];\n te[8] = tmp2;\n tmp2 = te[6];\n te[6] = te[9];\n te[9] = tmp2;\n tmp2 = te[3];\n te[3] = te[12];\n te[12] = tmp2;\n tmp2 = te[7];\n te[7] = te[13];\n te[13] = tmp2;\n tmp2 = te[11];\n te[11] = te[14];\n te[14] = tmp2;\n return this;\n }\n setPosition(x, y, z) {\n const te = this.elements;\n if (x.isVector3) {\n te[12] = x.x;\n te[13] = x.y;\n te[14] = x.z;\n } else {\n te[12] = x;\n te[13] = y;\n te[14] = z;\n }\n return this;\n }\n invert() {\n const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n41 = te[3], n12 = te[4], n22 = te[5], n32 = te[6], n42 = te[7], n13 = te[8], n23 = te[9], n33 = te[10], n43 = te[11], n14 = te[12], n24 = te[13], n34 = te[14], n44 = te[15], t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n if (det === 0)\n return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n const detInv = 1 / det;\n te[0] = t11 * detInv;\n te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv;\n te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv;\n te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv;\n te[4] = t12 * detInv;\n te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv;\n te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv;\n te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv;\n te[8] = t13 * detInv;\n te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv;\n te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv;\n te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv;\n te[12] = t14 * detInv;\n te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv;\n te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv;\n te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv;\n return this;\n }\n scale(v) {\n const te = this.elements;\n const x = v.x, y = v.y, z = v.z;\n te[0] *= x;\n te[4] *= y;\n te[8] *= z;\n te[1] *= x;\n te[5] *= y;\n te[9] *= z;\n te[2] *= x;\n te[6] *= y;\n te[10] *= z;\n te[3] *= x;\n te[7] *= y;\n te[11] *= z;\n return this;\n }\n getMaxScaleOnAxis() {\n const te = this.elements;\n const scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2];\n const scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6];\n const scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10];\n return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n }\n makeTranslation(x, y, z) {\n this.set(1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1);\n return this;\n }\n makeRotationX(theta) {\n const c = Math.cos(theta), s = Math.sin(theta);\n this.set(1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1);\n return this;\n }\n makeRotationY(theta) {\n const c = Math.cos(theta), s = Math.sin(theta);\n this.set(c, 0, s, 0, 0, 1, 0, 0, -s, 0, c, 0, 0, 0, 0, 1);\n return this;\n }\n makeRotationZ(theta) {\n const c = Math.cos(theta), s = Math.sin(theta);\n this.set(c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n return this;\n }\n makeRotationAxis(axis, angle) {\n const c = Math.cos(angle);\n const s = Math.sin(angle);\n const t = 1 - c;\n const x = axis.x, y = axis.y, z = axis.z;\n const tx = t * x, ty = t * y;\n this.set(tx * x + c, tx * y - s * z, tx * z + s * y, 0, tx * y + s * z, ty * y + c, ty * z - s * x, 0, tx * z - s * y, ty * z + s * x, t * z * z + c, 0, 0, 0, 0, 1);\n return this;\n }\n makeScale(x, y, z) {\n this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1);\n return this;\n }\n makeShear(xy, xz, yx, yz, zx, zy) {\n this.set(1, yx, zx, 0, xy, 1, zy, 0, xz, yz, 1, 0, 0, 0, 0, 1);\n return this;\n }\n compose(position, quaternion, scale) {\n const te = this.elements;\n const x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n const x2 = x + x, y2 = y + y, z2 = z + z;\n const xx = x * x2, xy = x * y2, xz = x * z2;\n const yy = y * y2, yz = y * z2, zz = z * z2;\n const wx = w * x2, wy = w * y2, wz = w * z2;\n const sx = scale.x, sy = scale.y, sz = scale.z;\n te[0] = (1 - (yy + zz)) * sx;\n te[1] = (xy + wz) * sx;\n te[2] = (xz - wy) * sx;\n te[3] = 0;\n te[4] = (xy - wz) * sy;\n te[5] = (1 - (xx + zz)) * sy;\n te[6] = (yz + wx) * sy;\n te[7] = 0;\n te[8] = (xz + wy) * sz;\n te[9] = (yz - wx) * sz;\n te[10] = (1 - (xx + yy)) * sz;\n te[11] = 0;\n te[12] = position.x;\n te[13] = position.y;\n te[14] = position.z;\n te[15] = 1;\n return this;\n }\n decompose(position, quaternion, scale) {\n const te = this.elements;\n let sx = _v1$5.set(te[0], te[1], te[2]).length();\n const sy = _v1$5.set(te[4], te[5], te[6]).length();\n const sz = _v1$5.set(te[8], te[9], te[10]).length();\n const det = this.determinant();\n if (det < 0)\n sx = -sx;\n position.x = te[12];\n position.y = te[13];\n position.z = te[14];\n _m1$2.copy(this);\n const invSX = 1 / sx;\n const invSY = 1 / sy;\n const invSZ = 1 / sz;\n _m1$2.elements[0] *= invSX;\n _m1$2.elements[1] *= invSX;\n _m1$2.elements[2] *= invSX;\n _m1$2.elements[4] *= invSY;\n _m1$2.elements[5] *= invSY;\n _m1$2.elements[6] *= invSY;\n _m1$2.elements[8] *= invSZ;\n _m1$2.elements[9] *= invSZ;\n _m1$2.elements[10] *= invSZ;\n quaternion.setFromRotationMatrix(_m1$2);\n scale.x = sx;\n scale.y = sy;\n scale.z = sz;\n return this;\n }\n makePerspective(left, right, top, bottom, near, far) {\n if (far === void 0) {\n console.warn(\"THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.\");\n }\n const te = this.elements;\n const x = 2 * near / (right - left);\n const y = 2 * near / (top - bottom);\n const a = (right + left) / (right - left);\n const b = (top + bottom) / (top - bottom);\n const c = -(far + near) / (far - near);\n const d = -2 * far * near / (far - near);\n te[0] = x;\n te[4] = 0;\n te[8] = a;\n te[12] = 0;\n te[1] = 0;\n te[5] = y;\n te[9] = b;\n te[13] = 0;\n te[2] = 0;\n te[6] = 0;\n te[10] = c;\n te[14] = d;\n te[3] = 0;\n te[7] = 0;\n te[11] = -1;\n te[15] = 0;\n return this;\n }\n makeOrthographic(left, right, top, bottom, near, far) {\n const te = this.elements;\n const w = 1 / (right - left);\n const h = 1 / (top - bottom);\n const p = 1 / (far - near);\n const x = (right + left) * w;\n const y = (top + bottom) * h;\n const z = (far + near) * p;\n te[0] = 2 * w;\n te[4] = 0;\n te[8] = 0;\n te[12] = -x;\n te[1] = 0;\n te[5] = 2 * h;\n te[9] = 0;\n te[13] = -y;\n te[2] = 0;\n te[6] = 0;\n te[10] = -2 * p;\n te[14] = -z;\n te[3] = 0;\n te[7] = 0;\n te[11] = 0;\n te[15] = 1;\n return this;\n }\n equals(matrix) {\n const te = this.elements;\n const me = matrix.elements;\n for (let i = 0; i < 16; i++) {\n if (te[i] !== me[i])\n return false;\n }\n return true;\n }\n fromArray(array, offset = 0) {\n for (let i = 0; i < 16; i++) {\n this.elements[i] = array[i + offset];\n }\n return this;\n }\n toArray(array = [], offset = 0) {\n const te = this.elements;\n array[offset] = te[0];\n array[offset + 1] = te[1];\n array[offset + 2] = te[2];\n array[offset + 3] = te[3];\n array[offset + 4] = te[4];\n array[offset + 5] = te[5];\n array[offset + 6] = te[6];\n array[offset + 7] = te[7];\n array[offset + 8] = te[8];\n array[offset + 9] = te[9];\n array[offset + 10] = te[10];\n array[offset + 11] = te[11];\n array[offset + 12] = te[12];\n array[offset + 13] = te[13];\n array[offset + 14] = te[14];\n array[offset + 15] = te[15];\n return array;\n }\n}\nMatrix4.prototype.isMatrix4 = true;\nconst _v1$5 = /* @__PURE__ */ new Vector3();\nconst _m1$2 = /* @__PURE__ */ new Matrix4();\nconst _zero = /* @__PURE__ */ new Vector3(0, 0, 0);\nconst _one = /* @__PURE__ */ new Vector3(1, 1, 1);\nconst _x = /* @__PURE__ */ new Vector3();\nconst _y = /* @__PURE__ */ new Vector3();\nconst _z = /* @__PURE__ */ new Vector3();\nconst _matrix$1 = /* @__PURE__ */ new Matrix4();\nconst _quaternion$3 = /* @__PURE__ */ new Quaternion();\nclass Euler {\n constructor(x = 0, y = 0, z = 0, order = Euler.DefaultOrder) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._order = order;\n }\n get x() {\n return this._x;\n }\n set x(value) {\n this._x = value;\n this._onChangeCallback();\n }\n get y() {\n return this._y;\n }\n set y(value) {\n this._y = value;\n this._onChangeCallback();\n }\n get z() {\n return this._z;\n }\n set z(value) {\n this._z = value;\n this._onChangeCallback();\n }\n get order() {\n return this._order;\n }\n set order(value) {\n this._order = value;\n this._onChangeCallback();\n }\n set(x, y, z, order = this._order) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._order = order;\n this._onChangeCallback();\n return this;\n }\n clone() {\n return new this.constructor(this._x, this._y, this._z, this._order);\n }\n copy(euler) {\n this._x = euler._x;\n this._y = euler._y;\n this._z = euler._z;\n this._order = euler._order;\n this._onChangeCallback();\n return this;\n }\n setFromRotationMatrix(m, order = this._order, update = true) {\n const te = m.elements;\n const m11 = te[0], m12 = te[4], m13 = te[8];\n const m21 = te[1], m22 = te[5], m23 = te[9];\n const m31 = te[2], m32 = te[6], m33 = te[10];\n switch (order) {\n case \"XYZ\":\n this._y = Math.asin(clamp(m13, -1, 1));\n if (Math.abs(m13) < 0.9999999) {\n this._x = Math.atan2(-m23, m33);\n this._z = Math.atan2(-m12, m11);\n } else {\n this._x = Math.atan2(m32, m22);\n this._z = 0;\n }\n break;\n case \"YXZ\":\n this._x = Math.asin(-clamp(m23, -1, 1));\n if (Math.abs(m23) < 0.9999999) {\n this._y = Math.atan2(m13, m33);\n this._z = Math.atan2(m21, m22);\n } else {\n this._y = Math.atan2(-m31, m11);\n this._z = 0;\n }\n break;\n case \"ZXY\":\n this._x = Math.asin(clamp(m32, -1, 1));\n if (Math.abs(m32) < 0.9999999) {\n this._y = Math.atan2(-m31, m33);\n this._z = Math.atan2(-m12, m22);\n } else {\n this._y = 0;\n this._z = Math.atan2(m21, m11);\n }\n break;\n case \"ZYX\":\n this._y = Math.asin(-clamp(m31, -1, 1));\n if (Math.abs(m31) < 0.9999999) {\n this._x = Math.atan2(m32, m33);\n this._z = Math.atan2(m21, m11);\n } else {\n this._x = 0;\n this._z = Math.atan2(-m12, m22);\n }\n break;\n case \"YZX\":\n this._z = Math.asin(clamp(m21, -1, 1));\n if (Math.abs(m21) < 0.9999999) {\n this._x = Math.atan2(-m23, m22);\n this._y = Math.atan2(-m31, m11);\n } else {\n this._x = 0;\n this._y = Math.atan2(m13, m33);\n }\n break;\n case \"XZY\":\n this._z = Math.asin(-clamp(m12, -1, 1));\n if (Math.abs(m12) < 0.9999999) {\n this._x = Math.atan2(m32, m22);\n this._y = Math.atan2(m13, m11);\n } else {\n this._x = Math.atan2(-m23, m33);\n this._y = 0;\n }\n break;\n default:\n console.warn(\"THREE.Euler: .setFromRotationMatrix() encountered an unknown order: \" + order);\n }\n this._order = order;\n if (update === true)\n this._onChangeCallback();\n return this;\n }\n setFromQuaternion(q, order, update) {\n _matrix$1.makeRotationFromQuaternion(q);\n return this.setFromRotationMatrix(_matrix$1, order, update);\n }\n setFromVector3(v, order = this._order) {\n return this.set(v.x, v.y, v.z, order);\n }\n reorder(newOrder) {\n _quaternion$3.setFromEuler(this);\n return this.setFromQuaternion(_quaternion$3, newOrder);\n }\n equals(euler) {\n return euler._x === this._x && euler._y === this._y && euler._z === this._z && euler._order === this._order;\n }\n fromArray(array) {\n this._x = array[0];\n this._y = array[1];\n this._z = array[2];\n if (array[3] !== void 0)\n this._order = array[3];\n this._onChangeCallback();\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this._x;\n array[offset + 1] = this._y;\n array[offset + 2] = this._z;\n array[offset + 3] = this._order;\n return array;\n }\n toVector3(optionalResult) {\n if (optionalResult) {\n return optionalResult.set(this._x, this._y, this._z);\n } else {\n return new Vector3(this._x, this._y, this._z);\n }\n }\n _onChange(callback) {\n this._onChangeCallback = callback;\n return this;\n }\n _onChangeCallback() {\n }\n}\nEuler.prototype.isEuler = true;\nEuler.DefaultOrder = \"XYZ\";\nEuler.RotationOrders = [\"XYZ\", \"YZX\", \"ZXY\", \"XZY\", \"YXZ\", \"ZYX\"];\nclass Layers {\n constructor() {\n this.mask = 1 | 0;\n }\n set(channel) {\n this.mask = (1 << channel | 0) >>> 0;\n }\n enable(channel) {\n this.mask |= 1 << channel | 0;\n }\n enableAll() {\n this.mask = 4294967295 | 0;\n }\n toggle(channel) {\n this.mask ^= 1 << channel | 0;\n }\n disable(channel) {\n this.mask &= ~(1 << channel | 0);\n }\n disableAll() {\n this.mask = 0;\n }\n test(layers) {\n return (this.mask & layers.mask) !== 0;\n }\n isEnabled(channel) {\n return (this.mask & (1 << channel | 0)) !== 0;\n }\n}\nlet _object3DId = 0;\nconst _v1$4 = /* @__PURE__ */ new Vector3();\nconst _q1 = /* @__PURE__ */ new Quaternion();\nconst _m1$1 = /* @__PURE__ */ new Matrix4();\nconst _target = /* @__PURE__ */ new Vector3();\nconst _position$3 = /* @__PURE__ */ new Vector3();\nconst _scale$2 = /* @__PURE__ */ new Vector3();\nconst _quaternion$2 = /* @__PURE__ */ new Quaternion();\nconst _xAxis = /* @__PURE__ */ new Vector3(1, 0, 0);\nconst _yAxis = /* @__PURE__ */ new Vector3(0, 1, 0);\nconst _zAxis = /* @__PURE__ */ new Vector3(0, 0, 1);\nconst _addedEvent = {type: \"added\"};\nconst _removedEvent = {type: \"removed\"};\nclass Object3D extends EventDispatcher {\n constructor() {\n super();\n Object.defineProperty(this, \"id\", {value: _object3DId++});\n this.uuid = generateUUID();\n this.name = \"\";\n this.type = \"Object3D\";\n this.parent = null;\n this.children = [];\n this.up = Object3D.DefaultUp.clone();\n const position = new Vector3();\n const rotation = new Euler();\n const quaternion = new Quaternion();\n const scale = new Vector3(1, 1, 1);\n function onRotationChange() {\n quaternion.setFromEuler(rotation, false);\n }\n function onQuaternionChange() {\n rotation.setFromQuaternion(quaternion, void 0, false);\n }\n rotation._onChange(onRotationChange);\n quaternion._onChange(onQuaternionChange);\n Object.defineProperties(this, {\n position: {\n configurable: true,\n enumerable: true,\n value: position\n },\n rotation: {\n configurable: true,\n enumerable: true,\n value: rotation\n },\n quaternion: {\n configurable: true,\n enumerable: true,\n value: quaternion\n },\n scale: {\n configurable: true,\n enumerable: true,\n value: scale\n },\n modelViewMatrix: {\n value: new Matrix4()\n },\n normalMatrix: {\n value: new Matrix3()\n }\n });\n this.matrix = new Matrix4();\n this.matrixWorld = new Matrix4();\n this.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n this.matrixWorldNeedsUpdate = false;\n this.layers = new Layers();\n this.visible = true;\n this.castShadow = false;\n this.receiveShadow = false;\n this.frustumCulled = true;\n this.renderOrder = 0;\n this.animations = [];\n this.userData = {};\n }\n onBeforeRender() {\n }\n onAfterRender() {\n }\n applyMatrix4(matrix) {\n if (this.matrixAutoUpdate)\n this.updateMatrix();\n this.matrix.premultiply(matrix);\n this.matrix.decompose(this.position, this.quaternion, this.scale);\n }\n applyQuaternion(q) {\n this.quaternion.premultiply(q);\n return this;\n }\n setRotationFromAxisAngle(axis, angle) {\n this.quaternion.setFromAxisAngle(axis, angle);\n }\n setRotationFromEuler(euler) {\n this.quaternion.setFromEuler(euler, true);\n }\n setRotationFromMatrix(m) {\n this.quaternion.setFromRotationMatrix(m);\n }\n setRotationFromQuaternion(q) {\n this.quaternion.copy(q);\n }\n rotateOnAxis(axis, angle) {\n _q1.setFromAxisAngle(axis, angle);\n this.quaternion.multiply(_q1);\n return this;\n }\n rotateOnWorldAxis(axis, angle) {\n _q1.setFromAxisAngle(axis, angle);\n this.quaternion.premultiply(_q1);\n return this;\n }\n rotateX(angle) {\n return this.rotateOnAxis(_xAxis, angle);\n }\n rotateY(angle) {\n return this.rotateOnAxis(_yAxis, angle);\n }\n rotateZ(angle) {\n return this.rotateOnAxis(_zAxis, angle);\n }\n translateOnAxis(axis, distance) {\n _v1$4.copy(axis).applyQuaternion(this.quaternion);\n this.position.add(_v1$4.multiplyScalar(distance));\n return this;\n }\n translateX(distance) {\n return this.translateOnAxis(_xAxis, distance);\n }\n translateY(distance) {\n return this.translateOnAxis(_yAxis, distance);\n }\n translateZ(distance) {\n return this.translateOnAxis(_zAxis, distance);\n }\n localToWorld(vector) {\n return vector.applyMatrix4(this.matrixWorld);\n }\n worldToLocal(vector) {\n return vector.applyMatrix4(_m1$1.copy(this.matrixWorld).invert());\n }\n lookAt(x, y, z) {\n if (x.isVector3) {\n _target.copy(x);\n } else {\n _target.set(x, y, z);\n }\n const parent = this.parent;\n this.updateWorldMatrix(true, false);\n _position$3.setFromMatrixPosition(this.matrixWorld);\n if (this.isCamera || this.isLight) {\n _m1$1.lookAt(_position$3, _target, this.up);\n } else {\n _m1$1.lookAt(_target, _position$3, this.up);\n }\n this.quaternion.setFromRotationMatrix(_m1$1);\n if (parent) {\n _m1$1.extractRotation(parent.matrixWorld);\n _q1.setFromRotationMatrix(_m1$1);\n this.quaternion.premultiply(_q1.invert());\n }\n }\n add(object) {\n if (arguments.length > 1) {\n for (let i = 0; i < arguments.length; i++) {\n this.add(arguments[i]);\n }\n return this;\n }\n if (object === this) {\n console.error(\"THREE.Object3D.add: object can't be added as a child of itself.\", object);\n return this;\n }\n if (object && object.isObject3D) {\n if (object.parent !== null) {\n object.parent.remove(object);\n }\n object.parent = this;\n this.children.push(object);\n object.dispatchEvent(_addedEvent);\n } else {\n console.error(\"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object);\n }\n return this;\n }\n remove(object) {\n if (arguments.length > 1) {\n for (let i = 0; i < arguments.length; i++) {\n this.remove(arguments[i]);\n }\n return this;\n }\n const index = this.children.indexOf(object);\n if (index !== -1) {\n object.parent = null;\n this.children.splice(index, 1);\n object.dispatchEvent(_removedEvent);\n }\n return this;\n }\n removeFromParent() {\n const parent = this.parent;\n if (parent !== null) {\n parent.remove(this);\n }\n return this;\n }\n clear() {\n for (let i = 0; i < this.children.length; i++) {\n const object = this.children[i];\n object.parent = null;\n object.dispatchEvent(_removedEvent);\n }\n this.children.length = 0;\n return this;\n }\n attach(object) {\n this.updateWorldMatrix(true, false);\n _m1$1.copy(this.matrixWorld).invert();\n if (object.parent !== null) {\n object.parent.updateWorldMatrix(true, false);\n _m1$1.multiply(object.parent.matrixWorld);\n }\n object.applyMatrix4(_m1$1);\n this.add(object);\n object.updateWorldMatrix(false, true);\n return this;\n }\n getObjectById(id) {\n return this.getObjectByProperty(\"id\", id);\n }\n getObjectByName(name) {\n return this.getObjectByProperty(\"name\", name);\n }\n getObjectByProperty(name, value) {\n if (this[name] === value)\n return this;\n for (let i = 0, l = this.children.length; i < l; i++) {\n const child = this.children[i];\n const object = child.getObjectByProperty(name, value);\n if (object !== void 0) {\n return object;\n }\n }\n return void 0;\n }\n getWorldPosition(target) {\n this.updateWorldMatrix(true, false);\n return target.setFromMatrixPosition(this.matrixWorld);\n }\n getWorldQuaternion(target) {\n this.updateWorldMatrix(true, false);\n this.matrixWorld.decompose(_position$3, target, _scale$2);\n return target;\n }\n getWorldScale(target) {\n this.updateWorldMatrix(true, false);\n this.matrixWorld.decompose(_position$3, _quaternion$2, target);\n return target;\n }\n getWorldDirection(target) {\n this.updateWorldMatrix(true, false);\n const e = this.matrixWorld.elements;\n return target.set(e[8], e[9], e[10]).normalize();\n }\n raycast() {\n }\n traverse(callback) {\n callback(this);\n const children = this.children;\n for (let i = 0, l = children.length; i < l; i++) {\n children[i].traverse(callback);\n }\n }\n traverseVisible(callback) {\n if (this.visible === false)\n return;\n callback(this);\n const children = this.children;\n for (let i = 0, l = children.length; i < l; i++) {\n children[i].traverseVisible(callback);\n }\n }\n traverseAncestors(callback) {\n const parent = this.parent;\n if (parent !== null) {\n callback(parent);\n parent.traverseAncestors(callback);\n }\n }\n updateMatrix() {\n this.matrix.compose(this.position, this.quaternion, this.scale);\n this.matrixWorldNeedsUpdate = true;\n }\n updateMatrixWorld(force) {\n if (this.matrixAutoUpdate)\n this.updateMatrix();\n if (this.matrixWorldNeedsUpdate || force) {\n if (this.parent === null) {\n this.matrixWorld.copy(this.matrix);\n } else {\n this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n }\n this.matrixWorldNeedsUpdate = false;\n force = true;\n }\n const children = this.children;\n for (let i = 0, l = children.length; i < l; i++) {\n children[i].updateMatrixWorld(force);\n }\n }\n updateWorldMatrix(updateParents, updateChildren) {\n const parent = this.parent;\n if (updateParents === true && parent !== null) {\n parent.updateWorldMatrix(true, false);\n }\n if (this.matrixAutoUpdate)\n this.updateMatrix();\n if (this.parent === null) {\n this.matrixWorld.copy(this.matrix);\n } else {\n this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n }\n if (updateChildren === true) {\n const children = this.children;\n for (let i = 0, l = children.length; i < l; i++) {\n children[i].updateWorldMatrix(false, true);\n }\n }\n }\n toJSON(meta) {\n const isRootObject = meta === void 0 || typeof meta === \"string\";\n const output = {};\n if (isRootObject) {\n meta = {\n geometries: {},\n materials: {},\n textures: {},\n images: {},\n shapes: {},\n skeletons: {},\n animations: {}\n };\n output.metadata = {\n version: 4.5,\n type: \"Object\",\n generator: \"Object3D.toJSON\"\n };\n }\n const object = {};\n object.uuid = this.uuid;\n object.type = this.type;\n if (this.name !== \"\")\n object.name = this.name;\n if (this.castShadow === true)\n object.castShadow = true;\n if (this.receiveShadow === true)\n object.receiveShadow = true;\n if (this.visible === false)\n object.visible = false;\n if (this.frustumCulled === false)\n object.frustumCulled = false;\n if (this.renderOrder !== 0)\n object.renderOrder = this.renderOrder;\n if (JSON.stringify(this.userData) !== \"{}\")\n object.userData = this.userData;\n object.layers = this.layers.mask;\n object.matrix = this.matrix.toArray();\n if (this.matrixAutoUpdate === false)\n object.matrixAutoUpdate = false;\n if (this.isInstancedMesh) {\n object.type = \"InstancedMesh\";\n object.count = this.count;\n object.instanceMatrix = this.instanceMatrix.toJSON();\n if (this.instanceColor !== null)\n object.instanceColor = this.instanceColor.toJSON();\n }\n function serialize(library, element) {\n if (library[element.uuid] === void 0) {\n library[element.uuid] = element.toJSON(meta);\n }\n return element.uuid;\n }\n if (this.isScene) {\n if (this.background) {\n if (this.background.isColor) {\n object.background = this.background.toJSON();\n } else if (this.background.isTexture) {\n object.background = this.background.toJSON(meta).uuid;\n }\n }\n if (this.environment && this.environment.isTexture) {\n object.environment = this.environment.toJSON(meta).uuid;\n }\n } else if (this.isMesh || this.isLine || this.isPoints) {\n object.geometry = serialize(meta.geometries, this.geometry);\n const parameters = this.geometry.parameters;\n if (parameters !== void 0 && parameters.shapes !== void 0) {\n const shapes = parameters.shapes;\n if (Array.isArray(shapes)) {\n for (let i = 0, l = shapes.length; i < l; i++) {\n const shape = shapes[i];\n serialize(meta.shapes, shape);\n }\n } else {\n serialize(meta.shapes, shapes);\n }\n }\n }\n if (this.isSkinnedMesh) {\n object.bindMode = this.bindMode;\n object.bindMatrix = this.bindMatrix.toArray();\n if (this.skeleton !== void 0) {\n serialize(meta.skeletons, this.skeleton);\n object.skeleton = this.skeleton.uuid;\n }\n }\n if (this.material !== void 0) {\n if (Array.isArray(this.material)) {\n const uuids = [];\n for (let i = 0, l = this.material.length; i < l; i++) {\n uuids.push(serialize(meta.materials, this.material[i]));\n }\n object.material = uuids;\n } else {\n object.material = serialize(meta.materials, this.material);\n }\n }\n if (this.children.length > 0) {\n object.children = [];\n for (let i = 0; i < this.children.length; i++) {\n object.children.push(this.children[i].toJSON(meta).object);\n }\n }\n if (this.animations.length > 0) {\n object.animations = [];\n for (let i = 0; i < this.animations.length; i++) {\n const animation = this.animations[i];\n object.animations.push(serialize(meta.animations, animation));\n }\n }\n if (isRootObject) {\n const geometries = extractFromCache(meta.geometries);\n const materials = extractFromCache(meta.materials);\n const textures = extractFromCache(meta.textures);\n const images = extractFromCache(meta.images);\n const shapes = extractFromCache(meta.shapes);\n const skeletons = extractFromCache(meta.skeletons);\n const animations = extractFromCache(meta.animations);\n if (geometries.length > 0)\n output.geometries = geometries;\n if (materials.length > 0)\n output.materials = materials;\n if (textures.length > 0)\n output.textures = textures;\n if (images.length > 0)\n output.images = images;\n if (shapes.length > 0)\n output.shapes = shapes;\n if (skeletons.length > 0)\n output.skeletons = skeletons;\n if (animations.length > 0)\n output.animations = animations;\n }\n output.object = object;\n return output;\n function extractFromCache(cache) {\n const values = [];\n for (const key in cache) {\n const data = cache[key];\n delete data.metadata;\n values.push(data);\n }\n return values;\n }\n }\n clone(recursive) {\n return new this.constructor().copy(this, recursive);\n }\n copy(source, recursive = true) {\n this.name = source.name;\n this.up.copy(source.up);\n this.position.copy(source.position);\n this.rotation.order = source.rotation.order;\n this.quaternion.copy(source.quaternion);\n this.scale.copy(source.scale);\n this.matrix.copy(source.matrix);\n this.matrixWorld.copy(source.matrixWorld);\n this.matrixAutoUpdate = source.matrixAutoUpdate;\n this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n this.layers.mask = source.layers.mask;\n this.visible = source.visible;\n this.castShadow = source.castShadow;\n this.receiveShadow = source.receiveShadow;\n this.frustumCulled = source.frustumCulled;\n this.renderOrder = source.renderOrder;\n this.userData = JSON.parse(JSON.stringify(source.userData));\n if (recursive === true) {\n for (let i = 0; i < source.children.length; i++) {\n const child = source.children[i];\n this.add(child.clone());\n }\n }\n return this;\n }\n}\nObject3D.DefaultUp = new Vector3(0, 1, 0);\nObject3D.DefaultMatrixAutoUpdate = true;\nObject3D.prototype.isObject3D = true;\nconst _v0$1 = /* @__PURE__ */ new Vector3();\nconst _v1$3 = /* @__PURE__ */ new Vector3();\nconst _v2$2 = /* @__PURE__ */ new Vector3();\nconst _v3$1 = /* @__PURE__ */ new Vector3();\nconst _vab = /* @__PURE__ */ new Vector3();\nconst _vac = /* @__PURE__ */ new Vector3();\nconst _vbc = /* @__PURE__ */ new Vector3();\nconst _vap = /* @__PURE__ */ new Vector3();\nconst _vbp = /* @__PURE__ */ new Vector3();\nconst _vcp = /* @__PURE__ */ new Vector3();\nclass Triangle {\n constructor(a = new Vector3(), b = new Vector3(), c = new Vector3()) {\n this.a = a;\n this.b = b;\n this.c = c;\n }\n static getNormal(a, b, c, target) {\n target.subVectors(c, b);\n _v0$1.subVectors(a, b);\n target.cross(_v0$1);\n const targetLengthSq = target.lengthSq();\n if (targetLengthSq > 0) {\n return target.multiplyScalar(1 / Math.sqrt(targetLengthSq));\n }\n return target.set(0, 0, 0);\n }\n static getBarycoord(point, a, b, c, target) {\n _v0$1.subVectors(c, a);\n _v1$3.subVectors(b, a);\n _v2$2.subVectors(point, a);\n const dot00 = _v0$1.dot(_v0$1);\n const dot01 = _v0$1.dot(_v1$3);\n const dot02 = _v0$1.dot(_v2$2);\n const dot11 = _v1$3.dot(_v1$3);\n const dot12 = _v1$3.dot(_v2$2);\n const denom = dot00 * dot11 - dot01 * dot01;\n if (denom === 0) {\n return target.set(-2, -1, -1);\n }\n const invDenom = 1 / denom;\n const u = (dot11 * dot02 - dot01 * dot12) * invDenom;\n const v = (dot00 * dot12 - dot01 * dot02) * invDenom;\n return target.set(1 - u - v, v, u);\n }\n static containsPoint(point, a, b, c) {\n this.getBarycoord(point, a, b, c, _v3$1);\n return _v3$1.x >= 0 && _v3$1.y >= 0 && _v3$1.x + _v3$1.y <= 1;\n }\n static getUV(point, p1, p2, p3, uv1, uv2, uv3, target) {\n this.getBarycoord(point, p1, p2, p3, _v3$1);\n target.set(0, 0);\n target.addScaledVector(uv1, _v3$1.x);\n target.addScaledVector(uv2, _v3$1.y);\n target.addScaledVector(uv3, _v3$1.z);\n return target;\n }\n static isFrontFacing(a, b, c, direction) {\n _v0$1.subVectors(c, b);\n _v1$3.subVectors(a, b);\n return _v0$1.cross(_v1$3).dot(direction) < 0 ? true : false;\n }\n set(a, b, c) {\n this.a.copy(a);\n this.b.copy(b);\n this.c.copy(c);\n return this;\n }\n setFromPointsAndIndices(points, i0, i1, i2) {\n this.a.copy(points[i0]);\n this.b.copy(points[i1]);\n this.c.copy(points[i2]);\n return this;\n }\n setFromAttributeAndIndices(attribute, i0, i1, i2) {\n this.a.fromBufferAttribute(attribute, i0);\n this.b.fromBufferAttribute(attribute, i1);\n this.c.fromBufferAttribute(attribute, i2);\n return this;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(triangle) {\n this.a.copy(triangle.a);\n this.b.copy(triangle.b);\n this.c.copy(triangle.c);\n return this;\n }\n getArea() {\n _v0$1.subVectors(this.c, this.b);\n _v1$3.subVectors(this.a, this.b);\n return _v0$1.cross(_v1$3).length() * 0.5;\n }\n getMidpoint(target) {\n return target.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3);\n }\n getNormal(target) {\n return Triangle.getNormal(this.a, this.b, this.c, target);\n }\n getPlane(target) {\n return target.setFromCoplanarPoints(this.a, this.b, this.c);\n }\n getBarycoord(point, target) {\n return Triangle.getBarycoord(point, this.a, this.b, this.c, target);\n }\n getUV(point, uv1, uv2, uv3, target) {\n return Triangle.getUV(point, this.a, this.b, this.c, uv1, uv2, uv3, target);\n }\n containsPoint(point) {\n return Triangle.containsPoint(point, this.a, this.b, this.c);\n }\n isFrontFacing(direction) {\n return Triangle.isFrontFacing(this.a, this.b, this.c, direction);\n }\n intersectsBox(box) {\n return box.intersectsTriangle(this);\n }\n closestPointToPoint(p, target) {\n const a = this.a, b = this.b, c = this.c;\n let v, w;\n _vab.subVectors(b, a);\n _vac.subVectors(c, a);\n _vap.subVectors(p, a);\n const d1 = _vab.dot(_vap);\n const d2 = _vac.dot(_vap);\n if (d1 <= 0 && d2 <= 0) {\n return target.copy(a);\n }\n _vbp.subVectors(p, b);\n const d3 = _vab.dot(_vbp);\n const d4 = _vac.dot(_vbp);\n if (d3 >= 0 && d4 <= d3) {\n return target.copy(b);\n }\n const vc = d1 * d4 - d3 * d2;\n if (vc <= 0 && d1 >= 0 && d3 <= 0) {\n v = d1 / (d1 - d3);\n return target.copy(a).addScaledVector(_vab, v);\n }\n _vcp.subVectors(p, c);\n const d5 = _vab.dot(_vcp);\n const d6 = _vac.dot(_vcp);\n if (d6 >= 0 && d5 <= d6) {\n return target.copy(c);\n }\n const vb = d5 * d2 - d1 * d6;\n if (vb <= 0 && d2 >= 0 && d6 <= 0) {\n w = d2 / (d2 - d6);\n return target.copy(a).addScaledVector(_vac, w);\n }\n const va = d3 * d6 - d5 * d4;\n if (va <= 0 && d4 - d3 >= 0 && d5 - d6 >= 0) {\n _vbc.subVectors(c, b);\n w = (d4 - d3) / (d4 - d3 + (d5 - d6));\n return target.copy(b).addScaledVector(_vbc, w);\n }\n const denom = 1 / (va + vb + vc);\n v = vb * denom;\n w = vc * denom;\n return target.copy(a).addScaledVector(_vab, v).addScaledVector(_vac, w);\n }\n equals(triangle) {\n return triangle.a.equals(this.a) && triangle.b.equals(this.b) && triangle.c.equals(this.c);\n }\n}\nlet materialId = 0;\nclass Material extends EventDispatcher {\n constructor() {\n super();\n Object.defineProperty(this, \"id\", {value: materialId++});\n this.uuid = generateUUID();\n this.name = \"\";\n this.type = \"Material\";\n this.fog = true;\n this.blending = NormalBlending;\n this.side = FrontSide;\n this.vertexColors = false;\n this.opacity = 1;\n this.format = RGBAFormat;\n this.transparent = false;\n this.blendSrc = SrcAlphaFactor;\n this.blendDst = OneMinusSrcAlphaFactor;\n this.blendEquation = AddEquation;\n this.blendSrcAlpha = null;\n this.blendDstAlpha = null;\n this.blendEquationAlpha = null;\n this.depthFunc = LessEqualDepth;\n this.depthTest = true;\n this.depthWrite = true;\n this.stencilWriteMask = 255;\n this.stencilFunc = AlwaysStencilFunc;\n this.stencilRef = 0;\n this.stencilFuncMask = 255;\n this.stencilFail = KeepStencilOp;\n this.stencilZFail = KeepStencilOp;\n this.stencilZPass = KeepStencilOp;\n this.stencilWrite = false;\n this.clippingPlanes = null;\n this.clipIntersection = false;\n this.clipShadows = false;\n this.shadowSide = null;\n this.colorWrite = true;\n this.precision = null;\n this.polygonOffset = false;\n this.polygonOffsetFactor = 0;\n this.polygonOffsetUnits = 0;\n this.dithering = false;\n this.alphaToCoverage = false;\n this.premultipliedAlpha = false;\n this.visible = true;\n this.toneMapped = true;\n this.userData = {};\n this.version = 0;\n this._alphaTest = 0;\n }\n get alphaTest() {\n return this._alphaTest;\n }\n set alphaTest(value) {\n if (this._alphaTest > 0 !== value > 0) {\n this.version++;\n }\n this._alphaTest = value;\n }\n onBuild() {\n }\n onBeforeRender() {\n }\n onBeforeCompile() {\n }\n customProgramCacheKey() {\n return this.onBeforeCompile.toString();\n }\n setValues(values) {\n if (values === void 0)\n return;\n for (const key in values) {\n const newValue = values[key];\n if (newValue === void 0) {\n console.warn(\"THREE.Material: '\" + key + \"' parameter is undefined.\");\n continue;\n }\n if (key === \"shading\") {\n console.warn(\"THREE.\" + this.type + \": .shading has been removed. Use the boolean .flatShading instead.\");\n this.flatShading = newValue === FlatShading ? true : false;\n continue;\n }\n const currentValue = this[key];\n if (currentValue === void 0) {\n console.warn(\"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\");\n continue;\n }\n if (currentValue && currentValue.isColor) {\n currentValue.set(newValue);\n } else if (currentValue && currentValue.isVector3 && (newValue && newValue.isVector3)) {\n currentValue.copy(newValue);\n } else {\n this[key] = newValue;\n }\n }\n }\n toJSON(meta) {\n const isRoot = meta === void 0 || typeof meta === \"string\";\n if (isRoot) {\n meta = {\n textures: {},\n images: {}\n };\n }\n const data = {\n metadata: {\n version: 4.5,\n type: \"Material\",\n generator: \"Material.toJSON\"\n }\n };\n data.uuid = this.uuid;\n data.type = this.type;\n if (this.name !== \"\")\n data.name = this.name;\n if (this.color && this.color.isColor)\n data.color = this.color.getHex();\n if (this.roughness !== void 0)\n data.roughness = this.roughness;\n if (this.metalness !== void 0)\n data.metalness = this.metalness;\n if (this.sheen !== void 0)\n data.sheen = this.sheen;\n if (this.sheenColor && this.sheenColor.isColor)\n data.sheenColor = this.sheenColor.getHex();\n if (this.sheenRoughness !== void 0)\n data.sheenRoughness = this.sheenRoughness;\n if (this.emissive && this.emissive.isColor)\n data.emissive = this.emissive.getHex();\n if (this.emissiveIntensity && this.emissiveIntensity !== 1)\n data.emissiveIntensity = this.emissiveIntensity;\n if (this.specular && this.specular.isColor)\n data.specular = this.specular.getHex();\n if (this.specularIntensity !== void 0)\n data.specularIntensity = this.specularIntensity;\n if (this.specularColor && this.specularColor.isColor)\n data.specularColor = this.specularColor.getHex();\n if (this.shininess !== void 0)\n data.shininess = this.shininess;\n if (this.clearcoat !== void 0)\n data.clearcoat = this.clearcoat;\n if (this.clearcoatRoughness !== void 0)\n data.clearcoatRoughness = this.clearcoatRoughness;\n if (this.clearcoatMap && this.clearcoatMap.isTexture) {\n data.clearcoatMap = this.clearcoatMap.toJSON(meta).uuid;\n }\n if (this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture) {\n data.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(meta).uuid;\n }\n if (this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture) {\n data.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(meta).uuid;\n data.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n }\n if (this.map && this.map.isTexture)\n data.map = this.map.toJSON(meta).uuid;\n if (this.matcap && this.matcap.isTexture)\n data.matcap = this.matcap.toJSON(meta).uuid;\n if (this.alphaMap && this.alphaMap.isTexture)\n data.alphaMap = this.alphaMap.toJSON(meta).uuid;\n if (this.lightMap && this.lightMap.isTexture) {\n data.lightMap = this.lightMap.toJSON(meta).uuid;\n data.lightMapIntensity = this.lightMapIntensity;\n }\n if (this.aoMap && this.aoMap.isTexture) {\n data.aoMap = this.aoMap.toJSON(meta).uuid;\n data.aoMapIntensity = this.aoMapIntensity;\n }\n if (this.bumpMap && this.bumpMap.isTexture) {\n data.bumpMap = this.bumpMap.toJSON(meta).uuid;\n data.bumpScale = this.bumpScale;\n }\n if (this.normalMap && this.normalMap.isTexture) {\n data.normalMap = this.normalMap.toJSON(meta).uuid;\n data.normalMapType = this.normalMapType;\n data.normalScale = this.normalScale.toArray();\n }\n if (this.displacementMap && this.displacementMap.isTexture) {\n data.displacementMap = this.displacementMap.toJSON(meta).uuid;\n data.displacementScale = this.displacementScale;\n data.displacementBias = this.displacementBias;\n }\n if (this.roughnessMap && this.roughnessMap.isTexture)\n data.roughnessMap = this.roughnessMap.toJSON(meta).uuid;\n if (this.metalnessMap && this.metalnessMap.isTexture)\n data.metalnessMap = this.metalnessMap.toJSON(meta).uuid;\n if (this.emissiveMap && this.emissiveMap.isTexture)\n data.emissiveMap = this.emissiveMap.toJSON(meta).uuid;\n if (this.specularMap && this.specularMap.isTexture)\n data.specularMap = this.specularMap.toJSON(meta).uuid;\n if (this.specularIntensityMap && this.specularIntensityMap.isTexture)\n data.specularIntensityMap = this.specularIntensityMap.toJSON(meta).uuid;\n if (this.specularColorMap && this.specularColorMap.isTexture)\n data.specularColorMap = this.specularColorMap.toJSON(meta).uuid;\n if (this.envMap && this.envMap.isTexture) {\n data.envMap = this.envMap.toJSON(meta).uuid;\n if (this.combine !== void 0)\n data.combine = this.combine;\n }\n if (this.envMapIntensity !== void 0)\n data.envMapIntensity = this.envMapIntensity;\n if (this.reflectivity !== void 0)\n data.reflectivity = this.reflectivity;\n if (this.refractionRatio !== void 0)\n data.refractionRatio = this.refractionRatio;\n if (this.gradientMap && this.gradientMap.isTexture) {\n data.gradientMap = this.gradientMap.toJSON(meta).uuid;\n }\n if (this.transmission !== void 0)\n data.transmission = this.transmission;\n if (this.transmissionMap && this.transmissionMap.isTexture)\n data.transmissionMap = this.transmissionMap.toJSON(meta).uuid;\n if (this.thickness !== void 0)\n data.thickness = this.thickness;\n if (this.thicknessMap && this.thicknessMap.isTexture)\n data.thicknessMap = this.thicknessMap.toJSON(meta).uuid;\n if (this.attenuationDistance !== void 0)\n data.attenuationDistance = this.attenuationDistance;\n if (this.attenuationColor !== void 0)\n data.attenuationColor = this.attenuationColor.getHex();\n if (this.size !== void 0)\n data.size = this.size;\n if (this.shadowSide !== null)\n data.shadowSide = this.shadowSide;\n if (this.sizeAttenuation !== void 0)\n data.sizeAttenuation = this.sizeAttenuation;\n if (this.blending !== NormalBlending)\n data.blending = this.blending;\n if (this.side !== FrontSide)\n data.side = this.side;\n if (this.vertexColors)\n data.vertexColors = true;\n if (this.opacity < 1)\n data.opacity = this.opacity;\n if (this.format !== RGBAFormat)\n data.format = this.format;\n if (this.transparent === true)\n data.transparent = this.transparent;\n data.depthFunc = this.depthFunc;\n data.depthTest = this.depthTest;\n data.depthWrite = this.depthWrite;\n data.colorWrite = this.colorWrite;\n data.stencilWrite = this.stencilWrite;\n data.stencilWriteMask = this.stencilWriteMask;\n data.stencilFunc = this.stencilFunc;\n data.stencilRef = this.stencilRef;\n data.stencilFuncMask = this.stencilFuncMask;\n data.stencilFail = this.stencilFail;\n data.stencilZFail = this.stencilZFail;\n data.stencilZPass = this.stencilZPass;\n if (this.rotation && this.rotation !== 0)\n data.rotation = this.rotation;\n if (this.polygonOffset === true)\n data.polygonOffset = true;\n if (this.polygonOffsetFactor !== 0)\n data.polygonOffsetFactor = this.polygonOffsetFactor;\n if (this.polygonOffsetUnits !== 0)\n data.polygonOffsetUnits = this.polygonOffsetUnits;\n if (this.linewidth && this.linewidth !== 1)\n data.linewidth = this.linewidth;\n if (this.dashSize !== void 0)\n data.dashSize = this.dashSize;\n if (this.gapSize !== void 0)\n data.gapSize = this.gapSize;\n if (this.scale !== void 0)\n data.scale = this.scale;\n if (this.dithering === true)\n data.dithering = true;\n if (this.alphaTest > 0)\n data.alphaTest = this.alphaTest;\n if (this.alphaToCoverage === true)\n data.alphaToCoverage = this.alphaToCoverage;\n if (this.premultipliedAlpha === true)\n data.premultipliedAlpha = this.premultipliedAlpha;\n if (this.wireframe === true)\n data.wireframe = this.wireframe;\n if (this.wireframeLinewidth > 1)\n data.wireframeLinewidth = this.wireframeLinewidth;\n if (this.wireframeLinecap !== \"round\")\n data.wireframeLinecap = this.wireframeLinecap;\n if (this.wireframeLinejoin !== \"round\")\n data.wireframeLinejoin = this.wireframeLinejoin;\n if (this.flatShading === true)\n data.flatShading = this.flatShading;\n if (this.visible === false)\n data.visible = false;\n if (this.toneMapped === false)\n data.toneMapped = false;\n if (JSON.stringify(this.userData) !== \"{}\")\n data.userData = this.userData;\n function extractFromCache(cache) {\n const values = [];\n for (const key in cache) {\n const data2 = cache[key];\n delete data2.metadata;\n values.push(data2);\n }\n return values;\n }\n if (isRoot) {\n const textures = extractFromCache(meta.textures);\n const images = extractFromCache(meta.images);\n if (textures.length > 0)\n data.textures = textures;\n if (images.length > 0)\n data.images = images;\n }\n return data;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(source) {\n this.name = source.name;\n this.fog = source.fog;\n this.blending = source.blending;\n this.side = source.side;\n this.vertexColors = source.vertexColors;\n this.opacity = source.opacity;\n this.format = source.format;\n this.transparent = source.transparent;\n this.blendSrc = source.blendSrc;\n this.blendDst = source.blendDst;\n this.blendEquation = source.blendEquation;\n this.blendSrcAlpha = source.blendSrcAlpha;\n this.blendDstAlpha = source.blendDstAlpha;\n this.blendEquationAlpha = source.blendEquationAlpha;\n this.depthFunc = source.depthFunc;\n this.depthTest = source.depthTest;\n this.depthWrite = source.depthWrite;\n this.stencilWriteMask = source.stencilWriteMask;\n this.stencilFunc = source.stencilFunc;\n this.stencilRef = source.stencilRef;\n this.stencilFuncMask = source.stencilFuncMask;\n this.stencilFail = source.stencilFail;\n this.stencilZFail = source.stencilZFail;\n this.stencilZPass = source.stencilZPass;\n this.stencilWrite = source.stencilWrite;\n const srcPlanes = source.clippingPlanes;\n let dstPlanes = null;\n if (srcPlanes !== null) {\n const n = srcPlanes.length;\n dstPlanes = new Array(n);\n for (let i = 0; i !== n; ++i) {\n dstPlanes[i] = srcPlanes[i].clone();\n }\n }\n this.clippingPlanes = dstPlanes;\n this.clipIntersection = source.clipIntersection;\n this.clipShadows = source.clipShadows;\n this.shadowSide = source.shadowSide;\n this.colorWrite = source.colorWrite;\n this.precision = source.precision;\n this.polygonOffset = source.polygonOffset;\n this.polygonOffsetFactor = source.polygonOffsetFactor;\n this.polygonOffsetUnits = source.polygonOffsetUnits;\n this.dithering = source.dithering;\n this.alphaTest = source.alphaTest;\n this.alphaToCoverage = source.alphaToCoverage;\n this.premultipliedAlpha = source.premultipliedAlpha;\n this.visible = source.visible;\n this.toneMapped = source.toneMapped;\n this.userData = JSON.parse(JSON.stringify(source.userData));\n return this;\n }\n dispose() {\n this.dispatchEvent({type: \"dispose\"});\n }\n set needsUpdate(value) {\n if (value === true)\n this.version++;\n }\n}\nMaterial.prototype.isMaterial = true;\nconst _colorKeywords = {\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n};\nconst _hslA = {h: 0, s: 0, l: 0};\nconst _hslB = {h: 0, s: 0, l: 0};\nfunction hue2rgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * 6 * (2 / 3 - t);\n return p;\n}\nfunction SRGBToLinear(c) {\n return c < 0.04045 ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4);\n}\nfunction LinearToSRGB(c) {\n return c < 31308e-7 ? c * 12.92 : 1.055 * Math.pow(c, 0.41666) - 0.055;\n}\nclass Color {\n constructor(r, g, b) {\n if (g === void 0 && b === void 0) {\n return this.set(r);\n }\n return this.setRGB(r, g, b);\n }\n set(value) {\n if (value && value.isColor) {\n this.copy(value);\n } else if (typeof value === \"number\") {\n this.setHex(value);\n } else if (typeof value === \"string\") {\n this.setStyle(value);\n }\n return this;\n }\n setScalar(scalar) {\n this.r = scalar;\n this.g = scalar;\n this.b = scalar;\n return this;\n }\n setHex(hex) {\n hex = Math.floor(hex);\n this.r = (hex >> 16 & 255) / 255;\n this.g = (hex >> 8 & 255) / 255;\n this.b = (hex & 255) / 255;\n return this;\n }\n setRGB(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n return this;\n }\n setHSL(h, s, l) {\n h = euclideanModulo(h, 1);\n s = clamp(s, 0, 1);\n l = clamp(l, 0, 1);\n if (s === 0) {\n this.r = this.g = this.b = l;\n } else {\n const p = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n const q = 2 * l - p;\n this.r = hue2rgb(q, p, h + 1 / 3);\n this.g = hue2rgb(q, p, h);\n this.b = hue2rgb(q, p, h - 1 / 3);\n }\n return this;\n }\n setStyle(style) {\n function handleAlpha(string) {\n if (string === void 0)\n return;\n if (parseFloat(string) < 1) {\n console.warn(\"THREE.Color: Alpha component of \" + style + \" will be ignored.\");\n }\n }\n let m;\n if (m = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec(style)) {\n let color;\n const name = m[1];\n const components = m[2];\n switch (name) {\n case \"rgb\":\n case \"rgba\":\n if (color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n this.r = Math.min(255, parseInt(color[1], 10)) / 255;\n this.g = Math.min(255, parseInt(color[2], 10)) / 255;\n this.b = Math.min(255, parseInt(color[3], 10)) / 255;\n handleAlpha(color[4]);\n return this;\n }\n if (color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n this.r = Math.min(100, parseInt(color[1], 10)) / 100;\n this.g = Math.min(100, parseInt(color[2], 10)) / 100;\n this.b = Math.min(100, parseInt(color[3], 10)) / 100;\n handleAlpha(color[4]);\n return this;\n }\n break;\n case \"hsl\":\n case \"hsla\":\n if (color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n const h = parseFloat(color[1]) / 360;\n const s = parseInt(color[2], 10) / 100;\n const l = parseInt(color[3], 10) / 100;\n handleAlpha(color[4]);\n return this.setHSL(h, s, l);\n }\n break;\n }\n } else if (m = /^\\#([A-Fa-f\\d]+)$/.exec(style)) {\n const hex = m[1];\n const size = hex.length;\n if (size === 3) {\n this.r = parseInt(hex.charAt(0) + hex.charAt(0), 16) / 255;\n this.g = parseInt(hex.charAt(1) + hex.charAt(1), 16) / 255;\n this.b = parseInt(hex.charAt(2) + hex.charAt(2), 16) / 255;\n return this;\n } else if (size === 6) {\n this.r = parseInt(hex.charAt(0) + hex.charAt(1), 16) / 255;\n this.g = parseInt(hex.charAt(2) + hex.charAt(3), 16) / 255;\n this.b = parseInt(hex.charAt(4) + hex.charAt(5), 16) / 255;\n return this;\n }\n }\n if (style && style.length > 0) {\n return this.setColorName(style);\n }\n return this;\n }\n setColorName(style) {\n const hex = _colorKeywords[style.toLowerCase()];\n if (hex !== void 0) {\n this.setHex(hex);\n } else {\n console.warn(\"THREE.Color: Unknown color \" + style);\n }\n return this;\n }\n clone() {\n return new this.constructor(this.r, this.g, this.b);\n }\n copy(color) {\n this.r = color.r;\n this.g = color.g;\n this.b = color.b;\n return this;\n }\n copySRGBToLinear(color) {\n this.r = SRGBToLinear(color.r);\n this.g = SRGBToLinear(color.g);\n this.b = SRGBToLinear(color.b);\n return this;\n }\n copyLinearToSRGB(color) {\n this.r = LinearToSRGB(color.r);\n this.g = LinearToSRGB(color.g);\n this.b = LinearToSRGB(color.b);\n return this;\n }\n convertSRGBToLinear() {\n this.copySRGBToLinear(this);\n return this;\n }\n convertLinearToSRGB() {\n this.copyLinearToSRGB(this);\n return this;\n }\n getHex() {\n return this.r * 255 << 16 ^ this.g * 255 << 8 ^ this.b * 255 << 0;\n }\n getHexString() {\n return (\"000000\" + this.getHex().toString(16)).slice(-6);\n }\n getHSL(target) {\n const r = this.r, g = this.g, b = this.b;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let hue, saturation;\n const lightness = (min + max) / 2;\n if (min === max) {\n hue = 0;\n saturation = 0;\n } else {\n const delta = max - min;\n saturation = lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min);\n switch (max) {\n case r:\n hue = (g - b) / delta + (g < b ? 6 : 0);\n break;\n case g:\n hue = (b - r) / delta + 2;\n break;\n case b:\n hue = (r - g) / delta + 4;\n break;\n }\n hue /= 6;\n }\n target.h = hue;\n target.s = saturation;\n target.l = lightness;\n return target;\n }\n getStyle() {\n return \"rgb(\" + (this.r * 255 | 0) + \",\" + (this.g * 255 | 0) + \",\" + (this.b * 255 | 0) + \")\";\n }\n offsetHSL(h, s, l) {\n this.getHSL(_hslA);\n _hslA.h += h;\n _hslA.s += s;\n _hslA.l += l;\n this.setHSL(_hslA.h, _hslA.s, _hslA.l);\n return this;\n }\n add(color) {\n this.r += color.r;\n this.g += color.g;\n this.b += color.b;\n return this;\n }\n addColors(color1, color2) {\n this.r = color1.r + color2.r;\n this.g = color1.g + color2.g;\n this.b = color1.b + color2.b;\n return this;\n }\n addScalar(s) {\n this.r += s;\n this.g += s;\n this.b += s;\n return this;\n }\n sub(color) {\n this.r = Math.max(0, this.r - color.r);\n this.g = Math.max(0, this.g - color.g);\n this.b = Math.max(0, this.b - color.b);\n return this;\n }\n multiply(color) {\n this.r *= color.r;\n this.g *= color.g;\n this.b *= color.b;\n return this;\n }\n multiplyScalar(s) {\n this.r *= s;\n this.g *= s;\n this.b *= s;\n return this;\n }\n lerp(color, alpha) {\n this.r += (color.r - this.r) * alpha;\n this.g += (color.g - this.g) * alpha;\n this.b += (color.b - this.b) * alpha;\n return this;\n }\n lerpColors(color1, color2, alpha) {\n this.r = color1.r + (color2.r - color1.r) * alpha;\n this.g = color1.g + (color2.g - color1.g) * alpha;\n this.b = color1.b + (color2.b - color1.b) * alpha;\n return this;\n }\n lerpHSL(color, alpha) {\n this.getHSL(_hslA);\n color.getHSL(_hslB);\n const h = lerp(_hslA.h, _hslB.h, alpha);\n const s = lerp(_hslA.s, _hslB.s, alpha);\n const l = lerp(_hslA.l, _hslB.l, alpha);\n this.setHSL(h, s, l);\n return this;\n }\n equals(c) {\n return c.r === this.r && c.g === this.g && c.b === this.b;\n }\n fromArray(array, offset = 0) {\n this.r = array[offset];\n this.g = array[offset + 1];\n this.b = array[offset + 2];\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this.r;\n array[offset + 1] = this.g;\n array[offset + 2] = this.b;\n return array;\n }\n fromBufferAttribute(attribute, index) {\n this.r = attribute.getX(index);\n this.g = attribute.getY(index);\n this.b = attribute.getZ(index);\n if (attribute.normalized === true) {\n this.r /= 255;\n this.g /= 255;\n this.b /= 255;\n }\n return this;\n }\n toJSON() {\n return this.getHex();\n }\n}\nColor.NAMES = _colorKeywords;\nColor.prototype.isColor = true;\nColor.prototype.r = 1;\nColor.prototype.g = 1;\nColor.prototype.b = 1;\nclass MeshBasicMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"MeshBasicMaterial\";\n this.color = new Color(16777215);\n this.map = null;\n this.lightMap = null;\n this.lightMapIntensity = 1;\n this.aoMap = null;\n this.aoMapIntensity = 1;\n this.specularMap = null;\n this.alphaMap = null;\n this.envMap = null;\n this.combine = MultiplyOperation;\n this.reflectivity = 1;\n this.refractionRatio = 0.98;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.wireframeLinecap = \"round\";\n this.wireframeLinejoin = \"round\";\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.map = source.map;\n this.lightMap = source.lightMap;\n this.lightMapIntensity = source.lightMapIntensity;\n this.aoMap = source.aoMap;\n this.aoMapIntensity = source.aoMapIntensity;\n this.specularMap = source.specularMap;\n this.alphaMap = source.alphaMap;\n this.envMap = source.envMap;\n this.combine = source.combine;\n this.reflectivity = source.reflectivity;\n this.refractionRatio = source.refractionRatio;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.wireframeLinecap = source.wireframeLinecap;\n this.wireframeLinejoin = source.wireframeLinejoin;\n return this;\n }\n}\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\nconst _vector$9 = /* @__PURE__ */ new Vector3();\nconst _vector2$1 = /* @__PURE__ */ new Vector2();\nclass BufferAttribute {\n constructor(array, itemSize, normalized) {\n if (Array.isArray(array)) {\n throw new TypeError(\"THREE.BufferAttribute: array should be a Typed Array.\");\n }\n this.name = \"\";\n this.array = array;\n this.itemSize = itemSize;\n this.count = array !== void 0 ? array.length / itemSize : 0;\n this.normalized = normalized === true;\n this.usage = StaticDrawUsage;\n this.updateRange = {offset: 0, count: -1};\n this.version = 0;\n }\n onUploadCallback() {\n }\n set needsUpdate(value) {\n if (value === true)\n this.version++;\n }\n setUsage(value) {\n this.usage = value;\n return this;\n }\n copy(source) {\n this.name = source.name;\n this.array = new source.array.constructor(source.array);\n this.itemSize = source.itemSize;\n this.count = source.count;\n this.normalized = source.normalized;\n this.usage = source.usage;\n return this;\n }\n copyAt(index1, attribute, index2) {\n index1 *= this.itemSize;\n index2 *= attribute.itemSize;\n for (let i = 0, l = this.itemSize; i < l; i++) {\n this.array[index1 + i] = attribute.array[index2 + i];\n }\n return this;\n }\n copyArray(array) {\n this.array.set(array);\n return this;\n }\n copyColorsArray(colors) {\n const array = this.array;\n let offset = 0;\n for (let i = 0, l = colors.length; i < l; i++) {\n let color = colors[i];\n if (color === void 0) {\n console.warn(\"THREE.BufferAttribute.copyColorsArray(): color is undefined\", i);\n color = new Color();\n }\n array[offset++] = color.r;\n array[offset++] = color.g;\n array[offset++] = color.b;\n }\n return this;\n }\n copyVector2sArray(vectors) {\n const array = this.array;\n let offset = 0;\n for (let i = 0, l = vectors.length; i < l; i++) {\n let vector = vectors[i];\n if (vector === void 0) {\n console.warn(\"THREE.BufferAttribute.copyVector2sArray(): vector is undefined\", i);\n vector = new Vector2();\n }\n array[offset++] = vector.x;\n array[offset++] = vector.y;\n }\n return this;\n }\n copyVector3sArray(vectors) {\n const array = this.array;\n let offset = 0;\n for (let i = 0, l = vectors.length; i < l; i++) {\n let vector = vectors[i];\n if (vector === void 0) {\n console.warn(\"THREE.BufferAttribute.copyVector3sArray(): vector is undefined\", i);\n vector = new Vector3();\n }\n array[offset++] = vector.x;\n array[offset++] = vector.y;\n array[offset++] = vector.z;\n }\n return this;\n }\n copyVector4sArray(vectors) {\n const array = this.array;\n let offset = 0;\n for (let i = 0, l = vectors.length; i < l; i++) {\n let vector = vectors[i];\n if (vector === void 0) {\n console.warn(\"THREE.BufferAttribute.copyVector4sArray(): vector is undefined\", i);\n vector = new Vector4();\n }\n array[offset++] = vector.x;\n array[offset++] = vector.y;\n array[offset++] = vector.z;\n array[offset++] = vector.w;\n }\n return this;\n }\n applyMatrix3(m) {\n if (this.itemSize === 2) {\n for (let i = 0, l = this.count; i < l; i++) {\n _vector2$1.fromBufferAttribute(this, i);\n _vector2$1.applyMatrix3(m);\n this.setXY(i, _vector2$1.x, _vector2$1.y);\n }\n } else if (this.itemSize === 3) {\n for (let i = 0, l = this.count; i < l; i++) {\n _vector$9.fromBufferAttribute(this, i);\n _vector$9.applyMatrix3(m);\n this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n }\n }\n return this;\n }\n applyMatrix4(m) {\n for (let i = 0, l = this.count; i < l; i++) {\n _vector$9.x = this.getX(i);\n _vector$9.y = this.getY(i);\n _vector$9.z = this.getZ(i);\n _vector$9.applyMatrix4(m);\n this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n }\n return this;\n }\n applyNormalMatrix(m) {\n for (let i = 0, l = this.count; i < l; i++) {\n _vector$9.x = this.getX(i);\n _vector$9.y = this.getY(i);\n _vector$9.z = this.getZ(i);\n _vector$9.applyNormalMatrix(m);\n this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n }\n return this;\n }\n transformDirection(m) {\n for (let i = 0, l = this.count; i < l; i++) {\n _vector$9.x = this.getX(i);\n _vector$9.y = this.getY(i);\n _vector$9.z = this.getZ(i);\n _vector$9.transformDirection(m);\n this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n }\n return this;\n }\n set(value, offset = 0) {\n this.array.set(value, offset);\n return this;\n }\n getX(index) {\n return this.array[index * this.itemSize];\n }\n setX(index, x) {\n this.array[index * this.itemSize] = x;\n return this;\n }\n getY(index) {\n return this.array[index * this.itemSize + 1];\n }\n setY(index, y) {\n this.array[index * this.itemSize + 1] = y;\n return this;\n }\n getZ(index) {\n return this.array[index * this.itemSize + 2];\n }\n setZ(index, z) {\n this.array[index * this.itemSize + 2] = z;\n return this;\n }\n getW(index) {\n return this.array[index * this.itemSize + 3];\n }\n setW(index, w) {\n this.array[index * this.itemSize + 3] = w;\n return this;\n }\n setXY(index, x, y) {\n index *= this.itemSize;\n this.array[index + 0] = x;\n this.array[index + 1] = y;\n return this;\n }\n setXYZ(index, x, y, z) {\n index *= this.itemSize;\n this.array[index + 0] = x;\n this.array[index + 1] = y;\n this.array[index + 2] = z;\n return this;\n }\n setXYZW(index, x, y, z, w) {\n index *= this.itemSize;\n this.array[index + 0] = x;\n this.array[index + 1] = y;\n this.array[index + 2] = z;\n this.array[index + 3] = w;\n return this;\n }\n onUpload(callback) {\n this.onUploadCallback = callback;\n return this;\n }\n clone() {\n return new this.constructor(this.array, this.itemSize).copy(this);\n }\n toJSON() {\n const data = {\n itemSize: this.itemSize,\n type: this.array.constructor.name,\n array: Array.prototype.slice.call(this.array),\n normalized: this.normalized\n };\n if (this.name !== \"\")\n data.name = this.name;\n if (this.usage !== StaticDrawUsage)\n data.usage = this.usage;\n if (this.updateRange.offset !== 0 || this.updateRange.count !== -1)\n data.updateRange = this.updateRange;\n return data;\n }\n}\nBufferAttribute.prototype.isBufferAttribute = true;\nclass Int8BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Int8Array(array), itemSize, normalized);\n }\n}\nclass Uint8BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Uint8Array(array), itemSize, normalized);\n }\n}\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Uint8ClampedArray(array), itemSize, normalized);\n }\n}\nclass Int16BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Int16Array(array), itemSize, normalized);\n }\n}\nclass Uint16BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Uint16Array(array), itemSize, normalized);\n }\n}\nclass Int32BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Int32Array(array), itemSize, normalized);\n }\n}\nclass Uint32BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Uint32Array(array), itemSize, normalized);\n }\n}\nclass Float16BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Uint16Array(array), itemSize, normalized);\n }\n}\nFloat16BufferAttribute.prototype.isFloat16BufferAttribute = true;\nclass Float32BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Float32Array(array), itemSize, normalized);\n }\n}\nclass Float64BufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized) {\n super(new Float64Array(array), itemSize, normalized);\n }\n}\nlet _id$1 = 0;\nconst _m1 = /* @__PURE__ */ new Matrix4();\nconst _obj = /* @__PURE__ */ new Object3D();\nconst _offset = /* @__PURE__ */ new Vector3();\nconst _box$1 = /* @__PURE__ */ new Box3();\nconst _boxMorphTargets = /* @__PURE__ */ new Box3();\nconst _vector$8 = /* @__PURE__ */ new Vector3();\nclass BufferGeometry extends EventDispatcher {\n constructor() {\n super();\n Object.defineProperty(this, \"id\", {value: _id$1++});\n this.uuid = generateUUID();\n this.name = \"\";\n this.type = \"BufferGeometry\";\n this.index = null;\n this.attributes = {};\n this.morphAttributes = {};\n this.morphTargetsRelative = false;\n this.groups = [];\n this.boundingBox = null;\n this.boundingSphere = null;\n this.drawRange = {start: 0, count: Infinity};\n this.userData = {};\n }\n getIndex() {\n return this.index;\n }\n setIndex(index) {\n if (Array.isArray(index)) {\n this.index = new (arrayMax(index) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute)(index, 1);\n } else {\n this.index = index;\n }\n return this;\n }\n getAttribute(name) {\n return this.attributes[name];\n }\n setAttribute(name, attribute) {\n this.attributes[name] = attribute;\n return this;\n }\n deleteAttribute(name) {\n delete this.attributes[name];\n return this;\n }\n hasAttribute(name) {\n return this.attributes[name] !== void 0;\n }\n addGroup(start, count, materialIndex = 0) {\n this.groups.push({\n start,\n count,\n materialIndex\n });\n }\n clearGroups() {\n this.groups = [];\n }\n setDrawRange(start, count) {\n this.drawRange.start = start;\n this.drawRange.count = count;\n }\n applyMatrix4(matrix) {\n const position = this.attributes.position;\n if (position !== void 0) {\n position.applyMatrix4(matrix);\n position.needsUpdate = true;\n }\n const normal = this.attributes.normal;\n if (normal !== void 0) {\n const normalMatrix = new Matrix3().getNormalMatrix(matrix);\n normal.applyNormalMatrix(normalMatrix);\n normal.needsUpdate = true;\n }\n const tangent = this.attributes.tangent;\n if (tangent !== void 0) {\n tangent.transformDirection(matrix);\n tangent.needsUpdate = true;\n }\n if (this.boundingBox !== null) {\n this.computeBoundingBox();\n }\n if (this.boundingSphere !== null) {\n this.computeBoundingSphere();\n }\n return this;\n }\n applyQuaternion(q) {\n _m1.makeRotationFromQuaternion(q);\n this.applyMatrix4(_m1);\n return this;\n }\n rotateX(angle) {\n _m1.makeRotationX(angle);\n this.applyMatrix4(_m1);\n return this;\n }\n rotateY(angle) {\n _m1.makeRotationY(angle);\n this.applyMatrix4(_m1);\n return this;\n }\n rotateZ(angle) {\n _m1.makeRotationZ(angle);\n this.applyMatrix4(_m1);\n return this;\n }\n translate(x, y, z) {\n _m1.makeTranslation(x, y, z);\n this.applyMatrix4(_m1);\n return this;\n }\n scale(x, y, z) {\n _m1.makeScale(x, y, z);\n this.applyMatrix4(_m1);\n return this;\n }\n lookAt(vector) {\n _obj.lookAt(vector);\n _obj.updateMatrix();\n this.applyMatrix4(_obj.matrix);\n return this;\n }\n center() {\n this.computeBoundingBox();\n this.boundingBox.getCenter(_offset).negate();\n this.translate(_offset.x, _offset.y, _offset.z);\n return this;\n }\n setFromPoints(points) {\n const position = [];\n for (let i = 0, l = points.length; i < l; i++) {\n const point = points[i];\n position.push(point.x, point.y, point.z || 0);\n }\n this.setAttribute(\"position\", new Float32BufferAttribute(position, 3));\n return this;\n }\n computeBoundingBox() {\n if (this.boundingBox === null) {\n this.boundingBox = new Box3();\n }\n const position = this.attributes.position;\n const morphAttributesPosition = this.morphAttributes.position;\n if (position && position.isGLBufferAttribute) {\n console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this);\n this.boundingBox.set(new Vector3(-Infinity, -Infinity, -Infinity), new Vector3(Infinity, Infinity, Infinity));\n return;\n }\n if (position !== void 0) {\n this.boundingBox.setFromBufferAttribute(position);\n if (morphAttributesPosition) {\n for (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n const morphAttribute = morphAttributesPosition[i];\n _box$1.setFromBufferAttribute(morphAttribute);\n if (this.morphTargetsRelative) {\n _vector$8.addVectors(this.boundingBox.min, _box$1.min);\n this.boundingBox.expandByPoint(_vector$8);\n _vector$8.addVectors(this.boundingBox.max, _box$1.max);\n this.boundingBox.expandByPoint(_vector$8);\n } else {\n this.boundingBox.expandByPoint(_box$1.min);\n this.boundingBox.expandByPoint(_box$1.max);\n }\n }\n }\n } else {\n this.boundingBox.makeEmpty();\n }\n if (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) {\n console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this);\n }\n }\n computeBoundingSphere() {\n if (this.boundingSphere === null) {\n this.boundingSphere = new Sphere();\n }\n const position = this.attributes.position;\n const morphAttributesPosition = this.morphAttributes.position;\n if (position && position.isGLBufferAttribute) {\n console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this);\n this.boundingSphere.set(new Vector3(), Infinity);\n return;\n }\n if (position) {\n const center = this.boundingSphere.center;\n _box$1.setFromBufferAttribute(position);\n if (morphAttributesPosition) {\n for (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n const morphAttribute = morphAttributesPosition[i];\n _boxMorphTargets.setFromBufferAttribute(morphAttribute);\n if (this.morphTargetsRelative) {\n _vector$8.addVectors(_box$1.min, _boxMorphTargets.min);\n _box$1.expandByPoint(_vector$8);\n _vector$8.addVectors(_box$1.max, _boxMorphTargets.max);\n _box$1.expandByPoint(_vector$8);\n } else {\n _box$1.expandByPoint(_boxMorphTargets.min);\n _box$1.expandByPoint(_boxMorphTargets.max);\n }\n }\n }\n _box$1.getCenter(center);\n let maxRadiusSq = 0;\n for (let i = 0, il = position.count; i < il; i++) {\n _vector$8.fromBufferAttribute(position, i);\n maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n }\n if (morphAttributesPosition) {\n for (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n const morphAttribute = morphAttributesPosition[i];\n const morphTargetsRelative = this.morphTargetsRelative;\n for (let j = 0, jl = morphAttribute.count; j < jl; j++) {\n _vector$8.fromBufferAttribute(morphAttribute, j);\n if (morphTargetsRelative) {\n _offset.fromBufferAttribute(position, j);\n _vector$8.add(_offset);\n }\n maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n }\n }\n }\n this.boundingSphere.radius = Math.sqrt(maxRadiusSq);\n if (isNaN(this.boundingSphere.radius)) {\n console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this);\n }\n }\n }\n computeTangents() {\n const index = this.index;\n const attributes = this.attributes;\n if (index === null || attributes.position === void 0 || attributes.normal === void 0 || attributes.uv === void 0) {\n console.error(\"THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)\");\n return;\n }\n const indices = index.array;\n const positions = attributes.position.array;\n const normals = attributes.normal.array;\n const uvs = attributes.uv.array;\n const nVertices = positions.length / 3;\n if (attributes.tangent === void 0) {\n this.setAttribute(\"tangent\", new BufferAttribute(new Float32Array(4 * nVertices), 4));\n }\n const tangents = attributes.tangent.array;\n const tan1 = [], tan2 = [];\n for (let i = 0; i < nVertices; i++) {\n tan1[i] = new Vector3();\n tan2[i] = new Vector3();\n }\n const vA = new Vector3(), vB = new Vector3(), vC = new Vector3(), uvA = new Vector2(), uvB = new Vector2(), uvC = new Vector2(), sdir = new Vector3(), tdir = new Vector3();\n function handleTriangle(a, b, c) {\n vA.fromArray(positions, a * 3);\n vB.fromArray(positions, b * 3);\n vC.fromArray(positions, c * 3);\n uvA.fromArray(uvs, a * 2);\n uvB.fromArray(uvs, b * 2);\n uvC.fromArray(uvs, c * 2);\n vB.sub(vA);\n vC.sub(vA);\n uvB.sub(uvA);\n uvC.sub(uvA);\n const r = 1 / (uvB.x * uvC.y - uvC.x * uvB.y);\n if (!isFinite(r))\n return;\n sdir.copy(vB).multiplyScalar(uvC.y).addScaledVector(vC, -uvB.y).multiplyScalar(r);\n tdir.copy(vC).multiplyScalar(uvB.x).addScaledVector(vB, -uvC.x).multiplyScalar(r);\n tan1[a].add(sdir);\n tan1[b].add(sdir);\n tan1[c].add(sdir);\n tan2[a].add(tdir);\n tan2[b].add(tdir);\n tan2[c].add(tdir);\n }\n let groups = this.groups;\n if (groups.length === 0) {\n groups = [{\n start: 0,\n count: indices.length\n }];\n }\n for (let i = 0, il = groups.length; i < il; ++i) {\n const group = groups[i];\n const start = group.start;\n const count = group.count;\n for (let j = start, jl = start + count; j < jl; j += 3) {\n handleTriangle(indices[j + 0], indices[j + 1], indices[j + 2]);\n }\n }\n const tmp2 = new Vector3(), tmp22 = new Vector3();\n const n = new Vector3(), n2 = new Vector3();\n function handleVertex(v) {\n n.fromArray(normals, v * 3);\n n2.copy(n);\n const t = tan1[v];\n tmp2.copy(t);\n tmp2.sub(n.multiplyScalar(n.dot(t))).normalize();\n tmp22.crossVectors(n2, t);\n const test = tmp22.dot(tan2[v]);\n const w = test < 0 ? -1 : 1;\n tangents[v * 4] = tmp2.x;\n tangents[v * 4 + 1] = tmp2.y;\n tangents[v * 4 + 2] = tmp2.z;\n tangents[v * 4 + 3] = w;\n }\n for (let i = 0, il = groups.length; i < il; ++i) {\n const group = groups[i];\n const start = group.start;\n const count = group.count;\n for (let j = start, jl = start + count; j < jl; j += 3) {\n handleVertex(indices[j + 0]);\n handleVertex(indices[j + 1]);\n handleVertex(indices[j + 2]);\n }\n }\n }\n computeVertexNormals() {\n const index = this.index;\n const positionAttribute = this.getAttribute(\"position\");\n if (positionAttribute !== void 0) {\n let normalAttribute = this.getAttribute(\"normal\");\n if (normalAttribute === void 0) {\n normalAttribute = new BufferAttribute(new Float32Array(positionAttribute.count * 3), 3);\n this.setAttribute(\"normal\", normalAttribute);\n } else {\n for (let i = 0, il = normalAttribute.count; i < il; i++) {\n normalAttribute.setXYZ(i, 0, 0, 0);\n }\n }\n const pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n const nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n const cb = new Vector3(), ab = new Vector3();\n if (index) {\n for (let i = 0, il = index.count; i < il; i += 3) {\n const vA = index.getX(i + 0);\n const vB = index.getX(i + 1);\n const vC = index.getX(i + 2);\n pA.fromBufferAttribute(positionAttribute, vA);\n pB.fromBufferAttribute(positionAttribute, vB);\n pC.fromBufferAttribute(positionAttribute, vC);\n cb.subVectors(pC, pB);\n ab.subVectors(pA, pB);\n cb.cross(ab);\n nA.fromBufferAttribute(normalAttribute, vA);\n nB.fromBufferAttribute(normalAttribute, vB);\n nC.fromBufferAttribute(normalAttribute, vC);\n nA.add(cb);\n nB.add(cb);\n nC.add(cb);\n normalAttribute.setXYZ(vA, nA.x, nA.y, nA.z);\n normalAttribute.setXYZ(vB, nB.x, nB.y, nB.z);\n normalAttribute.setXYZ(vC, nC.x, nC.y, nC.z);\n }\n } else {\n for (let i = 0, il = positionAttribute.count; i < il; i += 3) {\n pA.fromBufferAttribute(positionAttribute, i + 0);\n pB.fromBufferAttribute(positionAttribute, i + 1);\n pC.fromBufferAttribute(positionAttribute, i + 2);\n cb.subVectors(pC, pB);\n ab.subVectors(pA, pB);\n cb.cross(ab);\n normalAttribute.setXYZ(i + 0, cb.x, cb.y, cb.z);\n normalAttribute.setXYZ(i + 1, cb.x, cb.y, cb.z);\n normalAttribute.setXYZ(i + 2, cb.x, cb.y, cb.z);\n }\n }\n this.normalizeNormals();\n normalAttribute.needsUpdate = true;\n }\n }\n merge(geometry, offset) {\n if (!(geometry && geometry.isBufferGeometry)) {\n console.error(\"THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.\", geometry);\n return;\n }\n if (offset === void 0) {\n offset = 0;\n console.warn(\"THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.\");\n }\n const attributes = this.attributes;\n for (const key in attributes) {\n if (geometry.attributes[key] === void 0)\n continue;\n const attribute1 = attributes[key];\n const attributeArray1 = attribute1.array;\n const attribute2 = geometry.attributes[key];\n const attributeArray2 = attribute2.array;\n const attributeOffset = attribute2.itemSize * offset;\n const length = Math.min(attributeArray2.length, attributeArray1.length - attributeOffset);\n for (let i = 0, j = attributeOffset; i < length; i++, j++) {\n attributeArray1[j] = attributeArray2[i];\n }\n }\n return this;\n }\n normalizeNormals() {\n const normals = this.attributes.normal;\n for (let i = 0, il = normals.count; i < il; i++) {\n _vector$8.fromBufferAttribute(normals, i);\n _vector$8.normalize();\n normals.setXYZ(i, _vector$8.x, _vector$8.y, _vector$8.z);\n }\n }\n toNonIndexed() {\n function convertBufferAttribute(attribute, indices2) {\n const array = attribute.array;\n const itemSize = attribute.itemSize;\n const normalized = attribute.normalized;\n const array2 = new array.constructor(indices2.length * itemSize);\n let index = 0, index2 = 0;\n for (let i = 0, l = indices2.length; i < l; i++) {\n if (attribute.isInterleavedBufferAttribute) {\n index = indices2[i] * attribute.data.stride + attribute.offset;\n } else {\n index = indices2[i] * itemSize;\n }\n for (let j = 0; j < itemSize; j++) {\n array2[index2++] = array[index++];\n }\n }\n return new BufferAttribute(array2, itemSize, normalized);\n }\n if (this.index === null) {\n console.warn(\"THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.\");\n return this;\n }\n const geometry2 = new BufferGeometry();\n const indices = this.index.array;\n const attributes = this.attributes;\n for (const name in attributes) {\n const attribute = attributes[name];\n const newAttribute = convertBufferAttribute(attribute, indices);\n geometry2.setAttribute(name, newAttribute);\n }\n const morphAttributes = this.morphAttributes;\n for (const name in morphAttributes) {\n const morphArray = [];\n const morphAttribute = morphAttributes[name];\n for (let i = 0, il = morphAttribute.length; i < il; i++) {\n const attribute = morphAttribute[i];\n const newAttribute = convertBufferAttribute(attribute, indices);\n morphArray.push(newAttribute);\n }\n geometry2.morphAttributes[name] = morphArray;\n }\n geometry2.morphTargetsRelative = this.morphTargetsRelative;\n const groups = this.groups;\n for (let i = 0, l = groups.length; i < l; i++) {\n const group = groups[i];\n geometry2.addGroup(group.start, group.count, group.materialIndex);\n }\n return geometry2;\n }\n toJSON() {\n const data = {\n metadata: {\n version: 4.5,\n type: \"BufferGeometry\",\n generator: \"BufferGeometry.toJSON\"\n }\n };\n data.uuid = this.uuid;\n data.type = this.type;\n if (this.name !== \"\")\n data.name = this.name;\n if (Object.keys(this.userData).length > 0)\n data.userData = this.userData;\n if (this.parameters !== void 0) {\n const parameters = this.parameters;\n for (const key in parameters) {\n if (parameters[key] !== void 0)\n data[key] = parameters[key];\n }\n return data;\n }\n data.data = {attributes: {}};\n const index = this.index;\n if (index !== null) {\n data.data.index = {\n type: index.array.constructor.name,\n array: Array.prototype.slice.call(index.array)\n };\n }\n const attributes = this.attributes;\n for (const key in attributes) {\n const attribute = attributes[key];\n data.data.attributes[key] = attribute.toJSON(data.data);\n }\n const morphAttributes = {};\n let hasMorphAttributes = false;\n for (const key in this.morphAttributes) {\n const attributeArray = this.morphAttributes[key];\n const array = [];\n for (let i = 0, il = attributeArray.length; i < il; i++) {\n const attribute = attributeArray[i];\n array.push(attribute.toJSON(data.data));\n }\n if (array.length > 0) {\n morphAttributes[key] = array;\n hasMorphAttributes = true;\n }\n }\n if (hasMorphAttributes) {\n data.data.morphAttributes = morphAttributes;\n data.data.morphTargetsRelative = this.morphTargetsRelative;\n }\n const groups = this.groups;\n if (groups.length > 0) {\n data.data.groups = JSON.parse(JSON.stringify(groups));\n }\n const boundingSphere = this.boundingSphere;\n if (boundingSphere !== null) {\n data.data.boundingSphere = {\n center: boundingSphere.center.toArray(),\n radius: boundingSphere.radius\n };\n }\n return data;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(source) {\n this.index = null;\n this.attributes = {};\n this.morphAttributes = {};\n this.groups = [];\n this.boundingBox = null;\n this.boundingSphere = null;\n const data = {};\n this.name = source.name;\n const index = source.index;\n if (index !== null) {\n this.setIndex(index.clone(data));\n }\n const attributes = source.attributes;\n for (const name in attributes) {\n const attribute = attributes[name];\n this.setAttribute(name, attribute.clone(data));\n }\n const morphAttributes = source.morphAttributes;\n for (const name in morphAttributes) {\n const array = [];\n const morphAttribute = morphAttributes[name];\n for (let i = 0, l = morphAttribute.length; i < l; i++) {\n array.push(morphAttribute[i].clone(data));\n }\n this.morphAttributes[name] = array;\n }\n this.morphTargetsRelative = source.morphTargetsRelative;\n const groups = source.groups;\n for (let i = 0, l = groups.length; i < l; i++) {\n const group = groups[i];\n this.addGroup(group.start, group.count, group.materialIndex);\n }\n const boundingBox = source.boundingBox;\n if (boundingBox !== null) {\n this.boundingBox = boundingBox.clone();\n }\n const boundingSphere = source.boundingSphere;\n if (boundingSphere !== null) {\n this.boundingSphere = boundingSphere.clone();\n }\n this.drawRange.start = source.drawRange.start;\n this.drawRange.count = source.drawRange.count;\n this.userData = source.userData;\n if (source.parameters !== void 0)\n this.parameters = Object.assign({}, source.parameters);\n return this;\n }\n dispose() {\n this.dispatchEvent({type: \"dispose\"});\n }\n}\nBufferGeometry.prototype.isBufferGeometry = true;\nconst _inverseMatrix$2 = /* @__PURE__ */ new Matrix4();\nconst _ray$2 = /* @__PURE__ */ new Ray();\nconst _sphere$3 = /* @__PURE__ */ new Sphere();\nconst _vA$1 = /* @__PURE__ */ new Vector3();\nconst _vB$1 = /* @__PURE__ */ new Vector3();\nconst _vC$1 = /* @__PURE__ */ new Vector3();\nconst _tempA = /* @__PURE__ */ new Vector3();\nconst _tempB = /* @__PURE__ */ new Vector3();\nconst _tempC = /* @__PURE__ */ new Vector3();\nconst _morphA = /* @__PURE__ */ new Vector3();\nconst _morphB = /* @__PURE__ */ new Vector3();\nconst _morphC = /* @__PURE__ */ new Vector3();\nconst _uvA$1 = /* @__PURE__ */ new Vector2();\nconst _uvB$1 = /* @__PURE__ */ new Vector2();\nconst _uvC$1 = /* @__PURE__ */ new Vector2();\nconst _intersectionPoint = /* @__PURE__ */ new Vector3();\nconst _intersectionPointWorld = /* @__PURE__ */ new Vector3();\nclass Mesh extends Object3D {\n constructor(geometry = new BufferGeometry(), material = new MeshBasicMaterial()) {\n super();\n this.type = \"Mesh\";\n this.geometry = geometry;\n this.material = material;\n this.updateMorphTargets();\n }\n copy(source) {\n super.copy(source);\n if (source.morphTargetInfluences !== void 0) {\n this.morphTargetInfluences = source.morphTargetInfluences.slice();\n }\n if (source.morphTargetDictionary !== void 0) {\n this.morphTargetDictionary = Object.assign({}, source.morphTargetDictionary);\n }\n this.material = source.material;\n this.geometry = source.geometry;\n return this;\n }\n updateMorphTargets() {\n const geometry = this.geometry;\n if (geometry.isBufferGeometry) {\n const morphAttributes = geometry.morphAttributes;\n const keys = Object.keys(morphAttributes);\n if (keys.length > 0) {\n const morphAttribute = morphAttributes[keys[0]];\n if (morphAttribute !== void 0) {\n this.morphTargetInfluences = [];\n this.morphTargetDictionary = {};\n for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n const name = morphAttribute[m].name || String(m);\n this.morphTargetInfluences.push(0);\n this.morphTargetDictionary[name] = m;\n }\n }\n }\n } else {\n const morphTargets = geometry.morphTargets;\n if (morphTargets !== void 0 && morphTargets.length > 0) {\n console.error(\"THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n }\n }\n raycast(raycaster, intersects2) {\n const geometry = this.geometry;\n const material = this.material;\n const matrixWorld = this.matrixWorld;\n if (material === void 0)\n return;\n if (geometry.boundingSphere === null)\n geometry.computeBoundingSphere();\n _sphere$3.copy(geometry.boundingSphere);\n _sphere$3.applyMatrix4(matrixWorld);\n if (raycaster.ray.intersectsSphere(_sphere$3) === false)\n return;\n _inverseMatrix$2.copy(matrixWorld).invert();\n _ray$2.copy(raycaster.ray).applyMatrix4(_inverseMatrix$2);\n if (geometry.boundingBox !== null) {\n if (_ray$2.intersectsBox(geometry.boundingBox) === false)\n return;\n }\n let intersection;\n if (geometry.isBufferGeometry) {\n const index = geometry.index;\n const position = geometry.attributes.position;\n const morphPosition = geometry.morphAttributes.position;\n const morphTargetsRelative = geometry.morphTargetsRelative;\n const uv = geometry.attributes.uv;\n const uv2 = geometry.attributes.uv2;\n const groups = geometry.groups;\n const drawRange = geometry.drawRange;\n if (index !== null) {\n if (Array.isArray(material)) {\n for (let i = 0, il = groups.length; i < il; i++) {\n const group = groups[i];\n const groupMaterial = material[group.materialIndex];\n const start = Math.max(group.start, drawRange.start);\n const end = Math.min(index.count, Math.min(group.start + group.count, drawRange.start + drawRange.count));\n for (let j = start, jl = end; j < jl; j += 3) {\n const a = index.getX(j);\n const b = index.getX(j + 1);\n const c = index.getX(j + 2);\n intersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n if (intersection) {\n intersection.faceIndex = Math.floor(j / 3);\n intersection.face.materialIndex = group.materialIndex;\n intersects2.push(intersection);\n }\n }\n }\n } else {\n const start = Math.max(0, drawRange.start);\n const end = Math.min(index.count, drawRange.start + drawRange.count);\n for (let i = start, il = end; i < il; i += 3) {\n const a = index.getX(i);\n const b = index.getX(i + 1);\n const c = index.getX(i + 2);\n intersection = checkBufferGeometryIntersection(this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n if (intersection) {\n intersection.faceIndex = Math.floor(i / 3);\n intersects2.push(intersection);\n }\n }\n }\n } else if (position !== void 0) {\n if (Array.isArray(material)) {\n for (let i = 0, il = groups.length; i < il; i++) {\n const group = groups[i];\n const groupMaterial = material[group.materialIndex];\n const start = Math.max(group.start, drawRange.start);\n const end = Math.min(position.count, Math.min(group.start + group.count, drawRange.start + drawRange.count));\n for (let j = start, jl = end; j < jl; j += 3) {\n const a = j;\n const b = j + 1;\n const c = j + 2;\n intersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n if (intersection) {\n intersection.faceIndex = Math.floor(j / 3);\n intersection.face.materialIndex = group.materialIndex;\n intersects2.push(intersection);\n }\n }\n }\n } else {\n const start = Math.max(0, drawRange.start);\n const end = Math.min(position.count, drawRange.start + drawRange.count);\n for (let i = start, il = end; i < il; i += 3) {\n const a = i;\n const b = i + 1;\n const c = i + 2;\n intersection = checkBufferGeometryIntersection(this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n if (intersection) {\n intersection.faceIndex = Math.floor(i / 3);\n intersects2.push(intersection);\n }\n }\n }\n }\n } else if (geometry.isGeometry) {\n console.error(\"THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n }\n}\nMesh.prototype.isMesh = true;\nfunction checkIntersection(object, material, raycaster, ray, pA, pB, pC, point) {\n let intersect;\n if (material.side === BackSide) {\n intersect = ray.intersectTriangle(pC, pB, pA, true, point);\n } else {\n intersect = ray.intersectTriangle(pA, pB, pC, material.side !== DoubleSide, point);\n }\n if (intersect === null)\n return null;\n _intersectionPointWorld.copy(point);\n _intersectionPointWorld.applyMatrix4(object.matrixWorld);\n const distance = raycaster.ray.origin.distanceTo(_intersectionPointWorld);\n if (distance < raycaster.near || distance > raycaster.far)\n return null;\n return {\n distance,\n point: _intersectionPointWorld.clone(),\n object\n };\n}\nfunction checkBufferGeometryIntersection(object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c) {\n _vA$1.fromBufferAttribute(position, a);\n _vB$1.fromBufferAttribute(position, b);\n _vC$1.fromBufferAttribute(position, c);\n const morphInfluences = object.morphTargetInfluences;\n if (morphPosition && morphInfluences) {\n _morphA.set(0, 0, 0);\n _morphB.set(0, 0, 0);\n _morphC.set(0, 0, 0);\n for (let i = 0, il = morphPosition.length; i < il; i++) {\n const influence = morphInfluences[i];\n const morphAttribute = morphPosition[i];\n if (influence === 0)\n continue;\n _tempA.fromBufferAttribute(morphAttribute, a);\n _tempB.fromBufferAttribute(morphAttribute, b);\n _tempC.fromBufferAttribute(morphAttribute, c);\n if (morphTargetsRelative) {\n _morphA.addScaledVector(_tempA, influence);\n _morphB.addScaledVector(_tempB, influence);\n _morphC.addScaledVector(_tempC, influence);\n } else {\n _morphA.addScaledVector(_tempA.sub(_vA$1), influence);\n _morphB.addScaledVector(_tempB.sub(_vB$1), influence);\n _morphC.addScaledVector(_tempC.sub(_vC$1), influence);\n }\n }\n _vA$1.add(_morphA);\n _vB$1.add(_morphB);\n _vC$1.add(_morphC);\n }\n if (object.isSkinnedMesh) {\n object.boneTransform(a, _vA$1);\n object.boneTransform(b, _vB$1);\n object.boneTransform(c, _vC$1);\n }\n const intersection = checkIntersection(object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint);\n if (intersection) {\n if (uv) {\n _uvA$1.fromBufferAttribute(uv, a);\n _uvB$1.fromBufferAttribute(uv, b);\n _uvC$1.fromBufferAttribute(uv, c);\n intersection.uv = Triangle.getUV(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2());\n }\n if (uv2) {\n _uvA$1.fromBufferAttribute(uv2, a);\n _uvB$1.fromBufferAttribute(uv2, b);\n _uvC$1.fromBufferAttribute(uv2, c);\n intersection.uv2 = Triangle.getUV(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2());\n }\n const face = {\n a,\n b,\n c,\n normal: new Vector3(),\n materialIndex: 0\n };\n Triangle.getNormal(_vA$1, _vB$1, _vC$1, face.normal);\n intersection.face = face;\n }\n return intersection;\n}\nclass BoxGeometry extends BufferGeometry {\n constructor(width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1) {\n super();\n this.type = \"BoxGeometry\";\n this.parameters = {\n width,\n height,\n depth,\n widthSegments,\n heightSegments,\n depthSegments\n };\n const scope = this;\n widthSegments = Math.floor(widthSegments);\n heightSegments = Math.floor(heightSegments);\n depthSegments = Math.floor(depthSegments);\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n let numberOfVertices = 0;\n let groupStart = 0;\n buildPlane(\"z\", \"y\", \"x\", -1, -1, depth, height, width, depthSegments, heightSegments, 0);\n buildPlane(\"z\", \"y\", \"x\", 1, -1, depth, height, -width, depthSegments, heightSegments, 1);\n buildPlane(\"x\", \"z\", \"y\", 1, 1, width, depth, height, widthSegments, depthSegments, 2);\n buildPlane(\"x\", \"z\", \"y\", 1, -1, width, depth, -height, widthSegments, depthSegments, 3);\n buildPlane(\"x\", \"y\", \"z\", 1, -1, width, height, depth, widthSegments, heightSegments, 4);\n buildPlane(\"x\", \"y\", \"z\", -1, -1, width, height, -depth, widthSegments, heightSegments, 5);\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n function buildPlane(u, v, w, udir, vdir, width2, height2, depth2, gridX, gridY, materialIndex) {\n const segmentWidth = width2 / gridX;\n const segmentHeight = height2 / gridY;\n const widthHalf = width2 / 2;\n const heightHalf = height2 / 2;\n const depthHalf = depth2 / 2;\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n let vertexCounter = 0;\n let groupCount = 0;\n const vector = new Vector3();\n for (let iy = 0; iy < gridY1; iy++) {\n const y = iy * segmentHeight - heightHalf;\n for (let ix = 0; ix < gridX1; ix++) {\n const x = ix * segmentWidth - widthHalf;\n vector[u] = x * udir;\n vector[v] = y * vdir;\n vector[w] = depthHalf;\n vertices.push(vector.x, vector.y, vector.z);\n vector[u] = 0;\n vector[v] = 0;\n vector[w] = depth2 > 0 ? 1 : -1;\n normals.push(vector.x, vector.y, vector.z);\n uvs.push(ix / gridX);\n uvs.push(1 - iy / gridY);\n vertexCounter += 1;\n }\n }\n for (let iy = 0; iy < gridY; iy++) {\n for (let ix = 0; ix < gridX; ix++) {\n const a = numberOfVertices + ix + gridX1 * iy;\n const b = numberOfVertices + ix + gridX1 * (iy + 1);\n const c = numberOfVertices + (ix + 1) + gridX1 * (iy + 1);\n const d = numberOfVertices + (ix + 1) + gridX1 * iy;\n indices.push(a, b, d);\n indices.push(b, c, d);\n groupCount += 6;\n }\n }\n scope.addGroup(groupStart, groupCount, materialIndex);\n groupStart += groupCount;\n numberOfVertices += vertexCounter;\n }\n }\n static fromJSON(data) {\n return new BoxGeometry(data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments);\n }\n}\nfunction cloneUniforms(src) {\n const dst = {};\n for (const u in src) {\n dst[u] = {};\n for (const p in src[u]) {\n const property = src[u][p];\n if (property && (property.isColor || property.isMatrix3 || property.isMatrix4 || property.isVector2 || property.isVector3 || property.isVector4 || property.isTexture || property.isQuaternion)) {\n dst[u][p] = property.clone();\n } else if (Array.isArray(property)) {\n dst[u][p] = property.slice();\n } else {\n dst[u][p] = property;\n }\n }\n }\n return dst;\n}\nfunction mergeUniforms(uniforms) {\n const merged = {};\n for (let u = 0; u < uniforms.length; u++) {\n const tmp2 = cloneUniforms(uniforms[u]);\n for (const p in tmp2) {\n merged[p] = tmp2[p];\n }\n }\n return merged;\n}\nconst UniformsUtils = {clone: cloneUniforms, merge: mergeUniforms};\nvar default_vertex = \"void main() {\\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\nvar default_fragment = \"void main() {\\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\nclass ShaderMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"ShaderMaterial\";\n this.defines = {};\n this.uniforms = {};\n this.vertexShader = default_vertex;\n this.fragmentShader = default_fragment;\n this.linewidth = 1;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.fog = false;\n this.lights = false;\n this.clipping = false;\n this.extensions = {\n derivatives: false,\n fragDepth: false,\n drawBuffers: false,\n shaderTextureLOD: false\n };\n this.defaultAttributeValues = {\n color: [1, 1, 1],\n uv: [0, 0],\n uv2: [0, 0]\n };\n this.index0AttributeName = void 0;\n this.uniformsNeedUpdate = false;\n this.glslVersion = null;\n if (parameters !== void 0) {\n if (parameters.attributes !== void 0) {\n console.error(\"THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.\");\n }\n this.setValues(parameters);\n }\n }\n copy(source) {\n super.copy(source);\n this.fragmentShader = source.fragmentShader;\n this.vertexShader = source.vertexShader;\n this.uniforms = cloneUniforms(source.uniforms);\n this.defines = Object.assign({}, source.defines);\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.lights = source.lights;\n this.clipping = source.clipping;\n this.extensions = Object.assign({}, source.extensions);\n this.glslVersion = source.glslVersion;\n return this;\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n data.glslVersion = this.glslVersion;\n data.uniforms = {};\n for (const name in this.uniforms) {\n const uniform = this.uniforms[name];\n const value = uniform.value;\n if (value && value.isTexture) {\n data.uniforms[name] = {\n type: \"t\",\n value: value.toJSON(meta).uuid\n };\n } else if (value && value.isColor) {\n data.uniforms[name] = {\n type: \"c\",\n value: value.getHex()\n };\n } else if (value && value.isVector2) {\n data.uniforms[name] = {\n type: \"v2\",\n value: value.toArray()\n };\n } else if (value && value.isVector3) {\n data.uniforms[name] = {\n type: \"v3\",\n value: value.toArray()\n };\n } else if (value && value.isVector4) {\n data.uniforms[name] = {\n type: \"v4\",\n value: value.toArray()\n };\n } else if (value && value.isMatrix3) {\n data.uniforms[name] = {\n type: \"m3\",\n value: value.toArray()\n };\n } else if (value && value.isMatrix4) {\n data.uniforms[name] = {\n type: \"m4\",\n value: value.toArray()\n };\n } else {\n data.uniforms[name] = {\n value\n };\n }\n }\n if (Object.keys(this.defines).length > 0)\n data.defines = this.defines;\n data.vertexShader = this.vertexShader;\n data.fragmentShader = this.fragmentShader;\n const extensions = {};\n for (const key in this.extensions) {\n if (this.extensions[key] === true)\n extensions[key] = true;\n }\n if (Object.keys(extensions).length > 0)\n data.extensions = extensions;\n return data;\n }\n}\nShaderMaterial.prototype.isShaderMaterial = true;\nclass Camera extends Object3D {\n constructor() {\n super();\n this.type = \"Camera\";\n this.matrixWorldInverse = new Matrix4();\n this.projectionMatrix = new Matrix4();\n this.projectionMatrixInverse = new Matrix4();\n }\n copy(source, recursive) {\n super.copy(source, recursive);\n this.matrixWorldInverse.copy(source.matrixWorldInverse);\n this.projectionMatrix.copy(source.projectionMatrix);\n this.projectionMatrixInverse.copy(source.projectionMatrixInverse);\n return this;\n }\n getWorldDirection(target) {\n this.updateWorldMatrix(true, false);\n const e = this.matrixWorld.elements;\n return target.set(-e[8], -e[9], -e[10]).normalize();\n }\n updateMatrixWorld(force) {\n super.updateMatrixWorld(force);\n this.matrixWorldInverse.copy(this.matrixWorld).invert();\n }\n updateWorldMatrix(updateParents, updateChildren) {\n super.updateWorldMatrix(updateParents, updateChildren);\n this.matrixWorldInverse.copy(this.matrixWorld).invert();\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nCamera.prototype.isCamera = true;\nclass PerspectiveCamera extends Camera {\n constructor(fov2 = 50, aspect2 = 1, near = 0.1, far = 2e3) {\n super();\n this.type = \"PerspectiveCamera\";\n this.fov = fov2;\n this.zoom = 1;\n this.near = near;\n this.far = far;\n this.focus = 10;\n this.aspect = aspect2;\n this.view = null;\n this.filmGauge = 35;\n this.filmOffset = 0;\n this.updateProjectionMatrix();\n }\n copy(source, recursive) {\n super.copy(source, recursive);\n this.fov = source.fov;\n this.zoom = source.zoom;\n this.near = source.near;\n this.far = source.far;\n this.focus = source.focus;\n this.aspect = source.aspect;\n this.view = source.view === null ? null : Object.assign({}, source.view);\n this.filmGauge = source.filmGauge;\n this.filmOffset = source.filmOffset;\n return this;\n }\n setFocalLength(focalLength) {\n const vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n this.fov = RAD2DEG * 2 * Math.atan(vExtentSlope);\n this.updateProjectionMatrix();\n }\n getFocalLength() {\n const vExtentSlope = Math.tan(DEG2RAD * 0.5 * this.fov);\n return 0.5 * this.getFilmHeight() / vExtentSlope;\n }\n getEffectiveFOV() {\n return RAD2DEG * 2 * Math.atan(Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom);\n }\n getFilmWidth() {\n return this.filmGauge * Math.min(this.aspect, 1);\n }\n getFilmHeight() {\n return this.filmGauge / Math.max(this.aspect, 1);\n }\n setViewOffset(fullWidth, fullHeight, x, y, width, height) {\n this.aspect = fullWidth / fullHeight;\n if (this.view === null) {\n this.view = {\n enabled: true,\n fullWidth: 1,\n fullHeight: 1,\n offsetX: 0,\n offsetY: 0,\n width: 1,\n height: 1\n };\n }\n this.view.enabled = true;\n this.view.fullWidth = fullWidth;\n this.view.fullHeight = fullHeight;\n this.view.offsetX = x;\n this.view.offsetY = y;\n this.view.width = width;\n this.view.height = height;\n this.updateProjectionMatrix();\n }\n clearViewOffset() {\n if (this.view !== null) {\n this.view.enabled = false;\n }\n this.updateProjectionMatrix();\n }\n updateProjectionMatrix() {\n const near = this.near;\n let top = near * Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom;\n let height = 2 * top;\n let width = this.aspect * height;\n let left = -0.5 * width;\n const view = this.view;\n if (this.view !== null && this.view.enabled) {\n const fullWidth = view.fullWidth, fullHeight = view.fullHeight;\n left += view.offsetX * width / fullWidth;\n top -= view.offsetY * height / fullHeight;\n width *= view.width / fullWidth;\n height *= view.height / fullHeight;\n }\n const skew = this.filmOffset;\n if (skew !== 0)\n left += near * skew / this.getFilmWidth();\n this.projectionMatrix.makePerspective(left, left + width, top, top - height, near, this.far);\n this.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n data.object.fov = this.fov;\n data.object.zoom = this.zoom;\n data.object.near = this.near;\n data.object.far = this.far;\n data.object.focus = this.focus;\n data.object.aspect = this.aspect;\n if (this.view !== null)\n data.object.view = Object.assign({}, this.view);\n data.object.filmGauge = this.filmGauge;\n data.object.filmOffset = this.filmOffset;\n return data;\n }\n}\nPerspectiveCamera.prototype.isPerspectiveCamera = true;\nconst fov = 90, aspect = 1;\nclass CubeCamera extends Object3D {\n constructor(near, far, renderTarget) {\n super();\n this.type = \"CubeCamera\";\n if (renderTarget.isWebGLCubeRenderTarget !== true) {\n console.error(\"THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.\");\n return;\n }\n this.renderTarget = renderTarget;\n const cameraPX = new PerspectiveCamera(fov, aspect, near, far);\n cameraPX.layers = this.layers;\n cameraPX.up.set(0, -1, 0);\n cameraPX.lookAt(new Vector3(1, 0, 0));\n this.add(cameraPX);\n const cameraNX = new PerspectiveCamera(fov, aspect, near, far);\n cameraNX.layers = this.layers;\n cameraNX.up.set(0, -1, 0);\n cameraNX.lookAt(new Vector3(-1, 0, 0));\n this.add(cameraNX);\n const cameraPY = new PerspectiveCamera(fov, aspect, near, far);\n cameraPY.layers = this.layers;\n cameraPY.up.set(0, 0, 1);\n cameraPY.lookAt(new Vector3(0, 1, 0));\n this.add(cameraPY);\n const cameraNY = new PerspectiveCamera(fov, aspect, near, far);\n cameraNY.layers = this.layers;\n cameraNY.up.set(0, 0, -1);\n cameraNY.lookAt(new Vector3(0, -1, 0));\n this.add(cameraNY);\n const cameraPZ = new PerspectiveCamera(fov, aspect, near, far);\n cameraPZ.layers = this.layers;\n cameraPZ.up.set(0, -1, 0);\n cameraPZ.lookAt(new Vector3(0, 0, 1));\n this.add(cameraPZ);\n const cameraNZ = new PerspectiveCamera(fov, aspect, near, far);\n cameraNZ.layers = this.layers;\n cameraNZ.up.set(0, -1, 0);\n cameraNZ.lookAt(new Vector3(0, 0, -1));\n this.add(cameraNZ);\n }\n update(renderer, scene) {\n if (this.parent === null)\n this.updateMatrixWorld();\n const renderTarget = this.renderTarget;\n const [cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ] = this.children;\n const currentXrEnabled = renderer.xr.enabled;\n const currentRenderTarget = renderer.getRenderTarget();\n renderer.xr.enabled = false;\n const generateMipmaps = renderTarget.texture.generateMipmaps;\n renderTarget.texture.generateMipmaps = false;\n renderer.setRenderTarget(renderTarget, 0);\n renderer.render(scene, cameraPX);\n renderer.setRenderTarget(renderTarget, 1);\n renderer.render(scene, cameraNX);\n renderer.setRenderTarget(renderTarget, 2);\n renderer.render(scene, cameraPY);\n renderer.setRenderTarget(renderTarget, 3);\n renderer.render(scene, cameraNY);\n renderer.setRenderTarget(renderTarget, 4);\n renderer.render(scene, cameraPZ);\n renderTarget.texture.generateMipmaps = generateMipmaps;\n renderer.setRenderTarget(renderTarget, 5);\n renderer.render(scene, cameraNZ);\n renderer.setRenderTarget(currentRenderTarget);\n renderer.xr.enabled = currentXrEnabled;\n }\n}\nclass CubeTexture extends Texture {\n constructor(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding) {\n images = images !== void 0 ? images : [];\n mapping = mapping !== void 0 ? mapping : CubeReflectionMapping;\n super(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n this.flipY = false;\n }\n get images() {\n return this.image;\n }\n set images(value) {\n this.image = value;\n }\n}\nCubeTexture.prototype.isCubeTexture = true;\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n constructor(size, options, dummy) {\n if (Number.isInteger(options)) {\n console.warn(\"THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )\");\n options = dummy;\n }\n super(size, size, options);\n options = options || {};\n this.texture = new CubeTexture(void 0, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding);\n this.texture.isRenderTargetTexture = true;\n this.texture.generateMipmaps = options.generateMipmaps !== void 0 ? options.generateMipmaps : false;\n this.texture.minFilter = options.minFilter !== void 0 ? options.minFilter : LinearFilter;\n this.texture._needsFlipEnvMap = false;\n }\n fromEquirectangularTexture(renderer, texture) {\n this.texture.type = texture.type;\n this.texture.format = RGBAFormat;\n this.texture.encoding = texture.encoding;\n this.texture.generateMipmaps = texture.generateMipmaps;\n this.texture.minFilter = texture.minFilter;\n this.texture.magFilter = texture.magFilter;\n const shader = {\n uniforms: {\n tEquirect: {value: null}\n },\n vertexShader: `\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n fragmentShader: `\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n };\n const geometry = new BoxGeometry(5, 5, 5);\n const material = new ShaderMaterial({\n name: \"CubemapFromEquirect\",\n uniforms: cloneUniforms(shader.uniforms),\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader,\n side: BackSide,\n blending: NoBlending\n });\n material.uniforms.tEquirect.value = texture;\n const mesh = new Mesh(geometry, material);\n const currentMinFilter = texture.minFilter;\n if (texture.minFilter === LinearMipmapLinearFilter)\n texture.minFilter = LinearFilter;\n const camera = new CubeCamera(1, 10, this);\n camera.update(renderer, mesh);\n texture.minFilter = currentMinFilter;\n mesh.geometry.dispose();\n mesh.material.dispose();\n return this;\n }\n clear(renderer, color, depth, stencil) {\n const currentRenderTarget = renderer.getRenderTarget();\n for (let i = 0; i < 6; i++) {\n renderer.setRenderTarget(this, i);\n renderer.clear(color, depth, stencil);\n }\n renderer.setRenderTarget(currentRenderTarget);\n }\n}\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\nconst _vector1 = /* @__PURE__ */ new Vector3();\nconst _vector2 = /* @__PURE__ */ new Vector3();\nconst _normalMatrix = /* @__PURE__ */ new Matrix3();\nclass Plane {\n constructor(normal = new Vector3(1, 0, 0), constant = 0) {\n this.normal = normal;\n this.constant = constant;\n }\n set(normal, constant) {\n this.normal.copy(normal);\n this.constant = constant;\n return this;\n }\n setComponents(x, y, z, w) {\n this.normal.set(x, y, z);\n this.constant = w;\n return this;\n }\n setFromNormalAndCoplanarPoint(normal, point) {\n this.normal.copy(normal);\n this.constant = -point.dot(this.normal);\n return this;\n }\n setFromCoplanarPoints(a, b, c) {\n const normal = _vector1.subVectors(c, b).cross(_vector2.subVectors(a, b)).normalize();\n this.setFromNormalAndCoplanarPoint(normal, a);\n return this;\n }\n copy(plane) {\n this.normal.copy(plane.normal);\n this.constant = plane.constant;\n return this;\n }\n normalize() {\n const inverseNormalLength = 1 / this.normal.length();\n this.normal.multiplyScalar(inverseNormalLength);\n this.constant *= inverseNormalLength;\n return this;\n }\n negate() {\n this.constant *= -1;\n this.normal.negate();\n return this;\n }\n distanceToPoint(point) {\n return this.normal.dot(point) + this.constant;\n }\n distanceToSphere(sphere) {\n return this.distanceToPoint(sphere.center) - sphere.radius;\n }\n projectPoint(point, target) {\n return target.copy(this.normal).multiplyScalar(-this.distanceToPoint(point)).add(point);\n }\n intersectLine(line, target) {\n const direction = line.delta(_vector1);\n const denominator = this.normal.dot(direction);\n if (denominator === 0) {\n if (this.distanceToPoint(line.start) === 0) {\n return target.copy(line.start);\n }\n return null;\n }\n const t = -(line.start.dot(this.normal) + this.constant) / denominator;\n if (t < 0 || t > 1) {\n return null;\n }\n return target.copy(direction).multiplyScalar(t).add(line.start);\n }\n intersectsLine(line) {\n const startSign = this.distanceToPoint(line.start);\n const endSign = this.distanceToPoint(line.end);\n return startSign < 0 && endSign > 0 || endSign < 0 && startSign > 0;\n }\n intersectsBox(box) {\n return box.intersectsPlane(this);\n }\n intersectsSphere(sphere) {\n return sphere.intersectsPlane(this);\n }\n coplanarPoint(target) {\n return target.copy(this.normal).multiplyScalar(-this.constant);\n }\n applyMatrix4(matrix, optionalNormalMatrix) {\n const normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix(matrix);\n const referencePoint = this.coplanarPoint(_vector1).applyMatrix4(matrix);\n const normal = this.normal.applyMatrix3(normalMatrix).normalize();\n this.constant = -referencePoint.dot(normal);\n return this;\n }\n translate(offset) {\n this.constant -= offset.dot(this.normal);\n return this;\n }\n equals(plane) {\n return plane.normal.equals(this.normal) && plane.constant === this.constant;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nPlane.prototype.isPlane = true;\nconst _sphere$2 = /* @__PURE__ */ new Sphere();\nconst _vector$7 = /* @__PURE__ */ new Vector3();\nclass Frustum {\n constructor(p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane()) {\n this.planes = [p0, p1, p2, p3, p4, p5];\n }\n set(p0, p1, p2, p3, p4, p5) {\n const planes = this.planes;\n planes[0].copy(p0);\n planes[1].copy(p1);\n planes[2].copy(p2);\n planes[3].copy(p3);\n planes[4].copy(p4);\n planes[5].copy(p5);\n return this;\n }\n copy(frustum) {\n const planes = this.planes;\n for (let i = 0; i < 6; i++) {\n planes[i].copy(frustum.planes[i]);\n }\n return this;\n }\n setFromProjectionMatrix(m) {\n const planes = this.planes;\n const me = m.elements;\n const me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3];\n const me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7];\n const me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11];\n const me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15];\n planes[0].setComponents(me3 - me0, me7 - me4, me11 - me8, me15 - me12).normalize();\n planes[1].setComponents(me3 + me0, me7 + me4, me11 + me8, me15 + me12).normalize();\n planes[2].setComponents(me3 + me1, me7 + me5, me11 + me9, me15 + me13).normalize();\n planes[3].setComponents(me3 - me1, me7 - me5, me11 - me9, me15 - me13).normalize();\n planes[4].setComponents(me3 - me2, me7 - me6, me11 - me10, me15 - me14).normalize();\n planes[5].setComponents(me3 + me2, me7 + me6, me11 + me10, me15 + me14).normalize();\n return this;\n }\n intersectsObject(object) {\n const geometry = object.geometry;\n if (geometry.boundingSphere === null)\n geometry.computeBoundingSphere();\n _sphere$2.copy(geometry.boundingSphere).applyMatrix4(object.matrixWorld);\n return this.intersectsSphere(_sphere$2);\n }\n intersectsSprite(sprite) {\n _sphere$2.center.set(0, 0, 0);\n _sphere$2.radius = 0.7071067811865476;\n _sphere$2.applyMatrix4(sprite.matrixWorld);\n return this.intersectsSphere(_sphere$2);\n }\n intersectsSphere(sphere) {\n const planes = this.planes;\n const center = sphere.center;\n const negRadius = -sphere.radius;\n for (let i = 0; i < 6; i++) {\n const distance = planes[i].distanceToPoint(center);\n if (distance < negRadius) {\n return false;\n }\n }\n return true;\n }\n intersectsBox(box) {\n const planes = this.planes;\n for (let i = 0; i < 6; i++) {\n const plane = planes[i];\n _vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n _vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n _vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n if (plane.distanceToPoint(_vector$7) < 0) {\n return false;\n }\n }\n return true;\n }\n containsPoint(point) {\n const planes = this.planes;\n for (let i = 0; i < 6; i++) {\n if (planes[i].distanceToPoint(point) < 0) {\n return false;\n }\n }\n return true;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nfunction WebGLAnimation() {\n let context = null;\n let isAnimating = false;\n let animationLoop = null;\n let requestId = null;\n function onAnimationFrame(time, frame) {\n animationLoop(time, frame);\n requestId = context.requestAnimationFrame(onAnimationFrame);\n }\n return {\n start: function() {\n if (isAnimating === true)\n return;\n if (animationLoop === null)\n return;\n requestId = context.requestAnimationFrame(onAnimationFrame);\n isAnimating = true;\n },\n stop: function() {\n context.cancelAnimationFrame(requestId);\n isAnimating = false;\n },\n setAnimationLoop: function(callback) {\n animationLoop = callback;\n },\n setContext: function(value) {\n context = value;\n }\n };\n}\nfunction WebGLAttributes(gl, capabilities) {\n const isWebGL2 = capabilities.isWebGL2;\n const buffers = new WeakMap();\n function createBuffer(attribute, bufferType) {\n const array = attribute.array;\n const usage = attribute.usage;\n const buffer = gl.createBuffer();\n gl.bindBuffer(bufferType, buffer);\n gl.bufferData(bufferType, array, usage);\n attribute.onUploadCallback();\n let type = 5126;\n if (array instanceof Float32Array) {\n type = 5126;\n } else if (array instanceof Float64Array) {\n console.warn(\"THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.\");\n } else if (array instanceof Uint16Array) {\n if (attribute.isFloat16BufferAttribute) {\n if (isWebGL2) {\n type = 5131;\n } else {\n console.warn(\"THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.\");\n }\n } else {\n type = 5123;\n }\n } else if (array instanceof Int16Array) {\n type = 5122;\n } else if (array instanceof Uint32Array) {\n type = 5125;\n } else if (array instanceof Int32Array) {\n type = 5124;\n } else if (array instanceof Int8Array) {\n type = 5120;\n } else if (array instanceof Uint8Array) {\n type = 5121;\n } else if (array instanceof Uint8ClampedArray) {\n type = 5121;\n }\n return {\n buffer,\n type,\n bytesPerElement: array.BYTES_PER_ELEMENT,\n version: attribute.version\n };\n }\n function updateBuffer(buffer, attribute, bufferType) {\n const array = attribute.array;\n const updateRange = attribute.updateRange;\n gl.bindBuffer(bufferType, buffer);\n if (updateRange.count === -1) {\n gl.bufferSubData(bufferType, 0, array);\n } else {\n if (isWebGL2) {\n gl.bufferSubData(bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, array, updateRange.offset, updateRange.count);\n } else {\n gl.bufferSubData(bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, array.subarray(updateRange.offset, updateRange.offset + updateRange.count));\n }\n updateRange.count = -1;\n }\n }\n function get(attribute) {\n if (attribute.isInterleavedBufferAttribute)\n attribute = attribute.data;\n return buffers.get(attribute);\n }\n function remove(attribute) {\n if (attribute.isInterleavedBufferAttribute)\n attribute = attribute.data;\n const data = buffers.get(attribute);\n if (data) {\n gl.deleteBuffer(data.buffer);\n buffers.delete(attribute);\n }\n }\n function update(attribute, bufferType) {\n if (attribute.isGLBufferAttribute) {\n const cached = buffers.get(attribute);\n if (!cached || cached.version < attribute.version) {\n buffers.set(attribute, {\n buffer: attribute.buffer,\n type: attribute.type,\n bytesPerElement: attribute.elementSize,\n version: attribute.version\n });\n }\n return;\n }\n if (attribute.isInterleavedBufferAttribute)\n attribute = attribute.data;\n const data = buffers.get(attribute);\n if (data === void 0) {\n buffers.set(attribute, createBuffer(attribute, bufferType));\n } else if (data.version < attribute.version) {\n updateBuffer(data.buffer, attribute, bufferType);\n data.version = attribute.version;\n }\n }\n return {\n get,\n remove,\n update\n };\n}\nclass PlaneGeometry extends BufferGeometry {\n constructor(width = 1, height = 1, widthSegments = 1, heightSegments = 1) {\n super();\n this.type = \"PlaneGeometry\";\n this.parameters = {\n width,\n height,\n widthSegments,\n heightSegments\n };\n const width_half = width / 2;\n const height_half = height / 2;\n const gridX = Math.floor(widthSegments);\n const gridY = Math.floor(heightSegments);\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n const segment_width = width / gridX;\n const segment_height = height / gridY;\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n for (let iy = 0; iy < gridY1; iy++) {\n const y = iy * segment_height - height_half;\n for (let ix = 0; ix < gridX1; ix++) {\n const x = ix * segment_width - width_half;\n vertices.push(x, -y, 0);\n normals.push(0, 0, 1);\n uvs.push(ix / gridX);\n uvs.push(1 - iy / gridY);\n }\n }\n for (let iy = 0; iy < gridY; iy++) {\n for (let ix = 0; ix < gridX; ix++) {\n const a = ix + gridX1 * iy;\n const b = ix + gridX1 * (iy + 1);\n const c = ix + 1 + gridX1 * (iy + 1);\n const d = ix + 1 + gridX1 * iy;\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n }\n static fromJSON(data) {\n return new PlaneGeometry(data.width, data.height, data.widthSegments, data.heightSegments);\n }\n}\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\tuniform sampler2D alphaMap;\\n#endif\";\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\tuniform float alphaTest;\\n#endif\";\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( STANDARD )\\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\t#endif\\n#endif\";\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\tuniform sampler2D aoMap;\\n\tuniform float aoMapIntensity;\\n#endif\";\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\nvar bsdfs = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat V_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_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\tfloat alpha = pow2( roughness );\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\tfloat D = D_GGX( alpha, dotNH );\\n\treturn F * ( V * 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}\\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_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\tfloat G = G_BlinnPhong_Implicit( );\\n\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\tfloat alpha = pow2( roughness );\\n\tfloat invAlpha = 1.0 / alpha;\\n\tfloat cos2h = dotNH * dotNH;\\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\tfloat V = V_Neubelt( dotNV, dotNL );\\n\treturn sheenColor * ( D * V );\\n}\\n#endif\";\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, float faceDirection ) {\\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 ) * faceDirection;\\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\";\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\tvec4 plane;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\t\tplane = clippingPlanes[ i ];\\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\t\tbool clipped = true;\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\t\t\tplane = clippingPlanes[ i ];\\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t\tif ( clipped ) discard;\\n\t#endif\\n#endif\";\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\tvarying vec3 vClipPosition;\\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\tvarying vec3 vClipPosition;\\n#endif\";\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\tvClipPosition = - mvPosition.xyz;\\n#endif\";\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\tdiffuseColor.rgb *= vColor;\\n#endif\";\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\tvarying vec3 vColor;\\n#endif\";\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\tvarying vec3 vColor;\\n#endif\";\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( 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 max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\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}\\n#ifdef HIGH_PRECISION\\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\tfloat precisionSafeLength( vec3 v ) {\\n\t\tfloat maxComponent = max3( abs( v ) );\\n\t\treturn length( v / maxComponent ) * maxComponent;\\n\t}\\n#endif\\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#ifdef USE_CLEARCOAT\\n\tvec3 clearcoatNormal;\\n#endif\\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}\\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}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\treturn vec2( u, v );\\n}\";\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\t#define cubeUV_maxMipLevel 8.0\\n\t#define cubeUV_minMipLevel 4.0\\n\t#define cubeUV_maxTileSize 256.0\\n\t#define cubeUV_minTileSize 16.0\\n\tfloat getFace( vec3 direction ) {\\n\t\tvec3 absDirection = abs( direction );\\n\t\tfloat face = - 1.0;\\n\t\tif ( absDirection.x > absDirection.z ) {\\n\t\t\tif ( absDirection.x > absDirection.y )\\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\t\t\telse\\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\t\t} else {\\n\t\t\tif ( absDirection.z > absDirection.y )\\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\t\t\telse\\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\t\t}\\n\t\treturn face;\\n\t}\\n\tvec2 getUV( vec3 direction, float face ) {\\n\t\tvec2 uv;\\n\t\tif ( face == 0.0 ) {\\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\t\t} else if ( face == 1.0 ) {\\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\t\t} else if ( face == 2.0 ) {\\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\t\t} else if ( face == 3.0 ) {\\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\t\t} else if ( face == 4.0 ) {\\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\t\t} else {\\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\t\t}\\n\t\treturn 0.5 * ( uv + 1.0 );\\n\t}\\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\t\tfloat face = getFace( direction );\\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\t\tfloat faceSize = exp2( mipInt );\\n\t\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\\n\t\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 ) + 0.5;\\n\t\tif ( face > 2.0 ) {\\n\t\t\tuv.y += faceSize;\\n\t\t\tface -= 3.0;\\n\t\t}\\n\t\tuv.x += face * faceSize;\\n\t\tif ( mipInt < cubeUV_maxMipLevel ) {\\n\t\t\tuv.y += 2.0 * cubeUV_maxTileSize;\\n\t\t}\\n\t\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n\t\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\\n\t\tuv *= texelSize;\\n\t\treturn texture2D( envMap, uv ).rgb;\\n\t}\\n\t#define r0 1.0\\n\t#define v0 0.339\\n\t#define m0 - 2.0\\n\t#define r1 0.8\\n\t#define v1 0.276\\n\t#define m1 - 1.0\\n\t#define r4 0.4\\n\t#define v4 0.046\\n\t#define m4 2.0\\n\t#define r5 0.305\\n\t#define v5 0.016\\n\t#define m5 3.0\\n\t#define r6 0.21\\n\t#define v6 0.0038\\n\t#define m6 4.0\\n\tfloat roughnessToMip( float roughness ) {\\n\t\tfloat mip = 0.0;\\n\t\tif ( roughness >= r1 ) {\\n\t\t\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\t\t} else if ( roughness >= r4 ) {\\n\t\t\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\t\t} else if ( roughness >= r5 ) {\\n\t\t\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\t\t} else if ( roughness >= r6 ) {\\n\t\t\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\t\t} else {\\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\\n\t\treturn mip;\\n\t}\\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\t\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\\n\t\tfloat mipF = fract( mip );\\n\t\tfloat mipInt = floor( mip );\\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\t\tif ( mipF == 0.0 ) {\\n\t\t\treturn vec4( color0, 1.0 );\\n\t\t} else {\\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\t\t}\\n\t}\\n#endif\";\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\tmat3 m = mat3( instanceMatrix );\\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\t#ifdef FLIP_SIDED\\n\t\ttransformedTangent = - transformedTangent;\\n\t#endif\\n#endif\";\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\tuniform sampler2D displacementMap;\\n\tuniform float displacementScale;\\n\tuniform float displacementBias;\\n#endif\";\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\tuniform sampler2D emissiveMap;\\n#endif\";\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\nvar encodings_pars_fragment = \"vec4 LinearToLinear( in vec4 value ) {\\n\treturn value;\\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}\";\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\t#ifdef ENV_WORLDPOS\\n\t\tvec3 cameraToFrag;\\n\t\tif ( isOrthographic ) {\\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\t\t} else {\\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\t\t}\\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\t\t#ifdef ENVMAP_MODE_REFLECTION\\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\t\t#else\\n\t\t\tvec3 reflectVec = refract( cameraToFrag, 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\tenvColor = envMapTexelToLinear( envColor );\\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\t\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\t#else\\n\t\tvec4 envColor = vec4( 0.0 );\\n\t#endif\\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\";\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\tuniform float envMapIntensity;\\n\tuniform float flipEnvMap;\\n\t#ifdef ENVMAP_TYPE_CUBE\\n\t\tuniform samplerCube envMap;\\n\t#else\\n\t\tuniform sampler2D envMap;\\n\t#endif\\n\t\\n#endif\";\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\tuniform float reflectivity;\\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\t\t#define ENV_WORLDPOS\\n\t#endif\\n\t#ifdef ENV_WORLDPOS\\n\t\tvarying vec3 vWorldPosition;\\n\t\tuniform float refractionRatio;\\n\t#else\\n\t\tvarying vec3 vReflect;\\n\t#endif\\n#endif\";\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\\n\t\t#define ENV_WORLDPOS\\n\t#endif\\n\t#ifdef ENV_WORLDPOS\\n\t\t\\n\t\tvarying vec3 vWorldPosition;\\n\t#else\\n\t\tvarying vec3 vReflect;\\n\t\tuniform float refractionRatio;\\n\t#endif\\n#endif\";\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\t#ifdef ENV_WORLDPOS\\n\t\tvWorldPosition = worldPosition.xyz;\\n\t#else\\n\t\tvec3 cameraToVertex;\\n\t\tif ( isOrthographic ) {\\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\t\t} else {\\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\t\t}\\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\";\nvar fog_vertex = \"#ifdef USE_FOG\\n\tvFogDepth = - mvPosition.z;\\n#endif\";\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\tvarying float vFogDepth;\\n#endif\";\nvar fog_fragment = \"#ifdef USE_FOG\\n\t#ifdef FOG_EXP2\\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\t#else\\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\t#endif\\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\tuniform vec3 fogColor;\\n\tvarying float vFogDepth;\\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\";\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\tfloat dotNL = dot( normal, lightDirection );\\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\t#ifdef USE_GRADIENTMAP\\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\\n\t#else\\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\t#endif\\n}\";\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\t\tlightMapIrradiance *= PI;\\n\t#endif\\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\tuniform sampler2D lightMap;\\n\tuniform float lightMapIntensity;\\n#endif\";\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : 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;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );\\n#ifdef DOUBLE_SIDED\\n\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\t\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\\n\t\tdotNL = dot( geometry.normal, directLight.direction );\\n\t\tdirectLightColor_Diffuse = 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\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\t\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\\n\t\tdotNL = dot( geometry.normal, directLight.direction );\\n\t\tdirectLightColor_Diffuse = 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\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\t\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\\n\t\tdotNL = dot( geometry.normal, directLight.direction );\\n\t\tdirectLightColor_Diffuse = 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\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\t\t#ifdef DOUBLE_SIDED\\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );\\n\t\t#endif\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\";\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform 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 vec3 normal ) {\\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\tvec3 irradiance = ambientLightColor;\\n\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\t\tif ( cutoffDistance > 0.0 ) {\\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\t\t}\\n\t\treturn distanceFalloff;\\n\t#else\\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\t\t}\\n\t\treturn 1.0;\\n\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\tstruct DirectionalLight {\\n\t\tvec3 direction;\\n\t\tvec3 color;\\n\t};\\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\t\tlight.color = directionalLight.color;\\n\t\tlight.direction = directionalLight.direction;\\n\t\tlight.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};\\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\t\tvec3 lVector = pointLight.position - geometry.position;\\n\t\tlight.direction = normalize( lVector );\\n\t\tfloat lightDistance = length( lVector );\\n\t\tlight.color = pointLight.color;\\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\t\tlight.visible = ( light.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};\\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\t\tvec3 lVector = spotLight.position - geometry.position;\\n\t\tlight.direction = normalize( lVector );\\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\t\tif ( spotAttenuation > 0.0 ) {\\n\t\t\tfloat lightDistance = length( lVector );\\n\t\t\tlight.color = spotLight.color * spotAttenuation;\\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\t\t} else {\\n\t\t\tlight.color = vec3( 0.0 );\\n\t\t\tlight.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 vec3 normal ) {\\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\t\treturn irradiance;\\n\t}\\n#endif\";\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\t#ifdef ENVMAP_MODE_REFRACTION\\n\t\tuniform float refractionRatio;\\n\t#endif\\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\\n\t\t#else\\n\t\t\treturn vec3( 0.0 );\\n\t\t#endif\\n\t}\\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\t\t\tvec3 reflectVec;\\n\t\t\t#ifdef ENVMAP_MODE_REFLECTION\\n\t\t\t\treflectVec = reflect( - viewDir, normal );\\n\t\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\t\t\t#else\\n\t\t\t\treflectVec = refract( - viewDir, normal, refractionRatio );\\n\t\t\t#endif\\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\t\t\treturn envMapColor.rgb * envMapIntensity;\\n\t\t#else\\n\t\t\treturn vec3( 0.0 );\\n\t\t#endif\\n\t}\\n#endif\";\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\t(0)\";\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\tvec3 diffuseColor;\\n\tvec3 specularColor;\\n\tfloat specularShininess;\\n\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\tvec3 irradiance = dotNL * directLight.color;\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, 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_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)\";\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\t#ifdef SPECULAR\\n\t\tfloat specularIntensityFactor = specularIntensity;\\n\t\tvec3 specularColorFactor = specularColor;\\n\t\t#ifdef USE_SPECULARINTENSITYMAP\\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\t\t#endif\\n\t\t#ifdef USE_SPECULARCOLORMAP\\n\t\t\tspecularColorFactor *= specularColorMapTexelToLinear( texture2D( specularColorMap, vUv ) ).rgb;\\n\t\t#endif\\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\t#else\\n\t\tfloat specularIntensityFactor = 1.0;\\n\t\tvec3 specularColorFactor = vec3( 1.0 );\\n\t\tmaterial.specularF90 = 1.0;\\n\t#endif\\n\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\tmaterial.clearcoat = clearcoat;\\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\tmaterial.clearcoatF90 = 1.0;\\n\t#ifdef USE_CLEARCOATMAP\\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\t#endif\\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\t#endif\\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\tmaterial.clearcoatRoughness += geometryRoughness;\\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\tmaterial.sheenColor = sheenColor;\\n\t#ifdef USE_SHEENCOLORMAP\\n\t\tmaterial.sheenColor *= sheenColorMapTexelToLinear( texture2D( sheenColorMap, vUv ) ).rgb;\\n\t#endif\\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\t#ifdef USE_SHEENROUGHNESSMAP\\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\\n\t#endif\\n#endif\";\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\tvec3 diffuseColor;\\n\tfloat roughness;\\n\tvec3 specularColor;\\n\tfloat specularF90;\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat clearcoat;\\n\t\tfloat clearcoatRoughness;\\n\t\tvec3 clearcoatF0;\\n\t\tfloat clearcoatF90;\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tvec3 sheenColor;\\n\t\tfloat sheenRoughness;\\n\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec3 sheenSpecular = vec3( 0.0 );\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness) {\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tfloat r2 = roughness * roughness;\\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\tvec4 r = roughness * c0 + c1;\\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\tvec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\\n\tfloat Ess = fab.x + fab.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}\\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.roughness;\\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#ifdef USE_CLEARCOAT\\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\t#endif\\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\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#ifdef USE_CLEARCOAT\\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\\n\t#endif\\n\tvec3 singleScattering = vec3( 0.0 );\\n\tvec3 multiScattering = vec3( 0.0 );\\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\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\\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}\";\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\tPointLight pointLight;\\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\tPointLightShadow pointLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\t\tpointLight = pointLights[ i ];\\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\t\tpointLightShadow = pointLightShadows[ i ];\\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\tSpotLight spotLight;\\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\tSpotLightShadow spotLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\t\tspotLight = spotLights[ i ];\\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\t\tspotLightShadow = spotLightShadows[ i ];\\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\tDirectionalLight directionalLight;\\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\tDirectionalLightShadow directionalLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\t\tdirectionalLight = directionalLights[ i ];\\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\tRectAreaLight rectAreaLight;\\n\t#pragma unroll_loop_start\\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\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\tvec3 iblIrradiance = vec3( 0.0 );\\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\tvec3 radiance = vec3( 0.0 );\\n\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\t#ifdef USE_LIGHTMAP\\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\t\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * 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( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\t\tiblIrradiance += getIBLIrradiance( geometry.normal );\\n\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\t#ifdef USE_CLEARCOAT\\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\t#endif\\n#endif\";\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, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\tuniform float logDepthBufFC;\\n\tvarying float vFragDepth;\\n\tvarying float vIsPerspective;\\n#endif\";\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\t#ifdef USE_LOGDEPTHBUF_EXT\\n\t\tvarying float vFragDepth;\\n\t\tvarying float vIsPerspective;\\n\t#else\\n\t\tuniform float logDepthBufFC;\\n\t#endif\\n#endif\";\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\t#ifdef USE_LOGDEPTHBUF_EXT\\n\t\tvFragDepth = 1.0 + gl_Position.w;\\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\t#else\\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\t\t\tgl_Position.z *= gl_Position.w;\\n\t\t}\\n\t#endif\\n#endif\";\nvar map_fragment = \"#ifdef USE_MAP\\n\tvec4 texelColor = texture2D( map, vUv );\\n\ttexelColor = mapTexelToLinear( texelColor );\\n\tdiffuseColor *= texelColor;\\n#endif\";\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\tuniform sampler2D map;\\n#endif\";\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\tvec4 mapTexel = texture2D( map, uv );\\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tuniform sampler2D alphaMap;\\n#endif\";\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\tuniform sampler2D metalnessMap;\\n#endif\";\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\tobjectNormal *= morphTargetBaseInfluence;\\n\t#ifdef MORPHTARGETS_TEXTURE\\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\t\t\tif ( morphTargetInfluences[ i ] > 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1, 2 ) * morphTargetInfluences[ i ];\\n\t\t}\\n\t#else\\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\t#endif\\n#endif\";\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\tuniform float morphTargetBaseInfluence;\\n\t#ifdef MORPHTARGETS_TEXTURE\\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\t\tuniform sampler2DArray morphTargetsTexture;\\n\t\tuniform vec2 morphTargetsTextureSize;\\n\t\tvec3 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset, const in int stride ) {\\n\t\t\tfloat texelIndex = float( vertexIndex * stride + offset );\\n\t\t\tfloat y = floor( texelIndex / morphTargetsTextureSize.x );\\n\t\t\tfloat x = texelIndex - y * morphTargetsTextureSize.x;\\n\t\t\tvec3 morphUV = vec3( ( x + 0.5 ) / morphTargetsTextureSize.x, y / morphTargetsTextureSize.y, morphTargetIndex );\\n\t\t\treturn texture( morphTargetsTexture, morphUV ).xyz;\\n\t\t}\\n\t#else\\n\t\t#ifndef USE_MORPHNORMALS\\n\t\t\tuniform float morphTargetInfluences[ 8 ];\\n\t\t#else\\n\t\t\tuniform float morphTargetInfluences[ 4 ];\\n\t\t#endif\\n\t#endif\\n#endif\";\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\ttransformed *= morphTargetBaseInfluence;\\n\t#ifdef MORPHTARGETS_TEXTURE\\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\t\t\t#ifndef USE_MORPHNORMALS\\n\t\t\t\tif ( morphTargetInfluences[ i ] > 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 1 ) * morphTargetInfluences[ i ];\\n\t\t\t#else\\n\t\t\t\tif ( morphTargetInfluences[ i ] > 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 2 ) * morphTargetInfluences[ i ];\\n\t\t\t#endif\\n\t\t}\\n\t#else\\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\t\t#ifndef USE_MORPHNORMALS\\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\t\t#endif\\n\t#endif\\n#endif\";\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#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 * faceDirection;\\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 * faceDirection;\\n\t\t\tbitangent = bitangent * faceDirection;\\n\t\t#endif\\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\t\t#endif\\n\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\t#ifdef FLIP_SIDED\\n\t\tnormal = - normal;\\n\t#endif\\n\t#ifdef DOUBLE_SIDED\\n\t\tnormal = normal * faceDirection;\\n\t#endif\\n\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\tmapN.xy *= normalScale;\\n\t#ifdef USE_TANGENT\\n\t\tnormal = normalize( vTBN * mapN );\\n\t#else\\n\t\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\t#endif\\n#elif defined( USE_BUMPMAP )\\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\nvar normal_pars_fragment = \"#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\";\nvar normal_pars_vertex = \"#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\";\nvar normal_vertex = \"#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\";\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\tuniform sampler2D normalMap;\\n\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\t\tvec2 st0 = dFdx( vUv.st );\\n\t\tvec2 st1 = dFdy( vUv.st );\\n\t\tvec3 N = surf_norm;\\n\t\tvec3 q1perp = cross( q1, N );\\n\t\tvec3 q0perp = cross( N, q0 );\\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\t}\\n#endif\";\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\t#ifdef USE_TANGENT\\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\t#else\\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\t#endif\\n#endif\";\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\tuniform sampler2D clearcoatNormalMap;\\n\tuniform vec2 clearcoatNormalScale;\\n#endif\";\nvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\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}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\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}\";\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\nvar dithering_fragment = \"#ifdef DITHERING\\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\nvar dithering_pars_fragment = \"#ifdef 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\";\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\troughnessFactor *= texelRoughness.g;\\n#endif\";\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\tuniform sampler2D roughnessMap;\\n#endif\";\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tstruct DirectionalLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t\tstruct SpotLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tstruct PointLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t\tfloat shadowCameraNear;\\n\t\t\tfloat shadowCameraFar;\\n\t\t};\\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\t#endif\\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\t}\\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\t}\\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\t\tfloat occlusion = 1.0;\\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\t\tfloat hard_shadow = step( compare , distribution.x );\\n\t\tif (hard_shadow != 1.0 ) {\\n\t\t\tfloat distance = compare - distribution.x ;\\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\t\t}\\n\t\treturn occlusion;\\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\tfloat dx2 = dx0 / 2.0;\\n\t\t\tfloat dy2 = dy0 / 2.0;\\n\t\t\tfloat dx3 = dx1 / 2.0;\\n\t\t\tfloat dy3 = dy1 / 2.0;\\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( dx2, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), 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( dx2, dy3 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), 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 / 17.0 );\\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\t\t\tfloat dx = texelSize.x;\\n\t\t\tfloat dy = texelSize.y;\\n\t\t\tvec2 uv = shadowCoord.xy;\\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\t\t\tuv -= f * texelSize;\\n\t\t\tshadow = (\\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\t\t\t\t\t f.x ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\t\t\t\t\t f.x ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t f.y ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t f.y ) +\\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\t\t\t\t\t\t f.x ),\\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t\t f.x ),\\n\t\t\t\t\t f.y )\\n\t\t\t) * ( 1.0 / 9.0 );\\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\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 ) || defined( SHADOWMAP_TYPE_VSM )\\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\";\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tstruct DirectionalLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t\tstruct SpotLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tstruct PointLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t\tfloat shadowCameraNear;\\n\t\t\tfloat shadowCameraFar;\\n\t\t};\\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\t#endif\\n#endif\";\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\t\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\t\tvec4 shadowWorldPosition;\\n\t#endif\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n#endif\";\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\tfloat shadow = 1.0;\\n\t#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\tDirectionalLightShadow directionalLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\t\tdirectionalLight = directionalLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\tSpotLightShadow spotLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\t\tspotLight = spotLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\tPointLightShadow pointLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\t\tpointLight = pointLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#endif\\n\treturn shadow;\\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\";\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\tuniform mat4 bindMatrix;\\n\tuniform mat4 bindMatrixInverse;\\n\t#ifdef BONE_TEXTURE\\n\t\tuniform highp 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\";\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\";\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\";\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\";\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\tuniform sampler2D specularMap;\\n#endif\";\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\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}\\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 RRTAndODTFit( vec3 v ) {\\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\tconst mat3 ACESInputMat = mat3(\\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\\n\t);\\n\tconst mat3 ACESOutputMat = mat3(\\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\\n\t);\\n\tcolor *= toneMappingExposure / 0.6;\\n\tcolor = ACESInputMat * color;\\n\tcolor = RRTAndODTFit( color );\\n\tcolor = ACESOutputMat * color;\\n\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\tfloat transmissionAlpha = 1.0;\\n\tfloat transmissionFactor = transmission;\\n\tfloat thicknessFactor = thickness;\\n\t#ifdef USE_TRANSMISSIONMAP\\n\t\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\\n\t#endif\\n\t#ifdef USE_THICKNESSMAP\\n\t\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\\n\t#endif\\n\tvec3 pos = vWorldPosition;\\n\tvec3 v = normalize( cameraPosition - pos );\\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\tvec4 transmission = getIBLVolumeRefraction(\\n\t\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\\n\t\tattenuationColor, attenuationDistance );\\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\\n\ttransmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );\\n#endif\";\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\tuniform float transmission;\\n\tuniform float thickness;\\n\tuniform float attenuationDistance;\\n\tuniform vec3 attenuationColor;\\n\t#ifdef USE_TRANSMISSIONMAP\\n\t\tuniform sampler2D transmissionMap;\\n\t#endif\\n\t#ifdef USE_THICKNESSMAP\\n\t\tuniform sampler2D thicknessMap;\\n\t#endif\\n\tuniform vec2 transmissionSamplerSize;\\n\tuniform sampler2D transmissionSamplerMap;\\n\tuniform mat4 modelMatrix;\\n\tuniform mat4 projectionMatrix;\\n\tvarying vec3 vWorldPosition;\\n\tvec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {\\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\t\tvec3 modelScale;\\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\\n\t}\\n\tfloat applyIorToRoughness( float roughness, float ior ) {\\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\t}\\n\tvec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior ) {\\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\t\t#ifdef TEXTURE_LOD_EXT\\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\t\t#else\\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\t\t#endif\\n\t}\\n\tvec3 applyVolumeAttenuation( vec3 radiance, float transmissionDistance, vec3 attenuationColor, float attenuationDistance ) {\\n\t\tif ( attenuationDistance == 0.0 ) {\\n\t\t\treturn radiance;\\n\t\t} else {\\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\\n\t\t}\\n\t}\\n\tvec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 diffuseColor, vec3 specularColor, float specularF90,\\n\t\tvec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness,\\n\t\tvec3 attenuationColor, float attenuationDistance ) {\\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\t\tvec3 refractedRayExit = position + transmissionRay;\\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\t\trefractionCoords += 1.0;\\n\t\trefractionCoords /= 2.0;\\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\t}\\n#endif\";\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\tvarying vec2 vUv;\\n#endif\";\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\t#ifdef UVS_VERTEX_ONLY\\n\t\tvec2 vUv;\\n\t#else\\n\t\tvarying vec2 vUv;\\n\t#endif\\n\tuniform mat3 uvTransform;\\n#endif\";\nvar uv_vertex = \"#ifdef USE_UV\\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tvarying vec2 vUv2;\\n#endif\";\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tattribute vec2 uv2;\\n\tvarying vec2 vUv2;\\n\tuniform mat3 uv2Transform;\\n#endif\";\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\\n\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\t#ifdef USE_INSTANCING\\n\t\tworldPosition = instanceMatrix * worldPosition;\\n\t#endif\\n\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\nconst vertex$g = \"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}\";\nconst fragment$g = \"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}\";\nconst vertex$f = \"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}\";\nconst fragment$f = \"#include \\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\tvec3 vReflect = vWorldDirection;\\n\t#include \\n\tgl_FragColor = envColor;\\n\tgl_FragColor.a *= opacity;\\n\t#include \\n\t#include \\n}\";\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\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\tvHighPrecisionZW = gl_Position.zw;\\n}\";\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\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\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\t#if DEPTH_PACKING == 3200\\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\t#elif DEPTH_PACKING == 3201\\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\t#endif\\n}\";\nconst vertex$d = \"#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}\";\nconst fragment$d = \"#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 \\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}\";\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\tvWorldDirection = transformDirection( position, modelMatrix );\\n\t#include \\n\t#include \\n}\";\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\tvec3 direction = normalize( vWorldDirection );\\n\tvec2 sampleUV = equirectUv( direction );\\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\tgl_FragColor = mapTexelToLinear( texColor );\\n\t#include \\n\t#include \\n}\";\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\tvLineDistance = scale * lineDistance;\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst fragment$b = \"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\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$a = \"#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#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\t\t#include \\n\t\t#include \\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\t#include \\n\t#include \\n}\";\nconst fragment$a = \"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 \\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\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\t\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * 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\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$9 = \"#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}\";\nconst fragment$9 = \"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 \\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#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_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_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\t#include \\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\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\tvViewPosition = - mvPosition.xyz;\\n}\";\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\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\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\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\tvarying vec3 vViewPosition;\\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#include \\n\t#include \\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( TANGENTSPACE_NORMALMAP )\\n\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\tvarying vec3 vViewPosition;\\n#endif\\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\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\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\tvViewPosition = - mvPosition.xyz;\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst fragment$6 = \"#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 \\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\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\tvarying vec3 vWorldPosition;\\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\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\t#include \\n\t#include \\n\t#include \\n#ifdef USE_TRANSMISSION\\n\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\t#define IOR\\n\t#define SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\tuniform float specularIntensity;\\n\tuniform vec3 specularColor;\\n\t#ifdef USE_SPECULARINTENSITYMAP\\n\t\tuniform sampler2D specularIntensityMap;\\n\t#endif\\n\t#ifdef USE_SPECULARCOLORMAP\\n\t\tuniform sampler2D specularColorMap;\\n\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\tuniform float clearcoat;\\n\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\tuniform vec3 sheenColor;\\n\tuniform float sheenRoughness;\\n\t#ifdef USE_SHEENCOLORMAP\\n\t\tuniform sampler2D sheenColorMap;\\n\t#endif\\n\t#ifdef USE_SHEENROUGHNESSMAP\\n\t\tuniform sampler2D sheenRoughnessMap;\\n\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\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 \\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\t#include \\n\t#include \\n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\t#include \\n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\t#ifdef USE_SHEEN\\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\\n\t#endif\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\\n\t#endif\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\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\tvViewPosition = - mvPosition.xyz;\\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\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\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$3 = \"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 = isPerspectiveMatrix( projectionMatrix );\\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}\";\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\t#include \\n\tvec3 outgoingLight = vec3( 0.0 );\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\toutgoingLight = diffuseColor.rgb;\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst vertex$2 = \"#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}\";\nconst fragment$2 = \"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\t#include \\n\t#include \\n}\";\nconst vertex$1 = \"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 = isPerspectiveMatrix( projectionMatrix );\\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}\";\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\t#include \\n\tvec3 outgoingLight = vec3( 0.0 );\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n\toutgoingLight = diffuseColor.rgb;\\n\t#include \\n\t#include \\n\t#include \\n\t#include \\n}\";\nconst ShaderChunk = {\n alphamap_fragment,\n alphamap_pars_fragment,\n alphatest_fragment,\n alphatest_pars_fragment,\n aomap_fragment,\n aomap_pars_fragment,\n begin_vertex,\n beginnormal_vertex,\n bsdfs,\n bumpmap_pars_fragment,\n clipping_planes_fragment,\n clipping_planes_pars_fragment,\n clipping_planes_pars_vertex,\n clipping_planes_vertex,\n color_fragment,\n color_pars_fragment,\n color_pars_vertex,\n color_vertex,\n common,\n cube_uv_reflection_fragment,\n defaultnormal_vertex,\n displacementmap_pars_vertex,\n displacementmap_vertex,\n emissivemap_fragment,\n emissivemap_pars_fragment,\n encodings_fragment,\n encodings_pars_fragment,\n envmap_fragment,\n envmap_common_pars_fragment,\n envmap_pars_fragment,\n envmap_pars_vertex,\n envmap_physical_pars_fragment,\n envmap_vertex,\n fog_vertex,\n fog_pars_vertex,\n fog_fragment,\n fog_pars_fragment,\n gradientmap_pars_fragment,\n lightmap_fragment,\n lightmap_pars_fragment,\n lights_lambert_vertex,\n lights_pars_begin,\n lights_toon_fragment,\n lights_toon_pars_fragment,\n lights_phong_fragment,\n lights_phong_pars_fragment,\n lights_physical_fragment,\n lights_physical_pars_fragment,\n lights_fragment_begin,\n lights_fragment_maps,\n lights_fragment_end,\n logdepthbuf_fragment,\n logdepthbuf_pars_fragment,\n logdepthbuf_pars_vertex,\n logdepthbuf_vertex,\n map_fragment,\n map_pars_fragment,\n map_particle_fragment,\n map_particle_pars_fragment,\n metalnessmap_fragment,\n metalnessmap_pars_fragment,\n morphnormal_vertex,\n morphtarget_pars_vertex,\n morphtarget_vertex,\n normal_fragment_begin,\n normal_fragment_maps,\n normal_pars_fragment,\n normal_pars_vertex,\n normal_vertex,\n normalmap_pars_fragment,\n clearcoat_normal_fragment_begin,\n clearcoat_normal_fragment_maps,\n clearcoat_pars_fragment,\n output_fragment,\n packing,\n premultiplied_alpha_fragment,\n project_vertex,\n dithering_fragment,\n dithering_pars_fragment,\n roughnessmap_fragment,\n roughnessmap_pars_fragment,\n shadowmap_pars_fragment,\n shadowmap_pars_vertex,\n shadowmap_vertex,\n shadowmask_pars_fragment,\n skinbase_vertex,\n skinning_pars_vertex,\n skinning_vertex,\n skinnormal_vertex,\n specularmap_fragment,\n specularmap_pars_fragment,\n tonemapping_fragment,\n tonemapping_pars_fragment,\n transmission_fragment,\n transmission_pars_fragment,\n uv_pars_fragment,\n uv_pars_vertex,\n uv_vertex,\n uv2_pars_fragment,\n uv2_pars_vertex,\n uv2_vertex,\n worldpos_vertex,\n background_vert: vertex$g,\n background_frag: fragment$g,\n cube_vert: vertex$f,\n cube_frag: fragment$f,\n depth_vert: vertex$e,\n depth_frag: fragment$e,\n distanceRGBA_vert: vertex$d,\n distanceRGBA_frag: fragment$d,\n equirect_vert: vertex$c,\n equirect_frag: fragment$c,\n linedashed_vert: vertex$b,\n linedashed_frag: fragment$b,\n meshbasic_vert: vertex$a,\n meshbasic_frag: fragment$a,\n meshlambert_vert: vertex$9,\n meshlambert_frag: fragment$9,\n meshmatcap_vert: vertex$8,\n meshmatcap_frag: fragment$8,\n meshnormal_vert: vertex$7,\n meshnormal_frag: fragment$7,\n meshphong_vert: vertex$6,\n meshphong_frag: fragment$6,\n meshphysical_vert: vertex$5,\n meshphysical_frag: fragment$5,\n meshtoon_vert: vertex$4,\n meshtoon_frag: fragment$4,\n points_vert: vertex$3,\n points_frag: fragment$3,\n shadow_vert: vertex$2,\n shadow_frag: fragment$2,\n sprite_vert: vertex$1,\n sprite_frag: fragment$1\n};\nconst UniformsLib = {\n common: {\n diffuse: {value: new Color(16777215)},\n opacity: {value: 1},\n map: {value: null},\n uvTransform: {value: new Matrix3()},\n uv2Transform: {value: new Matrix3()},\n alphaMap: {value: null},\n alphaTest: {value: 0}\n },\n specularmap: {\n specularMap: {value: null}\n },\n envmap: {\n envMap: {value: null},\n flipEnvMap: {value: -1},\n reflectivity: {value: 1},\n ior: {value: 1.5},\n refractionRatio: {value: 0.98}\n },\n aomap: {\n aoMap: {value: null},\n aoMapIntensity: {value: 1}\n },\n lightmap: {\n lightMap: {value: null},\n lightMapIntensity: {value: 1}\n },\n emissivemap: {\n emissiveMap: {value: null}\n },\n bumpmap: {\n bumpMap: {value: null},\n bumpScale: {value: 1}\n },\n normalmap: {\n normalMap: {value: null},\n normalScale: {value: new Vector2(1, 1)}\n },\n displacementmap: {\n displacementMap: {value: null},\n displacementScale: {value: 1},\n displacementBias: {value: 0}\n },\n roughnessmap: {\n roughnessMap: {value: null}\n },\n metalnessmap: {\n metalnessMap: {value: null}\n },\n gradientmap: {\n gradientMap: {value: null}\n },\n fog: {\n fogDensity: {value: 25e-5},\n fogNear: {value: 1},\n fogFar: {value: 2e3},\n fogColor: {value: new Color(16777215)}\n },\n lights: {\n ambientLightColor: {value: []},\n lightProbe: {value: []},\n directionalLights: {value: [], properties: {\n direction: {},\n color: {}\n }},\n directionalLightShadows: {value: [], properties: {\n shadowBias: {},\n shadowNormalBias: {},\n shadowRadius: {},\n shadowMapSize: {}\n }},\n directionalShadowMap: {value: []},\n directionalShadowMatrix: {value: []},\n spotLights: {value: [], properties: {\n color: {},\n position: {},\n direction: {},\n distance: {},\n coneCos: {},\n penumbraCos: {},\n decay: {}\n }},\n spotLightShadows: {value: [], properties: {\n shadowBias: {},\n shadowNormalBias: {},\n shadowRadius: {},\n shadowMapSize: {}\n }},\n spotShadowMap: {value: []},\n spotShadowMatrix: {value: []},\n pointLights: {value: [], properties: {\n color: {},\n position: {},\n decay: {},\n distance: {}\n }},\n pointLightShadows: {value: [], properties: {\n shadowBias: {},\n shadowNormalBias: {},\n shadowRadius: {},\n shadowMapSize: {},\n shadowCameraNear: {},\n shadowCameraFar: {}\n }},\n pointShadowMap: {value: []},\n pointShadowMatrix: {value: []},\n hemisphereLights: {value: [], properties: {\n direction: {},\n skyColor: {},\n groundColor: {}\n }},\n rectAreaLights: {value: [], properties: {\n color: {},\n position: {},\n width: {},\n height: {}\n }},\n ltc_1: {value: null},\n ltc_2: {value: null}\n },\n points: {\n diffuse: {value: new Color(16777215)},\n opacity: {value: 1},\n size: {value: 1},\n scale: {value: 1},\n map: {value: null},\n alphaMap: {value: null},\n alphaTest: {value: 0},\n uvTransform: {value: new Matrix3()}\n },\n sprite: {\n diffuse: {value: new Color(16777215)},\n opacity: {value: 1},\n center: {value: new Vector2(0.5, 0.5)},\n rotation: {value: 0},\n map: {value: null},\n alphaMap: {value: null},\n alphaTest: {value: 0},\n uvTransform: {value: new Matrix3()}\n }\n};\nconst ShaderLib = {\n basic: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.specularmap,\n UniformsLib.envmap,\n UniformsLib.aomap,\n UniformsLib.lightmap,\n UniformsLib.fog\n ]),\n vertexShader: ShaderChunk.meshbasic_vert,\n fragmentShader: ShaderChunk.meshbasic_frag\n },\n lambert: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.specularmap,\n UniformsLib.envmap,\n UniformsLib.aomap,\n UniformsLib.lightmap,\n UniformsLib.emissivemap,\n UniformsLib.fog,\n UniformsLib.lights,\n {\n emissive: {value: new Color(0)}\n }\n ]),\n vertexShader: ShaderChunk.meshlambert_vert,\n fragmentShader: ShaderChunk.meshlambert_frag\n },\n phong: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.specularmap,\n UniformsLib.envmap,\n UniformsLib.aomap,\n UniformsLib.lightmap,\n UniformsLib.emissivemap,\n UniformsLib.bumpmap,\n UniformsLib.normalmap,\n UniformsLib.displacementmap,\n UniformsLib.fog,\n UniformsLib.lights,\n {\n emissive: {value: new Color(0)},\n specular: {value: new Color(1118481)},\n shininess: {value: 30}\n }\n ]),\n vertexShader: ShaderChunk.meshphong_vert,\n fragmentShader: ShaderChunk.meshphong_frag\n },\n standard: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.envmap,\n UniformsLib.aomap,\n UniformsLib.lightmap,\n UniformsLib.emissivemap,\n UniformsLib.bumpmap,\n UniformsLib.normalmap,\n UniformsLib.displacementmap,\n UniformsLib.roughnessmap,\n UniformsLib.metalnessmap,\n UniformsLib.fog,\n UniformsLib.lights,\n {\n emissive: {value: new Color(0)},\n roughness: {value: 1},\n metalness: {value: 0},\n envMapIntensity: {value: 1}\n }\n ]),\n vertexShader: ShaderChunk.meshphysical_vert,\n fragmentShader: ShaderChunk.meshphysical_frag\n },\n toon: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.aomap,\n UniformsLib.lightmap,\n UniformsLib.emissivemap,\n UniformsLib.bumpmap,\n UniformsLib.normalmap,\n UniformsLib.displacementmap,\n UniformsLib.gradientmap,\n UniformsLib.fog,\n UniformsLib.lights,\n {\n emissive: {value: new Color(0)}\n }\n ]),\n vertexShader: ShaderChunk.meshtoon_vert,\n fragmentShader: ShaderChunk.meshtoon_frag\n },\n matcap: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.bumpmap,\n UniformsLib.normalmap,\n UniformsLib.displacementmap,\n UniformsLib.fog,\n {\n matcap: {value: null}\n }\n ]),\n vertexShader: ShaderChunk.meshmatcap_vert,\n fragmentShader: ShaderChunk.meshmatcap_frag\n },\n points: {\n uniforms: mergeUniforms([\n UniformsLib.points,\n UniformsLib.fog\n ]),\n vertexShader: ShaderChunk.points_vert,\n fragmentShader: ShaderChunk.points_frag\n },\n dashed: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.fog,\n {\n scale: {value: 1},\n dashSize: {value: 1},\n totalSize: {value: 2}\n }\n ]),\n vertexShader: ShaderChunk.linedashed_vert,\n fragmentShader: ShaderChunk.linedashed_frag\n },\n depth: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.displacementmap\n ]),\n vertexShader: ShaderChunk.depth_vert,\n fragmentShader: ShaderChunk.depth_frag\n },\n normal: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.bumpmap,\n UniformsLib.normalmap,\n UniformsLib.displacementmap,\n {\n opacity: {value: 1}\n }\n ]),\n vertexShader: ShaderChunk.meshnormal_vert,\n fragmentShader: ShaderChunk.meshnormal_frag\n },\n sprite: {\n uniforms: mergeUniforms([\n UniformsLib.sprite,\n UniformsLib.fog\n ]),\n vertexShader: ShaderChunk.sprite_vert,\n fragmentShader: ShaderChunk.sprite_frag\n },\n background: {\n uniforms: {\n uvTransform: {value: new Matrix3()},\n t2D: {value: null}\n },\n vertexShader: ShaderChunk.background_vert,\n fragmentShader: ShaderChunk.background_frag\n },\n cube: {\n uniforms: mergeUniforms([\n UniformsLib.envmap,\n {\n opacity: {value: 1}\n }\n ]),\n vertexShader: ShaderChunk.cube_vert,\n fragmentShader: ShaderChunk.cube_frag\n },\n equirect: {\n uniforms: {\n tEquirect: {value: null}\n },\n vertexShader: ShaderChunk.equirect_vert,\n fragmentShader: ShaderChunk.equirect_frag\n },\n distanceRGBA: {\n uniforms: mergeUniforms([\n UniformsLib.common,\n UniformsLib.displacementmap,\n {\n referencePosition: {value: new Vector3()},\n nearDistance: {value: 1},\n farDistance: {value: 1e3}\n }\n ]),\n vertexShader: ShaderChunk.distanceRGBA_vert,\n fragmentShader: ShaderChunk.distanceRGBA_frag\n },\n shadow: {\n uniforms: mergeUniforms([\n UniformsLib.lights,\n UniformsLib.fog,\n {\n color: {value: new Color(0)},\n opacity: {value: 1}\n }\n ]),\n vertexShader: ShaderChunk.shadow_vert,\n fragmentShader: ShaderChunk.shadow_frag\n }\n};\nShaderLib.physical = {\n uniforms: mergeUniforms([\n ShaderLib.standard.uniforms,\n {\n clearcoat: {value: 0},\n clearcoatMap: {value: null},\n clearcoatRoughness: {value: 0},\n clearcoatRoughnessMap: {value: null},\n clearcoatNormalScale: {value: new Vector2(1, 1)},\n clearcoatNormalMap: {value: null},\n sheen: {value: 0},\n sheenColor: {value: new Color(0)},\n sheenColorMap: {value: null},\n sheenRoughness: {value: 0},\n sheenRoughnessMap: {value: null},\n transmission: {value: 0},\n transmissionMap: {value: null},\n transmissionSamplerSize: {value: new Vector2()},\n transmissionSamplerMap: {value: null},\n thickness: {value: 0},\n thicknessMap: {value: null},\n attenuationDistance: {value: 0},\n attenuationColor: {value: new Color(0)},\n specularIntensity: {value: 0},\n specularIntensityMap: {value: null},\n specularColor: {value: new Color(1, 1, 1)},\n specularColorMap: {value: null}\n }\n ]),\n vertexShader: ShaderChunk.meshphysical_vert,\n fragmentShader: ShaderChunk.meshphysical_frag\n};\nfunction WebGLBackground(renderer, cubemaps, state, objects, premultipliedAlpha) {\n const clearColor = new Color(0);\n let clearAlpha = 0;\n let planeMesh;\n let boxMesh;\n let currentBackground = null;\n let currentBackgroundVersion = 0;\n let currentTonemapping = null;\n function render(renderList, scene) {\n let forceClear = false;\n let background = scene.isScene === true ? scene.background : null;\n if (background && background.isTexture) {\n background = cubemaps.get(background);\n }\n const xr = renderer.xr;\n const session = xr.getSession && xr.getSession();\n if (session && session.environmentBlendMode === \"additive\") {\n background = null;\n }\n if (background === null) {\n setClear(clearColor, clearAlpha);\n } else if (background && background.isColor) {\n setClear(background, 1);\n forceClear = true;\n }\n if (renderer.autoClear || forceClear) {\n renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil);\n }\n if (background && (background.isCubeTexture || background.mapping === CubeUVReflectionMapping)) {\n if (boxMesh === void 0) {\n boxMesh = new Mesh(new BoxGeometry(1, 1, 1), new ShaderMaterial({\n name: \"BackgroundCubeMaterial\",\n uniforms: cloneUniforms(ShaderLib.cube.uniforms),\n vertexShader: ShaderLib.cube.vertexShader,\n fragmentShader: ShaderLib.cube.fragmentShader,\n side: BackSide,\n depthTest: false,\n depthWrite: false,\n fog: false\n }));\n boxMesh.geometry.deleteAttribute(\"normal\");\n boxMesh.geometry.deleteAttribute(\"uv\");\n boxMesh.onBeforeRender = function(renderer2, scene2, camera) {\n this.matrixWorld.copyPosition(camera.matrixWorld);\n };\n Object.defineProperty(boxMesh.material, \"envMap\", {\n get: function() {\n return this.uniforms.envMap.value;\n }\n });\n objects.update(boxMesh);\n }\n boxMesh.material.uniforms.envMap.value = background;\n boxMesh.material.uniforms.flipEnvMap.value = background.isCubeTexture && background.isRenderTargetTexture === false ? -1 : 1;\n if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) {\n boxMesh.material.needsUpdate = true;\n currentBackground = background;\n currentBackgroundVersion = background.version;\n currentTonemapping = renderer.toneMapping;\n }\n renderList.unshift(boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null);\n } else if (background && background.isTexture) {\n if (planeMesh === void 0) {\n planeMesh = new Mesh(new PlaneGeometry(2, 2), new ShaderMaterial({\n name: \"BackgroundMaterial\",\n uniforms: cloneUniforms(ShaderLib.background.uniforms),\n vertexShader: ShaderLib.background.vertexShader,\n fragmentShader: ShaderLib.background.fragmentShader,\n side: FrontSide,\n depthTest: false,\n depthWrite: false,\n fog: false\n }));\n planeMesh.geometry.deleteAttribute(\"normal\");\n Object.defineProperty(planeMesh.material, \"map\", {\n get: function() {\n return this.uniforms.t2D.value;\n }\n });\n objects.update(planeMesh);\n }\n planeMesh.material.uniforms.t2D.value = background;\n if (background.matrixAutoUpdate === true) {\n background.updateMatrix();\n }\n planeMesh.material.uniforms.uvTransform.value.copy(background.matrix);\n if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) {\n planeMesh.material.needsUpdate = true;\n currentBackground = background;\n currentBackgroundVersion = background.version;\n currentTonemapping = renderer.toneMapping;\n }\n renderList.unshift(planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null);\n }\n }\n function setClear(color, alpha) {\n state.buffers.color.setClear(color.r, color.g, color.b, alpha, premultipliedAlpha);\n }\n return {\n getClearColor: function() {\n return clearColor;\n },\n setClearColor: function(color, alpha = 1) {\n clearColor.set(color);\n clearAlpha = alpha;\n setClear(clearColor, clearAlpha);\n },\n getClearAlpha: function() {\n return clearAlpha;\n },\n setClearAlpha: function(alpha) {\n clearAlpha = alpha;\n setClear(clearColor, clearAlpha);\n },\n render\n };\n}\nfunction WebGLBindingStates(gl, extensions, attributes, capabilities) {\n const maxVertexAttributes = gl.getParameter(34921);\n const extension = capabilities.isWebGL2 ? null : extensions.get(\"OES_vertex_array_object\");\n const vaoAvailable = capabilities.isWebGL2 || extension !== null;\n const bindingStates = {};\n const defaultState = createBindingState(null);\n let currentState = defaultState;\n function setup(object, material, program, geometry, index) {\n let updateBuffers = false;\n if (vaoAvailable) {\n const state = getBindingState(geometry, program, material);\n if (currentState !== state) {\n currentState = state;\n bindVertexArrayObject(currentState.object);\n }\n updateBuffers = needsUpdate(geometry, index);\n if (updateBuffers)\n saveCache(geometry, index);\n } else {\n const wireframe = material.wireframe === true;\n if (currentState.geometry !== geometry.id || currentState.program !== program.id || currentState.wireframe !== wireframe) {\n currentState.geometry = geometry.id;\n currentState.program = program.id;\n currentState.wireframe = wireframe;\n updateBuffers = true;\n }\n }\n if (object.isInstancedMesh === true) {\n updateBuffers = true;\n }\n if (index !== null) {\n attributes.update(index, 34963);\n }\n if (updateBuffers) {\n setupVertexAttributes(object, material, program, geometry);\n if (index !== null) {\n gl.bindBuffer(34963, attributes.get(index).buffer);\n }\n }\n }\n function createVertexArrayObject() {\n if (capabilities.isWebGL2)\n return gl.createVertexArray();\n return extension.createVertexArrayOES();\n }\n function bindVertexArrayObject(vao) {\n if (capabilities.isWebGL2)\n return gl.bindVertexArray(vao);\n return extension.bindVertexArrayOES(vao);\n }\n function deleteVertexArrayObject(vao) {\n if (capabilities.isWebGL2)\n return gl.deleteVertexArray(vao);\n return extension.deleteVertexArrayOES(vao);\n }\n function getBindingState(geometry, program, material) {\n const wireframe = material.wireframe === true;\n let programMap = bindingStates[geometry.id];\n if (programMap === void 0) {\n programMap = {};\n bindingStates[geometry.id] = programMap;\n }\n let stateMap = programMap[program.id];\n if (stateMap === void 0) {\n stateMap = {};\n programMap[program.id] = stateMap;\n }\n let state = stateMap[wireframe];\n if (state === void 0) {\n state = createBindingState(createVertexArrayObject());\n stateMap[wireframe] = state;\n }\n return state;\n }\n function createBindingState(vao) {\n const newAttributes = [];\n const enabledAttributes = [];\n const attributeDivisors = [];\n for (let i = 0; i < maxVertexAttributes; i++) {\n newAttributes[i] = 0;\n enabledAttributes[i] = 0;\n attributeDivisors[i] = 0;\n }\n return {\n geometry: null,\n program: null,\n wireframe: false,\n newAttributes,\n enabledAttributes,\n attributeDivisors,\n object: vao,\n attributes: {},\n index: null\n };\n }\n function needsUpdate(geometry, index) {\n const cachedAttributes = currentState.attributes;\n const geometryAttributes = geometry.attributes;\n let attributesNum = 0;\n for (const key in geometryAttributes) {\n const cachedAttribute = cachedAttributes[key];\n const geometryAttribute = geometryAttributes[key];\n if (cachedAttribute === void 0)\n return true;\n if (cachedAttribute.attribute !== geometryAttribute)\n return true;\n if (cachedAttribute.data !== geometryAttribute.data)\n return true;\n attributesNum++;\n }\n if (currentState.attributesNum !== attributesNum)\n return true;\n if (currentState.index !== index)\n return true;\n return false;\n }\n function saveCache(geometry, index) {\n const cache = {};\n const attributes2 = geometry.attributes;\n let attributesNum = 0;\n for (const key in attributes2) {\n const attribute = attributes2[key];\n const data = {};\n data.attribute = attribute;\n if (attribute.data) {\n data.data = attribute.data;\n }\n cache[key] = data;\n attributesNum++;\n }\n currentState.attributes = cache;\n currentState.attributesNum = attributesNum;\n currentState.index = index;\n }\n function initAttributes() {\n const newAttributes = currentState.newAttributes;\n for (let i = 0, il = newAttributes.length; i < il; i++) {\n newAttributes[i] = 0;\n }\n }\n function enableAttribute(attribute) {\n enableAttributeAndDivisor(attribute, 0);\n }\n function enableAttributeAndDivisor(attribute, meshPerAttribute) {\n const newAttributes = currentState.newAttributes;\n const enabledAttributes = currentState.enabledAttributes;\n const attributeDivisors = currentState.attributeDivisors;\n newAttributes[attribute] = 1;\n if (enabledAttributes[attribute] === 0) {\n gl.enableVertexAttribArray(attribute);\n enabledAttributes[attribute] = 1;\n }\n if (attributeDivisors[attribute] !== meshPerAttribute) {\n const extension2 = capabilities.isWebGL2 ? gl : extensions.get(\"ANGLE_instanced_arrays\");\n extension2[capabilities.isWebGL2 ? \"vertexAttribDivisor\" : \"vertexAttribDivisorANGLE\"](attribute, meshPerAttribute);\n attributeDivisors[attribute] = meshPerAttribute;\n }\n }\n function disableUnusedAttributes() {\n const newAttributes = currentState.newAttributes;\n const enabledAttributes = currentState.enabledAttributes;\n for (let i = 0, il = enabledAttributes.length; i < il; i++) {\n if (enabledAttributes[i] !== newAttributes[i]) {\n gl.disableVertexAttribArray(i);\n enabledAttributes[i] = 0;\n }\n }\n }\n function vertexAttribPointer(index, size, type, normalized, stride, offset) {\n if (capabilities.isWebGL2 === true && (type === 5124 || type === 5125)) {\n gl.vertexAttribIPointer(index, size, type, stride, offset);\n } else {\n gl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n }\n }\n function setupVertexAttributes(object, material, program, geometry) {\n if (capabilities.isWebGL2 === false && (object.isInstancedMesh || geometry.isInstancedBufferGeometry)) {\n if (extensions.get(\"ANGLE_instanced_arrays\") === null)\n return;\n }\n initAttributes();\n const geometryAttributes = geometry.attributes;\n const programAttributes = program.getAttributes();\n const materialDefaultAttributeValues = material.defaultAttributeValues;\n for (const name in programAttributes) {\n const programAttribute = programAttributes[name];\n if (programAttribute.location >= 0) {\n let geometryAttribute = geometryAttributes[name];\n if (geometryAttribute === void 0) {\n if (name === \"instanceMatrix\" && object.instanceMatrix)\n geometryAttribute = object.instanceMatrix;\n if (name === \"instanceColor\" && object.instanceColor)\n geometryAttribute = object.instanceColor;\n }\n if (geometryAttribute !== void 0) {\n const normalized = geometryAttribute.normalized;\n const size = geometryAttribute.itemSize;\n const attribute = attributes.get(geometryAttribute);\n if (attribute === void 0)\n continue;\n const buffer = attribute.buffer;\n const type = attribute.type;\n const bytesPerElement = attribute.bytesPerElement;\n if (geometryAttribute.isInterleavedBufferAttribute) {\n const data = geometryAttribute.data;\n const stride = data.stride;\n const offset = geometryAttribute.offset;\n if (data && data.isInstancedInterleavedBuffer) {\n for (let i = 0; i < programAttribute.locationSize; i++) {\n enableAttributeAndDivisor(programAttribute.location + i, data.meshPerAttribute);\n }\n if (object.isInstancedMesh !== true && geometry._maxInstanceCount === void 0) {\n geometry._maxInstanceCount = data.meshPerAttribute * data.count;\n }\n } else {\n for (let i = 0; i < programAttribute.locationSize; i++) {\n enableAttribute(programAttribute.location + i);\n }\n }\n gl.bindBuffer(34962, buffer);\n for (let i = 0; i < programAttribute.locationSize; i++) {\n vertexAttribPointer(programAttribute.location + i, size / programAttribute.locationSize, type, normalized, stride * bytesPerElement, (offset + size / programAttribute.locationSize * i) * bytesPerElement);\n }\n } else {\n if (geometryAttribute.isInstancedBufferAttribute) {\n for (let i = 0; i < programAttribute.locationSize; i++) {\n enableAttributeAndDivisor(programAttribute.location + i, geometryAttribute.meshPerAttribute);\n }\n if (object.isInstancedMesh !== true && geometry._maxInstanceCount === void 0) {\n geometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n }\n } else {\n for (let i = 0; i < programAttribute.locationSize; i++) {\n enableAttribute(programAttribute.location + i);\n }\n }\n gl.bindBuffer(34962, buffer);\n for (let i = 0; i < programAttribute.locationSize; i++) {\n vertexAttribPointer(programAttribute.location + i, size / programAttribute.locationSize, type, normalized, size * bytesPerElement, size / programAttribute.locationSize * i * bytesPerElement);\n }\n }\n } else if (materialDefaultAttributeValues !== void 0) {\n const value = materialDefaultAttributeValues[name];\n if (value !== void 0) {\n switch (value.length) {\n case 2:\n gl.vertexAttrib2fv(programAttribute.location, value);\n break;\n case 3:\n gl.vertexAttrib3fv(programAttribute.location, value);\n break;\n case 4:\n gl.vertexAttrib4fv(programAttribute.location, value);\n break;\n default:\n gl.vertexAttrib1fv(programAttribute.location, value);\n }\n }\n }\n }\n }\n disableUnusedAttributes();\n }\n function dispose() {\n reset();\n for (const geometryId in bindingStates) {\n const programMap = bindingStates[geometryId];\n for (const programId in programMap) {\n const stateMap = programMap[programId];\n for (const wireframe in stateMap) {\n deleteVertexArrayObject(stateMap[wireframe].object);\n delete stateMap[wireframe];\n }\n delete programMap[programId];\n }\n delete bindingStates[geometryId];\n }\n }\n function releaseStatesOfGeometry(geometry) {\n if (bindingStates[geometry.id] === void 0)\n return;\n const programMap = bindingStates[geometry.id];\n for (const programId in programMap) {\n const stateMap = programMap[programId];\n for (const wireframe in stateMap) {\n deleteVertexArrayObject(stateMap[wireframe].object);\n delete stateMap[wireframe];\n }\n delete programMap[programId];\n }\n delete bindingStates[geometry.id];\n }\n function releaseStatesOfProgram(program) {\n for (const geometryId in bindingStates) {\n const programMap = bindingStates[geometryId];\n if (programMap[program.id] === void 0)\n continue;\n const stateMap = programMap[program.id];\n for (const wireframe in stateMap) {\n deleteVertexArrayObject(stateMap[wireframe].object);\n delete stateMap[wireframe];\n }\n delete programMap[program.id];\n }\n }\n function reset() {\n resetDefaultState();\n if (currentState === defaultState)\n return;\n currentState = defaultState;\n bindVertexArrayObject(currentState.object);\n }\n function resetDefaultState() {\n defaultState.geometry = null;\n defaultState.program = null;\n defaultState.wireframe = false;\n }\n return {\n setup,\n reset,\n resetDefaultState,\n dispose,\n releaseStatesOfGeometry,\n releaseStatesOfProgram,\n initAttributes,\n enableAttribute,\n disableUnusedAttributes\n };\n}\nfunction WebGLBufferRenderer(gl, extensions, info, capabilities) {\n const isWebGL2 = capabilities.isWebGL2;\n let mode;\n function setMode(value) {\n mode = value;\n }\n function render(start, count) {\n gl.drawArrays(mode, start, count);\n info.update(count, mode, 1);\n }\n function renderInstances(start, count, primcount) {\n if (primcount === 0)\n return;\n let extension, methodName;\n if (isWebGL2) {\n extension = gl;\n methodName = \"drawArraysInstanced\";\n } else {\n extension = extensions.get(\"ANGLE_instanced_arrays\");\n methodName = \"drawArraysInstancedANGLE\";\n if (extension === null) {\n console.error(\"THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.\");\n return;\n }\n }\n extension[methodName](mode, start, count, primcount);\n info.update(count, mode, primcount);\n }\n this.setMode = setMode;\n this.render = render;\n this.renderInstances = renderInstances;\n}\nfunction WebGLCapabilities(gl, extensions, parameters) {\n let maxAnisotropy;\n function getMaxAnisotropy() {\n if (maxAnisotropy !== void 0)\n return maxAnisotropy;\n if (extensions.has(\"EXT_texture_filter_anisotropic\") === true) {\n const extension = extensions.get(\"EXT_texture_filter_anisotropic\");\n maxAnisotropy = gl.getParameter(extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT);\n } else {\n maxAnisotropy = 0;\n }\n return maxAnisotropy;\n }\n function getMaxPrecision(precision2) {\n if (precision2 === \"highp\") {\n if (gl.getShaderPrecisionFormat(35633, 36338).precision > 0 && gl.getShaderPrecisionFormat(35632, 36338).precision > 0) {\n return \"highp\";\n }\n precision2 = \"mediump\";\n }\n if (precision2 === \"mediump\") {\n if (gl.getShaderPrecisionFormat(35633, 36337).precision > 0 && gl.getShaderPrecisionFormat(35632, 36337).precision > 0) {\n return \"mediump\";\n }\n }\n return \"lowp\";\n }\n const isWebGL2 = typeof WebGL2RenderingContext !== \"undefined\" && gl instanceof WebGL2RenderingContext || typeof WebGL2ComputeRenderingContext !== \"undefined\" && gl instanceof WebGL2ComputeRenderingContext;\n let precision = parameters.precision !== void 0 ? parameters.precision : \"highp\";\n const maxPrecision = getMaxPrecision(precision);\n if (maxPrecision !== precision) {\n console.warn(\"THREE.WebGLRenderer:\", precision, \"not supported, using\", maxPrecision, \"instead.\");\n precision = maxPrecision;\n }\n const drawBuffers = isWebGL2 || extensions.has(\"WEBGL_draw_buffers\");\n const logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n const maxTextures = gl.getParameter(34930);\n const maxVertexTextures = gl.getParameter(35660);\n const maxTextureSize = gl.getParameter(3379);\n const maxCubemapSize = gl.getParameter(34076);\n const maxAttributes = gl.getParameter(34921);\n const maxVertexUniforms = gl.getParameter(36347);\n const maxVaryings = gl.getParameter(36348);\n const maxFragmentUniforms = gl.getParameter(36349);\n const vertexTextures = maxVertexTextures > 0;\n const floatFragmentTextures = isWebGL2 || extensions.has(\"OES_texture_float\");\n const floatVertexTextures = vertexTextures && floatFragmentTextures;\n const maxSamples = isWebGL2 ? gl.getParameter(36183) : 0;\n return {\n isWebGL2,\n drawBuffers,\n getMaxAnisotropy,\n getMaxPrecision,\n precision,\n logarithmicDepthBuffer,\n maxTextures,\n maxVertexTextures,\n maxTextureSize,\n maxCubemapSize,\n maxAttributes,\n maxVertexUniforms,\n maxVaryings,\n maxFragmentUniforms,\n vertexTextures,\n floatFragmentTextures,\n floatVertexTextures,\n maxSamples\n };\n}\nfunction WebGLClipping(properties) {\n const scope = this;\n let globalState = null, numGlobalPlanes = 0, localClippingEnabled = false, renderingShadows = false;\n const plane = new Plane(), viewNormalMatrix = new Matrix3(), uniform = {value: null, needsUpdate: false};\n this.uniform = uniform;\n this.numPlanes = 0;\n this.numIntersection = 0;\n this.init = function(planes, enableLocalClipping, camera) {\n const enabled = planes.length !== 0 || enableLocalClipping || numGlobalPlanes !== 0 || localClippingEnabled;\n localClippingEnabled = enableLocalClipping;\n globalState = projectPlanes(planes, camera, 0);\n numGlobalPlanes = planes.length;\n return enabled;\n };\n this.beginShadows = function() {\n renderingShadows = true;\n projectPlanes(null);\n };\n this.endShadows = function() {\n renderingShadows = false;\n resetGlobalState();\n };\n this.setState = function(material, camera, useCache) {\n const planes = material.clippingPlanes, clipIntersection = material.clipIntersection, clipShadows = material.clipShadows;\n const materialProperties = properties.get(material);\n if (!localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && !clipShadows) {\n if (renderingShadows) {\n projectPlanes(null);\n } else {\n resetGlobalState();\n }\n } else {\n const nGlobal = renderingShadows ? 0 : numGlobalPlanes, lGlobal = nGlobal * 4;\n let dstArray = materialProperties.clippingState || null;\n uniform.value = dstArray;\n dstArray = projectPlanes(planes, camera, lGlobal, useCache);\n for (let i = 0; i !== lGlobal; ++i) {\n dstArray[i] = globalState[i];\n }\n materialProperties.clippingState = dstArray;\n this.numIntersection = clipIntersection ? this.numPlanes : 0;\n this.numPlanes += nGlobal;\n }\n };\n function resetGlobalState() {\n if (uniform.value !== globalState) {\n uniform.value = globalState;\n uniform.needsUpdate = numGlobalPlanes > 0;\n }\n scope.numPlanes = numGlobalPlanes;\n scope.numIntersection = 0;\n }\n function projectPlanes(planes, camera, dstOffset, skipTransform) {\n const nPlanes = planes !== null ? planes.length : 0;\n let dstArray = null;\n if (nPlanes !== 0) {\n dstArray = uniform.value;\n if (skipTransform !== true || dstArray === null) {\n const flatSize = dstOffset + nPlanes * 4, viewMatrix = camera.matrixWorldInverse;\n viewNormalMatrix.getNormalMatrix(viewMatrix);\n if (dstArray === null || dstArray.length < flatSize) {\n dstArray = new Float32Array(flatSize);\n }\n for (let i = 0, i4 = dstOffset; i !== nPlanes; ++i, i4 += 4) {\n plane.copy(planes[i]).applyMatrix4(viewMatrix, viewNormalMatrix);\n plane.normal.toArray(dstArray, i4);\n dstArray[i4 + 3] = plane.constant;\n }\n }\n uniform.value = dstArray;\n uniform.needsUpdate = true;\n }\n scope.numPlanes = nPlanes;\n scope.numIntersection = 0;\n return dstArray;\n }\n}\nfunction WebGLCubeMaps(renderer) {\n let cubemaps = new WeakMap();\n function mapTextureMapping(texture, mapping) {\n if (mapping === EquirectangularReflectionMapping) {\n texture.mapping = CubeReflectionMapping;\n } else if (mapping === EquirectangularRefractionMapping) {\n texture.mapping = CubeRefractionMapping;\n }\n return texture;\n }\n function get(texture) {\n if (texture && texture.isTexture && texture.isRenderTargetTexture === false) {\n const mapping = texture.mapping;\n if (mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping) {\n if (cubemaps.has(texture)) {\n const cubemap = cubemaps.get(texture).texture;\n return mapTextureMapping(cubemap, texture.mapping);\n } else {\n const image = texture.image;\n if (image && image.height > 0) {\n const currentRenderTarget = renderer.getRenderTarget();\n const renderTarget = new WebGLCubeRenderTarget(image.height / 2);\n renderTarget.fromEquirectangularTexture(renderer, texture);\n cubemaps.set(texture, renderTarget);\n renderer.setRenderTarget(currentRenderTarget);\n texture.addEventListener(\"dispose\", onTextureDispose);\n return mapTextureMapping(renderTarget.texture, texture.mapping);\n } else {\n return null;\n }\n }\n }\n }\n return texture;\n }\n function onTextureDispose(event) {\n const texture = event.target;\n texture.removeEventListener(\"dispose\", onTextureDispose);\n const cubemap = cubemaps.get(texture);\n if (cubemap !== void 0) {\n cubemaps.delete(texture);\n cubemap.dispose();\n }\n }\n function dispose() {\n cubemaps = new WeakMap();\n }\n return {\n get,\n dispose\n };\n}\nclass OrthographicCamera extends Camera {\n constructor(left = -1, right = 1, top = 1, bottom = -1, near = 0.1, far = 2e3) {\n super();\n this.type = \"OrthographicCamera\";\n this.zoom = 1;\n this.view = null;\n this.left = left;\n this.right = right;\n this.top = top;\n this.bottom = bottom;\n this.near = near;\n this.far = far;\n this.updateProjectionMatrix();\n }\n copy(source, recursive) {\n super.copy(source, recursive);\n this.left = source.left;\n this.right = source.right;\n this.top = source.top;\n this.bottom = source.bottom;\n this.near = source.near;\n this.far = source.far;\n this.zoom = source.zoom;\n this.view = source.view === null ? null : Object.assign({}, source.view);\n return this;\n }\n setViewOffset(fullWidth, fullHeight, x, y, width, height) {\n if (this.view === null) {\n this.view = {\n enabled: true,\n fullWidth: 1,\n fullHeight: 1,\n offsetX: 0,\n offsetY: 0,\n width: 1,\n height: 1\n };\n }\n this.view.enabled = true;\n this.view.fullWidth = fullWidth;\n this.view.fullHeight = fullHeight;\n this.view.offsetX = x;\n this.view.offsetY = y;\n this.view.width = width;\n this.view.height = height;\n this.updateProjectionMatrix();\n }\n clearViewOffset() {\n if (this.view !== null) {\n this.view.enabled = false;\n }\n this.updateProjectionMatrix();\n }\n updateProjectionMatrix() {\n const dx = (this.right - this.left) / (2 * this.zoom);\n const dy = (this.top - this.bottom) / (2 * this.zoom);\n const cx = (this.right + this.left) / 2;\n const cy = (this.top + this.bottom) / 2;\n let left = cx - dx;\n let right = cx + dx;\n let top = cy + dy;\n let bottom = cy - dy;\n if (this.view !== null && this.view.enabled) {\n const scaleW = (this.right - this.left) / this.view.fullWidth / this.zoom;\n const scaleH = (this.top - this.bottom) / this.view.fullHeight / this.zoom;\n left += scaleW * this.view.offsetX;\n right = left + scaleW * this.view.width;\n top -= scaleH * this.view.offsetY;\n bottom = top - scaleH * this.view.height;\n }\n this.projectionMatrix.makeOrthographic(left, right, top, bottom, this.near, this.far);\n this.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n data.object.zoom = this.zoom;\n data.object.left = this.left;\n data.object.right = this.right;\n data.object.top = this.top;\n data.object.bottom = this.bottom;\n data.object.near = this.near;\n data.object.far = this.far;\n if (this.view !== null)\n data.object.view = Object.assign({}, this.view);\n return data;\n }\n}\nOrthographicCamera.prototype.isOrthographicCamera = true;\nclass RawShaderMaterial extends ShaderMaterial {\n constructor(parameters) {\n super(parameters);\n this.type = \"RawShaderMaterial\";\n }\n}\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow(2, LOD_MAX);\nconst EXTRA_LOD_SIGMA = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582];\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\nconst MAX_SAMPLES = 20;\nconst ENCODINGS = {\n [LinearEncoding]: 0,\n [sRGBEncoding]: 1\n};\nconst _flatCamera = /* @__PURE__ */ new OrthographicCamera();\nconst {_lodPlanes, _sizeLods, _sigmas} = /* @__PURE__ */ _createPlanes();\nconst _clearColor = /* @__PURE__ */ new Color();\nlet _oldTarget = null;\nconst PHI = (1 + Math.sqrt(5)) / 2;\nconst INV_PHI = 1 / PHI;\nconst _axisDirections = [\n /* @__PURE__ */ new Vector3(1, 1, 1),\n /* @__PURE__ */ new Vector3(-1, 1, 1),\n /* @__PURE__ */ new Vector3(1, 1, -1),\n /* @__PURE__ */ new Vector3(-1, 1, -1),\n /* @__PURE__ */ new Vector3(0, PHI, INV_PHI),\n /* @__PURE__ */ new Vector3(0, PHI, -INV_PHI),\n /* @__PURE__ */ new Vector3(INV_PHI, 0, PHI),\n /* @__PURE__ */ new Vector3(-INV_PHI, 0, PHI),\n /* @__PURE__ */ new Vector3(PHI, INV_PHI, 0),\n /* @__PURE__ */ new Vector3(-PHI, INV_PHI, 0)\n];\nclass PMREMGenerator {\n constructor(renderer) {\n this._renderer = renderer;\n this._pingPongRenderTarget = null;\n this._blurMaterial = _getBlurShader(MAX_SAMPLES);\n this._equirectShader = null;\n this._cubemapShader = null;\n this._compileMaterial(this._blurMaterial);\n }\n fromScene(scene, sigma = 0, near = 0.1, far = 100) {\n _oldTarget = this._renderer.getRenderTarget();\n const cubeUVRenderTarget = this._allocateTargets();\n this._sceneToCubeUV(scene, near, far, cubeUVRenderTarget);\n if (sigma > 0) {\n this._blur(cubeUVRenderTarget, 0, 0, sigma);\n }\n this._applyPMREM(cubeUVRenderTarget);\n this._cleanup(cubeUVRenderTarget);\n return cubeUVRenderTarget;\n }\n fromEquirectangular(equirectangular) {\n return this._fromTexture(equirectangular);\n }\n fromCubemap(cubemap) {\n return this._fromTexture(cubemap);\n }\n compileCubemapShader() {\n if (this._cubemapShader === null) {\n this._cubemapShader = _getCubemapShader();\n this._compileMaterial(this._cubemapShader);\n }\n }\n compileEquirectangularShader() {\n if (this._equirectShader === null) {\n this._equirectShader = _getEquirectShader();\n this._compileMaterial(this._equirectShader);\n }\n }\n dispose() {\n this._blurMaterial.dispose();\n if (this._cubemapShader !== null)\n this._cubemapShader.dispose();\n if (this._equirectShader !== null)\n this._equirectShader.dispose();\n for (let i = 0; i < _lodPlanes.length; i++) {\n _lodPlanes[i].dispose();\n }\n }\n _cleanup(outputTarget) {\n this._pingPongRenderTarget.dispose();\n this._renderer.setRenderTarget(_oldTarget);\n outputTarget.scissorTest = false;\n _setViewport(outputTarget, 0, 0, outputTarget.width, outputTarget.height);\n }\n _fromTexture(texture) {\n _oldTarget = this._renderer.getRenderTarget();\n const cubeUVRenderTarget = this._allocateTargets(texture);\n this._textureToCubeUV(texture, cubeUVRenderTarget);\n this._applyPMREM(cubeUVRenderTarget);\n this._cleanup(cubeUVRenderTarget);\n return cubeUVRenderTarget;\n }\n _allocateTargets(texture) {\n const params = {\n magFilter: LinearFilter,\n minFilter: LinearFilter,\n generateMipmaps: false,\n type: HalfFloatType,\n format: RGBAFormat,\n encoding: LinearEncoding,\n depthBuffer: false\n };\n const cubeUVRenderTarget = _createRenderTarget(params);\n cubeUVRenderTarget.depthBuffer = texture ? false : true;\n this._pingPongRenderTarget = _createRenderTarget(params);\n return cubeUVRenderTarget;\n }\n _compileMaterial(material) {\n const tmpMesh = new Mesh(_lodPlanes[0], material);\n this._renderer.compile(tmpMesh, _flatCamera);\n }\n _sceneToCubeUV(scene, near, far, cubeUVRenderTarget) {\n const fov2 = 90;\n const aspect2 = 1;\n const cubeCamera = new PerspectiveCamera(fov2, aspect2, near, far);\n const upSign = [1, -1, 1, 1, 1, 1];\n const forwardSign = [1, 1, 1, -1, -1, -1];\n const renderer = this._renderer;\n const originalAutoClear = renderer.autoClear;\n const toneMapping = renderer.toneMapping;\n renderer.getClearColor(_clearColor);\n renderer.toneMapping = NoToneMapping;\n renderer.autoClear = false;\n const backgroundMaterial = new MeshBasicMaterial({\n name: \"PMREM.Background\",\n side: BackSide,\n depthWrite: false,\n depthTest: false\n });\n const backgroundBox = new Mesh(new BoxGeometry(), backgroundMaterial);\n let useSolidColor = false;\n const background = scene.background;\n if (background) {\n if (background.isColor) {\n backgroundMaterial.color.copy(background);\n scene.background = null;\n useSolidColor = true;\n }\n } else {\n backgroundMaterial.color.copy(_clearColor);\n useSolidColor = true;\n }\n for (let i = 0; i < 6; i++) {\n const col = i % 3;\n if (col == 0) {\n cubeCamera.up.set(0, upSign[i], 0);\n cubeCamera.lookAt(forwardSign[i], 0, 0);\n } else if (col == 1) {\n cubeCamera.up.set(0, 0, upSign[i]);\n cubeCamera.lookAt(0, forwardSign[i], 0);\n } else {\n cubeCamera.up.set(0, upSign[i], 0);\n cubeCamera.lookAt(0, 0, forwardSign[i]);\n }\n _setViewport(cubeUVRenderTarget, col * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX);\n renderer.setRenderTarget(cubeUVRenderTarget);\n if (useSolidColor) {\n renderer.render(backgroundBox, cubeCamera);\n }\n renderer.render(scene, cubeCamera);\n }\n backgroundBox.geometry.dispose();\n backgroundBox.material.dispose();\n renderer.toneMapping = toneMapping;\n renderer.autoClear = originalAutoClear;\n scene.background = background;\n }\n _setEncoding(uniform, texture) {\n if (this._renderer.capabilities.isWebGL2 === true && texture.format === RGBAFormat && texture.type === UnsignedByteType && texture.encoding === sRGBEncoding) {\n uniform.value = ENCODINGS[LinearEncoding];\n } else {\n uniform.value = ENCODINGS[texture.encoding];\n }\n }\n _textureToCubeUV(texture, cubeUVRenderTarget) {\n const renderer = this._renderer;\n const isCubeTexture = texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping;\n if (isCubeTexture) {\n if (this._cubemapShader == null) {\n this._cubemapShader = _getCubemapShader();\n }\n } else {\n if (this._equirectShader == null) {\n this._equirectShader = _getEquirectShader();\n }\n }\n const material = isCubeTexture ? this._cubemapShader : this._equirectShader;\n const mesh = new Mesh(_lodPlanes[0], material);\n const uniforms = material.uniforms;\n uniforms[\"envMap\"].value = texture;\n if (!isCubeTexture) {\n uniforms[\"texelSize\"].value.set(1 / texture.image.width, 1 / texture.image.height);\n }\n this._setEncoding(uniforms[\"inputEncoding\"], texture);\n _setViewport(cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX);\n renderer.setRenderTarget(cubeUVRenderTarget);\n renderer.render(mesh, _flatCamera);\n }\n _applyPMREM(cubeUVRenderTarget) {\n const renderer = this._renderer;\n const autoClear = renderer.autoClear;\n renderer.autoClear = false;\n for (let i = 1; i < TOTAL_LODS; i++) {\n const sigma = Math.sqrt(_sigmas[i] * _sigmas[i] - _sigmas[i - 1] * _sigmas[i - 1]);\n const poleAxis = _axisDirections[(i - 1) % _axisDirections.length];\n this._blur(cubeUVRenderTarget, i - 1, i, sigma, poleAxis);\n }\n renderer.autoClear = autoClear;\n }\n _blur(cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis) {\n const pingPongRenderTarget = this._pingPongRenderTarget;\n this._halfBlur(cubeUVRenderTarget, pingPongRenderTarget, lodIn, lodOut, sigma, \"latitudinal\", poleAxis);\n this._halfBlur(pingPongRenderTarget, cubeUVRenderTarget, lodOut, lodOut, sigma, \"longitudinal\", poleAxis);\n }\n _halfBlur(targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis) {\n const renderer = this._renderer;\n const blurMaterial = this._blurMaterial;\n if (direction !== \"latitudinal\" && direction !== \"longitudinal\") {\n console.error(\"blur direction must be either latitudinal or longitudinal!\");\n }\n const STANDARD_DEVIATIONS = 3;\n const blurMesh = new Mesh(_lodPlanes[lodOut], blurMaterial);\n const blurUniforms = blurMaterial.uniforms;\n const pixels = _sizeLods[lodIn] - 1;\n const radiansPerPixel = isFinite(sigmaRadians) ? Math.PI / (2 * pixels) : 2 * Math.PI / (2 * MAX_SAMPLES - 1);\n const sigmaPixels = sigmaRadians / radiansPerPixel;\n const samples = isFinite(sigmaRadians) ? 1 + Math.floor(STANDARD_DEVIATIONS * sigmaPixels) : MAX_SAMPLES;\n if (samples > MAX_SAMPLES) {\n console.warn(`sigmaRadians, ${sigmaRadians}, is too large and will clip, as it requested ${samples} samples when the maximum is set to ${MAX_SAMPLES}`);\n }\n const weights = [];\n let sum = 0;\n for (let i = 0; i < MAX_SAMPLES; ++i) {\n const x2 = i / sigmaPixels;\n const weight = Math.exp(-x2 * x2 / 2);\n weights.push(weight);\n if (i == 0) {\n sum += weight;\n } else if (i < samples) {\n sum += 2 * weight;\n }\n }\n for (let i = 0; i < weights.length; i++) {\n weights[i] = weights[i] / sum;\n }\n blurUniforms[\"envMap\"].value = targetIn.texture;\n blurUniforms[\"samples\"].value = samples;\n blurUniforms[\"weights\"].value = weights;\n blurUniforms[\"latitudinal\"].value = direction === \"latitudinal\";\n if (poleAxis) {\n blurUniforms[\"poleAxis\"].value = poleAxis;\n }\n blurUniforms[\"dTheta\"].value = radiansPerPixel;\n blurUniforms[\"mipInt\"].value = LOD_MAX - lodIn;\n const outputSize = _sizeLods[lodOut];\n const x = 3 * Math.max(0, SIZE_MAX - 2 * outputSize);\n const y = (lodOut === 0 ? 0 : 2 * SIZE_MAX) + 2 * outputSize * (lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0);\n _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n renderer.setRenderTarget(targetOut);\n renderer.render(blurMesh, _flatCamera);\n }\n}\nfunction _createPlanes() {\n const _lodPlanes2 = [];\n const _sizeLods2 = [];\n const _sigmas2 = [];\n let lod = LOD_MAX;\n for (let i = 0; i < TOTAL_LODS; i++) {\n const sizeLod = Math.pow(2, lod);\n _sizeLods2.push(sizeLod);\n let sigma = 1 / sizeLod;\n if (i > LOD_MAX - LOD_MIN) {\n sigma = EXTRA_LOD_SIGMA[i - LOD_MAX + LOD_MIN - 1];\n } else if (i == 0) {\n sigma = 0;\n }\n _sigmas2.push(sigma);\n const texelSize = 1 / (sizeLod - 1);\n const min = -texelSize / 2;\n const max = 1 + texelSize / 2;\n const uv1 = [min, min, max, min, max, max, min, min, max, max, min, max];\n const cubeFaces = 6;\n const vertices = 6;\n const positionSize = 3;\n const uvSize = 2;\n const faceIndexSize = 1;\n const position = new Float32Array(positionSize * vertices * cubeFaces);\n const uv = new Float32Array(uvSize * vertices * cubeFaces);\n const faceIndex = new Float32Array(faceIndexSize * vertices * cubeFaces);\n for (let face = 0; face < cubeFaces; face++) {\n const x = face % 3 * 2 / 3 - 1;\n const y = face > 2 ? 0 : -1;\n const coordinates = [\n x,\n y,\n 0,\n x + 2 / 3,\n y,\n 0,\n x + 2 / 3,\n y + 1,\n 0,\n x,\n y,\n 0,\n x + 2 / 3,\n y + 1,\n 0,\n x,\n y + 1,\n 0\n ];\n position.set(coordinates, positionSize * vertices * face);\n uv.set(uv1, uvSize * vertices * face);\n const fill = [face, face, face, face, face, face];\n faceIndex.set(fill, faceIndexSize * vertices * face);\n }\n const planes = new BufferGeometry();\n planes.setAttribute(\"position\", new BufferAttribute(position, positionSize));\n planes.setAttribute(\"uv\", new BufferAttribute(uv, uvSize));\n planes.setAttribute(\"faceIndex\", new BufferAttribute(faceIndex, faceIndexSize));\n _lodPlanes2.push(planes);\n if (lod > LOD_MIN) {\n lod--;\n }\n }\n return {_lodPlanes: _lodPlanes2, _sizeLods: _sizeLods2, _sigmas: _sigmas2};\n}\nfunction _createRenderTarget(params) {\n const cubeUVRenderTarget = new WebGLRenderTarget(3 * SIZE_MAX, 3 * SIZE_MAX, params);\n cubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n cubeUVRenderTarget.texture.name = \"PMREM.cubeUv\";\n cubeUVRenderTarget.scissorTest = true;\n return cubeUVRenderTarget;\n}\nfunction _setViewport(target, x, y, width, height) {\n target.viewport.set(x, y, width, height);\n target.scissor.set(x, y, width, height);\n}\nfunction _getBlurShader(maxSamples) {\n const weights = new Float32Array(maxSamples);\n const poleAxis = new Vector3(0, 1, 0);\n const shaderMaterial = new RawShaderMaterial({\n name: \"SphericalGaussianBlur\",\n defines: {n: maxSamples},\n uniforms: {\n envMap: {value: null},\n samples: {value: 1},\n weights: {value: weights},\n latitudinal: {value: false},\n dTheta: {value: 0},\n mipInt: {value: 0},\n poleAxis: {value: poleAxis}\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t${_getEncodings()}\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n blending: NoBlending,\n depthTest: false,\n depthWrite: false\n });\n return shaderMaterial;\n}\nfunction _getEquirectShader() {\n const texelSize = new Vector2(1, 1);\n const shaderMaterial = new RawShaderMaterial({\n name: \"EquirectangularToCubeUV\",\n uniforms: {\n envMap: {value: null},\n texelSize: {value: texelSize},\n inputEncoding: {value: ENCODINGS[LinearEncoding]}\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t${_getEncodings()}\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t}\n\t\t`,\n blending: NoBlending,\n depthTest: false,\n depthWrite: false\n });\n return shaderMaterial;\n}\nfunction _getCubemapShader() {\n const shaderMaterial = new RawShaderMaterial({\n name: \"CubemapToCubeUV\",\n uniforms: {\n envMap: {value: null},\n inputEncoding: {value: ENCODINGS[LinearEncoding]}\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t${_getEncodings()}\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) );\n\n\t\t\t}\n\t\t`,\n blending: NoBlending,\n depthTest: false,\n depthWrite: false\n });\n return shaderMaterial;\n}\nfunction _getCommonVertexShader() {\n return `\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n}\nfunction _getEncodings() {\n return `\n\n\t\tuniform int inputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t`;\n}\nfunction WebGLCubeUVMaps(renderer) {\n let cubeUVmaps = new WeakMap();\n let pmremGenerator = null;\n function get(texture) {\n if (texture && texture.isTexture && texture.isRenderTargetTexture === false) {\n const mapping = texture.mapping;\n const isEquirectMap = mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping;\n const isCubeMap = mapping === CubeReflectionMapping || mapping === CubeRefractionMapping;\n if (isEquirectMap || isCubeMap) {\n if (cubeUVmaps.has(texture)) {\n return cubeUVmaps.get(texture).texture;\n } else {\n const image = texture.image;\n if (isEquirectMap && image && image.height > 0 || isCubeMap && image && isCubeTextureComplete(image)) {\n const currentRenderTarget = renderer.getRenderTarget();\n if (pmremGenerator === null)\n pmremGenerator = new PMREMGenerator(renderer);\n const renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular(texture) : pmremGenerator.fromCubemap(texture);\n cubeUVmaps.set(texture, renderTarget);\n renderer.setRenderTarget(currentRenderTarget);\n texture.addEventListener(\"dispose\", onTextureDispose);\n return renderTarget.texture;\n } else {\n return null;\n }\n }\n }\n }\n return texture;\n }\n function isCubeTextureComplete(image) {\n let count = 0;\n const length = 6;\n for (let i = 0; i < length; i++) {\n if (image[i] !== void 0)\n count++;\n }\n return count === length;\n }\n function onTextureDispose(event) {\n const texture = event.target;\n texture.removeEventListener(\"dispose\", onTextureDispose);\n const cubemapUV = cubeUVmaps.get(texture);\n if (cubemapUV !== void 0) {\n cubeUVmaps.delete(texture);\n cubemapUV.dispose();\n }\n }\n function dispose() {\n cubeUVmaps = new WeakMap();\n if (pmremGenerator !== null) {\n pmremGenerator.dispose();\n pmremGenerator = null;\n }\n }\n return {\n get,\n dispose\n };\n}\nfunction WebGLExtensions(gl) {\n const extensions = {};\n function getExtension(name) {\n if (extensions[name] !== void 0) {\n return extensions[name];\n }\n let extension;\n switch (name) {\n case \"WEBGL_depth_texture\":\n extension = gl.getExtension(\"WEBGL_depth_texture\") || gl.getExtension(\"MOZ_WEBGL_depth_texture\") || gl.getExtension(\"WEBKIT_WEBGL_depth_texture\");\n break;\n case \"EXT_texture_filter_anisotropic\":\n extension = gl.getExtension(\"EXT_texture_filter_anisotropic\") || gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\") || gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\");\n break;\n case \"WEBGL_compressed_texture_s3tc\":\n extension = gl.getExtension(\"WEBGL_compressed_texture_s3tc\") || gl.getExtension(\"MOZ_WEBGL_compressed_texture_s3tc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_s3tc\");\n break;\n case \"WEBGL_compressed_texture_pvrtc\":\n extension = gl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\");\n break;\n default:\n extension = gl.getExtension(name);\n }\n extensions[name] = extension;\n return extension;\n }\n return {\n has: function(name) {\n return getExtension(name) !== null;\n },\n init: function(capabilities) {\n if (capabilities.isWebGL2) {\n getExtension(\"EXT_color_buffer_float\");\n } else {\n getExtension(\"WEBGL_depth_texture\");\n getExtension(\"OES_texture_float\");\n getExtension(\"OES_texture_half_float\");\n getExtension(\"OES_texture_half_float_linear\");\n getExtension(\"OES_standard_derivatives\");\n getExtension(\"OES_element_index_uint\");\n getExtension(\"OES_vertex_array_object\");\n getExtension(\"ANGLE_instanced_arrays\");\n }\n getExtension(\"OES_texture_float_linear\");\n getExtension(\"EXT_color_buffer_half_float\");\n getExtension(\"WEBGL_multisampled_render_to_texture\");\n },\n get: function(name) {\n const extension = getExtension(name);\n if (extension === null) {\n console.warn(\"THREE.WebGLRenderer: \" + name + \" extension not supported.\");\n }\n return extension;\n }\n };\n}\nfunction WebGLGeometries(gl, attributes, info, bindingStates) {\n const geometries = {};\n const wireframeAttributes = new WeakMap();\n function onGeometryDispose(event) {\n const geometry = event.target;\n if (geometry.index !== null) {\n attributes.remove(geometry.index);\n }\n for (const name in geometry.attributes) {\n attributes.remove(geometry.attributes[name]);\n }\n geometry.removeEventListener(\"dispose\", onGeometryDispose);\n delete geometries[geometry.id];\n const attribute = wireframeAttributes.get(geometry);\n if (attribute) {\n attributes.remove(attribute);\n wireframeAttributes.delete(geometry);\n }\n bindingStates.releaseStatesOfGeometry(geometry);\n if (geometry.isInstancedBufferGeometry === true) {\n delete geometry._maxInstanceCount;\n }\n info.memory.geometries--;\n }\n function get(object, geometry) {\n if (geometries[geometry.id] === true)\n return geometry;\n geometry.addEventListener(\"dispose\", onGeometryDispose);\n geometries[geometry.id] = true;\n info.memory.geometries++;\n return geometry;\n }\n function update(geometry) {\n const geometryAttributes = geometry.attributes;\n for (const name in geometryAttributes) {\n attributes.update(geometryAttributes[name], 34962);\n }\n const morphAttributes = geometry.morphAttributes;\n for (const name in morphAttributes) {\n const array = morphAttributes[name];\n for (let i = 0, l = array.length; i < l; i++) {\n attributes.update(array[i], 34962);\n }\n }\n }\n function updateWireframeAttribute(geometry) {\n const indices = [];\n const geometryIndex = geometry.index;\n const geometryPosition = geometry.attributes.position;\n let version = 0;\n if (geometryIndex !== null) {\n const array = geometryIndex.array;\n version = geometryIndex.version;\n for (let i = 0, l = array.length; i < l; i += 3) {\n const a = array[i + 0];\n const b = array[i + 1];\n const c = array[i + 2];\n indices.push(a, b, b, c, c, a);\n }\n } else {\n const array = geometryPosition.array;\n version = geometryPosition.version;\n for (let i = 0, l = array.length / 3 - 1; i < l; i += 3) {\n const a = i + 0;\n const b = i + 1;\n const c = i + 2;\n indices.push(a, b, b, c, c, a);\n }\n }\n const attribute = new (arrayMax(indices) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute)(indices, 1);\n attribute.version = version;\n const previousAttribute = wireframeAttributes.get(geometry);\n if (previousAttribute)\n attributes.remove(previousAttribute);\n wireframeAttributes.set(geometry, attribute);\n }\n function getWireframeAttribute(geometry) {\n const currentAttribute = wireframeAttributes.get(geometry);\n if (currentAttribute) {\n const geometryIndex = geometry.index;\n if (geometryIndex !== null) {\n if (currentAttribute.version < geometryIndex.version) {\n updateWireframeAttribute(geometry);\n }\n }\n } else {\n updateWireframeAttribute(geometry);\n }\n return wireframeAttributes.get(geometry);\n }\n return {\n get,\n update,\n getWireframeAttribute\n };\n}\nfunction WebGLIndexedBufferRenderer(gl, extensions, info, capabilities) {\n const isWebGL2 = capabilities.isWebGL2;\n let mode;\n function setMode(value) {\n mode = value;\n }\n let type, bytesPerElement;\n function setIndex(value) {\n type = value.type;\n bytesPerElement = value.bytesPerElement;\n }\n function render(start, count) {\n gl.drawElements(mode, count, type, start * bytesPerElement);\n info.update(count, mode, 1);\n }\n function renderInstances(start, count, primcount) {\n if (primcount === 0)\n return;\n let extension, methodName;\n if (isWebGL2) {\n extension = gl;\n methodName = \"drawElementsInstanced\";\n } else {\n extension = extensions.get(\"ANGLE_instanced_arrays\");\n methodName = \"drawElementsInstancedANGLE\";\n if (extension === null) {\n console.error(\"THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.\");\n return;\n }\n }\n extension[methodName](mode, count, type, start * bytesPerElement, primcount);\n info.update(count, mode, primcount);\n }\n this.setMode = setMode;\n this.setIndex = setIndex;\n this.render = render;\n this.renderInstances = renderInstances;\n}\nfunction WebGLInfo(gl) {\n const memory = {\n geometries: 0,\n textures: 0\n };\n const render = {\n frame: 0,\n calls: 0,\n triangles: 0,\n points: 0,\n lines: 0\n };\n function update(count, mode, instanceCount) {\n render.calls++;\n switch (mode) {\n case 4:\n render.triangles += instanceCount * (count / 3);\n break;\n case 1:\n render.lines += instanceCount * (count / 2);\n break;\n case 3:\n render.lines += instanceCount * (count - 1);\n break;\n case 2:\n render.lines += instanceCount * count;\n break;\n case 0:\n render.points += instanceCount * count;\n break;\n default:\n console.error(\"THREE.WebGLInfo: Unknown draw mode:\", mode);\n break;\n }\n }\n function reset() {\n render.frame++;\n render.calls = 0;\n render.triangles = 0;\n render.points = 0;\n render.lines = 0;\n }\n return {\n memory,\n render,\n programs: null,\n autoReset: true,\n reset,\n update\n };\n}\nclass DataTexture2DArray extends Texture {\n constructor(data = null, width = 1, height = 1, depth = 1) {\n super(null);\n this.image = {data, width, height, depth};\n this.magFilter = NearestFilter;\n this.minFilter = NearestFilter;\n this.wrapR = ClampToEdgeWrapping;\n this.generateMipmaps = false;\n this.flipY = false;\n this.unpackAlignment = 1;\n }\n}\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\nfunction numericalSort(a, b) {\n return a[0] - b[0];\n}\nfunction absNumericalSort(a, b) {\n return Math.abs(b[1]) - Math.abs(a[1]);\n}\nfunction denormalize(morph, attribute) {\n let denominator = 1;\n const array = attribute.isInterleavedBufferAttribute ? attribute.data.array : attribute.array;\n if (array instanceof Int8Array)\n denominator = 127;\n else if (array instanceof Int16Array)\n denominator = 32767;\n else if (array instanceof Int32Array)\n denominator = 2147483647;\n else\n console.error(\"THREE.WebGLMorphtargets: Unsupported morph attribute data type: \", array);\n morph.divideScalar(denominator);\n}\nfunction WebGLMorphtargets(gl, capabilities, textures) {\n const influencesList = {};\n const morphInfluences = new Float32Array(8);\n const morphTextures = new WeakMap();\n const morph = new Vector3();\n const workInfluences = [];\n for (let i = 0; i < 8; i++) {\n workInfluences[i] = [i, 0];\n }\n function update(object, geometry, material, program) {\n const objectInfluences = object.morphTargetInfluences;\n if (capabilities.isWebGL2 === true) {\n const numberOfMorphTargets = geometry.morphAttributes.position.length;\n let entry = morphTextures.get(geometry);\n if (entry === void 0 || entry.count !== numberOfMorphTargets) {\n if (entry !== void 0)\n entry.texture.dispose();\n const hasMorphNormals = geometry.morphAttributes.normal !== void 0;\n const morphTargets = geometry.morphAttributes.position;\n const morphNormals = geometry.morphAttributes.normal || [];\n const numberOfVertices = geometry.attributes.position.count;\n const numberOfVertexData = hasMorphNormals === true ? 2 : 1;\n let width = numberOfVertices * numberOfVertexData;\n let height = 1;\n if (width > capabilities.maxTextureSize) {\n height = Math.ceil(width / capabilities.maxTextureSize);\n width = capabilities.maxTextureSize;\n }\n const buffer = new Float32Array(width * height * 4 * numberOfMorphTargets);\n const texture = new DataTexture2DArray(buffer, width, height, numberOfMorphTargets);\n texture.format = RGBAFormat;\n texture.type = FloatType;\n texture.needsUpdate = true;\n const vertexDataStride = numberOfVertexData * 4;\n for (let i = 0; i < numberOfMorphTargets; i++) {\n const morphTarget = morphTargets[i];\n const morphNormal = morphNormals[i];\n const offset = width * height * 4 * i;\n for (let j = 0; j < morphTarget.count; j++) {\n morph.fromBufferAttribute(morphTarget, j);\n if (morphTarget.normalized === true)\n denormalize(morph, morphTarget);\n const stride = j * vertexDataStride;\n buffer[offset + stride + 0] = morph.x;\n buffer[offset + stride + 1] = morph.y;\n buffer[offset + stride + 2] = morph.z;\n buffer[offset + stride + 3] = 0;\n if (hasMorphNormals === true) {\n morph.fromBufferAttribute(morphNormal, j);\n if (morphNormal.normalized === true)\n denormalize(morph, morphNormal);\n buffer[offset + stride + 4] = morph.x;\n buffer[offset + stride + 5] = morph.y;\n buffer[offset + stride + 6] = morph.z;\n buffer[offset + stride + 7] = 0;\n }\n }\n }\n entry = {\n count: numberOfMorphTargets,\n texture,\n size: new Vector2(width, height)\n };\n morphTextures.set(geometry, entry);\n }\n let morphInfluencesSum = 0;\n for (let i = 0; i < objectInfluences.length; i++) {\n morphInfluencesSum += objectInfluences[i];\n }\n const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n program.getUniforms().setValue(gl, \"morphTargetBaseInfluence\", morphBaseInfluence);\n program.getUniforms().setValue(gl, \"morphTargetInfluences\", objectInfluences);\n program.getUniforms().setValue(gl, \"morphTargetsTexture\", entry.texture, textures);\n program.getUniforms().setValue(gl, \"morphTargetsTextureSize\", entry.size);\n } else {\n const length = objectInfluences === void 0 ? 0 : objectInfluences.length;\n let influences = influencesList[geometry.id];\n if (influences === void 0 || influences.length !== length) {\n influences = [];\n for (let i = 0; i < length; i++) {\n influences[i] = [i, 0];\n }\n influencesList[geometry.id] = influences;\n }\n for (let i = 0; i < length; i++) {\n const influence = influences[i];\n influence[0] = i;\n influence[1] = objectInfluences[i];\n }\n influences.sort(absNumericalSort);\n for (let i = 0; i < 8; i++) {\n if (i < length && influences[i][1]) {\n workInfluences[i][0] = influences[i][0];\n workInfluences[i][1] = influences[i][1];\n } else {\n workInfluences[i][0] = Number.MAX_SAFE_INTEGER;\n workInfluences[i][1] = 0;\n }\n }\n workInfluences.sort(numericalSort);\n const morphTargets = geometry.morphAttributes.position;\n const morphNormals = geometry.morphAttributes.normal;\n let morphInfluencesSum = 0;\n for (let i = 0; i < 8; i++) {\n const influence = workInfluences[i];\n const index = influence[0];\n const value = influence[1];\n if (index !== Number.MAX_SAFE_INTEGER && value) {\n if (morphTargets && geometry.getAttribute(\"morphTarget\" + i) !== morphTargets[index]) {\n geometry.setAttribute(\"morphTarget\" + i, morphTargets[index]);\n }\n if (morphNormals && geometry.getAttribute(\"morphNormal\" + i) !== morphNormals[index]) {\n geometry.setAttribute(\"morphNormal\" + i, morphNormals[index]);\n }\n morphInfluences[i] = value;\n morphInfluencesSum += value;\n } else {\n if (morphTargets && geometry.hasAttribute(\"morphTarget\" + i) === true) {\n geometry.deleteAttribute(\"morphTarget\" + i);\n }\n if (morphNormals && geometry.hasAttribute(\"morphNormal\" + i) === true) {\n geometry.deleteAttribute(\"morphNormal\" + i);\n }\n morphInfluences[i] = 0;\n }\n }\n const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n program.getUniforms().setValue(gl, \"morphTargetBaseInfluence\", morphBaseInfluence);\n program.getUniforms().setValue(gl, \"morphTargetInfluences\", morphInfluences);\n }\n }\n return {\n update\n };\n}\nfunction WebGLObjects(gl, geometries, attributes, info) {\n let updateMap = new WeakMap();\n function update(object) {\n const frame = info.render.frame;\n const geometry = object.geometry;\n const buffergeometry = geometries.get(object, geometry);\n if (updateMap.get(buffergeometry) !== frame) {\n geometries.update(buffergeometry);\n updateMap.set(buffergeometry, frame);\n }\n if (object.isInstancedMesh) {\n if (object.hasEventListener(\"dispose\", onInstancedMeshDispose) === false) {\n object.addEventListener(\"dispose\", onInstancedMeshDispose);\n }\n attributes.update(object.instanceMatrix, 34962);\n if (object.instanceColor !== null) {\n attributes.update(object.instanceColor, 34962);\n }\n }\n return buffergeometry;\n }\n function dispose() {\n updateMap = new WeakMap();\n }\n function onInstancedMeshDispose(event) {\n const instancedMesh = event.target;\n instancedMesh.removeEventListener(\"dispose\", onInstancedMeshDispose);\n attributes.remove(instancedMesh.instanceMatrix);\n if (instancedMesh.instanceColor !== null)\n attributes.remove(instancedMesh.instanceColor);\n }\n return {\n update,\n dispose\n };\n}\nclass DataTexture3D extends Texture {\n constructor(data = null, width = 1, height = 1, depth = 1) {\n super(null);\n this.image = {data, width, height, depth};\n this.magFilter = NearestFilter;\n this.minFilter = NearestFilter;\n this.wrapR = ClampToEdgeWrapping;\n this.generateMipmaps = false;\n this.flipY = false;\n this.unpackAlignment = 1;\n }\n}\nDataTexture3D.prototype.isDataTexture3D = true;\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = new CubeTexture();\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\nconst mat4array = new Float32Array(16);\nconst mat3array = new Float32Array(9);\nconst mat2array = new Float32Array(4);\nfunction flatten(array, nBlocks, blockSize) {\n const firstElem = array[0];\n if (firstElem <= 0 || firstElem > 0)\n return array;\n const n = nBlocks * blockSize;\n let r = arrayCacheF32[n];\n if (r === void 0) {\n r = new Float32Array(n);\n arrayCacheF32[n] = r;\n }\n if (nBlocks !== 0) {\n firstElem.toArray(r, 0);\n for (let i = 1, offset = 0; i !== nBlocks; ++i) {\n offset += blockSize;\n array[i].toArray(r, offset);\n }\n }\n return r;\n}\nfunction arraysEqual(a, b) {\n if (a.length !== b.length)\n return false;\n for (let i = 0, l = a.length; i < l; i++) {\n if (a[i] !== b[i])\n return false;\n }\n return true;\n}\nfunction copyArray(a, b) {\n for (let i = 0, l = b.length; i < l; i++) {\n a[i] = b[i];\n }\n}\nfunction allocTexUnits(textures, n) {\n let r = arrayCacheI32[n];\n if (r === void 0) {\n r = new Int32Array(n);\n arrayCacheI32[n] = r;\n }\n for (let i = 0; i !== n; ++i) {\n r[i] = textures.allocateTextureUnit();\n }\n return r;\n}\nfunction setValueV1f(gl, v) {\n const cache = this.cache;\n if (cache[0] === v)\n return;\n gl.uniform1f(this.addr, v);\n cache[0] = v;\n}\nfunction setValueV2f(gl, v) {\n const cache = this.cache;\n if (v.x !== void 0) {\n if (cache[0] !== v.x || cache[1] !== v.y) {\n gl.uniform2f(this.addr, v.x, v.y);\n cache[0] = v.x;\n cache[1] = v.y;\n }\n } else {\n if (arraysEqual(cache, v))\n return;\n gl.uniform2fv(this.addr, v);\n copyArray(cache, v);\n }\n}\nfunction setValueV3f(gl, v) {\n const cache = this.cache;\n if (v.x !== void 0) {\n if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z) {\n gl.uniform3f(this.addr, v.x, v.y, v.z);\n cache[0] = v.x;\n cache[1] = v.y;\n cache[2] = v.z;\n }\n } else if (v.r !== void 0) {\n if (cache[0] !== v.r || cache[1] !== v.g || cache[2] !== v.b) {\n gl.uniform3f(this.addr, v.r, v.g, v.b);\n cache[0] = v.r;\n cache[1] = v.g;\n cache[2] = v.b;\n }\n } else {\n if (arraysEqual(cache, v))\n return;\n gl.uniform3fv(this.addr, v);\n copyArray(cache, v);\n }\n}\nfunction setValueV4f(gl, v) {\n const cache = this.cache;\n if (v.x !== void 0) {\n if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z || cache[3] !== v.w) {\n gl.uniform4f(this.addr, v.x, v.y, v.z, v.w);\n cache[0] = v.x;\n cache[1] = v.y;\n cache[2] = v.z;\n cache[3] = v.w;\n }\n } else {\n if (arraysEqual(cache, v))\n return;\n gl.uniform4fv(this.addr, v);\n copyArray(cache, v);\n }\n}\nfunction setValueM2(gl, v) {\n const cache = this.cache;\n const elements = v.elements;\n if (elements === void 0) {\n if (arraysEqual(cache, v))\n return;\n gl.uniformMatrix2fv(this.addr, false, v);\n copyArray(cache, v);\n } else {\n if (arraysEqual(cache, elements))\n return;\n mat2array.set(elements);\n gl.uniformMatrix2fv(this.addr, false, mat2array);\n copyArray(cache, elements);\n }\n}\nfunction setValueM3(gl, v) {\n const cache = this.cache;\n const elements = v.elements;\n if (elements === void 0) {\n if (arraysEqual(cache, v))\n return;\n gl.uniformMatrix3fv(this.addr, false, v);\n copyArray(cache, v);\n } else {\n if (arraysEqual(cache, elements))\n return;\n mat3array.set(elements);\n gl.uniformMatrix3fv(this.addr, false, mat3array);\n copyArray(cache, elements);\n }\n}\nfunction setValueM4(gl, v) {\n const cache = this.cache;\n const elements = v.elements;\n if (elements === void 0) {\n if (arraysEqual(cache, v))\n return;\n gl.uniformMatrix4fv(this.addr, false, v);\n copyArray(cache, v);\n } else {\n if (arraysEqual(cache, elements))\n return;\n mat4array.set(elements);\n gl.uniformMatrix4fv(this.addr, false, mat4array);\n copyArray(cache, elements);\n }\n}\nfunction setValueV1i(gl, v) {\n const cache = this.cache;\n if (cache[0] === v)\n return;\n gl.uniform1i(this.addr, v);\n cache[0] = v;\n}\nfunction setValueV2i(gl, v) {\n const cache = this.cache;\n if (arraysEqual(cache, v))\n return;\n gl.uniform2iv(this.addr, v);\n copyArray(cache, v);\n}\nfunction setValueV3i(gl, v) {\n const cache = this.cache;\n if (arraysEqual(cache, v))\n return;\n gl.uniform3iv(this.addr, v);\n copyArray(cache, v);\n}\nfunction setValueV4i(gl, v) {\n const cache = this.cache;\n if (arraysEqual(cache, v))\n return;\n gl.uniform4iv(this.addr, v);\n copyArray(cache, v);\n}\nfunction setValueV1ui(gl, v) {\n const cache = this.cache;\n if (cache[0] === v)\n return;\n gl.uniform1ui(this.addr, v);\n cache[0] = v;\n}\nfunction setValueV2ui(gl, v) {\n const cache = this.cache;\n if (arraysEqual(cache, v))\n return;\n gl.uniform2uiv(this.addr, v);\n copyArray(cache, v);\n}\nfunction setValueV3ui(gl, v) {\n const cache = this.cache;\n if (arraysEqual(cache, v))\n return;\n gl.uniform3uiv(this.addr, v);\n copyArray(cache, v);\n}\nfunction setValueV4ui(gl, v) {\n const cache = this.cache;\n if (arraysEqual(cache, v))\n return;\n gl.uniform4uiv(this.addr, v);\n copyArray(cache, v);\n}\nfunction setValueT1(gl, v, textures) {\n const cache = this.cache;\n const unit = textures.allocateTextureUnit();\n if (cache[0] !== unit) {\n gl.uniform1i(this.addr, unit);\n cache[0] = unit;\n }\n textures.safeSetTexture2D(v || emptyTexture, unit);\n}\nfunction setValueT3D1(gl, v, textures) {\n const cache = this.cache;\n const unit = textures.allocateTextureUnit();\n if (cache[0] !== unit) {\n gl.uniform1i(this.addr, unit);\n cache[0] = unit;\n }\n textures.setTexture3D(v || emptyTexture3d, unit);\n}\nfunction setValueT6(gl, v, textures) {\n const cache = this.cache;\n const unit = textures.allocateTextureUnit();\n if (cache[0] !== unit) {\n gl.uniform1i(this.addr, unit);\n cache[0] = unit;\n }\n textures.safeSetTextureCube(v || emptyCubeTexture, unit);\n}\nfunction setValueT2DArray1(gl, v, textures) {\n const cache = this.cache;\n const unit = textures.allocateTextureUnit();\n if (cache[0] !== unit) {\n gl.uniform1i(this.addr, unit);\n cache[0] = unit;\n }\n textures.setTexture2DArray(v || emptyTexture2dArray, unit);\n}\nfunction getSingularSetter(type) {\n switch (type) {\n case 5126:\n return setValueV1f;\n case 35664:\n return setValueV2f;\n case 35665:\n return setValueV3f;\n case 35666:\n return setValueV4f;\n case 35674:\n return setValueM2;\n case 35675:\n return setValueM3;\n case 35676:\n return setValueM4;\n case 5124:\n case 35670:\n return setValueV1i;\n case 35667:\n case 35671:\n return setValueV2i;\n case 35668:\n case 35672:\n return setValueV3i;\n case 35669:\n case 35673:\n return setValueV4i;\n case 5125:\n return setValueV1ui;\n case 36294:\n return setValueV2ui;\n case 36295:\n return setValueV3ui;\n case 36296:\n return setValueV4ui;\n case 35678:\n case 36198:\n case 36298:\n case 36306:\n case 35682:\n return setValueT1;\n case 35679:\n case 36299:\n case 36307:\n return setValueT3D1;\n case 35680:\n case 36300:\n case 36308:\n case 36293:\n return setValueT6;\n case 36289:\n case 36303:\n case 36311:\n case 36292:\n return setValueT2DArray1;\n }\n}\nfunction setValueV1fArray(gl, v) {\n gl.uniform1fv(this.addr, v);\n}\nfunction setValueV2fArray(gl, v) {\n const data = flatten(v, this.size, 2);\n gl.uniform2fv(this.addr, data);\n}\nfunction setValueV3fArray(gl, v) {\n const data = flatten(v, this.size, 3);\n gl.uniform3fv(this.addr, data);\n}\nfunction setValueV4fArray(gl, v) {\n const data = flatten(v, this.size, 4);\n gl.uniform4fv(this.addr, data);\n}\nfunction setValueM2Array(gl, v) {\n const data = flatten(v, this.size, 4);\n gl.uniformMatrix2fv(this.addr, false, data);\n}\nfunction setValueM3Array(gl, v) {\n const data = flatten(v, this.size, 9);\n gl.uniformMatrix3fv(this.addr, false, data);\n}\nfunction setValueM4Array(gl, v) {\n const data = flatten(v, this.size, 16);\n gl.uniformMatrix4fv(this.addr, false, data);\n}\nfunction setValueV1iArray(gl, v) {\n gl.uniform1iv(this.addr, v);\n}\nfunction setValueV2iArray(gl, v) {\n gl.uniform2iv(this.addr, v);\n}\nfunction setValueV3iArray(gl, v) {\n gl.uniform3iv(this.addr, v);\n}\nfunction setValueV4iArray(gl, v) {\n gl.uniform4iv(this.addr, v);\n}\nfunction setValueV1uiArray(gl, v) {\n gl.uniform1uiv(this.addr, v);\n}\nfunction setValueV2uiArray(gl, v) {\n gl.uniform2uiv(this.addr, v);\n}\nfunction setValueV3uiArray(gl, v) {\n gl.uniform3uiv(this.addr, v);\n}\nfunction setValueV4uiArray(gl, v) {\n gl.uniform4uiv(this.addr, v);\n}\nfunction setValueT1Array(gl, v, textures) {\n const n = v.length;\n const units = allocTexUnits(textures, n);\n gl.uniform1iv(this.addr, units);\n for (let i = 0; i !== n; ++i) {\n textures.safeSetTexture2D(v[i] || emptyTexture, units[i]);\n }\n}\nfunction setValueT3DArray(gl, v, textures) {\n const n = v.length;\n const units = allocTexUnits(textures, n);\n gl.uniform1iv(this.addr, units);\n for (let i = 0; i !== n; ++i) {\n textures.setTexture3D(v[i] || emptyTexture3d, units[i]);\n }\n}\nfunction setValueT6Array(gl, v, textures) {\n const n = v.length;\n const units = allocTexUnits(textures, n);\n gl.uniform1iv(this.addr, units);\n for (let i = 0; i !== n; ++i) {\n textures.safeSetTextureCube(v[i] || emptyCubeTexture, units[i]);\n }\n}\nfunction setValueT2DArrayArray(gl, v, textures) {\n const n = v.length;\n const units = allocTexUnits(textures, n);\n gl.uniform1iv(this.addr, units);\n for (let i = 0; i !== n; ++i) {\n textures.setTexture2DArray(v[i] || emptyTexture2dArray, units[i]);\n }\n}\nfunction getPureArraySetter(type) {\n switch (type) {\n case 5126:\n return setValueV1fArray;\n case 35664:\n return setValueV2fArray;\n case 35665:\n return setValueV3fArray;\n case 35666:\n return setValueV4fArray;\n case 35674:\n return setValueM2Array;\n case 35675:\n return setValueM3Array;\n case 35676:\n return setValueM4Array;\n case 5124:\n case 35670:\n return setValueV1iArray;\n case 35667:\n case 35671:\n return setValueV2iArray;\n case 35668:\n case 35672:\n return setValueV3iArray;\n case 35669:\n case 35673:\n return setValueV4iArray;\n case 5125:\n return setValueV1uiArray;\n case 36294:\n return setValueV2uiArray;\n case 36295:\n return setValueV3uiArray;\n case 36296:\n return setValueV4uiArray;\n case 35678:\n case 36198:\n case 36298:\n case 36306:\n case 35682:\n return setValueT1Array;\n case 35679:\n case 36299:\n case 36307:\n return setValueT3DArray;\n case 35680:\n case 36300:\n case 36308:\n case 36293:\n return setValueT6Array;\n case 36289:\n case 36303:\n case 36311:\n case 36292:\n return setValueT2DArrayArray;\n }\n}\nfunction SingleUniform(id, activeInfo, addr) {\n this.id = id;\n this.addr = addr;\n this.cache = [];\n this.setValue = getSingularSetter(activeInfo.type);\n}\nfunction PureArrayUniform(id, activeInfo, addr) {\n this.id = id;\n this.addr = addr;\n this.cache = [];\n this.size = activeInfo.size;\n this.setValue = getPureArraySetter(activeInfo.type);\n}\nPureArrayUniform.prototype.updateCache = function(data) {\n const cache = this.cache;\n if (data instanceof Float32Array && cache.length !== data.length) {\n this.cache = new Float32Array(data.length);\n }\n copyArray(cache, data);\n};\nfunction StructuredUniform(id) {\n this.id = id;\n this.seq = [];\n this.map = {};\n}\nStructuredUniform.prototype.setValue = function(gl, value, textures) {\n const seq = this.seq;\n for (let i = 0, n = seq.length; i !== n; ++i) {\n const u = seq[i];\n u.setValue(gl, value[u.id], textures);\n }\n};\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\nfunction addUniform(container, uniformObject) {\n container.seq.push(uniformObject);\n container.map[uniformObject.id] = uniformObject;\n}\nfunction parseUniform(activeInfo, addr, container) {\n const path = activeInfo.name, pathLength = path.length;\n RePathPart.lastIndex = 0;\n while (true) {\n const match = RePathPart.exec(path), matchEnd = RePathPart.lastIndex;\n let id = match[1];\n const idIsIndex = match[2] === \"]\", subscript = match[3];\n if (idIsIndex)\n id = id | 0;\n if (subscript === void 0 || subscript === \"[\" && matchEnd + 2 === pathLength) {\n addUniform(container, subscript === void 0 ? new SingleUniform(id, activeInfo, addr) : new PureArrayUniform(id, activeInfo, addr));\n break;\n } else {\n const map = container.map;\n let next = map[id];\n if (next === void 0) {\n next = new StructuredUniform(id);\n addUniform(container, next);\n }\n container = next;\n }\n }\n}\nfunction WebGLUniforms(gl, program) {\n this.seq = [];\n this.map = {};\n const n = gl.getProgramParameter(program, 35718);\n for (let i = 0; i < n; ++i) {\n const info = gl.getActiveUniform(program, i), addr = gl.getUniformLocation(program, info.name);\n parseUniform(info, addr, this);\n }\n}\nWebGLUniforms.prototype.setValue = function(gl, name, value, textures) {\n const u = this.map[name];\n if (u !== void 0)\n u.setValue(gl, value, textures);\n};\nWebGLUniforms.prototype.setOptional = function(gl, object, name) {\n const v = object[name];\n if (v !== void 0)\n this.setValue(gl, name, v);\n};\nWebGLUniforms.upload = function(gl, seq, values, textures) {\n for (let i = 0, n = seq.length; i !== n; ++i) {\n const u = seq[i], v = values[u.id];\n if (v.needsUpdate !== false) {\n u.setValue(gl, v.value, textures);\n }\n }\n};\nWebGLUniforms.seqWithValue = function(seq, values) {\n const r = [];\n for (let i = 0, n = seq.length; i !== n; ++i) {\n const u = seq[i];\n if (u.id in values)\n r.push(u);\n }\n return r;\n};\nfunction WebGLShader(gl, type, string) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, string);\n gl.compileShader(shader);\n return shader;\n}\nlet programIdCount = 0;\nfunction addLineNumbers(string) {\n const lines = string.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n lines[i] = i + 1 + \": \" + lines[i];\n }\n return lines.join(\"\\n\");\n}\nfunction getEncodingComponents(encoding) {\n switch (encoding) {\n case LinearEncoding:\n return [\"Linear\", \"( value )\"];\n case sRGBEncoding:\n return [\"sRGB\", \"( value )\"];\n default:\n console.warn(\"THREE.WebGLProgram: Unsupported encoding:\", encoding);\n return [\"Linear\", \"( value )\"];\n }\n}\nfunction getShaderErrors(gl, shader, type) {\n const status = gl.getShaderParameter(shader, 35713);\n const errors = gl.getShaderInfoLog(shader).trim();\n if (status && errors === \"\")\n return \"\";\n return type.toUpperCase() + \"\\n\\n\" + errors + \"\\n\\n\" + addLineNumbers(gl.getShaderSource(shader));\n}\nfunction getTexelDecodingFunction(functionName, encoding) {\n const components = getEncodingComponents(encoding);\n return \"vec4 \" + functionName + \"( vec4 value ) { return \" + components[0] + \"ToLinear\" + components[1] + \"; }\";\n}\nfunction getTexelEncodingFunction(functionName, encoding) {\n const components = getEncodingComponents(encoding);\n return \"vec4 \" + functionName + \"( vec4 value ) { return LinearTo\" + components[0] + components[1] + \"; }\";\n}\nfunction getToneMappingFunction(functionName, toneMapping) {\n let toneMappingName;\n switch (toneMapping) {\n case LinearToneMapping:\n toneMappingName = \"Linear\";\n break;\n case ReinhardToneMapping:\n toneMappingName = \"Reinhard\";\n break;\n case CineonToneMapping:\n toneMappingName = \"OptimizedCineon\";\n break;\n case ACESFilmicToneMapping:\n toneMappingName = \"ACESFilmic\";\n break;\n case CustomToneMapping:\n toneMappingName = \"Custom\";\n break;\n default:\n console.warn(\"THREE.WebGLProgram: Unsupported toneMapping:\", toneMapping);\n toneMappingName = \"Linear\";\n }\n return \"vec3 \" + functionName + \"( vec3 color ) { return \" + toneMappingName + \"ToneMapping( color ); }\";\n}\nfunction generateExtensions(parameters) {\n const chunks = [\n parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === \"physical\" ? \"#extension GL_OES_standard_derivatives : enable\" : \"\",\n (parameters.extensionFragDepth || parameters.logarithmicDepthBuffer) && parameters.rendererExtensionFragDepth ? \"#extension GL_EXT_frag_depth : enable\" : \"\",\n parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ? \"#extension GL_EXT_draw_buffers : require\" : \"\",\n (parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission) && parameters.rendererExtensionShaderTextureLod ? \"#extension GL_EXT_shader_texture_lod : enable\" : \"\"\n ];\n return chunks.filter(filterEmptyLine).join(\"\\n\");\n}\nfunction generateDefines(defines) {\n const chunks = [];\n for (const name in defines) {\n const value = defines[name];\n if (value === false)\n continue;\n chunks.push(\"#define \" + name + \" \" + value);\n }\n return chunks.join(\"\\n\");\n}\nfunction fetchAttributeLocations(gl, program) {\n const attributes = {};\n const n = gl.getProgramParameter(program, 35721);\n for (let i = 0; i < n; i++) {\n const info = gl.getActiveAttrib(program, i);\n const name = info.name;\n let locationSize = 1;\n if (info.type === 35674)\n locationSize = 2;\n if (info.type === 35675)\n locationSize = 3;\n if (info.type === 35676)\n locationSize = 4;\n attributes[name] = {\n type: info.type,\n location: gl.getAttribLocation(program, name),\n locationSize\n };\n }\n return attributes;\n}\nfunction filterEmptyLine(string) {\n return string !== \"\";\n}\nfunction replaceLightNums(string, parameters) {\n return string.replace(/NUM_DIR_LIGHTS/g, parameters.numDirLights).replace(/NUM_SPOT_LIGHTS/g, parameters.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, parameters.numPointLights).replace(/NUM_HEMI_LIGHTS/g, parameters.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows);\n}\nfunction replaceClippingPlaneNums(string, parameters) {\n return string.replace(/NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, parameters.numClippingPlanes - parameters.numClipIntersection);\n}\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\nfunction resolveIncludes(string) {\n return string.replace(includePattern, includeReplacer);\n}\nfunction includeReplacer(match, include) {\n const string = ShaderChunk[include];\n if (string === void 0) {\n throw new Error(\"Can not resolve #include <\" + include + \">\");\n }\n return resolveIncludes(string);\n}\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\nfunction unrollLoops(string) {\n return string.replace(unrollLoopPattern, loopReplacer).replace(deprecatedUnrollLoopPattern, deprecatedLoopReplacer);\n}\nfunction deprecatedLoopReplacer(match, start, end, snippet) {\n console.warn(\"WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.\");\n return loopReplacer(match, start, end, snippet);\n}\nfunction loopReplacer(match, start, end, snippet) {\n let string = \"\";\n for (let i = parseInt(start); i < parseInt(end); i++) {\n string += snippet.replace(/\\[\\s*i\\s*\\]/g, \"[ \" + i + \" ]\").replace(/UNROLLED_LOOP_INDEX/g, i);\n }\n return string;\n}\nfunction generatePrecision(parameters) {\n let precisionstring = \"precision \" + parameters.precision + \" float;\\nprecision \" + parameters.precision + \" int;\";\n if (parameters.precision === \"highp\") {\n precisionstring += \"\\n#define HIGH_PRECISION\";\n } else if (parameters.precision === \"mediump\") {\n precisionstring += \"\\n#define MEDIUM_PRECISION\";\n } else if (parameters.precision === \"lowp\") {\n precisionstring += \"\\n#define LOW_PRECISION\";\n }\n return precisionstring;\n}\nfunction generateShadowMapTypeDefine(parameters) {\n let shadowMapTypeDefine = \"SHADOWMAP_TYPE_BASIC\";\n if (parameters.shadowMapType === PCFShadowMap) {\n shadowMapTypeDefine = \"SHADOWMAP_TYPE_PCF\";\n } else if (parameters.shadowMapType === PCFSoftShadowMap) {\n shadowMapTypeDefine = \"SHADOWMAP_TYPE_PCF_SOFT\";\n } else if (parameters.shadowMapType === VSMShadowMap) {\n shadowMapTypeDefine = \"SHADOWMAP_TYPE_VSM\";\n }\n return shadowMapTypeDefine;\n}\nfunction generateEnvMapTypeDefine(parameters) {\n let envMapTypeDefine = \"ENVMAP_TYPE_CUBE\";\n if (parameters.envMap) {\n switch (parameters.envMapMode) {\n case CubeReflectionMapping:\n case CubeRefractionMapping:\n envMapTypeDefine = \"ENVMAP_TYPE_CUBE\";\n break;\n case CubeUVReflectionMapping:\n case CubeUVRefractionMapping:\n envMapTypeDefine = \"ENVMAP_TYPE_CUBE_UV\";\n break;\n }\n }\n return envMapTypeDefine;\n}\nfunction generateEnvMapModeDefine(parameters) {\n let envMapModeDefine = \"ENVMAP_MODE_REFLECTION\";\n if (parameters.envMap) {\n switch (parameters.envMapMode) {\n case CubeRefractionMapping:\n case CubeUVRefractionMapping:\n envMapModeDefine = \"ENVMAP_MODE_REFRACTION\";\n break;\n }\n }\n return envMapModeDefine;\n}\nfunction generateEnvMapBlendingDefine(parameters) {\n let envMapBlendingDefine = \"ENVMAP_BLENDING_NONE\";\n if (parameters.envMap) {\n switch (parameters.combine) {\n case MultiplyOperation:\n envMapBlendingDefine = \"ENVMAP_BLENDING_MULTIPLY\";\n break;\n case MixOperation:\n envMapBlendingDefine = \"ENVMAP_BLENDING_MIX\";\n break;\n case AddOperation:\n envMapBlendingDefine = \"ENVMAP_BLENDING_ADD\";\n break;\n }\n }\n return envMapBlendingDefine;\n}\nfunction WebGLProgram(renderer, cacheKey, parameters, bindingStates) {\n const gl = renderer.getContext();\n const defines = parameters.defines;\n let vertexShader = parameters.vertexShader;\n let fragmentShader = parameters.fragmentShader;\n const shadowMapTypeDefine = generateShadowMapTypeDefine(parameters);\n const envMapTypeDefine = generateEnvMapTypeDefine(parameters);\n const envMapModeDefine = generateEnvMapModeDefine(parameters);\n const envMapBlendingDefine = generateEnvMapBlendingDefine(parameters);\n const customExtensions = parameters.isWebGL2 ? \"\" : generateExtensions(parameters);\n const customDefines = generateDefines(defines);\n const program = gl.createProgram();\n let prefixVertex, prefixFragment;\n let versionString = parameters.glslVersion ? \"#version \" + parameters.glslVersion + \"\\n\" : \"\";\n if (parameters.isRawShaderMaterial) {\n prefixVertex = [\n customDefines\n ].filter(filterEmptyLine).join(\"\\n\");\n if (prefixVertex.length > 0) {\n prefixVertex += \"\\n\";\n }\n prefixFragment = [\n customExtensions,\n customDefines\n ].filter(filterEmptyLine).join(\"\\n\");\n if (prefixFragment.length > 0) {\n prefixFragment += \"\\n\";\n }\n } else {\n prefixVertex = [\n generatePrecision(parameters),\n \"#define SHADER_NAME \" + parameters.shaderName,\n customDefines,\n parameters.instancing ? \"#define USE_INSTANCING\" : \"\",\n parameters.instancingColor ? \"#define USE_INSTANCING_COLOR\" : \"\",\n parameters.supportsVertexTextures ? \"#define VERTEX_TEXTURES\" : \"\",\n \"#define MAX_BONES \" + parameters.maxBones,\n parameters.useFog && parameters.fog ? \"#define USE_FOG\" : \"\",\n parameters.useFog && parameters.fogExp2 ? \"#define FOG_EXP2\" : \"\",\n parameters.map ? \"#define USE_MAP\" : \"\",\n parameters.envMap ? \"#define USE_ENVMAP\" : \"\",\n parameters.envMap ? \"#define \" + envMapModeDefine : \"\",\n parameters.lightMap ? \"#define USE_LIGHTMAP\" : \"\",\n parameters.aoMap ? \"#define USE_AOMAP\" : \"\",\n parameters.emissiveMap ? \"#define USE_EMISSIVEMAP\" : \"\",\n parameters.bumpMap ? \"#define USE_BUMPMAP\" : \"\",\n parameters.normalMap ? \"#define USE_NORMALMAP\" : \"\",\n parameters.normalMap && parameters.objectSpaceNormalMap ? \"#define OBJECTSPACE_NORMALMAP\" : \"\",\n parameters.normalMap && parameters.tangentSpaceNormalMap ? \"#define TANGENTSPACE_NORMALMAP\" : \"\",\n parameters.clearcoatMap ? \"#define USE_CLEARCOATMAP\" : \"\",\n parameters.clearcoatRoughnessMap ? \"#define USE_CLEARCOAT_ROUGHNESSMAP\" : \"\",\n parameters.clearcoatNormalMap ? \"#define USE_CLEARCOAT_NORMALMAP\" : \"\",\n parameters.displacementMap && parameters.supportsVertexTextures ? \"#define USE_DISPLACEMENTMAP\" : \"\",\n parameters.specularMap ? \"#define USE_SPECULARMAP\" : \"\",\n parameters.specularIntensityMap ? \"#define USE_SPECULARINTENSITYMAP\" : \"\",\n parameters.specularColorMap ? \"#define USE_SPECULARCOLORMAP\" : \"\",\n parameters.roughnessMap ? \"#define USE_ROUGHNESSMAP\" : \"\",\n parameters.metalnessMap ? \"#define USE_METALNESSMAP\" : \"\",\n parameters.alphaMap ? \"#define USE_ALPHAMAP\" : \"\",\n parameters.transmission ? \"#define USE_TRANSMISSION\" : \"\",\n parameters.transmissionMap ? \"#define USE_TRANSMISSIONMAP\" : \"\",\n parameters.thicknessMap ? \"#define USE_THICKNESSMAP\" : \"\",\n parameters.sheenColorMap ? \"#define USE_SHEENCOLORMAP\" : \"\",\n parameters.sheenRoughnessMap ? \"#define USE_SHEENROUGHNESSMAP\" : \"\",\n parameters.vertexTangents ? \"#define USE_TANGENT\" : \"\",\n parameters.vertexColors ? \"#define USE_COLOR\" : \"\",\n parameters.vertexAlphas ? \"#define USE_COLOR_ALPHA\" : \"\",\n parameters.vertexUvs ? \"#define USE_UV\" : \"\",\n parameters.uvsVertexOnly ? \"#define UVS_VERTEX_ONLY\" : \"\",\n parameters.flatShading ? \"#define FLAT_SHADED\" : \"\",\n parameters.skinning ? \"#define USE_SKINNING\" : \"\",\n parameters.useVertexTexture ? \"#define BONE_TEXTURE\" : \"\",\n parameters.morphTargets ? \"#define USE_MORPHTARGETS\" : \"\",\n parameters.morphNormals && parameters.flatShading === false ? \"#define USE_MORPHNORMALS\" : \"\",\n parameters.morphTargets && parameters.isWebGL2 ? \"#define MORPHTARGETS_TEXTURE\" : \"\",\n parameters.morphTargets && parameters.isWebGL2 ? \"#define MORPHTARGETS_COUNT \" + parameters.morphTargetsCount : \"\",\n parameters.doubleSided ? \"#define DOUBLE_SIDED\" : \"\",\n parameters.flipSided ? \"#define FLIP_SIDED\" : \"\",\n parameters.shadowMapEnabled ? \"#define USE_SHADOWMAP\" : \"\",\n parameters.shadowMapEnabled ? \"#define \" + shadowMapTypeDefine : \"\",\n parameters.sizeAttenuation ? \"#define USE_SIZEATTENUATION\" : \"\",\n parameters.logarithmicDepthBuffer ? \"#define USE_LOGDEPTHBUF\" : \"\",\n parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ? \"#define USE_LOGDEPTHBUF_EXT\" : \"\",\n \"uniform mat4 modelMatrix;\",\n \"uniform mat4 modelViewMatrix;\",\n \"uniform mat4 projectionMatrix;\",\n \"uniform mat4 viewMatrix;\",\n \"uniform mat3 normalMatrix;\",\n \"uniform vec3 cameraPosition;\",\n \"uniform bool isOrthographic;\",\n \"#ifdef USE_INSTANCING\",\n \"\tattribute mat4 instanceMatrix;\",\n \"#endif\",\n \"#ifdef USE_INSTANCING_COLOR\",\n \"\tattribute vec3 instanceColor;\",\n \"#endif\",\n \"attribute vec3 position;\",\n \"attribute vec3 normal;\",\n \"attribute vec2 uv;\",\n \"#ifdef USE_TANGENT\",\n \"\tattribute vec4 tangent;\",\n \"#endif\",\n \"#if defined( USE_COLOR_ALPHA )\",\n \"\tattribute vec4 color;\",\n \"#elif defined( USE_COLOR )\",\n \"\tattribute vec3 color;\",\n \"#endif\",\n \"#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )\",\n \"\tattribute vec3 morphTarget0;\",\n \"\tattribute vec3 morphTarget1;\",\n \"\tattribute vec3 morphTarget2;\",\n \"\tattribute vec3 morphTarget3;\",\n \"\t#ifdef USE_MORPHNORMALS\",\n \"\t\tattribute vec3 morphNormal0;\",\n \"\t\tattribute vec3 morphNormal1;\",\n \"\t\tattribute vec3 morphNormal2;\",\n \"\t\tattribute vec3 morphNormal3;\",\n \"\t#else\",\n \"\t\tattribute vec3 morphTarget4;\",\n \"\t\tattribute vec3 morphTarget5;\",\n \"\t\tattribute vec3 morphTarget6;\",\n \"\t\tattribute vec3 morphTarget7;\",\n \"\t#endif\",\n \"#endif\",\n \"#ifdef USE_SKINNING\",\n \"\tattribute vec4 skinIndex;\",\n \"\tattribute vec4 skinWeight;\",\n \"#endif\",\n \"\\n\"\n ].filter(filterEmptyLine).join(\"\\n\");\n prefixFragment = [\n customExtensions,\n generatePrecision(parameters),\n \"#define SHADER_NAME \" + parameters.shaderName,\n customDefines,\n parameters.useFog && parameters.fog ? \"#define USE_FOG\" : \"\",\n parameters.useFog && parameters.fogExp2 ? \"#define FOG_EXP2\" : \"\",\n parameters.map ? \"#define USE_MAP\" : \"\",\n parameters.matcap ? \"#define USE_MATCAP\" : \"\",\n parameters.envMap ? \"#define USE_ENVMAP\" : \"\",\n parameters.envMap ? \"#define \" + envMapTypeDefine : \"\",\n parameters.envMap ? \"#define \" + envMapModeDefine : \"\",\n parameters.envMap ? \"#define \" + envMapBlendingDefine : \"\",\n parameters.lightMap ? \"#define USE_LIGHTMAP\" : \"\",\n parameters.aoMap ? \"#define USE_AOMAP\" : \"\",\n parameters.emissiveMap ? \"#define USE_EMISSIVEMAP\" : \"\",\n parameters.bumpMap ? \"#define USE_BUMPMAP\" : \"\",\n parameters.normalMap ? \"#define USE_NORMALMAP\" : \"\",\n parameters.normalMap && parameters.objectSpaceNormalMap ? \"#define OBJECTSPACE_NORMALMAP\" : \"\",\n parameters.normalMap && parameters.tangentSpaceNormalMap ? \"#define TANGENTSPACE_NORMALMAP\" : \"\",\n parameters.clearcoat ? \"#define USE_CLEARCOAT\" : \"\",\n parameters.clearcoatMap ? \"#define USE_CLEARCOATMAP\" : \"\",\n parameters.clearcoatRoughnessMap ? \"#define USE_CLEARCOAT_ROUGHNESSMAP\" : \"\",\n parameters.clearcoatNormalMap ? \"#define USE_CLEARCOAT_NORMALMAP\" : \"\",\n parameters.specularMap ? \"#define USE_SPECULARMAP\" : \"\",\n parameters.specularIntensityMap ? \"#define USE_SPECULARINTENSITYMAP\" : \"\",\n parameters.specularColorMap ? \"#define USE_SPECULARCOLORMAP\" : \"\",\n parameters.roughnessMap ? \"#define USE_ROUGHNESSMAP\" : \"\",\n parameters.metalnessMap ? \"#define USE_METALNESSMAP\" : \"\",\n parameters.alphaMap ? \"#define USE_ALPHAMAP\" : \"\",\n parameters.alphaTest ? \"#define USE_ALPHATEST\" : \"\",\n parameters.sheen ? \"#define USE_SHEEN\" : \"\",\n parameters.sheenColorMap ? \"#define USE_SHEENCOLORMAP\" : \"\",\n parameters.sheenRoughnessMap ? \"#define USE_SHEENROUGHNESSMAP\" : \"\",\n parameters.transmission ? \"#define USE_TRANSMISSION\" : \"\",\n parameters.transmissionMap ? \"#define USE_TRANSMISSIONMAP\" : \"\",\n parameters.thicknessMap ? \"#define USE_THICKNESSMAP\" : \"\",\n parameters.vertexTangents ? \"#define USE_TANGENT\" : \"\",\n parameters.vertexColors || parameters.instancingColor ? \"#define USE_COLOR\" : \"\",\n parameters.vertexAlphas ? \"#define USE_COLOR_ALPHA\" : \"\",\n parameters.vertexUvs ? \"#define USE_UV\" : \"\",\n parameters.uvsVertexOnly ? \"#define UVS_VERTEX_ONLY\" : \"\",\n parameters.gradientMap ? \"#define USE_GRADIENTMAP\" : \"\",\n parameters.flatShading ? \"#define FLAT_SHADED\" : \"\",\n parameters.doubleSided ? \"#define DOUBLE_SIDED\" : \"\",\n parameters.flipSided ? \"#define FLIP_SIDED\" : \"\",\n parameters.shadowMapEnabled ? \"#define USE_SHADOWMAP\" : \"\",\n parameters.shadowMapEnabled ? \"#define \" + shadowMapTypeDefine : \"\",\n parameters.premultipliedAlpha ? \"#define PREMULTIPLIED_ALPHA\" : \"\",\n parameters.physicallyCorrectLights ? \"#define PHYSICALLY_CORRECT_LIGHTS\" : \"\",\n parameters.logarithmicDepthBuffer ? \"#define USE_LOGDEPTHBUF\" : \"\",\n parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ? \"#define USE_LOGDEPTHBUF_EXT\" : \"\",\n (parameters.extensionShaderTextureLOD || parameters.envMap) && parameters.rendererExtensionShaderTextureLod ? \"#define TEXTURE_LOD_EXT\" : \"\",\n \"uniform mat4 viewMatrix;\",\n \"uniform vec3 cameraPosition;\",\n \"uniform bool isOrthographic;\",\n parameters.toneMapping !== NoToneMapping ? \"#define TONE_MAPPING\" : \"\",\n parameters.toneMapping !== NoToneMapping ? ShaderChunk[\"tonemapping_pars_fragment\"] : \"\",\n parameters.toneMapping !== NoToneMapping ? getToneMappingFunction(\"toneMapping\", parameters.toneMapping) : \"\",\n parameters.dithering ? \"#define DITHERING\" : \"\",\n parameters.format === RGBFormat ? \"#define OPAQUE\" : \"\",\n ShaderChunk[\"encodings_pars_fragment\"],\n parameters.map ? getTexelDecodingFunction(\"mapTexelToLinear\", parameters.mapEncoding) : \"\",\n parameters.matcap ? getTexelDecodingFunction(\"matcapTexelToLinear\", parameters.matcapEncoding) : \"\",\n parameters.envMap ? getTexelDecodingFunction(\"envMapTexelToLinear\", parameters.envMapEncoding) : \"\",\n parameters.emissiveMap ? getTexelDecodingFunction(\"emissiveMapTexelToLinear\", parameters.emissiveMapEncoding) : \"\",\n parameters.specularColorMap ? getTexelDecodingFunction(\"specularColorMapTexelToLinear\", parameters.specularColorMapEncoding) : \"\",\n parameters.sheenColorMap ? getTexelDecodingFunction(\"sheenColorMapTexelToLinear\", parameters.sheenColorMapEncoding) : \"\",\n parameters.lightMap ? getTexelDecodingFunction(\"lightMapTexelToLinear\", parameters.lightMapEncoding) : \"\",\n getTexelEncodingFunction(\"linearToOutputTexel\", parameters.outputEncoding),\n parameters.depthPacking ? \"#define DEPTH_PACKING \" + parameters.depthPacking : \"\",\n \"\\n\"\n ].filter(filterEmptyLine).join(\"\\n\");\n }\n vertexShader = resolveIncludes(vertexShader);\n vertexShader = replaceLightNums(vertexShader, parameters);\n vertexShader = replaceClippingPlaneNums(vertexShader, parameters);\n fragmentShader = resolveIncludes(fragmentShader);\n fragmentShader = replaceLightNums(fragmentShader, parameters);\n fragmentShader = replaceClippingPlaneNums(fragmentShader, parameters);\n vertexShader = unrollLoops(vertexShader);\n fragmentShader = unrollLoops(fragmentShader);\n if (parameters.isWebGL2 && parameters.isRawShaderMaterial !== true) {\n versionString = \"#version 300 es\\n\";\n prefixVertex = [\n \"precision mediump sampler2DArray;\",\n \"#define attribute in\",\n \"#define varying out\",\n \"#define texture2D texture\"\n ].join(\"\\n\") + \"\\n\" + prefixVertex;\n prefixFragment = [\n \"#define varying in\",\n parameters.glslVersion === GLSL3 ? \"\" : \"layout(location = 0) out highp vec4 pc_fragColor;\",\n parameters.glslVersion === GLSL3 ? \"\" : \"#define gl_FragColor pc_fragColor\",\n \"#define gl_FragDepthEXT gl_FragDepth\",\n \"#define texture2D texture\",\n \"#define textureCube texture\",\n \"#define texture2DProj textureProj\",\n \"#define texture2DLodEXT textureLod\",\n \"#define texture2DProjLodEXT textureProjLod\",\n \"#define textureCubeLodEXT textureLod\",\n \"#define texture2DGradEXT textureGrad\",\n \"#define texture2DProjGradEXT textureProjGrad\",\n \"#define textureCubeGradEXT textureGrad\"\n ].join(\"\\n\") + \"\\n\" + prefixFragment;\n }\n const vertexGlsl = versionString + prefixVertex + vertexShader;\n const fragmentGlsl = versionString + prefixFragment + fragmentShader;\n const glVertexShader = WebGLShader(gl, 35633, vertexGlsl);\n const glFragmentShader = WebGLShader(gl, 35632, fragmentGlsl);\n gl.attachShader(program, glVertexShader);\n gl.attachShader(program, glFragmentShader);\n if (parameters.index0AttributeName !== void 0) {\n gl.bindAttribLocation(program, 0, parameters.index0AttributeName);\n } else if (parameters.morphTargets === true) {\n gl.bindAttribLocation(program, 0, \"position\");\n }\n gl.linkProgram(program);\n if (renderer.debug.checkShaderErrors) {\n const programLog = gl.getProgramInfoLog(program).trim();\n const vertexLog = gl.getShaderInfoLog(glVertexShader).trim();\n const fragmentLog = gl.getShaderInfoLog(glFragmentShader).trim();\n let runnable = true;\n let haveDiagnostics = true;\n if (gl.getProgramParameter(program, 35714) === false) {\n runnable = false;\n const vertexErrors = getShaderErrors(gl, glVertexShader, \"vertex\");\n const fragmentErrors = getShaderErrors(gl, glFragmentShader, \"fragment\");\n console.error(\"THREE.WebGLProgram: Shader Error \" + gl.getError() + \" - VALIDATE_STATUS \" + gl.getProgramParameter(program, 35715) + \"\\n\\nProgram Info Log: \" + programLog + \"\\n\" + vertexErrors + \"\\n\" + fragmentErrors);\n } else if (programLog !== \"\") {\n console.warn(\"THREE.WebGLProgram: Program Info Log:\", programLog);\n } else if (vertexLog === \"\" || fragmentLog === \"\") {\n haveDiagnostics = false;\n }\n if (haveDiagnostics) {\n this.diagnostics = {\n runnable,\n programLog,\n vertexShader: {\n log: vertexLog,\n prefix: prefixVertex\n },\n fragmentShader: {\n log: fragmentLog,\n prefix: prefixFragment\n }\n };\n }\n }\n gl.deleteShader(glVertexShader);\n gl.deleteShader(glFragmentShader);\n let cachedUniforms;\n this.getUniforms = function() {\n if (cachedUniforms === void 0) {\n cachedUniforms = new WebGLUniforms(gl, program);\n }\n return cachedUniforms;\n };\n let cachedAttributes;\n this.getAttributes = function() {\n if (cachedAttributes === void 0) {\n cachedAttributes = fetchAttributeLocations(gl, program);\n }\n return cachedAttributes;\n };\n this.destroy = function() {\n bindingStates.releaseStatesOfProgram(this);\n gl.deleteProgram(program);\n this.program = void 0;\n };\n this.name = parameters.shaderName;\n this.id = programIdCount++;\n this.cacheKey = cacheKey;\n this.usedTimes = 1;\n this.program = program;\n this.vertexShader = glVertexShader;\n this.fragmentShader = glFragmentShader;\n return this;\n}\nlet _id = 0;\nclass WebGLShaderCache {\n constructor() {\n this.shaderCache = new Map();\n this.materialCache = new Map();\n }\n update(material) {\n const vertexShader = material.vertexShader;\n const fragmentShader = material.fragmentShader;\n const vertexShaderStage = this._getShaderStage(vertexShader);\n const fragmentShaderStage = this._getShaderStage(fragmentShader);\n const materialShaders = this._getShaderCacheForMaterial(material);\n if (materialShaders.has(vertexShaderStage) === false) {\n materialShaders.add(vertexShaderStage);\n vertexShaderStage.usedTimes++;\n }\n if (materialShaders.has(fragmentShaderStage) === false) {\n materialShaders.add(fragmentShaderStage);\n fragmentShaderStage.usedTimes++;\n }\n return this;\n }\n remove(material) {\n const materialShaders = this.materialCache.get(material);\n for (const shaderStage of materialShaders) {\n shaderStage.usedTimes--;\n if (shaderStage.usedTimes === 0)\n this.shaderCache.delete(shaderStage);\n }\n this.materialCache.delete(material);\n return this;\n }\n getVertexShaderID(material) {\n return this._getShaderStage(material.vertexShader).id;\n }\n getFragmentShaderID(material) {\n return this._getShaderStage(material.fragmentShader).id;\n }\n dispose() {\n this.shaderCache.clear();\n this.materialCache.clear();\n }\n _getShaderCacheForMaterial(material) {\n const cache = this.materialCache;\n if (cache.has(material) === false) {\n cache.set(material, new Set());\n }\n return cache.get(material);\n }\n _getShaderStage(code) {\n const cache = this.shaderCache;\n if (cache.has(code) === false) {\n const stage = new WebGLShaderStage();\n cache.set(code, stage);\n }\n return cache.get(code);\n }\n}\nclass WebGLShaderStage {\n constructor() {\n this.id = _id++;\n this.usedTimes = 0;\n }\n}\nfunction WebGLPrograms(renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping) {\n const _programLayers = new Layers();\n const _customShaders = new WebGLShaderCache();\n const programs = [];\n const isWebGL2 = capabilities.isWebGL2;\n const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n const floatVertexTextures = capabilities.floatVertexTextures;\n const maxVertexUniforms = capabilities.maxVertexUniforms;\n const vertexTextures = capabilities.vertexTextures;\n let precision = capabilities.precision;\n const shaderIDs = {\n MeshDepthMaterial: \"depth\",\n MeshDistanceMaterial: \"distanceRGBA\",\n MeshNormalMaterial: \"normal\",\n MeshBasicMaterial: \"basic\",\n MeshLambertMaterial: \"lambert\",\n MeshPhongMaterial: \"phong\",\n MeshToonMaterial: \"toon\",\n MeshStandardMaterial: \"physical\",\n MeshPhysicalMaterial: \"physical\",\n MeshMatcapMaterial: \"matcap\",\n LineBasicMaterial: \"basic\",\n LineDashedMaterial: \"dashed\",\n PointsMaterial: \"points\",\n ShadowMaterial: \"shadow\",\n SpriteMaterial: \"sprite\"\n };\n function getMaxBones(object) {\n const skeleton = object.skeleton;\n const bones = skeleton.bones;\n if (floatVertexTextures) {\n return 1024;\n } else {\n const nVertexUniforms = maxVertexUniforms;\n const nVertexMatrices = Math.floor((nVertexUniforms - 20) / 4);\n const maxBones = Math.min(nVertexMatrices, bones.length);\n if (maxBones < bones.length) {\n console.warn(\"THREE.WebGLRenderer: Skeleton has \" + bones.length + \" bones. This GPU supports \" + maxBones + \".\");\n return 0;\n }\n return maxBones;\n }\n }\n function getTextureEncodingFromMap(map) {\n let encoding;\n if (map && map.isTexture) {\n encoding = map.encoding;\n } else if (map && map.isWebGLRenderTarget) {\n console.warn(\"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\");\n encoding = map.texture.encoding;\n } else {\n encoding = LinearEncoding;\n }\n if (isWebGL2 && map && map.isTexture && map.format === RGBAFormat && map.type === UnsignedByteType && map.encoding === sRGBEncoding) {\n encoding = LinearEncoding;\n }\n return encoding;\n }\n function getParameters(material, lights, shadows, scene, object) {\n const fog = scene.fog;\n const environment = material.isMeshStandardMaterial ? scene.environment : null;\n const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment);\n const shaderID = shaderIDs[material.type];\n const maxBones = object.isSkinnedMesh ? getMaxBones(object) : 0;\n if (material.precision !== null) {\n precision = capabilities.getMaxPrecision(material.precision);\n if (precision !== material.precision) {\n console.warn(\"THREE.WebGLProgram.getParameters:\", material.precision, \"not supported, using\", precision, \"instead.\");\n }\n }\n let vertexShader, fragmentShader;\n let customVertexShaderID, customFragmentShaderID;\n if (shaderID) {\n const shader = ShaderLib[shaderID];\n vertexShader = shader.vertexShader;\n fragmentShader = shader.fragmentShader;\n } else {\n vertexShader = material.vertexShader;\n fragmentShader = material.fragmentShader;\n _customShaders.update(material);\n customVertexShaderID = _customShaders.getVertexShaderID(material);\n customFragmentShaderID = _customShaders.getFragmentShaderID(material);\n }\n const currentRenderTarget = renderer.getRenderTarget();\n const useAlphaTest = material.alphaTest > 0;\n const useClearcoat = material.clearcoat > 0;\n const parameters = {\n isWebGL2,\n shaderID,\n shaderName: material.type,\n vertexShader,\n fragmentShader,\n defines: material.defines,\n customVertexShaderID,\n customFragmentShaderID,\n isRawShaderMaterial: material.isRawShaderMaterial === true,\n glslVersion: material.glslVersion,\n precision,\n instancing: object.isInstancedMesh === true,\n instancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n supportsVertexTextures: vertexTextures,\n outputEncoding: currentRenderTarget !== null ? getTextureEncodingFromMap(currentRenderTarget.texture) : renderer.outputEncoding,\n map: !!material.map,\n mapEncoding: getTextureEncodingFromMap(material.map),\n matcap: !!material.matcap,\n matcapEncoding: getTextureEncodingFromMap(material.matcap),\n envMap: !!envMap,\n envMapMode: envMap && envMap.mapping,\n envMapEncoding: getTextureEncodingFromMap(envMap),\n envMapCubeUV: !!envMap && (envMap.mapping === CubeUVReflectionMapping || envMap.mapping === CubeUVRefractionMapping),\n lightMap: !!material.lightMap,\n lightMapEncoding: getTextureEncodingFromMap(material.lightMap),\n aoMap: !!material.aoMap,\n emissiveMap: !!material.emissiveMap,\n emissiveMapEncoding: getTextureEncodingFromMap(material.emissiveMap),\n bumpMap: !!material.bumpMap,\n normalMap: !!material.normalMap,\n objectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n tangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n clearcoat: useClearcoat,\n clearcoatMap: useClearcoat && !!material.clearcoatMap,\n clearcoatRoughnessMap: useClearcoat && !!material.clearcoatRoughnessMap,\n clearcoatNormalMap: useClearcoat && !!material.clearcoatNormalMap,\n displacementMap: !!material.displacementMap,\n roughnessMap: !!material.roughnessMap,\n metalnessMap: !!material.metalnessMap,\n specularMap: !!material.specularMap,\n specularIntensityMap: !!material.specularIntensityMap,\n specularColorMap: !!material.specularColorMap,\n specularColorMapEncoding: getTextureEncodingFromMap(material.specularColorMap),\n alphaMap: !!material.alphaMap,\n alphaTest: useAlphaTest,\n gradientMap: !!material.gradientMap,\n sheen: material.sheen > 0,\n sheenColorMap: !!material.sheenColorMap,\n sheenColorMapEncoding: getTextureEncodingFromMap(material.sheenColorMap),\n sheenRoughnessMap: !!material.sheenRoughnessMap,\n transmission: material.transmission > 0,\n transmissionMap: !!material.transmissionMap,\n thicknessMap: !!material.thicknessMap,\n combine: material.combine,\n vertexTangents: !!material.normalMap && !!object.geometry && !!object.geometry.attributes.tangent,\n vertexColors: material.vertexColors,\n vertexAlphas: material.vertexColors === true && !!object.geometry && !!object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4,\n vertexUvs: !!material.map || !!material.bumpMap || !!material.normalMap || !!material.specularMap || !!material.alphaMap || !!material.emissiveMap || !!material.roughnessMap || !!material.metalnessMap || !!material.clearcoatMap || !!material.clearcoatRoughnessMap || !!material.clearcoatNormalMap || !!material.displacementMap || !!material.transmissionMap || !!material.thicknessMap || !!material.specularIntensityMap || !!material.specularColorMap || !!material.sheenColorMap || !!material.sheenRoughnessMap,\n uvsVertexOnly: !(!!material.map || !!material.bumpMap || !!material.normalMap || !!material.specularMap || !!material.alphaMap || !!material.emissiveMap || !!material.roughnessMap || !!material.metalnessMap || !!material.clearcoatNormalMap || material.transmission > 0 || !!material.transmissionMap || !!material.thicknessMap || !!material.specularIntensityMap || !!material.specularColorMap || material.sheen > 0 || !!material.sheenColorMap || !!material.sheenRoughnessMap) && !!material.displacementMap,\n fog: !!fog,\n useFog: material.fog,\n fogExp2: fog && fog.isFogExp2,\n flatShading: !!material.flatShading,\n sizeAttenuation: material.sizeAttenuation,\n logarithmicDepthBuffer,\n skinning: object.isSkinnedMesh === true && maxBones > 0,\n maxBones,\n useVertexTexture: floatVertexTextures,\n morphTargets: !!object.geometry && !!object.geometry.morphAttributes.position,\n morphNormals: !!object.geometry && !!object.geometry.morphAttributes.normal,\n morphTargetsCount: !!object.geometry && !!object.geometry.morphAttributes.position ? object.geometry.morphAttributes.position.length : 0,\n numDirLights: lights.directional.length,\n numPointLights: lights.point.length,\n numSpotLights: lights.spot.length,\n numRectAreaLights: lights.rectArea.length,\n numHemiLights: lights.hemi.length,\n numDirLightShadows: lights.directionalShadowMap.length,\n numPointLightShadows: lights.pointShadowMap.length,\n numSpotLightShadows: lights.spotShadowMap.length,\n numClippingPlanes: clipping.numPlanes,\n numClipIntersection: clipping.numIntersection,\n format: material.format,\n dithering: material.dithering,\n shadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n shadowMapType: renderer.shadowMap.type,\n toneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n physicallyCorrectLights: renderer.physicallyCorrectLights,\n premultipliedAlpha: material.premultipliedAlpha,\n doubleSided: material.side === DoubleSide,\n flipSided: material.side === BackSide,\n depthPacking: material.depthPacking !== void 0 ? material.depthPacking : false,\n index0AttributeName: material.index0AttributeName,\n extensionDerivatives: material.extensions && material.extensions.derivatives,\n extensionFragDepth: material.extensions && material.extensions.fragDepth,\n extensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n extensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n rendererExtensionFragDepth: isWebGL2 || extensions.has(\"EXT_frag_depth\"),\n rendererExtensionDrawBuffers: isWebGL2 || extensions.has(\"WEBGL_draw_buffers\"),\n rendererExtensionShaderTextureLod: isWebGL2 || extensions.has(\"EXT_shader_texture_lod\"),\n customProgramCacheKey: material.customProgramCacheKey()\n };\n return parameters;\n }\n function getProgramCacheKey(parameters) {\n const array = [];\n if (parameters.shaderID) {\n array.push(parameters.shaderID);\n } else {\n array.push(parameters.customVertexShaderID);\n array.push(parameters.customFragmentShaderID);\n }\n if (parameters.defines !== void 0) {\n for (const name in parameters.defines) {\n array.push(name);\n array.push(parameters.defines[name]);\n }\n }\n if (parameters.isRawShaderMaterial === false) {\n getProgramCacheKeyParameters(array, parameters);\n getProgramCacheKeyBooleans(array, parameters);\n array.push(renderer.outputEncoding);\n }\n array.push(parameters.customProgramCacheKey);\n return array.join();\n }\n function getProgramCacheKeyParameters(array, parameters) {\n array.push(parameters.precision);\n array.push(parameters.outputEncoding);\n array.push(parameters.mapEncoding);\n array.push(parameters.matcapEncoding);\n array.push(parameters.envMapMode);\n array.push(parameters.envMapEncoding);\n array.push(parameters.lightMapEncoding);\n array.push(parameters.emissiveMapEncoding);\n array.push(parameters.combine);\n array.push(parameters.vertexUvs);\n array.push(parameters.fogExp2);\n array.push(parameters.sizeAttenuation);\n array.push(parameters.maxBones);\n array.push(parameters.morphTargetsCount);\n array.push(parameters.numDirLights);\n array.push(parameters.numPointLights);\n array.push(parameters.numSpotLights);\n array.push(parameters.numHemiLights);\n array.push(parameters.numRectAreaLights);\n array.push(parameters.numDirLightShadows);\n array.push(parameters.numPointLightShadows);\n array.push(parameters.numSpotLightShadows);\n array.push(parameters.shadowMapType);\n array.push(parameters.toneMapping);\n array.push(parameters.numClippingPlanes);\n array.push(parameters.numClipIntersection);\n array.push(parameters.format);\n array.push(parameters.specularColorMapEncoding);\n array.push(parameters.sheenColorMapEncoding);\n }\n function getProgramCacheKeyBooleans(array, parameters) {\n _programLayers.disableAll();\n if (parameters.isWebGL2)\n _programLayers.enable(0);\n if (parameters.supportsVertexTextures)\n _programLayers.enable(1);\n if (parameters.instancing)\n _programLayers.enable(2);\n if (parameters.instancingColor)\n _programLayers.enable(3);\n if (parameters.map)\n _programLayers.enable(4);\n if (parameters.matcap)\n _programLayers.enable(5);\n if (parameters.envMap)\n _programLayers.enable(6);\n if (parameters.envMapCubeUV)\n _programLayers.enable(7);\n if (parameters.lightMap)\n _programLayers.enable(8);\n if (parameters.aoMap)\n _programLayers.enable(9);\n if (parameters.emissiveMap)\n _programLayers.enable(10);\n if (parameters.bumpMap)\n _programLayers.enable(11);\n if (parameters.normalMap)\n _programLayers.enable(12);\n if (parameters.objectSpaceNormalMap)\n _programLayers.enable(13);\n if (parameters.tangentSpaceNormalMap)\n _programLayers.enable(14);\n if (parameters.clearcoat)\n _programLayers.enable(15);\n if (parameters.clearcoatMap)\n _programLayers.enable(16);\n if (parameters.clearcoatRoughnessMap)\n _programLayers.enable(17);\n if (parameters.clearcoatNormalMap)\n _programLayers.enable(18);\n if (parameters.displacementMap)\n _programLayers.enable(19);\n if (parameters.specularMap)\n _programLayers.enable(20);\n if (parameters.roughnessMap)\n _programLayers.enable(21);\n if (parameters.metalnessMap)\n _programLayers.enable(22);\n if (parameters.gradientMap)\n _programLayers.enable(23);\n if (parameters.alphaMap)\n _programLayers.enable(24);\n if (parameters.alphaTest)\n _programLayers.enable(25);\n if (parameters.vertexColors)\n _programLayers.enable(26);\n if (parameters.vertexAlphas)\n _programLayers.enable(27);\n if (parameters.vertexUvs)\n _programLayers.enable(28);\n if (parameters.vertexTangents)\n _programLayers.enable(29);\n if (parameters.uvsVertexOnly)\n _programLayers.enable(30);\n if (parameters.fog)\n _programLayers.enable(31);\n array.push(_programLayers.mask);\n _programLayers.disableAll();\n if (parameters.useFog)\n _programLayers.enable(0);\n if (parameters.flatShading)\n _programLayers.enable(1);\n if (parameters.logarithmicDepthBuffer)\n _programLayers.enable(2);\n if (parameters.skinning)\n _programLayers.enable(3);\n if (parameters.useVertexTexture)\n _programLayers.enable(4);\n if (parameters.morphTargets)\n _programLayers.enable(5);\n if (parameters.morphNormals)\n _programLayers.enable(6);\n if (parameters.premultipliedAlpha)\n _programLayers.enable(7);\n if (parameters.shadowMapEnabled)\n _programLayers.enable(8);\n if (parameters.physicallyCorrectLights)\n _programLayers.enable(9);\n if (parameters.doubleSided)\n _programLayers.enable(10);\n if (parameters.flipSided)\n _programLayers.enable(11);\n if (parameters.depthPacking)\n _programLayers.enable(12);\n if (parameters.dithering)\n _programLayers.enable(13);\n if (parameters.specularIntensityMap)\n _programLayers.enable(14);\n if (parameters.specularColorMap)\n _programLayers.enable(15);\n if (parameters.transmission)\n _programLayers.enable(16);\n if (parameters.transmissionMap)\n _programLayers.enable(17);\n if (parameters.thicknessMap)\n _programLayers.enable(18);\n if (parameters.sheen)\n _programLayers.enable(19);\n if (parameters.sheenColorMap)\n _programLayers.enable(20);\n if (parameters.sheenRoughnessMap)\n _programLayers.enable(21);\n array.push(_programLayers.mask);\n }\n function getUniforms(material) {\n const shaderID = shaderIDs[material.type];\n let uniforms;\n if (shaderID) {\n const shader = ShaderLib[shaderID];\n uniforms = UniformsUtils.clone(shader.uniforms);\n } else {\n uniforms = material.uniforms;\n }\n return uniforms;\n }\n function acquireProgram(parameters, cacheKey) {\n let program;\n for (let p = 0, pl = programs.length; p < pl; p++) {\n const preexistingProgram = programs[p];\n if (preexistingProgram.cacheKey === cacheKey) {\n program = preexistingProgram;\n ++program.usedTimes;\n break;\n }\n }\n if (program === void 0) {\n program = new WebGLProgram(renderer, cacheKey, parameters, bindingStates);\n programs.push(program);\n }\n return program;\n }\n function releaseProgram(program) {\n if (--program.usedTimes === 0) {\n const i = programs.indexOf(program);\n programs[i] = programs[programs.length - 1];\n programs.pop();\n program.destroy();\n }\n }\n function releaseShaderCache(material) {\n _customShaders.remove(material);\n }\n function dispose() {\n _customShaders.dispose();\n }\n return {\n getParameters,\n getProgramCacheKey,\n getUniforms,\n acquireProgram,\n releaseProgram,\n releaseShaderCache,\n programs,\n dispose\n };\n}\nfunction WebGLProperties() {\n let properties = new WeakMap();\n function get(object) {\n let map = properties.get(object);\n if (map === void 0) {\n map = {};\n properties.set(object, map);\n }\n return map;\n }\n function remove(object) {\n properties.delete(object);\n }\n function update(object, key, value) {\n properties.get(object)[key] = value;\n }\n function dispose() {\n properties = new WeakMap();\n }\n return {\n get,\n remove,\n update,\n dispose\n };\n}\nfunction painterSortStable(a, b) {\n if (a.groupOrder !== b.groupOrder) {\n return a.groupOrder - b.groupOrder;\n } else if (a.renderOrder !== b.renderOrder) {\n return a.renderOrder - b.renderOrder;\n } else if (a.material.id !== b.material.id) {\n return a.material.id - b.material.id;\n } else if (a.z !== b.z) {\n return a.z - b.z;\n } else {\n return a.id - b.id;\n }\n}\nfunction reversePainterSortStable(a, b) {\n if (a.groupOrder !== b.groupOrder) {\n return a.groupOrder - b.groupOrder;\n } else if (a.renderOrder !== b.renderOrder) {\n return a.renderOrder - b.renderOrder;\n } else if (a.z !== b.z) {\n return b.z - a.z;\n } else {\n return a.id - b.id;\n }\n}\nfunction WebGLRenderList() {\n const renderItems = [];\n let renderItemsIndex = 0;\n const opaque = [];\n const transmissive = [];\n const transparent = [];\n function init() {\n renderItemsIndex = 0;\n opaque.length = 0;\n transmissive.length = 0;\n transparent.length = 0;\n }\n function getNextRenderItem(object, geometry, material, groupOrder, z, group) {\n let renderItem = renderItems[renderItemsIndex];\n if (renderItem === void 0) {\n renderItem = {\n id: object.id,\n object,\n geometry,\n material,\n groupOrder,\n renderOrder: object.renderOrder,\n z,\n group\n };\n renderItems[renderItemsIndex] = renderItem;\n } else {\n renderItem.id = object.id;\n renderItem.object = object;\n renderItem.geometry = geometry;\n renderItem.material = material;\n renderItem.groupOrder = groupOrder;\n renderItem.renderOrder = object.renderOrder;\n renderItem.z = z;\n renderItem.group = group;\n }\n renderItemsIndex++;\n return renderItem;\n }\n function push(object, geometry, material, groupOrder, z, group) {\n const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group);\n if (material.transmission > 0) {\n transmissive.push(renderItem);\n } else if (material.transparent === true) {\n transparent.push(renderItem);\n } else {\n opaque.push(renderItem);\n }\n }\n function unshift(object, geometry, material, groupOrder, z, group) {\n const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group);\n if (material.transmission > 0) {\n transmissive.unshift(renderItem);\n } else if (material.transparent === true) {\n transparent.unshift(renderItem);\n } else {\n opaque.unshift(renderItem);\n }\n }\n function sort(customOpaqueSort, customTransparentSort) {\n if (opaque.length > 1)\n opaque.sort(customOpaqueSort || painterSortStable);\n if (transmissive.length > 1)\n transmissive.sort(customTransparentSort || reversePainterSortStable);\n if (transparent.length > 1)\n transparent.sort(customTransparentSort || reversePainterSortStable);\n }\n function finish() {\n for (let i = renderItemsIndex, il = renderItems.length; i < il; i++) {\n const renderItem = renderItems[i];\n if (renderItem.id === null)\n break;\n renderItem.id = null;\n renderItem.object = null;\n renderItem.geometry = null;\n renderItem.material = null;\n renderItem.group = null;\n }\n }\n return {\n opaque,\n transmissive,\n transparent,\n init,\n push,\n unshift,\n finish,\n sort\n };\n}\nfunction WebGLRenderLists() {\n let lists = new WeakMap();\n function get(scene, renderCallDepth) {\n let list;\n if (lists.has(scene) === false) {\n list = new WebGLRenderList();\n lists.set(scene, [list]);\n } else {\n if (renderCallDepth >= lists.get(scene).length) {\n list = new WebGLRenderList();\n lists.get(scene).push(list);\n } else {\n list = lists.get(scene)[renderCallDepth];\n }\n }\n return list;\n }\n function dispose() {\n lists = new WeakMap();\n }\n return {\n get,\n dispose\n };\n}\nfunction UniformsCache() {\n const lights = {};\n return {\n get: function(light) {\n if (lights[light.id] !== void 0) {\n return lights[light.id];\n }\n let uniforms;\n switch (light.type) {\n case \"DirectionalLight\":\n uniforms = {\n direction: new Vector3(),\n color: new Color()\n };\n break;\n case \"SpotLight\":\n uniforms = {\n position: new Vector3(),\n direction: new Vector3(),\n color: new Color(),\n distance: 0,\n coneCos: 0,\n penumbraCos: 0,\n decay: 0\n };\n break;\n case \"PointLight\":\n uniforms = {\n position: new Vector3(),\n color: new Color(),\n distance: 0,\n decay: 0\n };\n break;\n case \"HemisphereLight\":\n uniforms = {\n direction: new Vector3(),\n skyColor: new Color(),\n groundColor: new Color()\n };\n break;\n case \"RectAreaLight\":\n uniforms = {\n color: new Color(),\n position: new Vector3(),\n halfWidth: new Vector3(),\n halfHeight: new Vector3()\n };\n break;\n }\n lights[light.id] = uniforms;\n return uniforms;\n }\n };\n}\nfunction ShadowUniformsCache() {\n const lights = {};\n return {\n get: function(light) {\n if (lights[light.id] !== void 0) {\n return lights[light.id];\n }\n let uniforms;\n switch (light.type) {\n case \"DirectionalLight\":\n uniforms = {\n shadowBias: 0,\n shadowNormalBias: 0,\n shadowRadius: 1,\n shadowMapSize: new Vector2()\n };\n break;\n case \"SpotLight\":\n uniforms = {\n shadowBias: 0,\n shadowNormalBias: 0,\n shadowRadius: 1,\n shadowMapSize: new Vector2()\n };\n break;\n case \"PointLight\":\n uniforms = {\n shadowBias: 0,\n shadowNormalBias: 0,\n shadowRadius: 1,\n shadowMapSize: new Vector2(),\n shadowCameraNear: 1,\n shadowCameraFar: 1e3\n };\n break;\n }\n lights[light.id] = uniforms;\n return uniforms;\n }\n };\n}\nlet nextVersion = 0;\nfunction shadowCastingLightsFirst(lightA, lightB) {\n return (lightB.castShadow ? 1 : 0) - (lightA.castShadow ? 1 : 0);\n}\nfunction WebGLLights(extensions, capabilities) {\n const cache = new UniformsCache();\n const shadowCache = ShadowUniformsCache();\n const state = {\n version: 0,\n hash: {\n directionalLength: -1,\n pointLength: -1,\n spotLength: -1,\n rectAreaLength: -1,\n hemiLength: -1,\n numDirectionalShadows: -1,\n numPointShadows: -1,\n numSpotShadows: -1\n },\n ambient: [0, 0, 0],\n probe: [],\n directional: [],\n directionalShadow: [],\n directionalShadowMap: [],\n directionalShadowMatrix: [],\n spot: [],\n spotShadow: [],\n spotShadowMap: [],\n spotShadowMatrix: [],\n rectArea: [],\n rectAreaLTC1: null,\n rectAreaLTC2: null,\n point: [],\n pointShadow: [],\n pointShadowMap: [],\n pointShadowMatrix: [],\n hemi: []\n };\n for (let i = 0; i < 9; i++)\n state.probe.push(new Vector3());\n const vector3 = new Vector3();\n const matrix4 = new Matrix4();\n const matrix42 = new Matrix4();\n function setup(lights, physicallyCorrectLights) {\n let r = 0, g = 0, b = 0;\n for (let i = 0; i < 9; i++)\n state.probe[i].set(0, 0, 0);\n let directionalLength = 0;\n let pointLength = 0;\n let spotLength = 0;\n let rectAreaLength = 0;\n let hemiLength = 0;\n let numDirectionalShadows = 0;\n let numPointShadows = 0;\n let numSpotShadows = 0;\n lights.sort(shadowCastingLightsFirst);\n const scaleFactor = physicallyCorrectLights !== true ? Math.PI : 1;\n for (let i = 0, l = lights.length; i < l; i++) {\n const light = lights[i];\n const color = light.color;\n const intensity = light.intensity;\n const distance = light.distance;\n const shadowMap = light.shadow && light.shadow.map ? light.shadow.map.texture : null;\n if (light.isAmbientLight) {\n r += color.r * intensity * scaleFactor;\n g += color.g * intensity * scaleFactor;\n b += color.b * intensity * scaleFactor;\n } else if (light.isLightProbe) {\n for (let j = 0; j < 9; j++) {\n state.probe[j].addScaledVector(light.sh.coefficients[j], intensity);\n }\n } else if (light.isDirectionalLight) {\n const uniforms = cache.get(light);\n uniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor);\n if (light.castShadow) {\n const shadow = light.shadow;\n const shadowUniforms = shadowCache.get(light);\n shadowUniforms.shadowBias = shadow.bias;\n shadowUniforms.shadowNormalBias = shadow.normalBias;\n shadowUniforms.shadowRadius = shadow.radius;\n shadowUniforms.shadowMapSize = shadow.mapSize;\n state.directionalShadow[directionalLength] = shadowUniforms;\n state.directionalShadowMap[directionalLength] = shadowMap;\n state.directionalShadowMatrix[directionalLength] = light.shadow.matrix;\n numDirectionalShadows++;\n }\n state.directional[directionalLength] = uniforms;\n directionalLength++;\n } else if (light.isSpotLight) {\n const uniforms = cache.get(light);\n uniforms.position.setFromMatrixPosition(light.matrixWorld);\n uniforms.color.copy(color).multiplyScalar(intensity * scaleFactor);\n uniforms.distance = distance;\n uniforms.coneCos = Math.cos(light.angle);\n uniforms.penumbraCos = Math.cos(light.angle * (1 - light.penumbra));\n uniforms.decay = light.decay;\n if (light.castShadow) {\n const shadow = light.shadow;\n const shadowUniforms = shadowCache.get(light);\n shadowUniforms.shadowBias = shadow.bias;\n shadowUniforms.shadowNormalBias = shadow.normalBias;\n shadowUniforms.shadowRadius = shadow.radius;\n shadowUniforms.shadowMapSize = shadow.mapSize;\n state.spotShadow[spotLength] = shadowUniforms;\n state.spotShadowMap[spotLength] = shadowMap;\n state.spotShadowMatrix[spotLength] = light.shadow.matrix;\n numSpotShadows++;\n }\n state.spot[spotLength] = uniforms;\n spotLength++;\n } else if (light.isRectAreaLight) {\n const uniforms = cache.get(light);\n uniforms.color.copy(color).multiplyScalar(intensity);\n uniforms.halfWidth.set(light.width * 0.5, 0, 0);\n uniforms.halfHeight.set(0, light.height * 0.5, 0);\n state.rectArea[rectAreaLength] = uniforms;\n rectAreaLength++;\n } else if (light.isPointLight) {\n const uniforms = cache.get(light);\n uniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor);\n uniforms.distance = light.distance;\n uniforms.decay = light.decay;\n if (light.castShadow) {\n const shadow = light.shadow;\n const shadowUniforms = shadowCache.get(light);\n shadowUniforms.shadowBias = shadow.bias;\n shadowUniforms.shadowNormalBias = shadow.normalBias;\n shadowUniforms.shadowRadius = shadow.radius;\n shadowUniforms.shadowMapSize = shadow.mapSize;\n shadowUniforms.shadowCameraNear = shadow.camera.near;\n shadowUniforms.shadowCameraFar = shadow.camera.far;\n state.pointShadow[pointLength] = shadowUniforms;\n state.pointShadowMap[pointLength] = shadowMap;\n state.pointShadowMatrix[pointLength] = light.shadow.matrix;\n numPointShadows++;\n }\n state.point[pointLength] = uniforms;\n pointLength++;\n } else if (light.isHemisphereLight) {\n const uniforms = cache.get(light);\n uniforms.skyColor.copy(light.color).multiplyScalar(intensity * scaleFactor);\n uniforms.groundColor.copy(light.groundColor).multiplyScalar(intensity * scaleFactor);\n state.hemi[hemiLength] = uniforms;\n hemiLength++;\n }\n }\n if (rectAreaLength > 0) {\n if (capabilities.isWebGL2) {\n state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n } else {\n if (extensions.has(\"OES_texture_float_linear\") === true) {\n state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n } else if (extensions.has(\"OES_texture_half_float_linear\") === true) {\n state.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n state.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n } else {\n console.error(\"THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.\");\n }\n }\n }\n state.ambient[0] = r;\n state.ambient[1] = g;\n state.ambient[2] = b;\n const hash = state.hash;\n if (hash.directionalLength !== directionalLength || hash.pointLength !== pointLength || hash.spotLength !== spotLength || hash.rectAreaLength !== rectAreaLength || hash.hemiLength !== hemiLength || hash.numDirectionalShadows !== numDirectionalShadows || hash.numPointShadows !== numPointShadows || hash.numSpotShadows !== numSpotShadows) {\n state.directional.length = directionalLength;\n state.spot.length = spotLength;\n state.rectArea.length = rectAreaLength;\n state.point.length = pointLength;\n state.hemi.length = hemiLength;\n state.directionalShadow.length = numDirectionalShadows;\n state.directionalShadowMap.length = numDirectionalShadows;\n state.pointShadow.length = numPointShadows;\n state.pointShadowMap.length = numPointShadows;\n state.spotShadow.length = numSpotShadows;\n state.spotShadowMap.length = numSpotShadows;\n state.directionalShadowMatrix.length = numDirectionalShadows;\n state.pointShadowMatrix.length = numPointShadows;\n state.spotShadowMatrix.length = numSpotShadows;\n hash.directionalLength = directionalLength;\n hash.pointLength = pointLength;\n hash.spotLength = spotLength;\n hash.rectAreaLength = rectAreaLength;\n hash.hemiLength = hemiLength;\n hash.numDirectionalShadows = numDirectionalShadows;\n hash.numPointShadows = numPointShadows;\n hash.numSpotShadows = numSpotShadows;\n state.version = nextVersion++;\n }\n }\n function setupView(lights, camera) {\n let directionalLength = 0;\n let pointLength = 0;\n let spotLength = 0;\n let rectAreaLength = 0;\n let hemiLength = 0;\n const viewMatrix = camera.matrixWorldInverse;\n for (let i = 0, l = lights.length; i < l; i++) {\n const light = lights[i];\n if (light.isDirectionalLight) {\n const uniforms = state.directional[directionalLength];\n uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n vector3.setFromMatrixPosition(light.target.matrixWorld);\n uniforms.direction.sub(vector3);\n uniforms.direction.transformDirection(viewMatrix);\n directionalLength++;\n } else if (light.isSpotLight) {\n const uniforms = state.spot[spotLength];\n uniforms.position.setFromMatrixPosition(light.matrixWorld);\n uniforms.position.applyMatrix4(viewMatrix);\n uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n vector3.setFromMatrixPosition(light.target.matrixWorld);\n uniforms.direction.sub(vector3);\n uniforms.direction.transformDirection(viewMatrix);\n spotLength++;\n } else if (light.isRectAreaLight) {\n const uniforms = state.rectArea[rectAreaLength];\n uniforms.position.setFromMatrixPosition(light.matrixWorld);\n uniforms.position.applyMatrix4(viewMatrix);\n matrix42.identity();\n matrix4.copy(light.matrixWorld);\n matrix4.premultiply(viewMatrix);\n matrix42.extractRotation(matrix4);\n uniforms.halfWidth.set(light.width * 0.5, 0, 0);\n uniforms.halfHeight.set(0, light.height * 0.5, 0);\n uniforms.halfWidth.applyMatrix4(matrix42);\n uniforms.halfHeight.applyMatrix4(matrix42);\n rectAreaLength++;\n } else if (light.isPointLight) {\n const uniforms = state.point[pointLength];\n uniforms.position.setFromMatrixPosition(light.matrixWorld);\n uniforms.position.applyMatrix4(viewMatrix);\n pointLength++;\n } else if (light.isHemisphereLight) {\n const uniforms = state.hemi[hemiLength];\n uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n uniforms.direction.transformDirection(viewMatrix);\n uniforms.direction.normalize();\n hemiLength++;\n }\n }\n }\n return {\n setup,\n setupView,\n state\n };\n}\nfunction WebGLRenderState(extensions, capabilities) {\n const lights = new WebGLLights(extensions, capabilities);\n const lightsArray = [];\n const shadowsArray = [];\n function init() {\n lightsArray.length = 0;\n shadowsArray.length = 0;\n }\n function pushLight(light) {\n lightsArray.push(light);\n }\n function pushShadow(shadowLight) {\n shadowsArray.push(shadowLight);\n }\n function setupLights(physicallyCorrectLights) {\n lights.setup(lightsArray, physicallyCorrectLights);\n }\n function setupLightsView(camera) {\n lights.setupView(lightsArray, camera);\n }\n const state = {\n lightsArray,\n shadowsArray,\n lights\n };\n return {\n init,\n state,\n setupLights,\n setupLightsView,\n pushLight,\n pushShadow\n };\n}\nfunction WebGLRenderStates(extensions, capabilities) {\n let renderStates = new WeakMap();\n function get(scene, renderCallDepth = 0) {\n let renderState;\n if (renderStates.has(scene) === false) {\n renderState = new WebGLRenderState(extensions, capabilities);\n renderStates.set(scene, [renderState]);\n } else {\n if (renderCallDepth >= renderStates.get(scene).length) {\n renderState = new WebGLRenderState(extensions, capabilities);\n renderStates.get(scene).push(renderState);\n } else {\n renderState = renderStates.get(scene)[renderCallDepth];\n }\n }\n return renderState;\n }\n function dispose() {\n renderStates = new WeakMap();\n }\n return {\n get,\n dispose\n };\n}\nclass MeshDepthMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"MeshDepthMaterial\";\n this.depthPacking = BasicDepthPacking;\n this.map = null;\n this.alphaMap = null;\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.fog = false;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.depthPacking = source.depthPacking;\n this.map = source.map;\n this.alphaMap = source.alphaMap;\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n return this;\n }\n}\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\nclass MeshDistanceMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"MeshDistanceMaterial\";\n this.referencePosition = new Vector3();\n this.nearDistance = 1;\n this.farDistance = 1e3;\n this.map = null;\n this.alphaMap = null;\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.fog = false;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.referencePosition.copy(source.referencePosition);\n this.nearDistance = source.nearDistance;\n this.farDistance = source.farDistance;\n this.map = source.map;\n this.alphaMap = source.alphaMap;\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n return this;\n }\n}\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\nconst vertex = \"void main() {\\n\tgl_Position = vec4( position, 1.0 );\\n}\";\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\tconst float samples = float( VSM_SAMPLES );\\n\tfloat mean = 0.0;\\n\tfloat squared_mean = 0.0;\\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\t\tfloat uvOffset = uvStart + i * uvStride;\\n\t\t#ifdef HORIZONTAL_PASS\\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\t\t\tmean += distribution.x;\\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\t\t#else\\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\t\t\tmean += depth;\\n\t\t\tsquared_mean += depth * depth;\\n\t\t#endif\\n\t}\\n\tmean = mean / samples;\\n\tsquared_mean = squared_mean / samples;\\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\nfunction WebGLShadowMap(_renderer, _objects, _capabilities) {\n let _frustum = new Frustum();\n const _shadowMapSize = new Vector2(), _viewportSize = new Vector2(), _viewport = new Vector4(), _depthMaterial = new MeshDepthMaterial({depthPacking: RGBADepthPacking}), _distanceMaterial = new MeshDistanceMaterial(), _materialCache = {}, _maxTextureSize = _capabilities.maxTextureSize;\n const shadowSide = {0: BackSide, 1: FrontSide, 2: DoubleSide};\n const shadowMaterialVertical = new ShaderMaterial({\n defines: {\n VSM_SAMPLES: 8\n },\n uniforms: {\n shadow_pass: {value: null},\n resolution: {value: new Vector2()},\n radius: {value: 4}\n },\n vertexShader: vertex,\n fragmentShader: fragment\n });\n const shadowMaterialHorizontal = shadowMaterialVertical.clone();\n shadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n const fullScreenTri = new BufferGeometry();\n fullScreenTri.setAttribute(\"position\", new BufferAttribute(new Float32Array([-1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5]), 3));\n const fullScreenMesh = new Mesh(fullScreenTri, shadowMaterialVertical);\n const scope = this;\n this.enabled = false;\n this.autoUpdate = true;\n this.needsUpdate = false;\n this.type = PCFShadowMap;\n this.render = function(lights, scene, camera) {\n if (scope.enabled === false)\n return;\n if (scope.autoUpdate === false && scope.needsUpdate === false)\n return;\n if (lights.length === 0)\n return;\n const currentRenderTarget = _renderer.getRenderTarget();\n const activeCubeFace = _renderer.getActiveCubeFace();\n const activeMipmapLevel = _renderer.getActiveMipmapLevel();\n const _state = _renderer.state;\n _state.setBlending(NoBlending);\n _state.buffers.color.setClear(1, 1, 1, 1);\n _state.buffers.depth.setTest(true);\n _state.setScissorTest(false);\n for (let i = 0, il = lights.length; i < il; i++) {\n const light = lights[i];\n const shadow = light.shadow;\n if (shadow === void 0) {\n console.warn(\"THREE.WebGLShadowMap:\", light, \"has no shadow.\");\n continue;\n }\n if (shadow.autoUpdate === false && shadow.needsUpdate === false)\n continue;\n _shadowMapSize.copy(shadow.mapSize);\n const shadowFrameExtents = shadow.getFrameExtents();\n _shadowMapSize.multiply(shadowFrameExtents);\n _viewportSize.copy(shadow.mapSize);\n if (_shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize) {\n if (_shadowMapSize.x > _maxTextureSize) {\n _viewportSize.x = Math.floor(_maxTextureSize / shadowFrameExtents.x);\n _shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n shadow.mapSize.x = _viewportSize.x;\n }\n if (_shadowMapSize.y > _maxTextureSize) {\n _viewportSize.y = Math.floor(_maxTextureSize / shadowFrameExtents.y);\n _shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n shadow.mapSize.y = _viewportSize.y;\n }\n }\n if (shadow.map === null && !shadow.isPointLightShadow && this.type === VSMShadowMap) {\n const pars = {minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat};\n shadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars);\n shadow.map.texture.name = light.name + \".shadowMap\";\n shadow.mapPass = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars);\n shadow.camera.updateProjectionMatrix();\n }\n if (shadow.map === null) {\n const pars = {minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat};\n shadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars);\n shadow.map.texture.name = light.name + \".shadowMap\";\n shadow.camera.updateProjectionMatrix();\n }\n _renderer.setRenderTarget(shadow.map);\n _renderer.clear();\n const viewportCount = shadow.getViewportCount();\n for (let vp = 0; vp < viewportCount; vp++) {\n const viewport = shadow.getViewport(vp);\n _viewport.set(_viewportSize.x * viewport.x, _viewportSize.y * viewport.y, _viewportSize.x * viewport.z, _viewportSize.y * viewport.w);\n _state.viewport(_viewport);\n shadow.updateMatrices(light, vp);\n _frustum = shadow.getFrustum();\n renderObject(scene, camera, shadow.camera, light, this.type);\n }\n if (!shadow.isPointLightShadow && this.type === VSMShadowMap) {\n VSMPass(shadow, camera);\n }\n shadow.needsUpdate = false;\n }\n scope.needsUpdate = false;\n _renderer.setRenderTarget(currentRenderTarget, activeCubeFace, activeMipmapLevel);\n };\n function VSMPass(shadow, camera) {\n const geometry = _objects.update(fullScreenMesh);\n if (shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples) {\n shadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n shadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n shadowMaterialVertical.needsUpdate = true;\n shadowMaterialHorizontal.needsUpdate = true;\n }\n shadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n shadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n shadowMaterialVertical.uniforms.radius.value = shadow.radius;\n _renderer.setRenderTarget(shadow.mapPass);\n _renderer.clear();\n _renderer.renderBufferDirect(camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null);\n shadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n shadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n shadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n _renderer.setRenderTarget(shadow.map);\n _renderer.clear();\n _renderer.renderBufferDirect(camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null);\n }\n function getDepthMaterial(object, geometry, material, light, shadowCameraNear, shadowCameraFar, type) {\n let result = null;\n const customMaterial = light.isPointLight === true ? object.customDistanceMaterial : object.customDepthMaterial;\n if (customMaterial !== void 0) {\n result = customMaterial;\n } else {\n result = light.isPointLight === true ? _distanceMaterial : _depthMaterial;\n }\n if (_renderer.localClippingEnabled && material.clipShadows === true && material.clippingPlanes.length !== 0 || material.displacementMap && material.displacementScale !== 0 || material.alphaMap && material.alphaTest > 0) {\n const keyA = result.uuid, keyB = material.uuid;\n let materialsForVariant = _materialCache[keyA];\n if (materialsForVariant === void 0) {\n materialsForVariant = {};\n _materialCache[keyA] = materialsForVariant;\n }\n let cachedMaterial = materialsForVariant[keyB];\n if (cachedMaterial === void 0) {\n cachedMaterial = result.clone();\n materialsForVariant[keyB] = cachedMaterial;\n }\n result = cachedMaterial;\n }\n result.visible = material.visible;\n result.wireframe = material.wireframe;\n if (type === VSMShadowMap) {\n result.side = material.shadowSide !== null ? material.shadowSide : material.side;\n } else {\n result.side = material.shadowSide !== null ? material.shadowSide : shadowSide[material.side];\n }\n result.alphaMap = material.alphaMap;\n result.alphaTest = material.alphaTest;\n result.clipShadows = material.clipShadows;\n result.clippingPlanes = material.clippingPlanes;\n result.clipIntersection = material.clipIntersection;\n result.displacementMap = material.displacementMap;\n result.displacementScale = material.displacementScale;\n result.displacementBias = material.displacementBias;\n result.wireframeLinewidth = material.wireframeLinewidth;\n result.linewidth = material.linewidth;\n if (light.isPointLight === true && result.isMeshDistanceMaterial === true) {\n result.referencePosition.setFromMatrixPosition(light.matrixWorld);\n result.nearDistance = shadowCameraNear;\n result.farDistance = shadowCameraFar;\n }\n return result;\n }\n function renderObject(object, camera, shadowCamera, light, type) {\n if (object.visible === false)\n return;\n const visible = object.layers.test(camera.layers);\n if (visible && (object.isMesh || object.isLine || object.isPoints)) {\n if ((object.castShadow || object.receiveShadow && type === VSMShadowMap) && (!object.frustumCulled || _frustum.intersectsObject(object))) {\n object.modelViewMatrix.multiplyMatrices(shadowCamera.matrixWorldInverse, object.matrixWorld);\n const geometry = _objects.update(object);\n const material = object.material;\n if (Array.isArray(material)) {\n const groups = geometry.groups;\n for (let k = 0, kl = groups.length; k < kl; k++) {\n const group = groups[k];\n const groupMaterial = material[group.materialIndex];\n if (groupMaterial && groupMaterial.visible) {\n const depthMaterial = getDepthMaterial(object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type);\n _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, group);\n }\n }\n } else if (material.visible) {\n const depthMaterial = getDepthMaterial(object, geometry, material, light, shadowCamera.near, shadowCamera.far, type);\n _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, null);\n }\n }\n }\n const children = object.children;\n for (let i = 0, l = children.length; i < l; i++) {\n renderObject(children[i], camera, shadowCamera, light, type);\n }\n }\n}\nfunction WebGLState(gl, extensions, capabilities) {\n const isWebGL2 = capabilities.isWebGL2;\n function ColorBuffer() {\n let locked = false;\n const color = new Vector4();\n let currentColorMask = null;\n const currentColorClear = new Vector4(0, 0, 0, 0);\n return {\n setMask: function(colorMask) {\n if (currentColorMask !== colorMask && !locked) {\n gl.colorMask(colorMask, colorMask, colorMask, colorMask);\n currentColorMask = colorMask;\n }\n },\n setLocked: function(lock) {\n locked = lock;\n },\n setClear: function(r, g, b, a, premultipliedAlpha) {\n if (premultipliedAlpha === true) {\n r *= a;\n g *= a;\n b *= a;\n }\n color.set(r, g, b, a);\n if (currentColorClear.equals(color) === false) {\n gl.clearColor(r, g, b, a);\n currentColorClear.copy(color);\n }\n },\n reset: function() {\n locked = false;\n currentColorMask = null;\n currentColorClear.set(-1, 0, 0, 0);\n }\n };\n }\n function DepthBuffer() {\n let locked = false;\n let currentDepthMask = null;\n let currentDepthFunc = null;\n let currentDepthClear = null;\n return {\n setTest: function(depthTest) {\n if (depthTest) {\n enable(2929);\n } else {\n disable(2929);\n }\n },\n setMask: function(depthMask) {\n if (currentDepthMask !== depthMask && !locked) {\n gl.depthMask(depthMask);\n currentDepthMask = depthMask;\n }\n },\n setFunc: function(depthFunc) {\n if (currentDepthFunc !== depthFunc) {\n if (depthFunc) {\n switch (depthFunc) {\n case NeverDepth:\n gl.depthFunc(512);\n break;\n case AlwaysDepth:\n gl.depthFunc(519);\n break;\n case LessDepth:\n gl.depthFunc(513);\n break;\n case LessEqualDepth:\n gl.depthFunc(515);\n break;\n case EqualDepth:\n gl.depthFunc(514);\n break;\n case GreaterEqualDepth:\n gl.depthFunc(518);\n break;\n case GreaterDepth:\n gl.depthFunc(516);\n break;\n case NotEqualDepth:\n gl.depthFunc(517);\n break;\n default:\n gl.depthFunc(515);\n }\n } else {\n gl.depthFunc(515);\n }\n currentDepthFunc = depthFunc;\n }\n },\n setLocked: function(lock) {\n locked = lock;\n },\n setClear: function(depth) {\n if (currentDepthClear !== depth) {\n gl.clearDepth(depth);\n currentDepthClear = depth;\n }\n },\n reset: function() {\n locked = false;\n currentDepthMask = null;\n currentDepthFunc = null;\n currentDepthClear = null;\n }\n };\n }\n function StencilBuffer() {\n let locked = false;\n let currentStencilMask = null;\n let currentStencilFunc = null;\n let currentStencilRef = null;\n let currentStencilFuncMask = null;\n let currentStencilFail = null;\n let currentStencilZFail = null;\n let currentStencilZPass = null;\n let currentStencilClear = null;\n return {\n setTest: function(stencilTest) {\n if (!locked) {\n if (stencilTest) {\n enable(2960);\n } else {\n disable(2960);\n }\n }\n },\n setMask: function(stencilMask) {\n if (currentStencilMask !== stencilMask && !locked) {\n gl.stencilMask(stencilMask);\n currentStencilMask = stencilMask;\n }\n },\n setFunc: function(stencilFunc, stencilRef, stencilMask) {\n if (currentStencilFunc !== stencilFunc || currentStencilRef !== stencilRef || currentStencilFuncMask !== stencilMask) {\n gl.stencilFunc(stencilFunc, stencilRef, stencilMask);\n currentStencilFunc = stencilFunc;\n currentStencilRef = stencilRef;\n currentStencilFuncMask = stencilMask;\n }\n },\n setOp: function(stencilFail, stencilZFail, stencilZPass) {\n if (currentStencilFail !== stencilFail || currentStencilZFail !== stencilZFail || currentStencilZPass !== stencilZPass) {\n gl.stencilOp(stencilFail, stencilZFail, stencilZPass);\n currentStencilFail = stencilFail;\n currentStencilZFail = stencilZFail;\n currentStencilZPass = stencilZPass;\n }\n },\n setLocked: function(lock) {\n locked = lock;\n },\n setClear: function(stencil) {\n if (currentStencilClear !== stencil) {\n gl.clearStencil(stencil);\n currentStencilClear = stencil;\n }\n },\n reset: function() {\n locked = false;\n currentStencilMask = null;\n currentStencilFunc = null;\n currentStencilRef = null;\n currentStencilFuncMask = null;\n currentStencilFail = null;\n currentStencilZFail = null;\n currentStencilZPass = null;\n currentStencilClear = null;\n }\n };\n }\n const colorBuffer = new ColorBuffer();\n const depthBuffer = new DepthBuffer();\n const stencilBuffer = new StencilBuffer();\n let enabledCapabilities = {};\n let currentBoundFramebuffers = {};\n let currentProgram = null;\n let currentBlendingEnabled = false;\n let currentBlending = null;\n let currentBlendEquation = null;\n let currentBlendSrc = null;\n let currentBlendDst = null;\n let currentBlendEquationAlpha = null;\n let currentBlendSrcAlpha = null;\n let currentBlendDstAlpha = null;\n let currentPremultipledAlpha = false;\n let currentFlipSided = null;\n let currentCullFace = null;\n let currentLineWidth = null;\n let currentPolygonOffsetFactor = null;\n let currentPolygonOffsetUnits = null;\n const maxTextures = gl.getParameter(35661);\n let lineWidthAvailable = false;\n let version = 0;\n const glVersion = gl.getParameter(7938);\n if (glVersion.indexOf(\"WebGL\") !== -1) {\n version = parseFloat(/^WebGL (\\d)/.exec(glVersion)[1]);\n lineWidthAvailable = version >= 1;\n } else if (glVersion.indexOf(\"OpenGL ES\") !== -1) {\n version = parseFloat(/^OpenGL ES (\\d)/.exec(glVersion)[1]);\n lineWidthAvailable = version >= 2;\n }\n let currentTextureSlot = null;\n let currentBoundTextures = {};\n const scissorParam = gl.getParameter(3088);\n const viewportParam = gl.getParameter(2978);\n const currentScissor = new Vector4().fromArray(scissorParam);\n const currentViewport = new Vector4().fromArray(viewportParam);\n function createTexture(type, target, count) {\n const data = new Uint8Array(4);\n const texture = gl.createTexture();\n gl.bindTexture(type, texture);\n gl.texParameteri(type, 10241, 9728);\n gl.texParameteri(type, 10240, 9728);\n for (let i = 0; i < count; i++) {\n gl.texImage2D(target + i, 0, 6408, 1, 1, 0, 6408, 5121, data);\n }\n return texture;\n }\n const emptyTextures = {};\n emptyTextures[3553] = createTexture(3553, 3553, 1);\n emptyTextures[34067] = createTexture(34067, 34069, 6);\n colorBuffer.setClear(0, 0, 0, 1);\n depthBuffer.setClear(1);\n stencilBuffer.setClear(0);\n enable(2929);\n depthBuffer.setFunc(LessEqualDepth);\n setFlipSided(false);\n setCullFace(CullFaceBack);\n enable(2884);\n setBlending(NoBlending);\n function enable(id) {\n if (enabledCapabilities[id] !== true) {\n gl.enable(id);\n enabledCapabilities[id] = true;\n }\n }\n function disable(id) {\n if (enabledCapabilities[id] !== false) {\n gl.disable(id);\n enabledCapabilities[id] = false;\n }\n }\n function bindFramebuffer(target, framebuffer) {\n if (currentBoundFramebuffers[target] !== framebuffer) {\n gl.bindFramebuffer(target, framebuffer);\n currentBoundFramebuffers[target] = framebuffer;\n if (isWebGL2) {\n if (target === 36009) {\n currentBoundFramebuffers[36160] = framebuffer;\n }\n if (target === 36160) {\n currentBoundFramebuffers[36009] = framebuffer;\n }\n }\n return true;\n }\n return false;\n }\n function useProgram(program) {\n if (currentProgram !== program) {\n gl.useProgram(program);\n currentProgram = program;\n return true;\n }\n return false;\n }\n const equationToGL = {\n [AddEquation]: 32774,\n [SubtractEquation]: 32778,\n [ReverseSubtractEquation]: 32779\n };\n if (isWebGL2) {\n equationToGL[MinEquation] = 32775;\n equationToGL[MaxEquation] = 32776;\n } else {\n const extension = extensions.get(\"EXT_blend_minmax\");\n if (extension !== null) {\n equationToGL[MinEquation] = extension.MIN_EXT;\n equationToGL[MaxEquation] = extension.MAX_EXT;\n }\n }\n const factorToGL = {\n [ZeroFactor]: 0,\n [OneFactor]: 1,\n [SrcColorFactor]: 768,\n [SrcAlphaFactor]: 770,\n [SrcAlphaSaturateFactor]: 776,\n [DstColorFactor]: 774,\n [DstAlphaFactor]: 772,\n [OneMinusSrcColorFactor]: 769,\n [OneMinusSrcAlphaFactor]: 771,\n [OneMinusDstColorFactor]: 775,\n [OneMinusDstAlphaFactor]: 773\n };\n function setBlending(blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha) {\n if (blending === NoBlending) {\n if (currentBlendingEnabled === true) {\n disable(3042);\n currentBlendingEnabled = false;\n }\n return;\n }\n if (currentBlendingEnabled === false) {\n enable(3042);\n currentBlendingEnabled = true;\n }\n if (blending !== CustomBlending) {\n if (blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha) {\n if (currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation) {\n gl.blendEquation(32774);\n currentBlendEquation = AddEquation;\n currentBlendEquationAlpha = AddEquation;\n }\n if (premultipliedAlpha) {\n switch (blending) {\n case NormalBlending:\n gl.blendFuncSeparate(1, 771, 1, 771);\n break;\n case AdditiveBlending:\n gl.blendFunc(1, 1);\n break;\n case SubtractiveBlending:\n gl.blendFuncSeparate(0, 0, 769, 771);\n break;\n case MultiplyBlending:\n gl.blendFuncSeparate(0, 768, 0, 770);\n break;\n default:\n console.error(\"THREE.WebGLState: Invalid blending: \", blending);\n break;\n }\n } else {\n switch (blending) {\n case NormalBlending:\n gl.blendFuncSeparate(770, 771, 1, 771);\n break;\n case AdditiveBlending:\n gl.blendFunc(770, 1);\n break;\n case SubtractiveBlending:\n gl.blendFunc(0, 769);\n break;\n case MultiplyBlending:\n gl.blendFunc(0, 768);\n break;\n default:\n console.error(\"THREE.WebGLState: Invalid blending: \", blending);\n break;\n }\n }\n currentBlendSrc = null;\n currentBlendDst = null;\n currentBlendSrcAlpha = null;\n currentBlendDstAlpha = null;\n currentBlending = blending;\n currentPremultipledAlpha = premultipliedAlpha;\n }\n return;\n }\n blendEquationAlpha = blendEquationAlpha || blendEquation;\n blendSrcAlpha = blendSrcAlpha || blendSrc;\n blendDstAlpha = blendDstAlpha || blendDst;\n if (blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha) {\n gl.blendEquationSeparate(equationToGL[blendEquation], equationToGL[blendEquationAlpha]);\n currentBlendEquation = blendEquation;\n currentBlendEquationAlpha = blendEquationAlpha;\n }\n if (blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha) {\n gl.blendFuncSeparate(factorToGL[blendSrc], factorToGL[blendDst], factorToGL[blendSrcAlpha], factorToGL[blendDstAlpha]);\n currentBlendSrc = blendSrc;\n currentBlendDst = blendDst;\n currentBlendSrcAlpha = blendSrcAlpha;\n currentBlendDstAlpha = blendDstAlpha;\n }\n currentBlending = blending;\n currentPremultipledAlpha = null;\n }\n function setMaterial(material, frontFaceCW) {\n material.side === DoubleSide ? disable(2884) : enable(2884);\n let flipSided = material.side === BackSide;\n if (frontFaceCW)\n flipSided = !flipSided;\n setFlipSided(flipSided);\n material.blending === NormalBlending && material.transparent === false ? setBlending(NoBlending) : setBlending(material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha);\n depthBuffer.setFunc(material.depthFunc);\n depthBuffer.setTest(material.depthTest);\n depthBuffer.setMask(material.depthWrite);\n colorBuffer.setMask(material.colorWrite);\n const stencilWrite = material.stencilWrite;\n stencilBuffer.setTest(stencilWrite);\n if (stencilWrite) {\n stencilBuffer.setMask(material.stencilWriteMask);\n stencilBuffer.setFunc(material.stencilFunc, material.stencilRef, material.stencilFuncMask);\n stencilBuffer.setOp(material.stencilFail, material.stencilZFail, material.stencilZPass);\n }\n setPolygonOffset(material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits);\n material.alphaToCoverage === true ? enable(32926) : disable(32926);\n }\n function setFlipSided(flipSided) {\n if (currentFlipSided !== flipSided) {\n if (flipSided) {\n gl.frontFace(2304);\n } else {\n gl.frontFace(2305);\n }\n currentFlipSided = flipSided;\n }\n }\n function setCullFace(cullFace) {\n if (cullFace !== CullFaceNone) {\n enable(2884);\n if (cullFace !== currentCullFace) {\n if (cullFace === CullFaceBack) {\n gl.cullFace(1029);\n } else if (cullFace === CullFaceFront) {\n gl.cullFace(1028);\n } else {\n gl.cullFace(1032);\n }\n }\n } else {\n disable(2884);\n }\n currentCullFace = cullFace;\n }\n function setLineWidth(width) {\n if (width !== currentLineWidth) {\n if (lineWidthAvailable)\n gl.lineWidth(width);\n currentLineWidth = width;\n }\n }\n function setPolygonOffset(polygonOffset, factor, units) {\n if (polygonOffset) {\n enable(32823);\n if (currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units) {\n gl.polygonOffset(factor, units);\n currentPolygonOffsetFactor = factor;\n currentPolygonOffsetUnits = units;\n }\n } else {\n disable(32823);\n }\n }\n function setScissorTest(scissorTest) {\n if (scissorTest) {\n enable(3089);\n } else {\n disable(3089);\n }\n }\n function activeTexture(webglSlot) {\n if (webglSlot === void 0)\n webglSlot = 33984 + maxTextures - 1;\n if (currentTextureSlot !== webglSlot) {\n gl.activeTexture(webglSlot);\n currentTextureSlot = webglSlot;\n }\n }\n function bindTexture(webglType, webglTexture) {\n if (currentTextureSlot === null) {\n activeTexture();\n }\n let boundTexture = currentBoundTextures[currentTextureSlot];\n if (boundTexture === void 0) {\n boundTexture = {type: void 0, texture: void 0};\n currentBoundTextures[currentTextureSlot] = boundTexture;\n }\n if (boundTexture.type !== webglType || boundTexture.texture !== webglTexture) {\n gl.bindTexture(webglType, webglTexture || emptyTextures[webglType]);\n boundTexture.type = webglType;\n boundTexture.texture = webglTexture;\n }\n }\n function unbindTexture() {\n const boundTexture = currentBoundTextures[currentTextureSlot];\n if (boundTexture !== void 0 && boundTexture.type !== void 0) {\n gl.bindTexture(boundTexture.type, null);\n boundTexture.type = void 0;\n boundTexture.texture = void 0;\n }\n }\n function compressedTexImage2D() {\n try {\n gl.compressedTexImage2D.apply(gl, arguments);\n } catch (error) {\n console.error(\"THREE.WebGLState:\", error);\n }\n }\n function texSubImage2D() {\n try {\n gl.texSubImage2D.apply(gl, arguments);\n } catch (error) {\n console.error(\"THREE.WebGLState:\", error);\n }\n }\n function texSubImage3D() {\n try {\n gl.texSubImage3D.apply(gl, arguments);\n } catch (error) {\n console.error(\"THREE.WebGLState:\", error);\n }\n }\n function compressedTexSubImage2D() {\n try {\n gl.compressedTexSubImage2D.apply(gl, arguments);\n } catch (error) {\n console.error(\"THREE.WebGLState:\", error);\n }\n }\n function texStorage2D() {\n try {\n gl.texStorage2D.apply(gl, arguments);\n } catch (error) {\n console.error(\"THREE.WebGLState:\", error);\n }\n }\n function texStorage3D() {\n try {\n gl.texStorage3D.apply(gl, arguments);\n } catch (error) {\n console.error(\"THREE.WebGLState:\", error);\n }\n }\n function texImage2D() {\n try {\n gl.texImage2D.apply(gl, arguments);\n } catch (error) {\n console.error(\"THREE.WebGLState:\", error);\n }\n }\n function texImage3D() {\n try {\n gl.texImage3D.apply(gl, arguments);\n } catch (error) {\n console.error(\"THREE.WebGLState:\", error);\n }\n }\n function scissor(scissor2) {\n if (currentScissor.equals(scissor2) === false) {\n gl.scissor(scissor2.x, scissor2.y, scissor2.z, scissor2.w);\n currentScissor.copy(scissor2);\n }\n }\n function viewport(viewport2) {\n if (currentViewport.equals(viewport2) === false) {\n gl.viewport(viewport2.x, viewport2.y, viewport2.z, viewport2.w);\n currentViewport.copy(viewport2);\n }\n }\n function reset() {\n gl.disable(3042);\n gl.disable(2884);\n gl.disable(2929);\n gl.disable(32823);\n gl.disable(3089);\n gl.disable(2960);\n gl.disable(32926);\n gl.blendEquation(32774);\n gl.blendFunc(1, 0);\n gl.blendFuncSeparate(1, 0, 1, 0);\n gl.colorMask(true, true, true, true);\n gl.clearColor(0, 0, 0, 0);\n gl.depthMask(true);\n gl.depthFunc(513);\n gl.clearDepth(1);\n gl.stencilMask(4294967295);\n gl.stencilFunc(519, 0, 4294967295);\n gl.stencilOp(7680, 7680, 7680);\n gl.clearStencil(0);\n gl.cullFace(1029);\n gl.frontFace(2305);\n gl.polygonOffset(0, 0);\n gl.activeTexture(33984);\n gl.bindFramebuffer(36160, null);\n if (isWebGL2 === true) {\n gl.bindFramebuffer(36009, null);\n gl.bindFramebuffer(36008, null);\n }\n gl.useProgram(null);\n gl.lineWidth(1);\n gl.scissor(0, 0, gl.canvas.width, gl.canvas.height);\n gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);\n enabledCapabilities = {};\n currentTextureSlot = null;\n currentBoundTextures = {};\n currentBoundFramebuffers = {};\n currentProgram = null;\n currentBlendingEnabled = false;\n currentBlending = null;\n currentBlendEquation = null;\n currentBlendSrc = null;\n currentBlendDst = null;\n currentBlendEquationAlpha = null;\n currentBlendSrcAlpha = null;\n currentBlendDstAlpha = null;\n currentPremultipledAlpha = false;\n currentFlipSided = null;\n currentCullFace = null;\n currentLineWidth = null;\n currentPolygonOffsetFactor = null;\n currentPolygonOffsetUnits = null;\n currentScissor.set(0, 0, gl.canvas.width, gl.canvas.height);\n currentViewport.set(0, 0, gl.canvas.width, gl.canvas.height);\n colorBuffer.reset();\n depthBuffer.reset();\n stencilBuffer.reset();\n }\n return {\n buffers: {\n color: colorBuffer,\n depth: depthBuffer,\n stencil: stencilBuffer\n },\n enable,\n disable,\n bindFramebuffer,\n useProgram,\n setBlending,\n setMaterial,\n setFlipSided,\n setCullFace,\n setLineWidth,\n setPolygonOffset,\n setScissorTest,\n activeTexture,\n bindTexture,\n unbindTexture,\n compressedTexImage2D,\n texImage2D,\n texImage3D,\n texStorage2D,\n texStorage3D,\n texSubImage2D,\n texSubImage3D,\n compressedTexSubImage2D,\n scissor,\n viewport,\n reset\n };\n}\nfunction WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info) {\n const isWebGL2 = capabilities.isWebGL2;\n const maxTextures = capabilities.maxTextures;\n const maxCubemapSize = capabilities.maxCubemapSize;\n const maxTextureSize = capabilities.maxTextureSize;\n const maxSamples = capabilities.maxSamples;\n const hasMultisampledRenderToTexture = extensions.has(\"WEBGL_multisampled_render_to_texture\");\n const MultisampledRenderToTextureExtension = hasMultisampledRenderToTexture ? extensions.get(\"WEBGL_multisampled_render_to_texture\") : void 0;\n const _videoTextures = new WeakMap();\n let _canvas2;\n let useOffscreenCanvas = false;\n try {\n useOffscreenCanvas = typeof OffscreenCanvas !== \"undefined\" && new OffscreenCanvas(1, 1).getContext(\"2d\") !== null;\n } catch (err) {\n }\n function createCanvas(width, height) {\n return useOffscreenCanvas ? new OffscreenCanvas(width, height) : createElementNS(\"canvas\");\n }\n function resizeImage(image, needsPowerOfTwo, needsNewCanvas, maxSize) {\n let scale = 1;\n if (image.width > maxSize || image.height > maxSize) {\n scale = maxSize / Math.max(image.width, image.height);\n }\n if (scale < 1 || needsPowerOfTwo === true) {\n if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n const floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n const width = floor(scale * image.width);\n const height = floor(scale * image.height);\n if (_canvas2 === void 0)\n _canvas2 = createCanvas(width, height);\n const canvas = needsNewCanvas ? createCanvas(width, height) : _canvas2;\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext(\"2d\");\n context.drawImage(image, 0, 0, width, height);\n console.warn(\"THREE.WebGLRenderer: Texture has been resized from (\" + image.width + \"x\" + image.height + \") to (\" + width + \"x\" + height + \").\");\n return canvas;\n } else {\n if (\"data\" in image) {\n console.warn(\"THREE.WebGLRenderer: Image in DataTexture is too big (\" + image.width + \"x\" + image.height + \").\");\n }\n return image;\n }\n }\n return image;\n }\n function isPowerOfTwo$1(image) {\n return isPowerOfTwo(image.width) && isPowerOfTwo(image.height);\n }\n function textureNeedsPowerOfTwo(texture) {\n if (isWebGL2)\n return false;\n return texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping || texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n }\n function textureNeedsGenerateMipmaps(texture, supportsMips) {\n return texture.generateMipmaps && supportsMips && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n }\n function generateMipmap(target) {\n _gl.generateMipmap(target);\n }\n function getInternalFormat(internalFormatName, glFormat, glType, encoding) {\n if (isWebGL2 === false)\n return glFormat;\n if (internalFormatName !== null) {\n if (_gl[internalFormatName] !== void 0)\n return _gl[internalFormatName];\n console.warn(\"THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '\" + internalFormatName + \"'\");\n }\n let internalFormat = glFormat;\n if (glFormat === 6403) {\n if (glType === 5126)\n internalFormat = 33326;\n if (glType === 5131)\n internalFormat = 33325;\n if (glType === 5121)\n internalFormat = 33321;\n }\n if (glFormat === 6407) {\n if (glType === 5126)\n internalFormat = 34837;\n if (glType === 5131)\n internalFormat = 34843;\n if (glType === 5121)\n internalFormat = 32849;\n }\n if (glFormat === 6408) {\n if (glType === 5126)\n internalFormat = 34836;\n if (glType === 5131)\n internalFormat = 34842;\n if (glType === 5121)\n internalFormat = encoding === sRGBEncoding ? 35907 : 32856;\n }\n if (internalFormat === 33325 || internalFormat === 33326 || internalFormat === 34842 || internalFormat === 34836) {\n extensions.get(\"EXT_color_buffer_float\");\n }\n return internalFormat;\n }\n function getMipLevels(texture, image, supportsMips) {\n if (textureNeedsGenerateMipmaps(texture, supportsMips) === true || texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) {\n return Math.log2(Math.max(image.width, image.height)) + 1;\n } else if (texture.mipmaps !== void 0 && texture.mipmaps.length > 0) {\n return texture.mipmaps.length;\n } else if (texture.isCompressedTexture && Array.isArray(texture.image)) {\n return image.mipmaps.length;\n } else {\n return 1;\n }\n }\n function filterFallback(f) {\n if (f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter) {\n return 9728;\n }\n return 9729;\n }\n function onTextureDispose(event) {\n const texture = event.target;\n texture.removeEventListener(\"dispose\", onTextureDispose);\n deallocateTexture(texture);\n if (texture.isVideoTexture) {\n _videoTextures.delete(texture);\n }\n info.memory.textures--;\n }\n function onRenderTargetDispose(event) {\n const renderTarget = event.target;\n renderTarget.removeEventListener(\"dispose\", onRenderTargetDispose);\n deallocateRenderTarget(renderTarget);\n }\n function deallocateTexture(texture) {\n const textureProperties = properties.get(texture);\n if (textureProperties.__webglInit === void 0)\n return;\n _gl.deleteTexture(textureProperties.__webglTexture);\n properties.remove(texture);\n }\n function deallocateRenderTarget(renderTarget) {\n const texture = renderTarget.texture;\n const renderTargetProperties = properties.get(renderTarget);\n const textureProperties = properties.get(texture);\n if (!renderTarget)\n return;\n if (textureProperties.__webglTexture !== void 0) {\n _gl.deleteTexture(textureProperties.__webglTexture);\n info.memory.textures--;\n }\n if (renderTarget.depthTexture) {\n renderTarget.depthTexture.dispose();\n }\n if (renderTarget.isWebGLCubeRenderTarget) {\n for (let i = 0; i < 6; i++) {\n _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i]);\n if (renderTargetProperties.__webglDepthbuffer)\n _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer[i]);\n }\n } else {\n _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer);\n if (renderTargetProperties.__webglDepthbuffer)\n _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer);\n if (renderTargetProperties.__webglMultisampledFramebuffer)\n _gl.deleteFramebuffer(renderTargetProperties.__webglMultisampledFramebuffer);\n if (renderTargetProperties.__webglColorRenderbuffer)\n _gl.deleteRenderbuffer(renderTargetProperties.__webglColorRenderbuffer);\n if (renderTargetProperties.__webglDepthRenderbuffer)\n _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthRenderbuffer);\n }\n if (renderTarget.isWebGLMultipleRenderTargets) {\n for (let i = 0, il = texture.length; i < il; i++) {\n const attachmentProperties = properties.get(texture[i]);\n if (attachmentProperties.__webglTexture) {\n _gl.deleteTexture(attachmentProperties.__webglTexture);\n info.memory.textures--;\n }\n properties.remove(texture[i]);\n }\n }\n properties.remove(texture);\n properties.remove(renderTarget);\n }\n let textureUnits = 0;\n function resetTextureUnits() {\n textureUnits = 0;\n }\n function allocateTextureUnit() {\n const textureUnit = textureUnits;\n if (textureUnit >= maxTextures) {\n console.warn(\"THREE.WebGLTextures: Trying to use \" + textureUnit + \" texture units while this GPU supports only \" + maxTextures);\n }\n textureUnits += 1;\n return textureUnit;\n }\n function setTexture2D(texture, slot) {\n const textureProperties = properties.get(texture);\n if (texture.isVideoTexture)\n updateVideoTexture(texture);\n if (texture.version > 0 && textureProperties.__version !== texture.version) {\n const image = texture.image;\n if (image === void 0) {\n console.warn(\"THREE.WebGLRenderer: Texture marked for update but image is undefined\");\n } else if (image.complete === false) {\n console.warn(\"THREE.WebGLRenderer: Texture marked for update but image is incomplete\");\n } else {\n uploadTexture(textureProperties, texture, slot);\n return;\n }\n }\n state.activeTexture(33984 + slot);\n state.bindTexture(3553, textureProperties.__webglTexture);\n }\n function setTexture2DArray(texture, slot) {\n const textureProperties = properties.get(texture);\n if (texture.version > 0 && textureProperties.__version !== texture.version) {\n uploadTexture(textureProperties, texture, slot);\n return;\n }\n state.activeTexture(33984 + slot);\n state.bindTexture(35866, textureProperties.__webglTexture);\n }\n function setTexture3D(texture, slot) {\n const textureProperties = properties.get(texture);\n if (texture.version > 0 && textureProperties.__version !== texture.version) {\n uploadTexture(textureProperties, texture, slot);\n return;\n }\n state.activeTexture(33984 + slot);\n state.bindTexture(32879, textureProperties.__webglTexture);\n }\n function setTextureCube(texture, slot) {\n const textureProperties = properties.get(texture);\n if (texture.version > 0 && textureProperties.__version !== texture.version) {\n uploadCubeTexture(textureProperties, texture, slot);\n return;\n }\n state.activeTexture(33984 + slot);\n state.bindTexture(34067, textureProperties.__webglTexture);\n }\n const wrappingToGL = {\n [RepeatWrapping]: 10497,\n [ClampToEdgeWrapping]: 33071,\n [MirroredRepeatWrapping]: 33648\n };\n const filterToGL = {\n [NearestFilter]: 9728,\n [NearestMipmapNearestFilter]: 9984,\n [NearestMipmapLinearFilter]: 9986,\n [LinearFilter]: 9729,\n [LinearMipmapNearestFilter]: 9985,\n [LinearMipmapLinearFilter]: 9987\n };\n function setTextureParameters(textureType, texture, supportsMips) {\n if (supportsMips) {\n _gl.texParameteri(textureType, 10242, wrappingToGL[texture.wrapS]);\n _gl.texParameteri(textureType, 10243, wrappingToGL[texture.wrapT]);\n if (textureType === 32879 || textureType === 35866) {\n _gl.texParameteri(textureType, 32882, wrappingToGL[texture.wrapR]);\n }\n _gl.texParameteri(textureType, 10240, filterToGL[texture.magFilter]);\n _gl.texParameteri(textureType, 10241, filterToGL[texture.minFilter]);\n } else {\n _gl.texParameteri(textureType, 10242, 33071);\n _gl.texParameteri(textureType, 10243, 33071);\n if (textureType === 32879 || textureType === 35866) {\n _gl.texParameteri(textureType, 32882, 33071);\n }\n if (texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping) {\n console.warn(\"THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.\");\n }\n _gl.texParameteri(textureType, 10240, filterFallback(texture.magFilter));\n _gl.texParameteri(textureType, 10241, filterFallback(texture.minFilter));\n if (texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) {\n console.warn(\"THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.\");\n }\n }\n if (extensions.has(\"EXT_texture_filter_anisotropic\") === true) {\n const extension = extensions.get(\"EXT_texture_filter_anisotropic\");\n if (texture.type === FloatType && extensions.has(\"OES_texture_float_linear\") === false)\n return;\n if (isWebGL2 === false && (texture.type === HalfFloatType && extensions.has(\"OES_texture_half_float_linear\") === false))\n return;\n if (texture.anisotropy > 1 || properties.get(texture).__currentAnisotropy) {\n _gl.texParameterf(textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(texture.anisotropy, capabilities.getMaxAnisotropy()));\n properties.get(texture).__currentAnisotropy = texture.anisotropy;\n }\n }\n }\n function initTexture(textureProperties, texture) {\n if (textureProperties.__webglInit === void 0) {\n textureProperties.__webglInit = true;\n texture.addEventListener(\"dispose\", onTextureDispose);\n textureProperties.__webglTexture = _gl.createTexture();\n info.memory.textures++;\n }\n }\n function uploadTexture(textureProperties, texture, slot) {\n let textureType = 3553;\n if (texture.isDataTexture2DArray)\n textureType = 35866;\n if (texture.isDataTexture3D)\n textureType = 32879;\n initTexture(textureProperties, texture);\n state.activeTexture(33984 + slot);\n state.bindTexture(textureType, textureProperties.__webglTexture);\n _gl.pixelStorei(37440, texture.flipY);\n _gl.pixelStorei(37441, texture.premultiplyAlpha);\n _gl.pixelStorei(3317, texture.unpackAlignment);\n _gl.pixelStorei(37443, 0);\n const needsPowerOfTwo = textureNeedsPowerOfTwo(texture) && isPowerOfTwo$1(texture.image) === false;\n const image = resizeImage(texture.image, needsPowerOfTwo, false, maxTextureSize);\n const supportsMips = isPowerOfTwo$1(image) || isWebGL2, glFormat = utils.convert(texture.format);\n let glType = utils.convert(texture.type), glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n setTextureParameters(textureType, texture, supportsMips);\n let mipmap;\n const mipmaps = texture.mipmaps;\n const useTexStorage = isWebGL2 && texture.isVideoTexture !== true;\n const allocateMemory = textureProperties.__version === void 0;\n const levels = getMipLevels(texture, image, supportsMips);\n if (texture.isDepthTexture) {\n glInternalFormat = 6402;\n if (isWebGL2) {\n if (texture.type === FloatType) {\n glInternalFormat = 36012;\n } else if (texture.type === UnsignedIntType) {\n glInternalFormat = 33190;\n } else if (texture.type === UnsignedInt248Type) {\n glInternalFormat = 35056;\n } else {\n glInternalFormat = 33189;\n }\n } else {\n if (texture.type === FloatType) {\n console.error(\"WebGLRenderer: Floating point depth texture requires WebGL2.\");\n }\n }\n if (texture.format === DepthFormat && glInternalFormat === 6402) {\n if (texture.type !== UnsignedShortType && texture.type !== UnsignedIntType) {\n console.warn(\"THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.\");\n texture.type = UnsignedShortType;\n glType = utils.convert(texture.type);\n }\n }\n if (texture.format === DepthStencilFormat && glInternalFormat === 6402) {\n glInternalFormat = 34041;\n if (texture.type !== UnsignedInt248Type) {\n console.warn(\"THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.\");\n texture.type = UnsignedInt248Type;\n glType = utils.convert(texture.type);\n }\n }\n if (useTexStorage && allocateMemory) {\n state.texStorage2D(3553, 1, glInternalFormat, image.width, image.height);\n } else {\n state.texImage2D(3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null);\n }\n } else if (texture.isDataTexture) {\n if (mipmaps.length > 0 && supportsMips) {\n if (useTexStorage && allocateMemory) {\n state.texStorage2D(3553, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n }\n for (let i = 0, il = mipmaps.length; i < il; i++) {\n mipmap = mipmaps[i];\n if (useTexStorage) {\n state.texSubImage2D(3553, 0, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n } else {\n state.texImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n }\n }\n texture.generateMipmaps = false;\n } else {\n if (useTexStorage) {\n if (allocateMemory) {\n state.texStorage2D(3553, levels, glInternalFormat, image.width, image.height);\n }\n state.texSubImage2D(3553, 0, 0, 0, image.width, image.height, glFormat, glType, image.data);\n } else {\n state.texImage2D(3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data);\n }\n }\n } else if (texture.isCompressedTexture) {\n if (useTexStorage && allocateMemory) {\n state.texStorage2D(3553, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n }\n for (let i = 0, il = mipmaps.length; i < il; i++) {\n mipmap = mipmaps[i];\n if (texture.format !== RGBAFormat && texture.format !== RGBFormat) {\n if (glFormat !== null) {\n if (useTexStorage) {\n state.compressedTexSubImage2D(3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data);\n } else {\n state.compressedTexImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n }\n } else {\n console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\");\n }\n } else {\n if (useTexStorage) {\n state.texSubImage2D(3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n } else {\n state.texImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n }\n }\n }\n } else if (texture.isDataTexture2DArray) {\n if (useTexStorage) {\n if (allocateMemory) {\n state.texStorage3D(35866, levels, glInternalFormat, image.width, image.height, image.depth);\n }\n state.texSubImage3D(35866, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data);\n } else {\n state.texImage3D(35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n }\n } else if (texture.isDataTexture3D) {\n if (useTexStorage) {\n if (allocateMemory) {\n state.texStorage3D(32879, levels, glInternalFormat, image.width, image.height, image.depth);\n }\n state.texSubImage3D(32879, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data);\n } else {\n state.texImage3D(32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n }\n } else if (texture.isFramebufferTexture) {\n if (useTexStorage && allocateMemory) {\n state.texStorage2D(3553, levels, glInternalFormat, image.width, image.height);\n } else {\n state.texImage2D(3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null);\n }\n } else {\n if (mipmaps.length > 0 && supportsMips) {\n if (useTexStorage && allocateMemory) {\n state.texStorage2D(3553, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n }\n for (let i = 0, il = mipmaps.length; i < il; i++) {\n mipmap = mipmaps[i];\n if (useTexStorage) {\n state.texSubImage2D(3553, i, 0, 0, glFormat, glType, mipmap);\n } else {\n state.texImage2D(3553, i, glInternalFormat, glFormat, glType, mipmap);\n }\n }\n texture.generateMipmaps = false;\n } else {\n if (useTexStorage) {\n if (allocateMemory) {\n state.texStorage2D(3553, levels, glInternalFormat, image.width, image.height);\n }\n state.texSubImage2D(3553, 0, 0, 0, glFormat, glType, image);\n } else {\n state.texImage2D(3553, 0, glInternalFormat, glFormat, glType, image);\n }\n }\n }\n if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n generateMipmap(textureType);\n }\n textureProperties.__version = texture.version;\n if (texture.onUpdate)\n texture.onUpdate(texture);\n }\n function uploadCubeTexture(textureProperties, texture, slot) {\n if (texture.image.length !== 6)\n return;\n initTexture(textureProperties, texture);\n state.activeTexture(33984 + slot);\n state.bindTexture(34067, textureProperties.__webglTexture);\n _gl.pixelStorei(37440, texture.flipY);\n _gl.pixelStorei(37441, texture.premultiplyAlpha);\n _gl.pixelStorei(3317, texture.unpackAlignment);\n _gl.pixelStorei(37443, 0);\n const isCompressed = texture && (texture.isCompressedTexture || texture.image[0].isCompressedTexture);\n const isDataTexture = texture.image[0] && texture.image[0].isDataTexture;\n const cubeImage = [];\n for (let i = 0; i < 6; i++) {\n if (!isCompressed && !isDataTexture) {\n cubeImage[i] = resizeImage(texture.image[i], false, true, maxCubemapSize);\n } else {\n cubeImage[i] = isDataTexture ? texture.image[i].image : texture.image[i];\n }\n }\n const image = cubeImage[0], supportsMips = isPowerOfTwo$1(image) || isWebGL2, glFormat = utils.convert(texture.format), glType = utils.convert(texture.type), glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n const useTexStorage = isWebGL2 && texture.isVideoTexture !== true;\n const allocateMemory = textureProperties.__version === void 0;\n let levels = getMipLevels(texture, image, supportsMips);\n setTextureParameters(34067, texture, supportsMips);\n let mipmaps;\n if (isCompressed) {\n if (useTexStorage && allocateMemory) {\n state.texStorage2D(34067, levels, glInternalFormat, image.width, image.height);\n }\n for (let i = 0; i < 6; i++) {\n mipmaps = cubeImage[i].mipmaps;\n for (let j = 0; j < mipmaps.length; j++) {\n const mipmap = mipmaps[j];\n if (texture.format !== RGBAFormat && texture.format !== RGBFormat) {\n if (glFormat !== null) {\n if (useTexStorage) {\n state.compressedTexSubImage2D(34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data);\n } else {\n state.compressedTexImage2D(34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n }\n } else {\n console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()\");\n }\n } else {\n if (useTexStorage) {\n state.texSubImage2D(34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n } else {\n state.texImage2D(34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n }\n }\n }\n }\n } else {\n mipmaps = texture.mipmaps;\n if (useTexStorage && allocateMemory) {\n if (mipmaps.length > 0)\n levels++;\n state.texStorage2D(34067, levels, glInternalFormat, cubeImage[0].width, cubeImage[0].height);\n }\n for (let i = 0; i < 6; i++) {\n if (isDataTexture) {\n if (useTexStorage) {\n state.texSubImage2D(34069 + i, 0, 0, 0, cubeImage[i].width, cubeImage[i].height, glFormat, glType, cubeImage[i].data);\n } else {\n state.texImage2D(34069 + i, 0, glInternalFormat, cubeImage[i].width, cubeImage[i].height, 0, glFormat, glType, cubeImage[i].data);\n }\n for (let j = 0; j < mipmaps.length; j++) {\n const mipmap = mipmaps[j];\n const mipmapImage = mipmap.image[i].image;\n if (useTexStorage) {\n state.texSubImage2D(34069 + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data);\n } else {\n state.texImage2D(34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data);\n }\n }\n } else {\n if (useTexStorage) {\n state.texSubImage2D(34069 + i, 0, 0, 0, glFormat, glType, cubeImage[i]);\n } else {\n state.texImage2D(34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[i]);\n }\n for (let j = 0; j < mipmaps.length; j++) {\n const mipmap = mipmaps[j];\n if (useTexStorage) {\n state.texSubImage2D(34069 + i, j + 1, 0, 0, glFormat, glType, mipmap.image[i]);\n } else {\n state.texImage2D(34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[i]);\n }\n }\n }\n }\n }\n if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n generateMipmap(34067);\n }\n textureProperties.__version = texture.version;\n if (texture.onUpdate)\n texture.onUpdate(texture);\n }\n function setupFrameBufferTexture(framebuffer, renderTarget, texture, attachment, textureTarget) {\n const glFormat = utils.convert(texture.format);\n const glType = utils.convert(texture.type);\n const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n const renderTargetProperties = properties.get(renderTarget);\n if (!renderTargetProperties.__hasExternalTextures) {\n if (textureTarget === 32879 || textureTarget === 35866) {\n state.texImage3D(textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null);\n } else {\n state.texImage2D(textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null);\n }\n }\n state.bindFramebuffer(36160, framebuffer);\n if (renderTarget.useRenderToTexture) {\n MultisampledRenderToTextureExtension.framebufferTexture2DMultisampleEXT(36160, attachment, textureTarget, properties.get(texture).__webglTexture, 0, getRenderTargetSamples(renderTarget));\n } else {\n _gl.framebufferTexture2D(36160, attachment, textureTarget, properties.get(texture).__webglTexture, 0);\n }\n state.bindFramebuffer(36160, null);\n }\n function setupRenderBufferStorage(renderbuffer, renderTarget, isMultisample) {\n _gl.bindRenderbuffer(36161, renderbuffer);\n if (renderTarget.depthBuffer && !renderTarget.stencilBuffer) {\n let glInternalFormat = 33189;\n if (isMultisample || renderTarget.useRenderToTexture) {\n const depthTexture = renderTarget.depthTexture;\n if (depthTexture && depthTexture.isDepthTexture) {\n if (depthTexture.type === FloatType) {\n glInternalFormat = 36012;\n } else if (depthTexture.type === UnsignedIntType) {\n glInternalFormat = 33190;\n }\n }\n const samples = getRenderTargetSamples(renderTarget);\n if (renderTarget.useRenderToTexture) {\n MultisampledRenderToTextureExtension.renderbufferStorageMultisampleEXT(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n } else {\n _gl.renderbufferStorageMultisample(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n }\n } else {\n _gl.renderbufferStorage(36161, glInternalFormat, renderTarget.width, renderTarget.height);\n }\n _gl.framebufferRenderbuffer(36160, 36096, 36161, renderbuffer);\n } else if (renderTarget.depthBuffer && renderTarget.stencilBuffer) {\n const samples = getRenderTargetSamples(renderTarget);\n if (isMultisample && renderTarget.useRenderbuffer) {\n _gl.renderbufferStorageMultisample(36161, samples, 35056, renderTarget.width, renderTarget.height);\n } else if (renderTarget.useRenderToTexture) {\n MultisampledRenderToTextureExtension.renderbufferStorageMultisampleEXT(36161, samples, 35056, renderTarget.width, renderTarget.height);\n } else {\n _gl.renderbufferStorage(36161, 34041, renderTarget.width, renderTarget.height);\n }\n _gl.framebufferRenderbuffer(36160, 33306, 36161, renderbuffer);\n } else {\n const texture = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture[0] : renderTarget.texture;\n const glFormat = utils.convert(texture.format);\n const glType = utils.convert(texture.type);\n const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n const samples = getRenderTargetSamples(renderTarget);\n if (isMultisample && renderTarget.useRenderbuffer) {\n _gl.renderbufferStorageMultisample(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n } else if (renderTarget.useRenderToTexture) {\n MultisampledRenderToTextureExtension.renderbufferStorageMultisampleEXT(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n } else {\n _gl.renderbufferStorage(36161, glInternalFormat, renderTarget.width, renderTarget.height);\n }\n }\n _gl.bindRenderbuffer(36161, null);\n }\n function setupDepthTexture(framebuffer, renderTarget) {\n const isCube = renderTarget && renderTarget.isWebGLCubeRenderTarget;\n if (isCube)\n throw new Error(\"Depth Texture with cube render targets is not supported\");\n state.bindFramebuffer(36160, framebuffer);\n if (!(renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture)) {\n throw new Error(\"renderTarget.depthTexture must be an instance of THREE.DepthTexture\");\n }\n if (!properties.get(renderTarget.depthTexture).__webglTexture || renderTarget.depthTexture.image.width !== renderTarget.width || renderTarget.depthTexture.image.height !== renderTarget.height) {\n renderTarget.depthTexture.image.width = renderTarget.width;\n renderTarget.depthTexture.image.height = renderTarget.height;\n renderTarget.depthTexture.needsUpdate = true;\n }\n setTexture2D(renderTarget.depthTexture, 0);\n const webglDepthTexture = properties.get(renderTarget.depthTexture).__webglTexture;\n const samples = getRenderTargetSamples(renderTarget);\n if (renderTarget.depthTexture.format === DepthFormat) {\n if (renderTarget.useRenderToTexture) {\n MultisampledRenderToTextureExtension.framebufferTexture2DMultisampleEXT(36160, 36096, 3553, webglDepthTexture, 0, samples);\n } else {\n _gl.framebufferTexture2D(36160, 36096, 3553, webglDepthTexture, 0);\n }\n } else if (renderTarget.depthTexture.format === DepthStencilFormat) {\n if (renderTarget.useRenderToTexture) {\n MultisampledRenderToTextureExtension.framebufferTexture2DMultisampleEXT(36160, 33306, 3553, webglDepthTexture, 0, samples);\n } else {\n _gl.framebufferTexture2D(36160, 33306, 3553, webglDepthTexture, 0);\n }\n } else {\n throw new Error(\"Unknown depthTexture format\");\n }\n }\n function setupDepthRenderbuffer(renderTarget) {\n const renderTargetProperties = properties.get(renderTarget);\n const isCube = renderTarget.isWebGLCubeRenderTarget === true;\n if (renderTarget.depthTexture && !renderTargetProperties.__autoAllocateDepthBuffer) {\n if (isCube)\n throw new Error(\"target.depthTexture not supported in Cube render targets\");\n setupDepthTexture(renderTargetProperties.__webglFramebuffer, renderTarget);\n } else {\n if (isCube) {\n renderTargetProperties.__webglDepthbuffer = [];\n for (let i = 0; i < 6; i++) {\n state.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer[i]);\n renderTargetProperties.__webglDepthbuffer[i] = _gl.createRenderbuffer();\n setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer[i], renderTarget, false);\n }\n } else {\n state.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer);\n renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer, renderTarget, false);\n }\n }\n state.bindFramebuffer(36160, null);\n }\n function rebindTextures(renderTarget, colorTexture, depthTexture) {\n const renderTargetProperties = properties.get(renderTarget);\n if (colorTexture !== void 0) {\n setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, 36064, 3553);\n }\n if (depthTexture !== void 0) {\n setupDepthRenderbuffer(renderTarget);\n }\n }\n function setupRenderTarget(renderTarget) {\n const texture = renderTarget.texture;\n const renderTargetProperties = properties.get(renderTarget);\n const textureProperties = properties.get(texture);\n renderTarget.addEventListener(\"dispose\", onRenderTargetDispose);\n if (renderTarget.isWebGLMultipleRenderTargets !== true) {\n if (textureProperties.__webglTexture === void 0) {\n textureProperties.__webglTexture = _gl.createTexture();\n }\n textureProperties.__version = texture.version;\n info.memory.textures++;\n }\n const isCube = renderTarget.isWebGLCubeRenderTarget === true;\n const isMultipleRenderTargets = renderTarget.isWebGLMultipleRenderTargets === true;\n const isRenderTarget3D = texture.isDataTexture3D || texture.isDataTexture2DArray;\n const supportsMips = isPowerOfTwo$1(renderTarget) || isWebGL2;\n if (isWebGL2 && texture.format === RGBFormat && (texture.type === FloatType || texture.type === HalfFloatType)) {\n texture.format = RGBAFormat;\n console.warn(\"THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.\");\n }\n if (isCube) {\n renderTargetProperties.__webglFramebuffer = [];\n for (let i = 0; i < 6; i++) {\n renderTargetProperties.__webglFramebuffer[i] = _gl.createFramebuffer();\n }\n } else {\n renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n if (isMultipleRenderTargets) {\n if (capabilities.drawBuffers) {\n const textures = renderTarget.texture;\n for (let i = 0, il = textures.length; i < il; i++) {\n const attachmentProperties = properties.get(textures[i]);\n if (attachmentProperties.__webglTexture === void 0) {\n attachmentProperties.__webglTexture = _gl.createTexture();\n info.memory.textures++;\n }\n }\n } else {\n console.warn(\"THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.\");\n }\n } else if (renderTarget.useRenderbuffer) {\n if (isWebGL2) {\n renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n renderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n _gl.bindRenderbuffer(36161, renderTargetProperties.__webglColorRenderbuffer);\n const glFormat = utils.convert(texture.format);\n const glType = utils.convert(texture.type);\n const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n const samples = getRenderTargetSamples(renderTarget);\n _gl.renderbufferStorageMultisample(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n state.bindFramebuffer(36160, renderTargetProperties.__webglMultisampledFramebuffer);\n _gl.framebufferRenderbuffer(36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer);\n _gl.bindRenderbuffer(36161, null);\n if (renderTarget.depthBuffer) {\n renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n setupRenderBufferStorage(renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true);\n }\n state.bindFramebuffer(36160, null);\n } else {\n console.warn(\"THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.\");\n }\n }\n }\n if (isCube) {\n state.bindTexture(34067, textureProperties.__webglTexture);\n setTextureParameters(34067, texture, supportsMips);\n for (let i = 0; i < 6; i++) {\n setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i], renderTarget, texture, 36064, 34069 + i);\n }\n if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n generateMipmap(34067);\n }\n state.unbindTexture();\n } else if (isMultipleRenderTargets) {\n const textures = renderTarget.texture;\n for (let i = 0, il = textures.length; i < il; i++) {\n const attachment = textures[i];\n const attachmentProperties = properties.get(attachment);\n state.bindTexture(3553, attachmentProperties.__webglTexture);\n setTextureParameters(3553, attachment, supportsMips);\n setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, attachment, 36064 + i, 3553);\n if (textureNeedsGenerateMipmaps(attachment, supportsMips)) {\n generateMipmap(3553);\n }\n }\n state.unbindTexture();\n } else {\n let glTextureType = 3553;\n if (isRenderTarget3D) {\n if (isWebGL2) {\n const isTexture3D = texture.isDataTexture3D;\n glTextureType = isTexture3D ? 32879 : 35866;\n } else {\n console.warn(\"THREE.DataTexture3D and THREE.DataTexture2DArray only supported with WebGL2.\");\n }\n }\n state.bindTexture(glTextureType, textureProperties.__webglTexture);\n setTextureParameters(glTextureType, texture, supportsMips);\n setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, texture, 36064, glTextureType);\n if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n generateMipmap(glTextureType);\n }\n state.unbindTexture();\n }\n if (renderTarget.depthBuffer) {\n setupDepthRenderbuffer(renderTarget);\n }\n }\n function updateRenderTargetMipmap(renderTarget) {\n const supportsMips = isPowerOfTwo$1(renderTarget) || isWebGL2;\n const textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [renderTarget.texture];\n for (let i = 0, il = textures.length; i < il; i++) {\n const texture = textures[i];\n if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n const target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n const webglTexture = properties.get(texture).__webglTexture;\n state.bindTexture(target, webglTexture);\n generateMipmap(target);\n state.unbindTexture();\n }\n }\n }\n function updateMultisampleRenderTarget(renderTarget) {\n if (renderTarget.useRenderbuffer) {\n if (isWebGL2) {\n const width = renderTarget.width;\n const height = renderTarget.height;\n let mask = 16384;\n const invalidationArray = [36064];\n const depthStyle = renderTarget.stencilBuffer ? 33306 : 36096;\n if (renderTarget.depthBuffer) {\n invalidationArray.push(depthStyle);\n }\n if (!renderTarget.ignoreDepthForMultisampleCopy) {\n if (renderTarget.depthBuffer)\n mask |= 256;\n if (renderTarget.stencilBuffer)\n mask |= 1024;\n }\n const renderTargetProperties = properties.get(renderTarget);\n state.bindFramebuffer(36008, renderTargetProperties.__webglMultisampledFramebuffer);\n state.bindFramebuffer(36009, renderTargetProperties.__webglFramebuffer);\n if (renderTarget.ignoreDepthForMultisampleCopy) {\n _gl.invalidateFramebuffer(36008, [depthStyle]);\n _gl.invalidateFramebuffer(36009, [depthStyle]);\n }\n _gl.blitFramebuffer(0, 0, width, height, 0, 0, width, height, mask, 9728);\n _gl.invalidateFramebuffer(36008, invalidationArray);\n state.bindFramebuffer(36008, null);\n state.bindFramebuffer(36009, renderTargetProperties.__webglMultisampledFramebuffer);\n } else {\n console.warn(\"THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.\");\n }\n }\n }\n function getRenderTargetSamples(renderTarget) {\n return isWebGL2 && (renderTarget.useRenderbuffer || renderTarget.useRenderToTexture) ? Math.min(maxSamples, renderTarget.samples) : 0;\n }\n function updateVideoTexture(texture) {\n const frame = info.render.frame;\n if (_videoTextures.get(texture) !== frame) {\n _videoTextures.set(texture, frame);\n texture.update();\n }\n }\n let warnedTexture2D = false;\n let warnedTextureCube = false;\n function safeSetTexture2D(texture, slot) {\n if (texture && texture.isWebGLRenderTarget) {\n if (warnedTexture2D === false) {\n console.warn(\"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\");\n warnedTexture2D = true;\n }\n texture = texture.texture;\n }\n setTexture2D(texture, slot);\n }\n function safeSetTextureCube(texture, slot) {\n if (texture && texture.isWebGLCubeRenderTarget) {\n if (warnedTextureCube === false) {\n console.warn(\"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\");\n warnedTextureCube = true;\n }\n texture = texture.texture;\n }\n setTextureCube(texture, slot);\n }\n this.allocateTextureUnit = allocateTextureUnit;\n this.resetTextureUnits = resetTextureUnits;\n this.setTexture2D = setTexture2D;\n this.setTexture2DArray = setTexture2DArray;\n this.setTexture3D = setTexture3D;\n this.setTextureCube = setTextureCube;\n this.rebindTextures = rebindTextures;\n this.setupRenderTarget = setupRenderTarget;\n this.updateRenderTargetMipmap = updateRenderTargetMipmap;\n this.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n this.setupDepthRenderbuffer = setupDepthRenderbuffer;\n this.setupFrameBufferTexture = setupFrameBufferTexture;\n this.safeSetTexture2D = safeSetTexture2D;\n this.safeSetTextureCube = safeSetTextureCube;\n}\nfunction WebGLUtils(gl, extensions, capabilities) {\n const isWebGL2 = capabilities.isWebGL2;\n function convert(p) {\n let extension;\n if (p === UnsignedByteType)\n return 5121;\n if (p === UnsignedShort4444Type)\n return 32819;\n if (p === UnsignedShort5551Type)\n return 32820;\n if (p === UnsignedShort565Type)\n return 33635;\n if (p === ByteType)\n return 5120;\n if (p === ShortType)\n return 5122;\n if (p === UnsignedShortType)\n return 5123;\n if (p === IntType)\n return 5124;\n if (p === UnsignedIntType)\n return 5125;\n if (p === FloatType)\n return 5126;\n if (p === HalfFloatType) {\n if (isWebGL2)\n return 5131;\n extension = extensions.get(\"OES_texture_half_float\");\n if (extension !== null) {\n return extension.HALF_FLOAT_OES;\n } else {\n return null;\n }\n }\n if (p === AlphaFormat)\n return 6406;\n if (p === RGBFormat)\n return 6407;\n if (p === RGBAFormat)\n return 6408;\n if (p === LuminanceFormat)\n return 6409;\n if (p === LuminanceAlphaFormat)\n return 6410;\n if (p === DepthFormat)\n return 6402;\n if (p === DepthStencilFormat)\n return 34041;\n if (p === RedFormat)\n return 6403;\n if (p === RedIntegerFormat)\n return 36244;\n if (p === RGFormat)\n return 33319;\n if (p === RGIntegerFormat)\n return 33320;\n if (p === RGBIntegerFormat)\n return 36248;\n if (p === RGBAIntegerFormat)\n return 36249;\n if (p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) {\n extension = extensions.get(\"WEBGL_compressed_texture_s3tc\");\n if (extension !== null) {\n if (p === RGB_S3TC_DXT1_Format)\n return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n if (p === RGBA_S3TC_DXT1_Format)\n return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n if (p === RGBA_S3TC_DXT3_Format)\n return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n if (p === RGBA_S3TC_DXT5_Format)\n return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n } else {\n return null;\n }\n }\n if (p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format) {\n extension = extensions.get(\"WEBGL_compressed_texture_pvrtc\");\n if (extension !== null) {\n if (p === RGB_PVRTC_4BPPV1_Format)\n return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n if (p === RGB_PVRTC_2BPPV1_Format)\n return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n if (p === RGBA_PVRTC_4BPPV1_Format)\n return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n if (p === RGBA_PVRTC_2BPPV1_Format)\n return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n } else {\n return null;\n }\n }\n if (p === RGB_ETC1_Format) {\n extension = extensions.get(\"WEBGL_compressed_texture_etc1\");\n if (extension !== null) {\n return extension.COMPRESSED_RGB_ETC1_WEBGL;\n } else {\n return null;\n }\n }\n if (p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format) {\n extension = extensions.get(\"WEBGL_compressed_texture_etc\");\n if (extension !== null) {\n if (p === RGB_ETC2_Format)\n return extension.COMPRESSED_RGB8_ETC2;\n if (p === RGBA_ETC2_EAC_Format)\n return extension.COMPRESSED_RGBA8_ETC2_EAC;\n }\n }\n if (p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format || p === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format || p === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format || p === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format || p === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format || p === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format) {\n extension = extensions.get(\"WEBGL_compressed_texture_astc\");\n if (extension !== null) {\n return p;\n } else {\n return null;\n }\n }\n if (p === RGBA_BPTC_Format) {\n extension = extensions.get(\"EXT_texture_compression_bptc\");\n if (extension !== null) {\n return p;\n } else {\n return null;\n }\n }\n if (p === UnsignedInt248Type) {\n if (isWebGL2)\n return 34042;\n extension = extensions.get(\"WEBGL_depth_texture\");\n if (extension !== null) {\n return extension.UNSIGNED_INT_24_8_WEBGL;\n } else {\n return null;\n }\n }\n }\n return {convert};\n}\nclass ArrayCamera extends PerspectiveCamera {\n constructor(array = []) {\n super();\n this.cameras = array;\n }\n}\nArrayCamera.prototype.isArrayCamera = true;\nclass Group extends Object3D {\n constructor() {\n super();\n this.type = \"Group\";\n }\n}\nGroup.prototype.isGroup = true;\nconst _moveEvent = {type: \"move\"};\nclass WebXRController {\n constructor() {\n this._targetRay = null;\n this._grip = null;\n this._hand = null;\n }\n getHandSpace() {\n if (this._hand === null) {\n this._hand = new Group();\n this._hand.matrixAutoUpdate = false;\n this._hand.visible = false;\n this._hand.joints = {};\n this._hand.inputState = {pinching: false};\n }\n return this._hand;\n }\n getTargetRaySpace() {\n if (this._targetRay === null) {\n this._targetRay = new Group();\n this._targetRay.matrixAutoUpdate = false;\n this._targetRay.visible = false;\n this._targetRay.hasLinearVelocity = false;\n this._targetRay.linearVelocity = new Vector3();\n this._targetRay.hasAngularVelocity = false;\n this._targetRay.angularVelocity = new Vector3();\n }\n return this._targetRay;\n }\n getGripSpace() {\n if (this._grip === null) {\n this._grip = new Group();\n this._grip.matrixAutoUpdate = false;\n this._grip.visible = false;\n this._grip.hasLinearVelocity = false;\n this._grip.linearVelocity = new Vector3();\n this._grip.hasAngularVelocity = false;\n this._grip.angularVelocity = new Vector3();\n }\n return this._grip;\n }\n dispatchEvent(event) {\n if (this._targetRay !== null) {\n this._targetRay.dispatchEvent(event);\n }\n if (this._grip !== null) {\n this._grip.dispatchEvent(event);\n }\n if (this._hand !== null) {\n this._hand.dispatchEvent(event);\n }\n return this;\n }\n disconnect(inputSource) {\n this.dispatchEvent({type: \"disconnected\", data: inputSource});\n if (this._targetRay !== null) {\n this._targetRay.visible = false;\n }\n if (this._grip !== null) {\n this._grip.visible = false;\n }\n if (this._hand !== null) {\n this._hand.visible = false;\n }\n return this;\n }\n update(inputSource, frame, referenceSpace) {\n let inputPose = null;\n let gripPose = null;\n let handPose = null;\n const targetRay = this._targetRay;\n const grip = this._grip;\n const hand = this._hand;\n if (inputSource && frame.session.visibilityState !== \"visible-blurred\") {\n if (targetRay !== null) {\n inputPose = frame.getPose(inputSource.targetRaySpace, referenceSpace);\n if (inputPose !== null) {\n targetRay.matrix.fromArray(inputPose.transform.matrix);\n targetRay.matrix.decompose(targetRay.position, targetRay.rotation, targetRay.scale);\n if (inputPose.linearVelocity) {\n targetRay.hasLinearVelocity = true;\n targetRay.linearVelocity.copy(inputPose.linearVelocity);\n } else {\n targetRay.hasLinearVelocity = false;\n }\n if (inputPose.angularVelocity) {\n targetRay.hasAngularVelocity = true;\n targetRay.angularVelocity.copy(inputPose.angularVelocity);\n } else {\n targetRay.hasAngularVelocity = false;\n }\n this.dispatchEvent(_moveEvent);\n }\n }\n if (hand && inputSource.hand) {\n handPose = true;\n for (const inputjoint of inputSource.hand.values()) {\n const jointPose = frame.getJointPose(inputjoint, referenceSpace);\n if (hand.joints[inputjoint.jointName] === void 0) {\n const joint2 = new Group();\n joint2.matrixAutoUpdate = false;\n joint2.visible = false;\n hand.joints[inputjoint.jointName] = joint2;\n hand.add(joint2);\n }\n const joint = hand.joints[inputjoint.jointName];\n if (jointPose !== null) {\n joint.matrix.fromArray(jointPose.transform.matrix);\n joint.matrix.decompose(joint.position, joint.rotation, joint.scale);\n joint.jointRadius = jointPose.radius;\n }\n joint.visible = jointPose !== null;\n }\n const indexTip = hand.joints[\"index-finger-tip\"];\n const thumbTip = hand.joints[\"thumb-tip\"];\n const distance = indexTip.position.distanceTo(thumbTip.position);\n const distanceToPinch = 0.02;\n const threshold = 5e-3;\n if (hand.inputState.pinching && distance > distanceToPinch + threshold) {\n hand.inputState.pinching = false;\n this.dispatchEvent({\n type: \"pinchend\",\n handedness: inputSource.handedness,\n target: this\n });\n } else if (!hand.inputState.pinching && distance <= distanceToPinch - threshold) {\n hand.inputState.pinching = true;\n this.dispatchEvent({\n type: \"pinchstart\",\n handedness: inputSource.handedness,\n target: this\n });\n }\n } else {\n if (grip !== null && inputSource.gripSpace) {\n gripPose = frame.getPose(inputSource.gripSpace, referenceSpace);\n if (gripPose !== null) {\n grip.matrix.fromArray(gripPose.transform.matrix);\n grip.matrix.decompose(grip.position, grip.rotation, grip.scale);\n if (gripPose.linearVelocity) {\n grip.hasLinearVelocity = true;\n grip.linearVelocity.copy(gripPose.linearVelocity);\n } else {\n grip.hasLinearVelocity = false;\n }\n if (gripPose.angularVelocity) {\n grip.hasAngularVelocity = true;\n grip.angularVelocity.copy(gripPose.angularVelocity);\n } else {\n grip.hasAngularVelocity = false;\n }\n }\n }\n }\n }\n if (targetRay !== null) {\n targetRay.visible = inputPose !== null;\n }\n if (grip !== null) {\n grip.visible = gripPose !== null;\n }\n if (hand !== null) {\n hand.visible = handPose !== null;\n }\n return this;\n }\n}\nclass DepthTexture extends Texture {\n constructor(width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format) {\n format = format !== void 0 ? format : DepthFormat;\n if (format !== DepthFormat && format !== DepthStencilFormat) {\n throw new Error(\"DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat\");\n }\n if (type === void 0 && format === DepthFormat)\n type = UnsignedShortType;\n if (type === void 0 && format === DepthStencilFormat)\n type = UnsignedInt248Type;\n super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n this.image = {width, height};\n this.magFilter = magFilter !== void 0 ? magFilter : NearestFilter;\n this.minFilter = minFilter !== void 0 ? minFilter : NearestFilter;\n this.flipY = false;\n this.generateMipmaps = false;\n }\n}\nDepthTexture.prototype.isDepthTexture = true;\nclass WebXRManager extends EventDispatcher {\n constructor(renderer, gl) {\n super();\n const scope = this;\n let session = null;\n let framebufferScaleFactor = 1;\n let referenceSpace = null;\n let referenceSpaceType = \"local-floor\";\n const hasMultisampledRenderToTexture = renderer.extensions.has(\"WEBGL_multisampled_render_to_texture\");\n let pose = null;\n let glBinding = null;\n let glProjLayer = null;\n let glBaseLayer = null;\n let isMultisample = false;\n let xrFrame = null;\n const attributes = gl.getContextAttributes();\n let initialRenderTarget = null;\n let newRenderTarget = null;\n const controllers = [];\n const inputSourcesMap = new Map();\n const cameraL = new PerspectiveCamera();\n cameraL.layers.enable(1);\n cameraL.viewport = new Vector4();\n const cameraR = new PerspectiveCamera();\n cameraR.layers.enable(2);\n cameraR.viewport = new Vector4();\n const cameras = [cameraL, cameraR];\n const cameraVR = new ArrayCamera();\n cameraVR.layers.enable(1);\n cameraVR.layers.enable(2);\n let _currentDepthNear = null;\n let _currentDepthFar = null;\n this.cameraAutoUpdate = true;\n this.enabled = false;\n this.isPresenting = false;\n this.getController = function(index) {\n let controller = controllers[index];\n if (controller === void 0) {\n controller = new WebXRController();\n controllers[index] = controller;\n }\n return controller.getTargetRaySpace();\n };\n this.getControllerGrip = function(index) {\n let controller = controllers[index];\n if (controller === void 0) {\n controller = new WebXRController();\n controllers[index] = controller;\n }\n return controller.getGripSpace();\n };\n this.getHand = function(index) {\n let controller = controllers[index];\n if (controller === void 0) {\n controller = new WebXRController();\n controllers[index] = controller;\n }\n return controller.getHandSpace();\n };\n function onSessionEvent(event) {\n const controller = inputSourcesMap.get(event.inputSource);\n if (controller) {\n controller.dispatchEvent({type: event.type, data: event.inputSource});\n }\n }\n function onSessionEnd() {\n inputSourcesMap.forEach(function(controller, inputSource) {\n controller.disconnect(inputSource);\n });\n inputSourcesMap.clear();\n _currentDepthNear = null;\n _currentDepthFar = null;\n renderer.setRenderTarget(initialRenderTarget);\n glBaseLayer = null;\n glProjLayer = null;\n glBinding = null;\n session = null;\n newRenderTarget = null;\n animation.stop();\n scope.isPresenting = false;\n scope.dispatchEvent({type: \"sessionend\"});\n }\n this.setFramebufferScaleFactor = function(value) {\n framebufferScaleFactor = value;\n if (scope.isPresenting === true) {\n console.warn(\"THREE.WebXRManager: Cannot change framebuffer scale while presenting.\");\n }\n };\n this.setReferenceSpaceType = function(value) {\n referenceSpaceType = value;\n if (scope.isPresenting === true) {\n console.warn(\"THREE.WebXRManager: Cannot change reference space type while presenting.\");\n }\n };\n this.getReferenceSpace = function() {\n return referenceSpace;\n };\n this.getBaseLayer = function() {\n return glProjLayer !== null ? glProjLayer : glBaseLayer;\n };\n this.getBinding = function() {\n return glBinding;\n };\n this.getFrame = function() {\n return xrFrame;\n };\n this.getSession = function() {\n return session;\n };\n this.setSession = async function(value) {\n session = value;\n if (session !== null) {\n initialRenderTarget = renderer.getRenderTarget();\n session.addEventListener(\"select\", onSessionEvent);\n session.addEventListener(\"selectstart\", onSessionEvent);\n session.addEventListener(\"selectend\", onSessionEvent);\n session.addEventListener(\"squeeze\", onSessionEvent);\n session.addEventListener(\"squeezestart\", onSessionEvent);\n session.addEventListener(\"squeezeend\", onSessionEvent);\n session.addEventListener(\"end\", onSessionEnd);\n session.addEventListener(\"inputsourceschange\", onInputSourcesChange);\n if (attributes.xrCompatible !== true) {\n await gl.makeXRCompatible();\n }\n if (session.renderState.layers === void 0 || renderer.capabilities.isWebGL2 === false) {\n const layerInit = {\n antialias: session.renderState.layers === void 0 ? attributes.antialias : true,\n alpha: attributes.alpha,\n depth: attributes.depth,\n stencil: attributes.stencil,\n framebufferScaleFactor\n };\n glBaseLayer = new XRWebGLLayer(session, gl, layerInit);\n session.updateRenderState({baseLayer: glBaseLayer});\n newRenderTarget = new WebGLRenderTarget(glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, {\n format: RGBAFormat,\n type: UnsignedByteType,\n encoding: renderer.outputEncoding\n });\n } else {\n isMultisample = attributes.antialias;\n let depthFormat = null;\n let depthType = null;\n let glDepthFormat = null;\n if (attributes.depth) {\n glDepthFormat = attributes.stencil ? 35056 : 33190;\n depthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n depthType = attributes.stencil ? UnsignedInt248Type : UnsignedShortType;\n }\n const projectionlayerInit = {\n colorFormat: attributes.alpha || isMultisample ? 32856 : 32849,\n depthFormat: glDepthFormat,\n scaleFactor: framebufferScaleFactor\n };\n glBinding = new XRWebGLBinding(session, gl);\n glProjLayer = glBinding.createProjectionLayer(projectionlayerInit);\n session.updateRenderState({layers: [glProjLayer]});\n if (isMultisample) {\n newRenderTarget = new WebGLMultisampleRenderTarget(glProjLayer.textureWidth, glProjLayer.textureHeight, {\n format: RGBAFormat,\n type: UnsignedByteType,\n depthTexture: new DepthTexture(glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, void 0, void 0, void 0, void 0, void 0, void 0, depthFormat),\n stencilBuffer: attributes.stencil,\n ignoreDepth: glProjLayer.ignoreDepthValues,\n useRenderToTexture: hasMultisampledRenderToTexture,\n encoding: renderer.outputEncoding\n });\n } else {\n newRenderTarget = new WebGLRenderTarget(glProjLayer.textureWidth, glProjLayer.textureHeight, {\n format: attributes.alpha ? RGBAFormat : RGBFormat,\n type: UnsignedByteType,\n depthTexture: new DepthTexture(glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, void 0, void 0, void 0, void 0, void 0, void 0, depthFormat),\n stencilBuffer: attributes.stencil,\n ignoreDepth: glProjLayer.ignoreDepthValues,\n encoding: renderer.outputEncoding\n });\n }\n }\n this.setFoveation(1);\n referenceSpace = await session.requestReferenceSpace(referenceSpaceType);\n animation.setContext(session);\n animation.start();\n scope.isPresenting = true;\n scope.dispatchEvent({type: \"sessionstart\"});\n }\n };\n function onInputSourcesChange(event) {\n const inputSources = session.inputSources;\n for (let i = 0; i < controllers.length; i++) {\n inputSourcesMap.set(inputSources[i], controllers[i]);\n }\n for (let i = 0; i < event.removed.length; i++) {\n const inputSource = event.removed[i];\n const controller = inputSourcesMap.get(inputSource);\n if (controller) {\n controller.dispatchEvent({type: \"disconnected\", data: inputSource});\n inputSourcesMap.delete(inputSource);\n }\n }\n for (let i = 0; i < event.added.length; i++) {\n const inputSource = event.added[i];\n const controller = inputSourcesMap.get(inputSource);\n if (controller) {\n controller.dispatchEvent({type: \"connected\", data: inputSource});\n }\n }\n }\n const cameraLPos = new Vector3();\n const cameraRPos = new Vector3();\n function setProjectionFromUnion(camera, cameraL2, cameraR2) {\n cameraLPos.setFromMatrixPosition(cameraL2.matrixWorld);\n cameraRPos.setFromMatrixPosition(cameraR2.matrixWorld);\n const ipd = cameraLPos.distanceTo(cameraRPos);\n const projL = cameraL2.projectionMatrix.elements;\n const projR = cameraR2.projectionMatrix.elements;\n const near = projL[14] / (projL[10] - 1);\n const far = projL[14] / (projL[10] + 1);\n const topFov = (projL[9] + 1) / projL[5];\n const bottomFov = (projL[9] - 1) / projL[5];\n const leftFov = (projL[8] - 1) / projL[0];\n const rightFov = (projR[8] + 1) / projR[0];\n const left = near * leftFov;\n const right = near * rightFov;\n const zOffset = ipd / (-leftFov + rightFov);\n const xOffset = zOffset * -leftFov;\n cameraL2.matrixWorld.decompose(camera.position, camera.quaternion, camera.scale);\n camera.translateX(xOffset);\n camera.translateZ(zOffset);\n camera.matrixWorld.compose(camera.position, camera.quaternion, camera.scale);\n camera.matrixWorldInverse.copy(camera.matrixWorld).invert();\n const near2 = near + zOffset;\n const far2 = far + zOffset;\n const left2 = left - xOffset;\n const right2 = right + (ipd - xOffset);\n const top2 = topFov * far / far2 * near2;\n const bottom2 = bottomFov * far / far2 * near2;\n camera.projectionMatrix.makePerspective(left2, right2, top2, bottom2, near2, far2);\n }\n function updateCamera(camera, parent) {\n if (parent === null) {\n camera.matrixWorld.copy(camera.matrix);\n } else {\n camera.matrixWorld.multiplyMatrices(parent.matrixWorld, camera.matrix);\n }\n camera.matrixWorldInverse.copy(camera.matrixWorld).invert();\n }\n this.updateCamera = function(camera) {\n if (session === null)\n return;\n cameraVR.near = cameraR.near = cameraL.near = camera.near;\n cameraVR.far = cameraR.far = cameraL.far = camera.far;\n if (_currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far) {\n session.updateRenderState({\n depthNear: cameraVR.near,\n depthFar: cameraVR.far\n });\n _currentDepthNear = cameraVR.near;\n _currentDepthFar = cameraVR.far;\n }\n const parent = camera.parent;\n const cameras2 = cameraVR.cameras;\n updateCamera(cameraVR, parent);\n for (let i = 0; i < cameras2.length; i++) {\n updateCamera(cameras2[i], parent);\n }\n cameraVR.matrixWorld.decompose(cameraVR.position, cameraVR.quaternion, cameraVR.scale);\n camera.position.copy(cameraVR.position);\n camera.quaternion.copy(cameraVR.quaternion);\n camera.scale.copy(cameraVR.scale);\n camera.matrix.copy(cameraVR.matrix);\n camera.matrixWorld.copy(cameraVR.matrixWorld);\n const children = camera.children;\n for (let i = 0, l = children.length; i < l; i++) {\n children[i].updateMatrixWorld(true);\n }\n if (cameras2.length === 2) {\n setProjectionFromUnion(cameraVR, cameraL, cameraR);\n } else {\n cameraVR.projectionMatrix.copy(cameraL.projectionMatrix);\n }\n };\n this.getCamera = function() {\n return cameraVR;\n };\n this.getFoveation = function() {\n if (glProjLayer !== null) {\n return glProjLayer.fixedFoveation;\n }\n if (glBaseLayer !== null) {\n return glBaseLayer.fixedFoveation;\n }\n return void 0;\n };\n this.setFoveation = function(foveation) {\n if (glProjLayer !== null) {\n glProjLayer.fixedFoveation = foveation;\n }\n if (glBaseLayer !== null && glBaseLayer.fixedFoveation !== void 0) {\n glBaseLayer.fixedFoveation = foveation;\n }\n };\n let onAnimationFrameCallback = null;\n function onAnimationFrame(time, frame) {\n pose = frame.getViewerPose(referenceSpace);\n xrFrame = frame;\n if (pose !== null) {\n const views = pose.views;\n if (glBaseLayer !== null) {\n renderer.setRenderTargetFramebuffer(newRenderTarget, glBaseLayer.framebuffer);\n renderer.setRenderTarget(newRenderTarget);\n }\n let cameraVRNeedsUpdate = false;\n if (views.length !== cameraVR.cameras.length) {\n cameraVR.cameras.length = 0;\n cameraVRNeedsUpdate = true;\n }\n for (let i = 0; i < views.length; i++) {\n const view = views[i];\n let viewport = null;\n if (glBaseLayer !== null) {\n viewport = glBaseLayer.getViewport(view);\n } else {\n const glSubImage = glBinding.getViewSubImage(glProjLayer, view);\n viewport = glSubImage.viewport;\n if (i === 0) {\n renderer.setRenderTargetTextures(newRenderTarget, glSubImage.colorTexture, glProjLayer.ignoreDepthValues ? void 0 : glSubImage.depthStencilTexture);\n renderer.setRenderTarget(newRenderTarget);\n }\n }\n const camera = cameras[i];\n camera.matrix.fromArray(view.transform.matrix);\n camera.projectionMatrix.fromArray(view.projectionMatrix);\n camera.viewport.set(viewport.x, viewport.y, viewport.width, viewport.height);\n if (i === 0) {\n cameraVR.matrix.copy(camera.matrix);\n }\n if (cameraVRNeedsUpdate === true) {\n cameraVR.cameras.push(camera);\n }\n }\n }\n const inputSources = session.inputSources;\n for (let i = 0; i < controllers.length; i++) {\n const controller = controllers[i];\n const inputSource = inputSources[i];\n controller.update(inputSource, frame, referenceSpace);\n }\n if (onAnimationFrameCallback)\n onAnimationFrameCallback(time, frame);\n xrFrame = null;\n }\n const animation = new WebGLAnimation();\n animation.setAnimationLoop(onAnimationFrame);\n this.setAnimationLoop = function(callback) {\n onAnimationFrameCallback = callback;\n };\n this.dispose = function() {\n };\n }\n}\nfunction WebGLMaterials(properties) {\n function refreshFogUniforms(uniforms, fog) {\n uniforms.fogColor.value.copy(fog.color);\n if (fog.isFog) {\n uniforms.fogNear.value = fog.near;\n uniforms.fogFar.value = fog.far;\n } else if (fog.isFogExp2) {\n uniforms.fogDensity.value = fog.density;\n }\n }\n function refreshMaterialUniforms(uniforms, material, pixelRatio, height, transmissionRenderTarget) {\n if (material.isMeshBasicMaterial) {\n refreshUniformsCommon(uniforms, material);\n } else if (material.isMeshLambertMaterial) {\n refreshUniformsCommon(uniforms, material);\n refreshUniformsLambert(uniforms, material);\n } else if (material.isMeshToonMaterial) {\n refreshUniformsCommon(uniforms, material);\n refreshUniformsToon(uniforms, material);\n } else if (material.isMeshPhongMaterial) {\n refreshUniformsCommon(uniforms, material);\n refreshUniformsPhong(uniforms, material);\n } else if (material.isMeshStandardMaterial) {\n refreshUniformsCommon(uniforms, material);\n if (material.isMeshPhysicalMaterial) {\n refreshUniformsPhysical(uniforms, material, transmissionRenderTarget);\n } else {\n refreshUniformsStandard(uniforms, material);\n }\n } else if (material.isMeshMatcapMaterial) {\n refreshUniformsCommon(uniforms, material);\n refreshUniformsMatcap(uniforms, material);\n } else if (material.isMeshDepthMaterial) {\n refreshUniformsCommon(uniforms, material);\n refreshUniformsDepth(uniforms, material);\n } else if (material.isMeshDistanceMaterial) {\n refreshUniformsCommon(uniforms, material);\n refreshUniformsDistance(uniforms, material);\n } else if (material.isMeshNormalMaterial) {\n refreshUniformsCommon(uniforms, material);\n refreshUniformsNormal(uniforms, material);\n } else if (material.isLineBasicMaterial) {\n refreshUniformsLine(uniforms, material);\n if (material.isLineDashedMaterial) {\n refreshUniformsDash(uniforms, material);\n }\n } else if (material.isPointsMaterial) {\n refreshUniformsPoints(uniforms, material, pixelRatio, height);\n } else if (material.isSpriteMaterial) {\n refreshUniformsSprites(uniforms, material);\n } else if (material.isShadowMaterial) {\n uniforms.color.value.copy(material.color);\n uniforms.opacity.value = material.opacity;\n } else if (material.isShaderMaterial) {\n material.uniformsNeedUpdate = false;\n }\n }\n function refreshUniformsCommon(uniforms, material) {\n uniforms.opacity.value = material.opacity;\n if (material.color) {\n uniforms.diffuse.value.copy(material.color);\n }\n if (material.emissive) {\n uniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity);\n }\n if (material.map) {\n uniforms.map.value = material.map;\n }\n if (material.alphaMap) {\n uniforms.alphaMap.value = material.alphaMap;\n }\n if (material.specularMap) {\n uniforms.specularMap.value = material.specularMap;\n }\n if (material.alphaTest > 0) {\n uniforms.alphaTest.value = material.alphaTest;\n }\n const envMap = properties.get(material).envMap;\n if (envMap) {\n uniforms.envMap.value = envMap;\n uniforms.flipEnvMap.value = envMap.isCubeTexture && envMap.isRenderTargetTexture === false ? -1 : 1;\n uniforms.reflectivity.value = material.reflectivity;\n uniforms.ior.value = material.ior;\n uniforms.refractionRatio.value = material.refractionRatio;\n }\n if (material.lightMap) {\n uniforms.lightMap.value = material.lightMap;\n uniforms.lightMapIntensity.value = material.lightMapIntensity;\n }\n if (material.aoMap) {\n uniforms.aoMap.value = material.aoMap;\n uniforms.aoMapIntensity.value = material.aoMapIntensity;\n }\n let uvScaleMap;\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.roughnessMap) {\n uvScaleMap = material.roughnessMap;\n } else if (material.metalnessMap) {\n uvScaleMap = material.metalnessMap;\n } else if (material.alphaMap) {\n uvScaleMap = material.alphaMap;\n } else if (material.emissiveMap) {\n uvScaleMap = material.emissiveMap;\n } else if (material.clearcoatMap) {\n uvScaleMap = material.clearcoatMap;\n } else if (material.clearcoatNormalMap) {\n uvScaleMap = material.clearcoatNormalMap;\n } else if (material.clearcoatRoughnessMap) {\n uvScaleMap = material.clearcoatRoughnessMap;\n } else if (material.specularIntensityMap) {\n uvScaleMap = material.specularIntensityMap;\n } else if (material.specularColorMap) {\n uvScaleMap = material.specularColorMap;\n } else if (material.transmissionMap) {\n uvScaleMap = material.transmissionMap;\n } else if (material.thicknessMap) {\n uvScaleMap = material.thicknessMap;\n } else if (material.sheenColorMap) {\n uvScaleMap = material.sheenColorMap;\n } else if (material.sheenRoughnessMap) {\n uvScaleMap = material.sheenRoughnessMap;\n }\n if (uvScaleMap !== void 0) {\n if (uvScaleMap.isWebGLRenderTarget) {\n uvScaleMap = uvScaleMap.texture;\n }\n if (uvScaleMap.matrixAutoUpdate === true) {\n uvScaleMap.updateMatrix();\n }\n uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n }\n let uv2ScaleMap;\n if (material.aoMap) {\n uv2ScaleMap = material.aoMap;\n } else if (material.lightMap) {\n uv2ScaleMap = material.lightMap;\n }\n if (uv2ScaleMap !== void 0) {\n if (uv2ScaleMap.isWebGLRenderTarget) {\n uv2ScaleMap = uv2ScaleMap.texture;\n }\n if (uv2ScaleMap.matrixAutoUpdate === true) {\n uv2ScaleMap.updateMatrix();\n }\n uniforms.uv2Transform.value.copy(uv2ScaleMap.matrix);\n }\n }\n function refreshUniformsLine(uniforms, material) {\n uniforms.diffuse.value.copy(material.color);\n uniforms.opacity.value = material.opacity;\n }\n function refreshUniformsDash(uniforms, material) {\n uniforms.dashSize.value = material.dashSize;\n uniforms.totalSize.value = material.dashSize + material.gapSize;\n uniforms.scale.value = material.scale;\n }\n function refreshUniformsPoints(uniforms, material, pixelRatio, height) {\n uniforms.diffuse.value.copy(material.color);\n uniforms.opacity.value = material.opacity;\n uniforms.size.value = material.size * pixelRatio;\n uniforms.scale.value = height * 0.5;\n if (material.map) {\n uniforms.map.value = material.map;\n }\n if (material.alphaMap) {\n uniforms.alphaMap.value = material.alphaMap;\n }\n if (material.alphaTest > 0) {\n uniforms.alphaTest.value = material.alphaTest;\n }\n let uvScaleMap;\n if (material.map) {\n uvScaleMap = material.map;\n } else if (material.alphaMap) {\n uvScaleMap = material.alphaMap;\n }\n if (uvScaleMap !== void 0) {\n if (uvScaleMap.matrixAutoUpdate === true) {\n uvScaleMap.updateMatrix();\n }\n uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n }\n }\n function refreshUniformsSprites(uniforms, material) {\n uniforms.diffuse.value.copy(material.color);\n uniforms.opacity.value = material.opacity;\n uniforms.rotation.value = material.rotation;\n if (material.map) {\n uniforms.map.value = material.map;\n }\n if (material.alphaMap) {\n uniforms.alphaMap.value = material.alphaMap;\n }\n if (material.alphaTest > 0) {\n uniforms.alphaTest.value = material.alphaTest;\n }\n let uvScaleMap;\n if (material.map) {\n uvScaleMap = material.map;\n } else if (material.alphaMap) {\n uvScaleMap = material.alphaMap;\n }\n if (uvScaleMap !== void 0) {\n if (uvScaleMap.matrixAutoUpdate === true) {\n uvScaleMap.updateMatrix();\n }\n uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n }\n }\n function refreshUniformsLambert(uniforms, material) {\n if (material.emissiveMap) {\n uniforms.emissiveMap.value = material.emissiveMap;\n }\n }\n function refreshUniformsPhong(uniforms, material) {\n uniforms.specular.value.copy(material.specular);\n uniforms.shininess.value = Math.max(material.shininess, 1e-4);\n if (material.emissiveMap) {\n uniforms.emissiveMap.value = material.emissiveMap;\n }\n if (material.bumpMap) {\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.bumpScale.value = material.bumpScale;\n if (material.side === BackSide)\n uniforms.bumpScale.value *= -1;\n }\n if (material.normalMap) {\n uniforms.normalMap.value = material.normalMap;\n uniforms.normalScale.value.copy(material.normalScale);\n if (material.side === BackSide)\n uniforms.normalScale.value.negate();\n }\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n }\n function refreshUniformsToon(uniforms, material) {\n if (material.gradientMap) {\n uniforms.gradientMap.value = material.gradientMap;\n }\n if (material.emissiveMap) {\n uniforms.emissiveMap.value = material.emissiveMap;\n }\n if (material.bumpMap) {\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.bumpScale.value = material.bumpScale;\n if (material.side === BackSide)\n uniforms.bumpScale.value *= -1;\n }\n if (material.normalMap) {\n uniforms.normalMap.value = material.normalMap;\n uniforms.normalScale.value.copy(material.normalScale);\n if (material.side === BackSide)\n uniforms.normalScale.value.negate();\n }\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n }\n function refreshUniformsStandard(uniforms, material) {\n uniforms.roughness.value = material.roughness;\n uniforms.metalness.value = material.metalness;\n if (material.roughnessMap) {\n uniforms.roughnessMap.value = material.roughnessMap;\n }\n if (material.metalnessMap) {\n uniforms.metalnessMap.value = material.metalnessMap;\n }\n if (material.emissiveMap) {\n uniforms.emissiveMap.value = material.emissiveMap;\n }\n if (material.bumpMap) {\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.bumpScale.value = material.bumpScale;\n if (material.side === BackSide)\n uniforms.bumpScale.value *= -1;\n }\n if (material.normalMap) {\n uniforms.normalMap.value = material.normalMap;\n uniforms.normalScale.value.copy(material.normalScale);\n if (material.side === BackSide)\n uniforms.normalScale.value.negate();\n }\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n const envMap = properties.get(material).envMap;\n if (envMap) {\n uniforms.envMapIntensity.value = material.envMapIntensity;\n }\n }\n function refreshUniformsPhysical(uniforms, material, transmissionRenderTarget) {\n refreshUniformsStandard(uniforms, material);\n uniforms.ior.value = material.ior;\n if (material.sheen > 0) {\n uniforms.sheenColor.value.copy(material.sheenColor).multiplyScalar(material.sheen);\n uniforms.sheenRoughness.value = material.sheenRoughness;\n if (material.sheenColorMap) {\n uniforms.sheenColorMap.value = material.sheenColorMap;\n }\n if (material.sheenRoughnessMap) {\n uniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n }\n }\n if (material.clearcoat > 0) {\n uniforms.clearcoat.value = material.clearcoat;\n uniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n if (material.clearcoatMap) {\n uniforms.clearcoatMap.value = material.clearcoatMap;\n }\n if (material.clearcoatRoughnessMap) {\n uniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n }\n if (material.clearcoatNormalMap) {\n uniforms.clearcoatNormalScale.value.copy(material.clearcoatNormalScale);\n uniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n if (material.side === BackSide) {\n uniforms.clearcoatNormalScale.value.negate();\n }\n }\n }\n if (material.transmission > 0) {\n uniforms.transmission.value = material.transmission;\n uniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n uniforms.transmissionSamplerSize.value.set(transmissionRenderTarget.width, transmissionRenderTarget.height);\n if (material.transmissionMap) {\n uniforms.transmissionMap.value = material.transmissionMap;\n }\n uniforms.thickness.value = material.thickness;\n if (material.thicknessMap) {\n uniforms.thicknessMap.value = material.thicknessMap;\n }\n uniforms.attenuationDistance.value = material.attenuationDistance;\n uniforms.attenuationColor.value.copy(material.attenuationColor);\n }\n uniforms.specularIntensity.value = material.specularIntensity;\n uniforms.specularColor.value.copy(material.specularColor);\n if (material.specularIntensityMap) {\n uniforms.specularIntensityMap.value = material.specularIntensityMap;\n }\n if (material.specularColorMap) {\n uniforms.specularColorMap.value = material.specularColorMap;\n }\n }\n function refreshUniformsMatcap(uniforms, material) {\n if (material.matcap) {\n uniforms.matcap.value = material.matcap;\n }\n if (material.bumpMap) {\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.bumpScale.value = material.bumpScale;\n if (material.side === BackSide)\n uniforms.bumpScale.value *= -1;\n }\n if (material.normalMap) {\n uniforms.normalMap.value = material.normalMap;\n uniforms.normalScale.value.copy(material.normalScale);\n if (material.side === BackSide)\n uniforms.normalScale.value.negate();\n }\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n }\n function refreshUniformsDepth(uniforms, material) {\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n }\n function refreshUniformsDistance(uniforms, material) {\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n uniforms.referencePosition.value.copy(material.referencePosition);\n uniforms.nearDistance.value = material.nearDistance;\n uniforms.farDistance.value = material.farDistance;\n }\n function refreshUniformsNormal(uniforms, material) {\n if (material.bumpMap) {\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.bumpScale.value = material.bumpScale;\n if (material.side === BackSide)\n uniforms.bumpScale.value *= -1;\n }\n if (material.normalMap) {\n uniforms.normalMap.value = material.normalMap;\n uniforms.normalScale.value.copy(material.normalScale);\n if (material.side === BackSide)\n uniforms.normalScale.value.negate();\n }\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n }\n return {\n refreshFogUniforms,\n refreshMaterialUniforms\n };\n}\nfunction createCanvasElement() {\n const canvas = createElementNS(\"canvas\");\n canvas.style.display = \"block\";\n return canvas;\n}\nfunction WebGLRenderer(parameters = {}) {\n const _canvas2 = parameters.canvas !== void 0 ? parameters.canvas : createCanvasElement(), _context2 = parameters.context !== void 0 ? parameters.context : null, _alpha = parameters.alpha !== void 0 ? parameters.alpha : false, _depth = parameters.depth !== void 0 ? parameters.depth : true, _stencil = parameters.stencil !== void 0 ? parameters.stencil : true, _antialias = parameters.antialias !== void 0 ? parameters.antialias : false, _premultipliedAlpha = parameters.premultipliedAlpha !== void 0 ? parameters.premultipliedAlpha : true, _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== void 0 ? parameters.preserveDrawingBuffer : false, _powerPreference = parameters.powerPreference !== void 0 ? parameters.powerPreference : \"default\", _failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== void 0 ? parameters.failIfMajorPerformanceCaveat : false;\n let currentRenderList = null;\n let currentRenderState = null;\n const renderListStack = [];\n const renderStateStack = [];\n this.domElement = _canvas2;\n this.debug = {\n checkShaderErrors: true\n };\n this.autoClear = true;\n this.autoClearColor = true;\n this.autoClearDepth = true;\n this.autoClearStencil = true;\n this.sortObjects = true;\n this.clippingPlanes = [];\n this.localClippingEnabled = false;\n this.outputEncoding = LinearEncoding;\n this.physicallyCorrectLights = false;\n this.toneMapping = NoToneMapping;\n this.toneMappingExposure = 1;\n const _this = this;\n let _isContextLost = false;\n let _currentActiveCubeFace = 0;\n let _currentActiveMipmapLevel = 0;\n let _currentRenderTarget = null;\n let _currentMaterialId = -1;\n let _currentCamera = null;\n const _currentViewport = new Vector4();\n const _currentScissor = new Vector4();\n let _currentScissorTest = null;\n let _width = _canvas2.width;\n let _height = _canvas2.height;\n let _pixelRatio = 1;\n let _opaqueSort = null;\n let _transparentSort = null;\n const _viewport = new Vector4(0, 0, _width, _height);\n const _scissor = new Vector4(0, 0, _width, _height);\n let _scissorTest = false;\n const _currentDrawBuffers = [];\n const _frustum = new Frustum();\n let _clippingEnabled = false;\n let _localClippingEnabled = false;\n let _transmissionRenderTarget = null;\n const _projScreenMatrix2 = new Matrix4();\n const _vector3 = new Vector3();\n const _emptyScene = {background: null, fog: null, environment: null, overrideMaterial: null, isScene: true};\n function getTargetPixelRatio() {\n return _currentRenderTarget === null ? _pixelRatio : 1;\n }\n let _gl = _context2;\n function getContext(contextNames, contextAttributes) {\n for (let i = 0; i < contextNames.length; i++) {\n const contextName = contextNames[i];\n const context = _canvas2.getContext(contextName, contextAttributes);\n if (context !== null)\n return context;\n }\n return null;\n }\n try {\n const contextAttributes = {\n alpha: _alpha,\n depth: _depth,\n stencil: _stencil,\n antialias: _antialias,\n premultipliedAlpha: _premultipliedAlpha,\n preserveDrawingBuffer: _preserveDrawingBuffer,\n powerPreference: _powerPreference,\n failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n };\n if (\"setAttribute\" in _canvas2)\n _canvas2.setAttribute(\"data-engine\", `three.js r${REVISION}`);\n _canvas2.addEventListener(\"webglcontextlost\", onContextLost, false);\n _canvas2.addEventListener(\"webglcontextrestored\", onContextRestore, false);\n if (_gl === null) {\n const contextNames = [\"webgl2\", \"webgl\", \"experimental-webgl\"];\n if (_this.isWebGL1Renderer === true) {\n contextNames.shift();\n }\n _gl = getContext(contextNames, contextAttributes);\n if (_gl === null) {\n if (getContext(contextNames)) {\n throw new Error(\"Error creating WebGL context with your selected attributes.\");\n } else {\n throw new Error(\"Error creating WebGL context.\");\n }\n }\n }\n if (_gl.getShaderPrecisionFormat === void 0) {\n _gl.getShaderPrecisionFormat = function() {\n return {rangeMin: 1, rangeMax: 1, precision: 1};\n };\n }\n } catch (error) {\n console.error(\"THREE.WebGLRenderer: \" + error.message);\n throw error;\n }\n let extensions, capabilities, state, info;\n let properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n let programCache, materials, renderLists, renderStates, clipping, shadowMap;\n let background, morphtargets, bufferRenderer, indexedBufferRenderer;\n let utils, bindingStates;\n function initGLContext() {\n extensions = new WebGLExtensions(_gl);\n capabilities = new WebGLCapabilities(_gl, extensions, parameters);\n extensions.init(capabilities);\n utils = new WebGLUtils(_gl, extensions, capabilities);\n state = new WebGLState(_gl, extensions, capabilities);\n _currentDrawBuffers[0] = 1029;\n info = new WebGLInfo(_gl);\n properties = new WebGLProperties();\n textures = new WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info);\n cubemaps = new WebGLCubeMaps(_this);\n cubeuvmaps = new WebGLCubeUVMaps(_this);\n attributes = new WebGLAttributes(_gl, capabilities);\n bindingStates = new WebGLBindingStates(_gl, extensions, attributes, capabilities);\n geometries = new WebGLGeometries(_gl, attributes, info, bindingStates);\n objects = new WebGLObjects(_gl, geometries, attributes, info);\n morphtargets = new WebGLMorphtargets(_gl, capabilities, textures);\n clipping = new WebGLClipping(properties);\n programCache = new WebGLPrograms(_this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping);\n materials = new WebGLMaterials(properties);\n renderLists = new WebGLRenderLists();\n renderStates = new WebGLRenderStates(extensions, capabilities);\n background = new WebGLBackground(_this, cubemaps, state, objects, _premultipliedAlpha);\n shadowMap = new WebGLShadowMap(_this, objects, capabilities);\n bufferRenderer = new WebGLBufferRenderer(_gl, extensions, info, capabilities);\n indexedBufferRenderer = new WebGLIndexedBufferRenderer(_gl, extensions, info, capabilities);\n info.programs = programCache.programs;\n _this.capabilities = capabilities;\n _this.extensions = extensions;\n _this.properties = properties;\n _this.renderLists = renderLists;\n _this.shadowMap = shadowMap;\n _this.state = state;\n _this.info = info;\n }\n initGLContext();\n const xr = new WebXRManager(_this, _gl);\n this.xr = xr;\n this.getContext = function() {\n return _gl;\n };\n this.getContextAttributes = function() {\n return _gl.getContextAttributes();\n };\n this.forceContextLoss = function() {\n const extension = extensions.get(\"WEBGL_lose_context\");\n if (extension)\n extension.loseContext();\n };\n this.forceContextRestore = function() {\n const extension = extensions.get(\"WEBGL_lose_context\");\n if (extension)\n extension.restoreContext();\n };\n this.getPixelRatio = function() {\n return _pixelRatio;\n };\n this.setPixelRatio = function(value) {\n if (value === void 0)\n return;\n _pixelRatio = value;\n this.setSize(_width, _height, false);\n };\n this.getSize = function(target) {\n return target.set(_width, _height);\n };\n this.setSize = function(width, height, updateStyle) {\n if (xr.isPresenting) {\n console.warn(\"THREE.WebGLRenderer: Can't change size while VR device is presenting.\");\n return;\n }\n _width = width;\n _height = height;\n _canvas2.width = Math.floor(width * _pixelRatio);\n _canvas2.height = Math.floor(height * _pixelRatio);\n if (updateStyle !== false) {\n _canvas2.style.width = width + \"px\";\n _canvas2.style.height = height + \"px\";\n }\n this.setViewport(0, 0, width, height);\n };\n this.getDrawingBufferSize = function(target) {\n return target.set(_width * _pixelRatio, _height * _pixelRatio).floor();\n };\n this.setDrawingBufferSize = function(width, height, pixelRatio) {\n _width = width;\n _height = height;\n _pixelRatio = pixelRatio;\n _canvas2.width = Math.floor(width * pixelRatio);\n _canvas2.height = Math.floor(height * pixelRatio);\n this.setViewport(0, 0, width, height);\n };\n this.getCurrentViewport = function(target) {\n return target.copy(_currentViewport);\n };\n this.getViewport = function(target) {\n return target.copy(_viewport);\n };\n this.setViewport = function(x, y, width, height) {\n if (x.isVector4) {\n _viewport.set(x.x, x.y, x.z, x.w);\n } else {\n _viewport.set(x, y, width, height);\n }\n state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor());\n };\n this.getScissor = function(target) {\n return target.copy(_scissor);\n };\n this.setScissor = function(x, y, width, height) {\n if (x.isVector4) {\n _scissor.set(x.x, x.y, x.z, x.w);\n } else {\n _scissor.set(x, y, width, height);\n }\n state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor());\n };\n this.getScissorTest = function() {\n return _scissorTest;\n };\n this.setScissorTest = function(boolean) {\n state.setScissorTest(_scissorTest = boolean);\n };\n this.setOpaqueSort = function(method) {\n _opaqueSort = method;\n };\n this.setTransparentSort = function(method) {\n _transparentSort = method;\n };\n this.getClearColor = function(target) {\n return target.copy(background.getClearColor());\n };\n this.setClearColor = function() {\n background.setClearColor.apply(background, arguments);\n };\n this.getClearAlpha = function() {\n return background.getClearAlpha();\n };\n this.setClearAlpha = function() {\n background.setClearAlpha.apply(background, arguments);\n };\n this.clear = function(color, depth, stencil) {\n let bits = 0;\n if (color === void 0 || color)\n bits |= 16384;\n if (depth === void 0 || depth)\n bits |= 256;\n if (stencil === void 0 || stencil)\n bits |= 1024;\n _gl.clear(bits);\n };\n this.clearColor = function() {\n this.clear(true, false, false);\n };\n this.clearDepth = function() {\n this.clear(false, true, false);\n };\n this.clearStencil = function() {\n this.clear(false, false, true);\n };\n this.dispose = function() {\n _canvas2.removeEventListener(\"webglcontextlost\", onContextLost, false);\n _canvas2.removeEventListener(\"webglcontextrestored\", onContextRestore, false);\n renderLists.dispose();\n renderStates.dispose();\n properties.dispose();\n cubemaps.dispose();\n cubeuvmaps.dispose();\n objects.dispose();\n bindingStates.dispose();\n programCache.dispose();\n xr.dispose();\n xr.removeEventListener(\"sessionstart\", onXRSessionStart);\n xr.removeEventListener(\"sessionend\", onXRSessionEnd);\n if (_transmissionRenderTarget) {\n _transmissionRenderTarget.dispose();\n _transmissionRenderTarget = null;\n }\n animation.stop();\n };\n function onContextLost(event) {\n event.preventDefault();\n console.log(\"THREE.WebGLRenderer: Context Lost.\");\n _isContextLost = true;\n }\n function onContextRestore() {\n console.log(\"THREE.WebGLRenderer: Context Restored.\");\n _isContextLost = false;\n const infoAutoReset = info.autoReset;\n const shadowMapEnabled = shadowMap.enabled;\n const shadowMapAutoUpdate = shadowMap.autoUpdate;\n const shadowMapNeedsUpdate = shadowMap.needsUpdate;\n const shadowMapType = shadowMap.type;\n initGLContext();\n info.autoReset = infoAutoReset;\n shadowMap.enabled = shadowMapEnabled;\n shadowMap.autoUpdate = shadowMapAutoUpdate;\n shadowMap.needsUpdate = shadowMapNeedsUpdate;\n shadowMap.type = shadowMapType;\n }\n function onMaterialDispose(event) {\n const material = event.target;\n material.removeEventListener(\"dispose\", onMaterialDispose);\n deallocateMaterial(material);\n }\n function deallocateMaterial(material) {\n releaseMaterialProgramReferences(material);\n properties.remove(material);\n }\n function releaseMaterialProgramReferences(material) {\n const programs = properties.get(material).programs;\n if (programs !== void 0) {\n programs.forEach(function(program) {\n programCache.releaseProgram(program);\n });\n if (material.isShaderMaterial) {\n programCache.releaseShaderCache(material);\n }\n }\n }\n this.renderBufferDirect = function(camera, scene, geometry, material, object, group) {\n if (scene === null)\n scene = _emptyScene;\n const frontFaceCW = object.isMesh && object.matrixWorld.determinant() < 0;\n const program = setProgram(camera, scene, geometry, material, object);\n state.setMaterial(material, frontFaceCW);\n let index = geometry.index;\n const position = geometry.attributes.position;\n if (index === null) {\n if (position === void 0 || position.count === 0)\n return;\n } else if (index.count === 0) {\n return;\n }\n let rangeFactor = 1;\n if (material.wireframe === true) {\n index = geometries.getWireframeAttribute(geometry);\n rangeFactor = 2;\n }\n bindingStates.setup(object, material, program, geometry, index);\n let attribute;\n let renderer = bufferRenderer;\n if (index !== null) {\n attribute = attributes.get(index);\n renderer = indexedBufferRenderer;\n renderer.setIndex(attribute);\n }\n const dataCount = index !== null ? index.count : position.count;\n const rangeStart = geometry.drawRange.start * rangeFactor;\n const rangeCount = geometry.drawRange.count * rangeFactor;\n const groupStart = group !== null ? group.start * rangeFactor : 0;\n const groupCount = group !== null ? group.count * rangeFactor : Infinity;\n const drawStart = Math.max(rangeStart, groupStart);\n const drawEnd = Math.min(dataCount, rangeStart + rangeCount, groupStart + groupCount) - 1;\n const drawCount = Math.max(0, drawEnd - drawStart + 1);\n if (drawCount === 0)\n return;\n if (object.isMesh) {\n if (material.wireframe === true) {\n state.setLineWidth(material.wireframeLinewidth * getTargetPixelRatio());\n renderer.setMode(1);\n } else {\n renderer.setMode(4);\n }\n } else if (object.isLine) {\n let lineWidth = material.linewidth;\n if (lineWidth === void 0)\n lineWidth = 1;\n state.setLineWidth(lineWidth * getTargetPixelRatio());\n if (object.isLineSegments) {\n renderer.setMode(1);\n } else if (object.isLineLoop) {\n renderer.setMode(2);\n } else {\n renderer.setMode(3);\n }\n } else if (object.isPoints) {\n renderer.setMode(0);\n } else if (object.isSprite) {\n renderer.setMode(4);\n }\n if (object.isInstancedMesh) {\n renderer.renderInstances(drawStart, drawCount, object.count);\n } else if (geometry.isInstancedBufferGeometry) {\n const instanceCount = Math.min(geometry.instanceCount, geometry._maxInstanceCount);\n renderer.renderInstances(drawStart, drawCount, instanceCount);\n } else {\n renderer.render(drawStart, drawCount);\n }\n };\n this.compile = function(scene, camera) {\n currentRenderState = renderStates.get(scene);\n currentRenderState.init();\n renderStateStack.push(currentRenderState);\n scene.traverseVisible(function(object) {\n if (object.isLight && object.layers.test(camera.layers)) {\n currentRenderState.pushLight(object);\n if (object.castShadow) {\n currentRenderState.pushShadow(object);\n }\n }\n });\n currentRenderState.setupLights(_this.physicallyCorrectLights);\n scene.traverse(function(object) {\n const material = object.material;\n if (material) {\n if (Array.isArray(material)) {\n for (let i = 0; i < material.length; i++) {\n const material2 = material[i];\n getProgram(material2, scene, object);\n }\n } else {\n getProgram(material, scene, object);\n }\n }\n });\n renderStateStack.pop();\n currentRenderState = null;\n };\n let onAnimationFrameCallback = null;\n function onAnimationFrame(time) {\n if (onAnimationFrameCallback)\n onAnimationFrameCallback(time);\n }\n function onXRSessionStart() {\n animation.stop();\n }\n function onXRSessionEnd() {\n animation.start();\n }\n const animation = new WebGLAnimation();\n animation.setAnimationLoop(onAnimationFrame);\n if (typeof window !== \"undefined\")\n animation.setContext(window);\n this.setAnimationLoop = function(callback) {\n onAnimationFrameCallback = callback;\n xr.setAnimationLoop(callback);\n callback === null ? animation.stop() : animation.start();\n };\n xr.addEventListener(\"sessionstart\", onXRSessionStart);\n xr.addEventListener(\"sessionend\", onXRSessionEnd);\n this.render = function(scene, camera) {\n if (camera !== void 0 && camera.isCamera !== true) {\n console.error(\"THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.\");\n return;\n }\n if (_isContextLost === true)\n return;\n if (scene.autoUpdate === true)\n scene.updateMatrixWorld();\n if (camera.parent === null)\n camera.updateMatrixWorld();\n if (xr.enabled === true && xr.isPresenting === true) {\n if (xr.cameraAutoUpdate === true)\n xr.updateCamera(camera);\n camera = xr.getCamera();\n }\n if (scene.isScene === true)\n scene.onBeforeRender(_this, scene, camera, _currentRenderTarget);\n currentRenderState = renderStates.get(scene, renderStateStack.length);\n currentRenderState.init();\n renderStateStack.push(currentRenderState);\n _projScreenMatrix2.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n _frustum.setFromProjectionMatrix(_projScreenMatrix2);\n _localClippingEnabled = this.localClippingEnabled;\n _clippingEnabled = clipping.init(this.clippingPlanes, _localClippingEnabled, camera);\n currentRenderList = renderLists.get(scene, renderListStack.length);\n currentRenderList.init();\n renderListStack.push(currentRenderList);\n projectObject(scene, camera, 0, _this.sortObjects);\n currentRenderList.finish();\n if (_this.sortObjects === true) {\n currentRenderList.sort(_opaqueSort, _transparentSort);\n }\n if (_clippingEnabled === true)\n clipping.beginShadows();\n const shadowsArray = currentRenderState.state.shadowsArray;\n shadowMap.render(shadowsArray, scene, camera);\n if (_clippingEnabled === true)\n clipping.endShadows();\n if (this.info.autoReset === true)\n this.info.reset();\n background.render(currentRenderList, scene);\n currentRenderState.setupLights(_this.physicallyCorrectLights);\n if (camera.isArrayCamera) {\n const cameras = camera.cameras;\n for (let i = 0, l = cameras.length; i < l; i++) {\n const camera2 = cameras[i];\n renderScene(currentRenderList, scene, camera2, camera2.viewport);\n }\n } else {\n renderScene(currentRenderList, scene, camera);\n }\n if (_currentRenderTarget !== null) {\n textures.updateMultisampleRenderTarget(_currentRenderTarget);\n textures.updateRenderTargetMipmap(_currentRenderTarget);\n }\n if (scene.isScene === true)\n scene.onAfterRender(_this, scene, camera);\n state.buffers.depth.setTest(true);\n state.buffers.depth.setMask(true);\n state.buffers.color.setMask(true);\n state.setPolygonOffset(false);\n bindingStates.resetDefaultState();\n _currentMaterialId = -1;\n _currentCamera = null;\n renderStateStack.pop();\n if (renderStateStack.length > 0) {\n currentRenderState = renderStateStack[renderStateStack.length - 1];\n } else {\n currentRenderState = null;\n }\n renderListStack.pop();\n if (renderListStack.length > 0) {\n currentRenderList = renderListStack[renderListStack.length - 1];\n } else {\n currentRenderList = null;\n }\n };\n function projectObject(object, camera, groupOrder, sortObjects) {\n if (object.visible === false)\n return;\n const visible = object.layers.test(camera.layers);\n if (visible) {\n if (object.isGroup) {\n groupOrder = object.renderOrder;\n } else if (object.isLOD) {\n if (object.autoUpdate === true)\n object.update(camera);\n } else if (object.isLight) {\n currentRenderState.pushLight(object);\n if (object.castShadow) {\n currentRenderState.pushShadow(object);\n }\n } else if (object.isSprite) {\n if (!object.frustumCulled || _frustum.intersectsSprite(object)) {\n if (sortObjects) {\n _vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix2);\n }\n const geometry = objects.update(object);\n const material = object.material;\n if (material.visible) {\n currentRenderList.push(object, geometry, material, groupOrder, _vector3.z, null);\n }\n }\n } else if (object.isMesh || object.isLine || object.isPoints) {\n if (object.isSkinnedMesh) {\n if (object.skeleton.frame !== info.render.frame) {\n object.skeleton.update();\n object.skeleton.frame = info.render.frame;\n }\n }\n if (!object.frustumCulled || _frustum.intersectsObject(object)) {\n if (sortObjects) {\n _vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix2);\n }\n const geometry = objects.update(object);\n const material = object.material;\n if (Array.isArray(material)) {\n const groups = geometry.groups;\n for (let i = 0, l = groups.length; i < l; i++) {\n const group = groups[i];\n const groupMaterial = material[group.materialIndex];\n if (groupMaterial && groupMaterial.visible) {\n currentRenderList.push(object, geometry, groupMaterial, groupOrder, _vector3.z, group);\n }\n }\n } else if (material.visible) {\n currentRenderList.push(object, geometry, material, groupOrder, _vector3.z, null);\n }\n }\n }\n }\n const children = object.children;\n for (let i = 0, l = children.length; i < l; i++) {\n projectObject(children[i], camera, groupOrder, sortObjects);\n }\n }\n function renderScene(currentRenderList2, scene, camera, viewport) {\n const opaqueObjects = currentRenderList2.opaque;\n const transmissiveObjects = currentRenderList2.transmissive;\n const transparentObjects = currentRenderList2.transparent;\n currentRenderState.setupLightsView(camera);\n if (transmissiveObjects.length > 0)\n renderTransmissionPass(opaqueObjects, scene, camera);\n if (viewport)\n state.viewport(_currentViewport.copy(viewport));\n if (opaqueObjects.length > 0)\n renderObjects(opaqueObjects, scene, camera);\n if (transmissiveObjects.length > 0)\n renderObjects(transmissiveObjects, scene, camera);\n if (transparentObjects.length > 0)\n renderObjects(transparentObjects, scene, camera);\n }\n function renderTransmissionPass(opaqueObjects, scene, camera) {\n if (_transmissionRenderTarget === null) {\n const needsAntialias = _antialias === true && capabilities.isWebGL2 === true;\n const renderTargetType = needsAntialias ? WebGLMultisampleRenderTarget : WebGLRenderTarget;\n _transmissionRenderTarget = new renderTargetType(1024, 1024, {\n generateMipmaps: true,\n type: utils.convert(HalfFloatType) !== null ? HalfFloatType : UnsignedByteType,\n minFilter: LinearMipmapLinearFilter,\n magFilter: NearestFilter,\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n useRenderToTexture: extensions.has(\"WEBGL_multisampled_render_to_texture\")\n });\n }\n const currentRenderTarget = _this.getRenderTarget();\n _this.setRenderTarget(_transmissionRenderTarget);\n _this.clear();\n const currentToneMapping = _this.toneMapping;\n _this.toneMapping = NoToneMapping;\n renderObjects(opaqueObjects, scene, camera);\n _this.toneMapping = currentToneMapping;\n textures.updateMultisampleRenderTarget(_transmissionRenderTarget);\n textures.updateRenderTargetMipmap(_transmissionRenderTarget);\n _this.setRenderTarget(currentRenderTarget);\n }\n function renderObjects(renderList, scene, camera) {\n const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n for (let i = 0, l = renderList.length; i < l; i++) {\n const renderItem = renderList[i];\n const object = renderItem.object;\n const geometry = renderItem.geometry;\n const material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n const group = renderItem.group;\n if (object.layers.test(camera.layers)) {\n renderObject(object, scene, camera, geometry, material, group);\n }\n }\n }\n function renderObject(object, scene, camera, geometry, material, group) {\n object.onBeforeRender(_this, scene, camera, geometry, material, group);\n object.modelViewMatrix.multiplyMatrices(camera.matrixWorldInverse, object.matrixWorld);\n object.normalMatrix.getNormalMatrix(object.modelViewMatrix);\n material.onBeforeRender(_this, scene, camera, geometry, object, group);\n if (material.transparent === true && material.side === DoubleSide) {\n material.side = BackSide;\n material.needsUpdate = true;\n _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n material.side = FrontSide;\n material.needsUpdate = true;\n _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n material.side = DoubleSide;\n } else {\n _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n }\n object.onAfterRender(_this, scene, camera, geometry, material, group);\n }\n function getProgram(material, scene, object) {\n if (scene.isScene !== true)\n scene = _emptyScene;\n const materialProperties = properties.get(material);\n const lights = currentRenderState.state.lights;\n const shadowsArray = currentRenderState.state.shadowsArray;\n const lightsStateVersion = lights.state.version;\n const parameters2 = programCache.getParameters(material, lights.state, shadowsArray, scene, object);\n const programCacheKey = programCache.getProgramCacheKey(parameters2);\n let programs = materialProperties.programs;\n materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n materialProperties.fog = scene.fog;\n materialProperties.envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || materialProperties.environment);\n if (programs === void 0) {\n material.addEventListener(\"dispose\", onMaterialDispose);\n programs = new Map();\n materialProperties.programs = programs;\n }\n let program = programs.get(programCacheKey);\n if (program !== void 0) {\n if (materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion) {\n updateCommonMaterialProperties(material, parameters2);\n return program;\n }\n } else {\n parameters2.uniforms = programCache.getUniforms(material);\n material.onBuild(object, parameters2, _this);\n material.onBeforeCompile(parameters2, _this);\n program = programCache.acquireProgram(parameters2, programCacheKey);\n programs.set(programCacheKey, program);\n materialProperties.uniforms = parameters2.uniforms;\n }\n const uniforms = materialProperties.uniforms;\n if (!material.isShaderMaterial && !material.isRawShaderMaterial || material.clipping === true) {\n uniforms.clippingPlanes = clipping.uniform;\n }\n updateCommonMaterialProperties(material, parameters2);\n materialProperties.needsLights = materialNeedsLights(material);\n materialProperties.lightsStateVersion = lightsStateVersion;\n if (materialProperties.needsLights) {\n uniforms.ambientLightColor.value = lights.state.ambient;\n uniforms.lightProbe.value = lights.state.probe;\n uniforms.directionalLights.value = lights.state.directional;\n uniforms.directionalLightShadows.value = lights.state.directionalShadow;\n uniforms.spotLights.value = lights.state.spot;\n uniforms.spotLightShadows.value = lights.state.spotShadow;\n uniforms.rectAreaLights.value = lights.state.rectArea;\n uniforms.ltc_1.value = lights.state.rectAreaLTC1;\n uniforms.ltc_2.value = lights.state.rectAreaLTC2;\n uniforms.pointLights.value = lights.state.point;\n uniforms.pointLightShadows.value = lights.state.pointShadow;\n uniforms.hemisphereLights.value = lights.state.hemi;\n uniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n uniforms.spotShadowMap.value = lights.state.spotShadowMap;\n uniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n uniforms.pointShadowMap.value = lights.state.pointShadowMap;\n uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n }\n const progUniforms = program.getUniforms();\n const uniformsList = WebGLUniforms.seqWithValue(progUniforms.seq, uniforms);\n materialProperties.currentProgram = program;\n materialProperties.uniformsList = uniformsList;\n return program;\n }\n function updateCommonMaterialProperties(material, parameters2) {\n const materialProperties = properties.get(material);\n materialProperties.outputEncoding = parameters2.outputEncoding;\n materialProperties.instancing = parameters2.instancing;\n materialProperties.skinning = parameters2.skinning;\n materialProperties.morphTargets = parameters2.morphTargets;\n materialProperties.morphNormals = parameters2.morphNormals;\n materialProperties.morphTargetsCount = parameters2.morphTargetsCount;\n materialProperties.numClippingPlanes = parameters2.numClippingPlanes;\n materialProperties.numIntersection = parameters2.numClipIntersection;\n materialProperties.vertexAlphas = parameters2.vertexAlphas;\n materialProperties.vertexTangents = parameters2.vertexTangents;\n materialProperties.toneMapping = parameters2.toneMapping;\n }\n function setProgram(camera, scene, geometry, material, object) {\n if (scene.isScene !== true)\n scene = _emptyScene;\n textures.resetTextureUnits();\n const fog = scene.fog;\n const environment = material.isMeshStandardMaterial ? scene.environment : null;\n const encoding = _currentRenderTarget === null ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment);\n const vertexAlphas = material.vertexColors === true && !!geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n const vertexTangents = !!material.normalMap && !!geometry.attributes.tangent;\n const morphTargets = !!geometry.morphAttributes.position;\n const morphNormals = !!geometry.morphAttributes.normal;\n const morphTargetsCount = !!geometry.morphAttributes.position ? geometry.morphAttributes.position.length : 0;\n const toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;\n const materialProperties = properties.get(material);\n const lights = currentRenderState.state.lights;\n if (_clippingEnabled === true) {\n if (_localClippingEnabled === true || camera !== _currentCamera) {\n const useCache = camera === _currentCamera && material.id === _currentMaterialId;\n clipping.setState(material, camera, useCache);\n }\n }\n let needsProgramChange = false;\n if (material.version === materialProperties.__version) {\n if (materialProperties.needsLights && materialProperties.lightsStateVersion !== lights.state.version) {\n needsProgramChange = true;\n } else if (materialProperties.outputEncoding !== encoding) {\n needsProgramChange = true;\n } else if (object.isInstancedMesh && materialProperties.instancing === false) {\n needsProgramChange = true;\n } else if (!object.isInstancedMesh && materialProperties.instancing === true) {\n needsProgramChange = true;\n } else if (object.isSkinnedMesh && materialProperties.skinning === false) {\n needsProgramChange = true;\n } else if (!object.isSkinnedMesh && materialProperties.skinning === true) {\n needsProgramChange = true;\n } else if (materialProperties.envMap !== envMap) {\n needsProgramChange = true;\n } else if (material.fog && materialProperties.fog !== fog) {\n needsProgramChange = true;\n } else if (materialProperties.numClippingPlanes !== void 0 && (materialProperties.numClippingPlanes !== clipping.numPlanes || materialProperties.numIntersection !== clipping.numIntersection)) {\n needsProgramChange = true;\n } else if (materialProperties.vertexAlphas !== vertexAlphas) {\n needsProgramChange = true;\n } else if (materialProperties.vertexTangents !== vertexTangents) {\n needsProgramChange = true;\n } else if (materialProperties.morphTargets !== morphTargets) {\n needsProgramChange = true;\n } else if (materialProperties.morphNormals !== morphNormals) {\n needsProgramChange = true;\n } else if (materialProperties.toneMapping !== toneMapping) {\n needsProgramChange = true;\n } else if (capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount) {\n needsProgramChange = true;\n }\n } else {\n needsProgramChange = true;\n materialProperties.__version = material.version;\n }\n let program = materialProperties.currentProgram;\n if (needsProgramChange === true) {\n program = getProgram(material, scene, object);\n }\n let refreshProgram = false;\n let refreshMaterial = false;\n let refreshLights = false;\n const p_uniforms = program.getUniforms(), m_uniforms = materialProperties.uniforms;\n if (state.useProgram(program.program)) {\n refreshProgram = true;\n refreshMaterial = true;\n refreshLights = true;\n }\n if (material.id !== _currentMaterialId) {\n _currentMaterialId = material.id;\n refreshMaterial = true;\n }\n if (refreshProgram || _currentCamera !== camera) {\n p_uniforms.setValue(_gl, \"projectionMatrix\", camera.projectionMatrix);\n if (capabilities.logarithmicDepthBuffer) {\n p_uniforms.setValue(_gl, \"logDepthBufFC\", 2 / (Math.log(camera.far + 1) / Math.LN2));\n }\n if (_currentCamera !== camera) {\n _currentCamera = camera;\n refreshMaterial = true;\n refreshLights = true;\n }\n if (material.isShaderMaterial || material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshStandardMaterial || material.envMap) {\n const uCamPos = p_uniforms.map.cameraPosition;\n if (uCamPos !== void 0) {\n uCamPos.setValue(_gl, _vector3.setFromMatrixPosition(camera.matrixWorld));\n }\n }\n if (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial) {\n p_uniforms.setValue(_gl, \"isOrthographic\", camera.isOrthographicCamera === true);\n }\n if (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial || material.isShadowMaterial || object.isSkinnedMesh) {\n p_uniforms.setValue(_gl, \"viewMatrix\", camera.matrixWorldInverse);\n }\n }\n if (object.isSkinnedMesh) {\n p_uniforms.setOptional(_gl, object, \"bindMatrix\");\n p_uniforms.setOptional(_gl, object, \"bindMatrixInverse\");\n const skeleton = object.skeleton;\n if (skeleton) {\n if (capabilities.floatVertexTextures) {\n if (skeleton.boneTexture === null)\n skeleton.computeBoneTexture();\n p_uniforms.setValue(_gl, \"boneTexture\", skeleton.boneTexture, textures);\n p_uniforms.setValue(_gl, \"boneTextureSize\", skeleton.boneTextureSize);\n } else {\n p_uniforms.setOptional(_gl, skeleton, \"boneMatrices\");\n }\n }\n }\n if (!!geometry && (geometry.morphAttributes.position !== void 0 || geometry.morphAttributes.normal !== void 0)) {\n morphtargets.update(object, geometry, material, program);\n }\n if (refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow) {\n materialProperties.receiveShadow = object.receiveShadow;\n p_uniforms.setValue(_gl, \"receiveShadow\", object.receiveShadow);\n }\n if (refreshMaterial) {\n p_uniforms.setValue(_gl, \"toneMappingExposure\", _this.toneMappingExposure);\n if (materialProperties.needsLights) {\n markUniformsLightsNeedsUpdate(m_uniforms, refreshLights);\n }\n if (fog && material.fog) {\n materials.refreshFogUniforms(m_uniforms, fog);\n }\n materials.refreshMaterialUniforms(m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget);\n WebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, textures);\n }\n if (material.isShaderMaterial && material.uniformsNeedUpdate === true) {\n WebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, textures);\n material.uniformsNeedUpdate = false;\n }\n if (material.isSpriteMaterial) {\n p_uniforms.setValue(_gl, \"center\", object.center);\n }\n p_uniforms.setValue(_gl, \"modelViewMatrix\", object.modelViewMatrix);\n p_uniforms.setValue(_gl, \"normalMatrix\", object.normalMatrix);\n p_uniforms.setValue(_gl, \"modelMatrix\", object.matrixWorld);\n return program;\n }\n function markUniformsLightsNeedsUpdate(uniforms, value) {\n uniforms.ambientLightColor.needsUpdate = value;\n uniforms.lightProbe.needsUpdate = value;\n uniforms.directionalLights.needsUpdate = value;\n uniforms.directionalLightShadows.needsUpdate = value;\n uniforms.pointLights.needsUpdate = value;\n uniforms.pointLightShadows.needsUpdate = value;\n uniforms.spotLights.needsUpdate = value;\n uniforms.spotLightShadows.needsUpdate = value;\n uniforms.rectAreaLights.needsUpdate = value;\n uniforms.hemisphereLights.needsUpdate = value;\n }\n function materialNeedsLights(material) {\n return material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial || material.isMeshStandardMaterial || material.isShadowMaterial || material.isShaderMaterial && material.lights === true;\n }\n this.getActiveCubeFace = function() {\n return _currentActiveCubeFace;\n };\n this.getActiveMipmapLevel = function() {\n return _currentActiveMipmapLevel;\n };\n this.getRenderTarget = function() {\n return _currentRenderTarget;\n };\n this.setRenderTargetTextures = function(renderTarget, colorTexture, depthTexture) {\n properties.get(renderTarget.texture).__webglTexture = colorTexture;\n properties.get(renderTarget.depthTexture).__webglTexture = depthTexture;\n const renderTargetProperties = properties.get(renderTarget);\n renderTargetProperties.__hasExternalTextures = true;\n if (renderTargetProperties.__hasExternalTextures) {\n renderTargetProperties.__autoAllocateDepthBuffer = depthTexture === void 0;\n if (!renderTargetProperties.__autoAllocateDepthBuffer) {\n if (renderTarget.useRenderToTexture) {\n console.warn(\"render-to-texture extension was disabled because an external texture was provided\");\n renderTarget.useRenderToTexture = false;\n renderTarget.useRenderbuffer = true;\n }\n }\n }\n };\n this.setRenderTargetFramebuffer = function(renderTarget, defaultFramebuffer) {\n const renderTargetProperties = properties.get(renderTarget);\n renderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n renderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === void 0;\n };\n this.setRenderTarget = function(renderTarget, activeCubeFace = 0, activeMipmapLevel = 0) {\n _currentRenderTarget = renderTarget;\n _currentActiveCubeFace = activeCubeFace;\n _currentActiveMipmapLevel = activeMipmapLevel;\n let useDefaultFramebuffer = true;\n if (renderTarget) {\n const renderTargetProperties = properties.get(renderTarget);\n if (renderTargetProperties.__useDefaultFramebuffer !== void 0) {\n state.bindFramebuffer(36160, null);\n useDefaultFramebuffer = false;\n } else if (renderTargetProperties.__webglFramebuffer === void 0) {\n textures.setupRenderTarget(renderTarget);\n } else if (renderTargetProperties.__hasExternalTextures) {\n textures.rebindTextures(renderTarget, properties.get(renderTarget.texture).__webglTexture, properties.get(renderTarget.depthTexture).__webglTexture);\n }\n }\n let framebuffer = null;\n let isCube = false;\n let isRenderTarget3D = false;\n if (renderTarget) {\n const texture = renderTarget.texture;\n if (texture.isDataTexture3D || texture.isDataTexture2DArray) {\n isRenderTarget3D = true;\n }\n const __webglFramebuffer = properties.get(renderTarget).__webglFramebuffer;\n if (renderTarget.isWebGLCubeRenderTarget) {\n framebuffer = __webglFramebuffer[activeCubeFace];\n isCube = true;\n } else if (renderTarget.useRenderbuffer) {\n framebuffer = properties.get(renderTarget).__webglMultisampledFramebuffer;\n } else {\n framebuffer = __webglFramebuffer;\n }\n _currentViewport.copy(renderTarget.viewport);\n _currentScissor.copy(renderTarget.scissor);\n _currentScissorTest = renderTarget.scissorTest;\n } else {\n _currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor();\n _currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor();\n _currentScissorTest = _scissorTest;\n }\n const framebufferBound = state.bindFramebuffer(36160, framebuffer);\n if (framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer) {\n let needsUpdate = false;\n if (renderTarget) {\n if (renderTarget.isWebGLMultipleRenderTargets) {\n const textures2 = renderTarget.texture;\n if (_currentDrawBuffers.length !== textures2.length || _currentDrawBuffers[0] !== 36064) {\n for (let i = 0, il = textures2.length; i < il; i++) {\n _currentDrawBuffers[i] = 36064 + i;\n }\n _currentDrawBuffers.length = textures2.length;\n needsUpdate = true;\n }\n } else {\n if (_currentDrawBuffers.length !== 1 || _currentDrawBuffers[0] !== 36064) {\n _currentDrawBuffers[0] = 36064;\n _currentDrawBuffers.length = 1;\n needsUpdate = true;\n }\n }\n } else {\n if (_currentDrawBuffers.length !== 1 || _currentDrawBuffers[0] !== 1029) {\n _currentDrawBuffers[0] = 1029;\n _currentDrawBuffers.length = 1;\n needsUpdate = true;\n }\n }\n if (needsUpdate) {\n if (capabilities.isWebGL2) {\n _gl.drawBuffers(_currentDrawBuffers);\n } else {\n extensions.get(\"WEBGL_draw_buffers\").drawBuffersWEBGL(_currentDrawBuffers);\n }\n }\n }\n state.viewport(_currentViewport);\n state.scissor(_currentScissor);\n state.setScissorTest(_currentScissorTest);\n if (isCube) {\n const textureProperties = properties.get(renderTarget.texture);\n _gl.framebufferTexture2D(36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel);\n } else if (isRenderTarget3D) {\n const textureProperties = properties.get(renderTarget.texture);\n const layer = activeCubeFace || 0;\n _gl.framebufferTextureLayer(36160, 36064, textureProperties.__webglTexture, activeMipmapLevel || 0, layer);\n }\n _currentMaterialId = -1;\n };\n this.readRenderTargetPixels = function(renderTarget, x, y, width, height, buffer, activeCubeFaceIndex) {\n if (!(renderTarget && renderTarget.isWebGLRenderTarget)) {\n console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.\");\n return;\n }\n let framebuffer = properties.get(renderTarget).__webglFramebuffer;\n if (renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== void 0) {\n framebuffer = framebuffer[activeCubeFaceIndex];\n }\n if (framebuffer) {\n state.bindFramebuffer(36160, framebuffer);\n try {\n const texture = renderTarget.texture;\n const textureFormat = texture.format;\n const textureType = texture.type;\n if (textureFormat !== RGBAFormat && utils.convert(textureFormat) !== _gl.getParameter(35739)) {\n console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.\");\n return;\n }\n const halfFloatSupportedByExt = textureType === HalfFloatType && (extensions.has(\"EXT_color_buffer_half_float\") || capabilities.isWebGL2 && extensions.has(\"EXT_color_buffer_float\"));\n if (textureType !== UnsignedByteType && utils.convert(textureType) !== _gl.getParameter(35738) && !(textureType === FloatType && (capabilities.isWebGL2 || extensions.has(\"OES_texture_float\") || extensions.has(\"WEBGL_color_buffer_float\"))) && !halfFloatSupportedByExt) {\n console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.\");\n return;\n }\n if (_gl.checkFramebufferStatus(36160) === 36053) {\n if (x >= 0 && x <= renderTarget.width - width && (y >= 0 && y <= renderTarget.height - height)) {\n _gl.readPixels(x, y, width, height, utils.convert(textureFormat), utils.convert(textureType), buffer);\n }\n } else {\n console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.\");\n }\n } finally {\n const framebuffer2 = _currentRenderTarget !== null ? properties.get(_currentRenderTarget).__webglFramebuffer : null;\n state.bindFramebuffer(36160, framebuffer2);\n }\n }\n };\n this.copyFramebufferToTexture = function(position, texture, level = 0) {\n if (texture.isFramebufferTexture !== true) {\n console.error(\"THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.\");\n return;\n }\n const levelScale = Math.pow(2, -level);\n const width = Math.floor(texture.image.width * levelScale);\n const height = Math.floor(texture.image.height * levelScale);\n textures.setTexture2D(texture, 0);\n _gl.copyTexSubImage2D(3553, level, 0, 0, position.x, position.y, width, height);\n state.unbindTexture();\n };\n this.copyTextureToTexture = function(position, srcTexture, dstTexture, level = 0) {\n const width = srcTexture.image.width;\n const height = srcTexture.image.height;\n const glFormat = utils.convert(dstTexture.format);\n const glType = utils.convert(dstTexture.type);\n textures.setTexture2D(dstTexture, 0);\n _gl.pixelStorei(37440, dstTexture.flipY);\n _gl.pixelStorei(37441, dstTexture.premultiplyAlpha);\n _gl.pixelStorei(3317, dstTexture.unpackAlignment);\n if (srcTexture.isDataTexture) {\n _gl.texSubImage2D(3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data);\n } else {\n if (srcTexture.isCompressedTexture) {\n _gl.compressedTexSubImage2D(3553, level, position.x, position.y, srcTexture.mipmaps[0].width, srcTexture.mipmaps[0].height, glFormat, srcTexture.mipmaps[0].data);\n } else {\n _gl.texSubImage2D(3553, level, position.x, position.y, glFormat, glType, srcTexture.image);\n }\n }\n if (level === 0 && dstTexture.generateMipmaps)\n _gl.generateMipmap(3553);\n state.unbindTexture();\n };\n this.copyTextureToTexture3D = function(sourceBox, position, srcTexture, dstTexture, level = 0) {\n if (_this.isWebGL1Renderer) {\n console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.\");\n return;\n }\n const width = sourceBox.max.x - sourceBox.min.x + 1;\n const height = sourceBox.max.y - sourceBox.min.y + 1;\n const depth = sourceBox.max.z - sourceBox.min.z + 1;\n const glFormat = utils.convert(dstTexture.format);\n const glType = utils.convert(dstTexture.type);\n let glTarget;\n if (dstTexture.isDataTexture3D) {\n textures.setTexture3D(dstTexture, 0);\n glTarget = 32879;\n } else if (dstTexture.isDataTexture2DArray) {\n textures.setTexture2DArray(dstTexture, 0);\n glTarget = 35866;\n } else {\n console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.\");\n return;\n }\n _gl.pixelStorei(37440, dstTexture.flipY);\n _gl.pixelStorei(37441, dstTexture.premultiplyAlpha);\n _gl.pixelStorei(3317, dstTexture.unpackAlignment);\n const unpackRowLen = _gl.getParameter(3314);\n const unpackImageHeight = _gl.getParameter(32878);\n const unpackSkipPixels = _gl.getParameter(3316);\n const unpackSkipRows = _gl.getParameter(3315);\n const unpackSkipImages = _gl.getParameter(32877);\n const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[0] : srcTexture.image;\n _gl.pixelStorei(3314, image.width);\n _gl.pixelStorei(32878, image.height);\n _gl.pixelStorei(3316, sourceBox.min.x);\n _gl.pixelStorei(3315, sourceBox.min.y);\n _gl.pixelStorei(32877, sourceBox.min.z);\n if (srcTexture.isDataTexture || srcTexture.isDataTexture3D) {\n _gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data);\n } else {\n if (srcTexture.isCompressedTexture) {\n console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.\");\n _gl.compressedTexSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data);\n } else {\n _gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image);\n }\n }\n _gl.pixelStorei(3314, unpackRowLen);\n _gl.pixelStorei(32878, unpackImageHeight);\n _gl.pixelStorei(3316, unpackSkipPixels);\n _gl.pixelStorei(3315, unpackSkipRows);\n _gl.pixelStorei(32877, unpackSkipImages);\n if (level === 0 && dstTexture.generateMipmaps)\n _gl.generateMipmap(glTarget);\n state.unbindTexture();\n };\n this.initTexture = function(texture) {\n textures.setTexture2D(texture, 0);\n state.unbindTexture();\n };\n this.resetState = function() {\n _currentActiveCubeFace = 0;\n _currentActiveMipmapLevel = 0;\n _currentRenderTarget = null;\n state.reset();\n bindingStates.reset();\n };\n if (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\", {detail: this}));\n }\n}\nWebGLRenderer.prototype.isWebGLRenderer = true;\nclass WebGL1Renderer extends WebGLRenderer {\n}\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\nclass FogExp2 {\n constructor(color, density = 25e-5) {\n this.name = \"\";\n this.color = new Color(color);\n this.density = density;\n }\n clone() {\n return new FogExp2(this.color, this.density);\n }\n toJSON() {\n return {\n type: \"FogExp2\",\n color: this.color.getHex(),\n density: this.density\n };\n }\n}\nFogExp2.prototype.isFogExp2 = true;\nclass Fog {\n constructor(color, near = 1, far = 1e3) {\n this.name = \"\";\n this.color = new Color(color);\n this.near = near;\n this.far = far;\n }\n clone() {\n return new Fog(this.color, this.near, this.far);\n }\n toJSON() {\n return {\n type: \"Fog\",\n color: this.color.getHex(),\n near: this.near,\n far: this.far\n };\n }\n}\nFog.prototype.isFog = true;\nclass Scene extends Object3D {\n constructor() {\n super();\n this.type = \"Scene\";\n this.background = null;\n this.environment = null;\n this.fog = null;\n this.overrideMaterial = null;\n this.autoUpdate = true;\n if (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\", {detail: this}));\n }\n }\n copy(source, recursive) {\n super.copy(source, recursive);\n if (source.background !== null)\n this.background = source.background.clone();\n if (source.environment !== null)\n this.environment = source.environment.clone();\n if (source.fog !== null)\n this.fog = source.fog.clone();\n if (source.overrideMaterial !== null)\n this.overrideMaterial = source.overrideMaterial.clone();\n this.autoUpdate = source.autoUpdate;\n this.matrixAutoUpdate = source.matrixAutoUpdate;\n return this;\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n if (this.fog !== null)\n data.object.fog = this.fog.toJSON();\n return data;\n }\n}\nScene.prototype.isScene = true;\nclass InterleavedBuffer {\n constructor(array, stride) {\n this.array = array;\n this.stride = stride;\n this.count = array !== void 0 ? array.length / stride : 0;\n this.usage = StaticDrawUsage;\n this.updateRange = {offset: 0, count: -1};\n this.version = 0;\n this.uuid = generateUUID();\n }\n onUploadCallback() {\n }\n set needsUpdate(value) {\n if (value === true)\n this.version++;\n }\n setUsage(value) {\n this.usage = value;\n return this;\n }\n copy(source) {\n this.array = new source.array.constructor(source.array);\n this.count = source.count;\n this.stride = source.stride;\n this.usage = source.usage;\n return this;\n }\n copyAt(index1, attribute, index2) {\n index1 *= this.stride;\n index2 *= attribute.stride;\n for (let i = 0, l = this.stride; i < l; i++) {\n this.array[index1 + i] = attribute.array[index2 + i];\n }\n return this;\n }\n set(value, offset = 0) {\n this.array.set(value, offset);\n return this;\n }\n clone(data) {\n if (data.arrayBuffers === void 0) {\n data.arrayBuffers = {};\n }\n if (this.array.buffer._uuid === void 0) {\n this.array.buffer._uuid = generateUUID();\n }\n if (data.arrayBuffers[this.array.buffer._uuid] === void 0) {\n data.arrayBuffers[this.array.buffer._uuid] = this.array.slice(0).buffer;\n }\n const array = new this.array.constructor(data.arrayBuffers[this.array.buffer._uuid]);\n const ib = new this.constructor(array, this.stride);\n ib.setUsage(this.usage);\n return ib;\n }\n onUpload(callback) {\n this.onUploadCallback = callback;\n return this;\n }\n toJSON(data) {\n if (data.arrayBuffers === void 0) {\n data.arrayBuffers = {};\n }\n if (this.array.buffer._uuid === void 0) {\n this.array.buffer._uuid = generateUUID();\n }\n if (data.arrayBuffers[this.array.buffer._uuid] === void 0) {\n data.arrayBuffers[this.array.buffer._uuid] = Array.prototype.slice.call(new Uint32Array(this.array.buffer));\n }\n return {\n uuid: this.uuid,\n buffer: this.array.buffer._uuid,\n type: this.array.constructor.name,\n stride: this.stride\n };\n }\n}\nInterleavedBuffer.prototype.isInterleavedBuffer = true;\nconst _vector$6 = /* @__PURE__ */ new Vector3();\nclass InterleavedBufferAttribute {\n constructor(interleavedBuffer, itemSize, offset, normalized = false) {\n this.name = \"\";\n this.data = interleavedBuffer;\n this.itemSize = itemSize;\n this.offset = offset;\n this.normalized = normalized === true;\n }\n get count() {\n return this.data.count;\n }\n get array() {\n return this.data.array;\n }\n set needsUpdate(value) {\n this.data.needsUpdate = value;\n }\n applyMatrix4(m) {\n for (let i = 0, l = this.data.count; i < l; i++) {\n _vector$6.x = this.getX(i);\n _vector$6.y = this.getY(i);\n _vector$6.z = this.getZ(i);\n _vector$6.applyMatrix4(m);\n this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n }\n return this;\n }\n applyNormalMatrix(m) {\n for (let i = 0, l = this.count; i < l; i++) {\n _vector$6.x = this.getX(i);\n _vector$6.y = this.getY(i);\n _vector$6.z = this.getZ(i);\n _vector$6.applyNormalMatrix(m);\n this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n }\n return this;\n }\n transformDirection(m) {\n for (let i = 0, l = this.count; i < l; i++) {\n _vector$6.x = this.getX(i);\n _vector$6.y = this.getY(i);\n _vector$6.z = this.getZ(i);\n _vector$6.transformDirection(m);\n this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n }\n return this;\n }\n setX(index, x) {\n this.data.array[index * this.data.stride + this.offset] = x;\n return this;\n }\n setY(index, y) {\n this.data.array[index * this.data.stride + this.offset + 1] = y;\n return this;\n }\n setZ(index, z) {\n this.data.array[index * this.data.stride + this.offset + 2] = z;\n return this;\n }\n setW(index, w) {\n this.data.array[index * this.data.stride + this.offset + 3] = w;\n return this;\n }\n getX(index) {\n return this.data.array[index * this.data.stride + this.offset];\n }\n getY(index) {\n return this.data.array[index * this.data.stride + this.offset + 1];\n }\n getZ(index) {\n return this.data.array[index * this.data.stride + this.offset + 2];\n }\n getW(index) {\n return this.data.array[index * this.data.stride + this.offset + 3];\n }\n setXY(index, x, y) {\n index = index * this.data.stride + this.offset;\n this.data.array[index + 0] = x;\n this.data.array[index + 1] = y;\n return this;\n }\n setXYZ(index, x, y, z) {\n index = index * this.data.stride + this.offset;\n this.data.array[index + 0] = x;\n this.data.array[index + 1] = y;\n this.data.array[index + 2] = z;\n return this;\n }\n setXYZW(index, x, y, z, w) {\n index = index * this.data.stride + this.offset;\n this.data.array[index + 0] = x;\n this.data.array[index + 1] = y;\n this.data.array[index + 2] = z;\n this.data.array[index + 3] = w;\n return this;\n }\n clone(data) {\n if (data === void 0) {\n console.log(\"THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.\");\n const array = [];\n for (let i = 0; i < this.count; i++) {\n const index = i * this.data.stride + this.offset;\n for (let j = 0; j < this.itemSize; j++) {\n array.push(this.data.array[index + j]);\n }\n }\n return new BufferAttribute(new this.array.constructor(array), this.itemSize, this.normalized);\n } else {\n if (data.interleavedBuffers === void 0) {\n data.interleavedBuffers = {};\n }\n if (data.interleavedBuffers[this.data.uuid] === void 0) {\n data.interleavedBuffers[this.data.uuid] = this.data.clone(data);\n }\n return new InterleavedBufferAttribute(data.interleavedBuffers[this.data.uuid], this.itemSize, this.offset, this.normalized);\n }\n }\n toJSON(data) {\n if (data === void 0) {\n console.log(\"THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.\");\n const array = [];\n for (let i = 0; i < this.count; i++) {\n const index = i * this.data.stride + this.offset;\n for (let j = 0; j < this.itemSize; j++) {\n array.push(this.data.array[index + j]);\n }\n }\n return {\n itemSize: this.itemSize,\n type: this.array.constructor.name,\n array,\n normalized: this.normalized\n };\n } else {\n if (data.interleavedBuffers === void 0) {\n data.interleavedBuffers = {};\n }\n if (data.interleavedBuffers[this.data.uuid] === void 0) {\n data.interleavedBuffers[this.data.uuid] = this.data.toJSON(data);\n }\n return {\n isInterleavedBufferAttribute: true,\n itemSize: this.itemSize,\n data: this.data.uuid,\n offset: this.offset,\n normalized: this.normalized\n };\n }\n }\n}\nInterleavedBufferAttribute.prototype.isInterleavedBufferAttribute = true;\nclass SpriteMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"SpriteMaterial\";\n this.color = new Color(16777215);\n this.map = null;\n this.alphaMap = null;\n this.rotation = 0;\n this.sizeAttenuation = true;\n this.transparent = true;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.map = source.map;\n this.alphaMap = source.alphaMap;\n this.rotation = source.rotation;\n this.sizeAttenuation = source.sizeAttenuation;\n return this;\n }\n}\nSpriteMaterial.prototype.isSpriteMaterial = true;\nlet _geometry;\nconst _intersectPoint = /* @__PURE__ */ new Vector3();\nconst _worldScale = /* @__PURE__ */ new Vector3();\nconst _mvPosition = /* @__PURE__ */ new Vector3();\nconst _alignedPosition = /* @__PURE__ */ new Vector2();\nconst _rotatedPosition = /* @__PURE__ */ new Vector2();\nconst _viewWorldMatrix = /* @__PURE__ */ new Matrix4();\nconst _vA = /* @__PURE__ */ new Vector3();\nconst _vB = /* @__PURE__ */ new Vector3();\nconst _vC = /* @__PURE__ */ new Vector3();\nconst _uvA = /* @__PURE__ */ new Vector2();\nconst _uvB = /* @__PURE__ */ new Vector2();\nconst _uvC = /* @__PURE__ */ new Vector2();\nclass Sprite extends Object3D {\n constructor(material) {\n super();\n this.type = \"Sprite\";\n if (_geometry === void 0) {\n _geometry = new BufferGeometry();\n const float32Array = new Float32Array([\n -0.5,\n -0.5,\n 0,\n 0,\n 0,\n 0.5,\n -0.5,\n 0,\n 1,\n 0,\n 0.5,\n 0.5,\n 0,\n 1,\n 1,\n -0.5,\n 0.5,\n 0,\n 0,\n 1\n ]);\n const interleavedBuffer = new InterleavedBuffer(float32Array, 5);\n _geometry.setIndex([0, 1, 2, 0, 2, 3]);\n _geometry.setAttribute(\"position\", new InterleavedBufferAttribute(interleavedBuffer, 3, 0, false));\n _geometry.setAttribute(\"uv\", new InterleavedBufferAttribute(interleavedBuffer, 2, 3, false));\n }\n this.geometry = _geometry;\n this.material = material !== void 0 ? material : new SpriteMaterial();\n this.center = new Vector2(0.5, 0.5);\n }\n raycast(raycaster, intersects2) {\n if (raycaster.camera === null) {\n console.error('THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.');\n }\n _worldScale.setFromMatrixScale(this.matrixWorld);\n _viewWorldMatrix.copy(raycaster.camera.matrixWorld);\n this.modelViewMatrix.multiplyMatrices(raycaster.camera.matrixWorldInverse, this.matrixWorld);\n _mvPosition.setFromMatrixPosition(this.modelViewMatrix);\n if (raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false) {\n _worldScale.multiplyScalar(-_mvPosition.z);\n }\n const rotation = this.material.rotation;\n let sin, cos;\n if (rotation !== 0) {\n cos = Math.cos(rotation);\n sin = Math.sin(rotation);\n }\n const center = this.center;\n transformVertex(_vA.set(-0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n transformVertex(_vB.set(0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n transformVertex(_vC.set(0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n _uvA.set(0, 0);\n _uvB.set(1, 0);\n _uvC.set(1, 1);\n let intersect = raycaster.ray.intersectTriangle(_vA, _vB, _vC, false, _intersectPoint);\n if (intersect === null) {\n transformVertex(_vB.set(-0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n _uvB.set(0, 1);\n intersect = raycaster.ray.intersectTriangle(_vA, _vC, _vB, false, _intersectPoint);\n if (intersect === null) {\n return;\n }\n }\n const distance = raycaster.ray.origin.distanceTo(_intersectPoint);\n if (distance < raycaster.near || distance > raycaster.far)\n return;\n intersects2.push({\n distance,\n point: _intersectPoint.clone(),\n uv: Triangle.getUV(_intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2()),\n face: null,\n object: this\n });\n }\n copy(source) {\n super.copy(source);\n if (source.center !== void 0)\n this.center.copy(source.center);\n this.material = source.material;\n return this;\n }\n}\nSprite.prototype.isSprite = true;\nfunction transformVertex(vertexPosition, mvPosition, center, scale, sin, cos) {\n _alignedPosition.subVectors(vertexPosition, center).addScalar(0.5).multiply(scale);\n if (sin !== void 0) {\n _rotatedPosition.x = cos * _alignedPosition.x - sin * _alignedPosition.y;\n _rotatedPosition.y = sin * _alignedPosition.x + cos * _alignedPosition.y;\n } else {\n _rotatedPosition.copy(_alignedPosition);\n }\n vertexPosition.copy(mvPosition);\n vertexPosition.x += _rotatedPosition.x;\n vertexPosition.y += _rotatedPosition.y;\n vertexPosition.applyMatrix4(_viewWorldMatrix);\n}\nconst _v1$2 = /* @__PURE__ */ new Vector3();\nconst _v2$1 = /* @__PURE__ */ new Vector3();\nclass LOD extends Object3D {\n constructor() {\n super();\n this._currentLevel = 0;\n this.type = \"LOD\";\n Object.defineProperties(this, {\n levels: {\n enumerable: true,\n value: []\n },\n isLOD: {\n value: true\n }\n });\n this.autoUpdate = true;\n }\n copy(source) {\n super.copy(source, false);\n const levels = source.levels;\n for (let i = 0, l = levels.length; i < l; i++) {\n const level = levels[i];\n this.addLevel(level.object.clone(), level.distance);\n }\n this.autoUpdate = source.autoUpdate;\n return this;\n }\n addLevel(object, distance = 0) {\n distance = Math.abs(distance);\n const levels = this.levels;\n let l;\n for (l = 0; l < levels.length; l++) {\n if (distance < levels[l].distance) {\n break;\n }\n }\n levels.splice(l, 0, {distance, object});\n this.add(object);\n return this;\n }\n getCurrentLevel() {\n return this._currentLevel;\n }\n getObjectForDistance(distance) {\n const levels = this.levels;\n if (levels.length > 0) {\n let i, l;\n for (i = 1, l = levels.length; i < l; i++) {\n if (distance < levels[i].distance) {\n break;\n }\n }\n return levels[i - 1].object;\n }\n return null;\n }\n raycast(raycaster, intersects2) {\n const levels = this.levels;\n if (levels.length > 0) {\n _v1$2.setFromMatrixPosition(this.matrixWorld);\n const distance = raycaster.ray.origin.distanceTo(_v1$2);\n this.getObjectForDistance(distance).raycast(raycaster, intersects2);\n }\n }\n update(camera) {\n const levels = this.levels;\n if (levels.length > 1) {\n _v1$2.setFromMatrixPosition(camera.matrixWorld);\n _v2$1.setFromMatrixPosition(this.matrixWorld);\n const distance = _v1$2.distanceTo(_v2$1) / camera.zoom;\n levels[0].object.visible = true;\n let i, l;\n for (i = 1, l = levels.length; i < l; i++) {\n if (distance >= levels[i].distance) {\n levels[i - 1].object.visible = false;\n levels[i].object.visible = true;\n } else {\n break;\n }\n }\n this._currentLevel = i - 1;\n for (; i < l; i++) {\n levels[i].object.visible = false;\n }\n }\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n if (this.autoUpdate === false)\n data.object.autoUpdate = false;\n data.object.levels = [];\n const levels = this.levels;\n for (let i = 0, l = levels.length; i < l; i++) {\n const level = levels[i];\n data.object.levels.push({\n object: level.object.uuid,\n distance: level.distance\n });\n }\n return data;\n }\n}\nconst _basePosition = /* @__PURE__ */ new Vector3();\nconst _skinIndex = /* @__PURE__ */ new Vector4();\nconst _skinWeight = /* @__PURE__ */ new Vector4();\nconst _vector$5 = /* @__PURE__ */ new Vector3();\nconst _matrix = /* @__PURE__ */ new Matrix4();\nclass SkinnedMesh extends Mesh {\n constructor(geometry, material) {\n super(geometry, material);\n this.type = \"SkinnedMesh\";\n this.bindMode = \"attached\";\n this.bindMatrix = new Matrix4();\n this.bindMatrixInverse = new Matrix4();\n }\n copy(source) {\n super.copy(source);\n this.bindMode = source.bindMode;\n this.bindMatrix.copy(source.bindMatrix);\n this.bindMatrixInverse.copy(source.bindMatrixInverse);\n this.skeleton = source.skeleton;\n return this;\n }\n bind(skeleton, bindMatrix) {\n this.skeleton = skeleton;\n if (bindMatrix === void 0) {\n this.updateMatrixWorld(true);\n this.skeleton.calculateInverses();\n bindMatrix = this.matrixWorld;\n }\n this.bindMatrix.copy(bindMatrix);\n this.bindMatrixInverse.copy(bindMatrix).invert();\n }\n pose() {\n this.skeleton.pose();\n }\n normalizeSkinWeights() {\n const vector = new Vector4();\n const skinWeight = this.geometry.attributes.skinWeight;\n for (let i = 0, l = skinWeight.count; i < l; i++) {\n vector.x = skinWeight.getX(i);\n vector.y = skinWeight.getY(i);\n vector.z = skinWeight.getZ(i);\n vector.w = skinWeight.getW(i);\n const scale = 1 / vector.manhattanLength();\n if (scale !== Infinity) {\n vector.multiplyScalar(scale);\n } else {\n vector.set(1, 0, 0, 0);\n }\n skinWeight.setXYZW(i, vector.x, vector.y, vector.z, vector.w);\n }\n }\n updateMatrixWorld(force) {\n super.updateMatrixWorld(force);\n if (this.bindMode === \"attached\") {\n this.bindMatrixInverse.copy(this.matrixWorld).invert();\n } else if (this.bindMode === \"detached\") {\n this.bindMatrixInverse.copy(this.bindMatrix).invert();\n } else {\n console.warn(\"THREE.SkinnedMesh: Unrecognized bindMode: \" + this.bindMode);\n }\n }\n boneTransform(index, target) {\n const skeleton = this.skeleton;\n const geometry = this.geometry;\n _skinIndex.fromBufferAttribute(geometry.attributes.skinIndex, index);\n _skinWeight.fromBufferAttribute(geometry.attributes.skinWeight, index);\n _basePosition.copy(target).applyMatrix4(this.bindMatrix);\n target.set(0, 0, 0);\n for (let i = 0; i < 4; i++) {\n const weight = _skinWeight.getComponent(i);\n if (weight !== 0) {\n const boneIndex = _skinIndex.getComponent(i);\n _matrix.multiplyMatrices(skeleton.bones[boneIndex].matrixWorld, skeleton.boneInverses[boneIndex]);\n target.addScaledVector(_vector$5.copy(_basePosition).applyMatrix4(_matrix), weight);\n }\n }\n return target.applyMatrix4(this.bindMatrixInverse);\n }\n}\nSkinnedMesh.prototype.isSkinnedMesh = true;\nclass Bone extends Object3D {\n constructor() {\n super();\n this.type = \"Bone\";\n }\n}\nBone.prototype.isBone = true;\nclass DataTexture extends Texture {\n constructor(data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding) {\n super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n this.image = {data, width, height};\n this.magFilter = magFilter;\n this.minFilter = minFilter;\n this.generateMipmaps = false;\n this.flipY = false;\n this.unpackAlignment = 1;\n }\n}\nDataTexture.prototype.isDataTexture = true;\nconst _offsetMatrix = /* @__PURE__ */ new Matrix4();\nconst _identityMatrix = /* @__PURE__ */ new Matrix4();\nclass Skeleton {\n constructor(bones = [], boneInverses = []) {\n this.uuid = generateUUID();\n this.bones = bones.slice(0);\n this.boneInverses = boneInverses;\n this.boneMatrices = null;\n this.boneTexture = null;\n this.boneTextureSize = 0;\n this.frame = -1;\n this.init();\n }\n init() {\n const bones = this.bones;\n const boneInverses = this.boneInverses;\n this.boneMatrices = new Float32Array(bones.length * 16);\n if (boneInverses.length === 0) {\n this.calculateInverses();\n } else {\n if (bones.length !== boneInverses.length) {\n console.warn(\"THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.\");\n this.boneInverses = [];\n for (let i = 0, il = this.bones.length; i < il; i++) {\n this.boneInverses.push(new Matrix4());\n }\n }\n }\n }\n calculateInverses() {\n this.boneInverses.length = 0;\n for (let i = 0, il = this.bones.length; i < il; i++) {\n const inverse = new Matrix4();\n if (this.bones[i]) {\n inverse.copy(this.bones[i].matrixWorld).invert();\n }\n this.boneInverses.push(inverse);\n }\n }\n pose() {\n for (let i = 0, il = this.bones.length; i < il; i++) {\n const bone = this.bones[i];\n if (bone) {\n bone.matrixWorld.copy(this.boneInverses[i]).invert();\n }\n }\n for (let i = 0, il = this.bones.length; i < il; i++) {\n const bone = this.bones[i];\n if (bone) {\n if (bone.parent && bone.parent.isBone) {\n bone.matrix.copy(bone.parent.matrixWorld).invert();\n bone.matrix.multiply(bone.matrixWorld);\n } else {\n bone.matrix.copy(bone.matrixWorld);\n }\n bone.matrix.decompose(bone.position, bone.quaternion, bone.scale);\n }\n }\n }\n update() {\n const bones = this.bones;\n const boneInverses = this.boneInverses;\n const boneMatrices = this.boneMatrices;\n const boneTexture = this.boneTexture;\n for (let i = 0, il = bones.length; i < il; i++) {\n const matrix = bones[i] ? bones[i].matrixWorld : _identityMatrix;\n _offsetMatrix.multiplyMatrices(matrix, boneInverses[i]);\n _offsetMatrix.toArray(boneMatrices, i * 16);\n }\n if (boneTexture !== null) {\n boneTexture.needsUpdate = true;\n }\n }\n clone() {\n return new Skeleton(this.bones, this.boneInverses);\n }\n computeBoneTexture() {\n let size = Math.sqrt(this.bones.length * 4);\n size = ceilPowerOfTwo(size);\n size = Math.max(size, 4);\n const boneMatrices = new Float32Array(size * size * 4);\n boneMatrices.set(this.boneMatrices);\n const boneTexture = new DataTexture(boneMatrices, size, size, RGBAFormat, FloatType);\n boneTexture.needsUpdate = true;\n this.boneMatrices = boneMatrices;\n this.boneTexture = boneTexture;\n this.boneTextureSize = size;\n return this;\n }\n getBoneByName(name) {\n for (let i = 0, il = this.bones.length; i < il; i++) {\n const bone = this.bones[i];\n if (bone.name === name) {\n return bone;\n }\n }\n return void 0;\n }\n dispose() {\n if (this.boneTexture !== null) {\n this.boneTexture.dispose();\n this.boneTexture = null;\n }\n }\n fromJSON(json, bones) {\n this.uuid = json.uuid;\n for (let i = 0, l = json.bones.length; i < l; i++) {\n const uuid = json.bones[i];\n let bone = bones[uuid];\n if (bone === void 0) {\n console.warn(\"THREE.Skeleton: No bone found with UUID:\", uuid);\n bone = new Bone();\n }\n this.bones.push(bone);\n this.boneInverses.push(new Matrix4().fromArray(json.boneInverses[i]));\n }\n this.init();\n return this;\n }\n toJSON() {\n const data = {\n metadata: {\n version: 4.5,\n type: \"Skeleton\",\n generator: \"Skeleton.toJSON\"\n },\n bones: [],\n boneInverses: []\n };\n data.uuid = this.uuid;\n const bones = this.bones;\n const boneInverses = this.boneInverses;\n for (let i = 0, l = bones.length; i < l; i++) {\n const bone = bones[i];\n data.bones.push(bone.uuid);\n const boneInverse = boneInverses[i];\n data.boneInverses.push(boneInverse.toArray());\n }\n return data;\n }\n}\nclass InstancedBufferAttribute extends BufferAttribute {\n constructor(array, itemSize, normalized, meshPerAttribute = 1) {\n if (typeof normalized === \"number\") {\n meshPerAttribute = normalized;\n normalized = false;\n console.error(\"THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.\");\n }\n super(array, itemSize, normalized);\n this.meshPerAttribute = meshPerAttribute;\n }\n copy(source) {\n super.copy(source);\n this.meshPerAttribute = source.meshPerAttribute;\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.meshPerAttribute = this.meshPerAttribute;\n data.isInstancedBufferAttribute = true;\n return data;\n }\n}\nInstancedBufferAttribute.prototype.isInstancedBufferAttribute = true;\nconst _instanceLocalMatrix = /* @__PURE__ */ new Matrix4();\nconst _instanceWorldMatrix = /* @__PURE__ */ new Matrix4();\nconst _instanceIntersects = [];\nconst _mesh = /* @__PURE__ */ new Mesh();\nclass InstancedMesh extends Mesh {\n constructor(geometry, material, count) {\n super(geometry, material);\n this.instanceMatrix = new InstancedBufferAttribute(new Float32Array(count * 16), 16);\n this.instanceColor = null;\n this.count = count;\n this.frustumCulled = false;\n }\n copy(source) {\n super.copy(source);\n this.instanceMatrix.copy(source.instanceMatrix);\n if (source.instanceColor !== null)\n this.instanceColor = source.instanceColor.clone();\n this.count = source.count;\n return this;\n }\n getColorAt(index, color) {\n color.fromArray(this.instanceColor.array, index * 3);\n }\n getMatrixAt(index, matrix) {\n matrix.fromArray(this.instanceMatrix.array, index * 16);\n }\n raycast(raycaster, intersects2) {\n const matrixWorld = this.matrixWorld;\n const raycastTimes = this.count;\n _mesh.geometry = this.geometry;\n _mesh.material = this.material;\n if (_mesh.material === void 0)\n return;\n for (let instanceId = 0; instanceId < raycastTimes; instanceId++) {\n this.getMatrixAt(instanceId, _instanceLocalMatrix);\n _instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);\n _mesh.matrixWorld = _instanceWorldMatrix;\n _mesh.raycast(raycaster, _instanceIntersects);\n for (let i = 0, l = _instanceIntersects.length; i < l; i++) {\n const intersect = _instanceIntersects[i];\n intersect.instanceId = instanceId;\n intersect.object = this;\n intersects2.push(intersect);\n }\n _instanceIntersects.length = 0;\n }\n }\n setColorAt(index, color) {\n if (this.instanceColor === null) {\n this.instanceColor = new InstancedBufferAttribute(new Float32Array(this.instanceMatrix.count * 3), 3);\n }\n color.toArray(this.instanceColor.array, index * 3);\n }\n setMatrixAt(index, matrix) {\n matrix.toArray(this.instanceMatrix.array, index * 16);\n }\n updateMorphTargets() {\n }\n dispose() {\n this.dispatchEvent({type: \"dispose\"});\n }\n}\nInstancedMesh.prototype.isInstancedMesh = true;\nclass LineBasicMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"LineBasicMaterial\";\n this.color = new Color(16777215);\n this.linewidth = 1;\n this.linecap = \"round\";\n this.linejoin = \"round\";\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.linewidth = source.linewidth;\n this.linecap = source.linecap;\n this.linejoin = source.linejoin;\n return this;\n }\n}\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\nconst _start$1 = /* @__PURE__ */ new Vector3();\nconst _end$1 = /* @__PURE__ */ new Vector3();\nconst _inverseMatrix$1 = /* @__PURE__ */ new Matrix4();\nconst _ray$1 = /* @__PURE__ */ new Ray();\nconst _sphere$1 = /* @__PURE__ */ new Sphere();\nclass Line extends Object3D {\n constructor(geometry = new BufferGeometry(), material = new LineBasicMaterial()) {\n super();\n this.type = \"Line\";\n this.geometry = geometry;\n this.material = material;\n this.updateMorphTargets();\n }\n copy(source) {\n super.copy(source);\n this.material = source.material;\n this.geometry = source.geometry;\n return this;\n }\n computeLineDistances() {\n const geometry = this.geometry;\n if (geometry.isBufferGeometry) {\n if (geometry.index === null) {\n const positionAttribute = geometry.attributes.position;\n const lineDistances = [0];\n for (let i = 1, l = positionAttribute.count; i < l; i++) {\n _start$1.fromBufferAttribute(positionAttribute, i - 1);\n _end$1.fromBufferAttribute(positionAttribute, i);\n lineDistances[i] = lineDistances[i - 1];\n lineDistances[i] += _start$1.distanceTo(_end$1);\n }\n geometry.setAttribute(\"lineDistance\", new Float32BufferAttribute(lineDistances, 1));\n } else {\n console.warn(\"THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.\");\n }\n } else if (geometry.isGeometry) {\n console.error(\"THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n return this;\n }\n raycast(raycaster, intersects2) {\n const geometry = this.geometry;\n const matrixWorld = this.matrixWorld;\n const threshold = raycaster.params.Line.threshold;\n const drawRange = geometry.drawRange;\n if (geometry.boundingSphere === null)\n geometry.computeBoundingSphere();\n _sphere$1.copy(geometry.boundingSphere);\n _sphere$1.applyMatrix4(matrixWorld);\n _sphere$1.radius += threshold;\n if (raycaster.ray.intersectsSphere(_sphere$1) === false)\n return;\n _inverseMatrix$1.copy(matrixWorld).invert();\n _ray$1.copy(raycaster.ray).applyMatrix4(_inverseMatrix$1);\n const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n const localThresholdSq = localThreshold * localThreshold;\n const vStart = new Vector3();\n const vEnd = new Vector3();\n const interSegment = new Vector3();\n const interRay = new Vector3();\n const step = this.isLineSegments ? 2 : 1;\n if (geometry.isBufferGeometry) {\n const index = geometry.index;\n const attributes = geometry.attributes;\n const positionAttribute = attributes.position;\n if (index !== null) {\n const start = Math.max(0, drawRange.start);\n const end = Math.min(index.count, drawRange.start + drawRange.count);\n for (let i = start, l = end - 1; i < l; i += step) {\n const a = index.getX(i);\n const b = index.getX(i + 1);\n vStart.fromBufferAttribute(positionAttribute, a);\n vEnd.fromBufferAttribute(positionAttribute, b);\n const distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment);\n if (distSq > localThresholdSq)\n continue;\n interRay.applyMatrix4(this.matrixWorld);\n const distance = raycaster.ray.origin.distanceTo(interRay);\n if (distance < raycaster.near || distance > raycaster.far)\n continue;\n intersects2.push({\n distance,\n point: interSegment.clone().applyMatrix4(this.matrixWorld),\n index: i,\n face: null,\n faceIndex: null,\n object: this\n });\n }\n } else {\n const start = Math.max(0, drawRange.start);\n const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n for (let i = start, l = end - 1; i < l; i += step) {\n vStart.fromBufferAttribute(positionAttribute, i);\n vEnd.fromBufferAttribute(positionAttribute, i + 1);\n const distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment);\n if (distSq > localThresholdSq)\n continue;\n interRay.applyMatrix4(this.matrixWorld);\n const distance = raycaster.ray.origin.distanceTo(interRay);\n if (distance < raycaster.near || distance > raycaster.far)\n continue;\n intersects2.push({\n distance,\n point: interSegment.clone().applyMatrix4(this.matrixWorld),\n index: i,\n face: null,\n faceIndex: null,\n object: this\n });\n }\n }\n } else if (geometry.isGeometry) {\n console.error(\"THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n }\n updateMorphTargets() {\n const geometry = this.geometry;\n if (geometry.isBufferGeometry) {\n const morphAttributes = geometry.morphAttributes;\n const keys = Object.keys(morphAttributes);\n if (keys.length > 0) {\n const morphAttribute = morphAttributes[keys[0]];\n if (morphAttribute !== void 0) {\n this.morphTargetInfluences = [];\n this.morphTargetDictionary = {};\n for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n const name = morphAttribute[m].name || String(m);\n this.morphTargetInfluences.push(0);\n this.morphTargetDictionary[name] = m;\n }\n }\n }\n } else {\n const morphTargets = geometry.morphTargets;\n if (morphTargets !== void 0 && morphTargets.length > 0) {\n console.error(\"THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n }\n }\n}\nLine.prototype.isLine = true;\nconst _start = /* @__PURE__ */ new Vector3();\nconst _end = /* @__PURE__ */ new Vector3();\nclass LineSegments extends Line {\n constructor(geometry, material) {\n super(geometry, material);\n this.type = \"LineSegments\";\n }\n computeLineDistances() {\n const geometry = this.geometry;\n if (geometry.isBufferGeometry) {\n if (geometry.index === null) {\n const positionAttribute = geometry.attributes.position;\n const lineDistances = [];\n for (let i = 0, l = positionAttribute.count; i < l; i += 2) {\n _start.fromBufferAttribute(positionAttribute, i);\n _end.fromBufferAttribute(positionAttribute, i + 1);\n lineDistances[i] = i === 0 ? 0 : lineDistances[i - 1];\n lineDistances[i + 1] = lineDistances[i] + _start.distanceTo(_end);\n }\n geometry.setAttribute(\"lineDistance\", new Float32BufferAttribute(lineDistances, 1));\n } else {\n console.warn(\"THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.\");\n }\n } else if (geometry.isGeometry) {\n console.error(\"THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n return this;\n }\n}\nLineSegments.prototype.isLineSegments = true;\nclass LineLoop extends Line {\n constructor(geometry, material) {\n super(geometry, material);\n this.type = \"LineLoop\";\n }\n}\nLineLoop.prototype.isLineLoop = true;\nclass PointsMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"PointsMaterial\";\n this.color = new Color(16777215);\n this.map = null;\n this.alphaMap = null;\n this.size = 1;\n this.sizeAttenuation = true;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.map = source.map;\n this.alphaMap = source.alphaMap;\n this.size = source.size;\n this.sizeAttenuation = source.sizeAttenuation;\n return this;\n }\n}\nPointsMaterial.prototype.isPointsMaterial = true;\nconst _inverseMatrix = /* @__PURE__ */ new Matrix4();\nconst _ray = /* @__PURE__ */ new Ray();\nconst _sphere = /* @__PURE__ */ new Sphere();\nconst _position$2 = /* @__PURE__ */ new Vector3();\nclass Points extends Object3D {\n constructor(geometry = new BufferGeometry(), material = new PointsMaterial()) {\n super();\n this.type = \"Points\";\n this.geometry = geometry;\n this.material = material;\n this.updateMorphTargets();\n }\n copy(source) {\n super.copy(source);\n this.material = source.material;\n this.geometry = source.geometry;\n return this;\n }\n raycast(raycaster, intersects2) {\n const geometry = this.geometry;\n const matrixWorld = this.matrixWorld;\n const threshold = raycaster.params.Points.threshold;\n const drawRange = geometry.drawRange;\n if (geometry.boundingSphere === null)\n geometry.computeBoundingSphere();\n _sphere.copy(geometry.boundingSphere);\n _sphere.applyMatrix4(matrixWorld);\n _sphere.radius += threshold;\n if (raycaster.ray.intersectsSphere(_sphere) === false)\n return;\n _inverseMatrix.copy(matrixWorld).invert();\n _ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);\n const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n const localThresholdSq = localThreshold * localThreshold;\n if (geometry.isBufferGeometry) {\n const index = geometry.index;\n const attributes = geometry.attributes;\n const positionAttribute = attributes.position;\n if (index !== null) {\n const start = Math.max(0, drawRange.start);\n const end = Math.min(index.count, drawRange.start + drawRange.count);\n for (let i = start, il = end; i < il; i++) {\n const a = index.getX(i);\n _position$2.fromBufferAttribute(positionAttribute, a);\n testPoint(_position$2, a, localThresholdSq, matrixWorld, raycaster, intersects2, this);\n }\n } else {\n const start = Math.max(0, drawRange.start);\n const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n for (let i = start, l = end; i < l; i++) {\n _position$2.fromBufferAttribute(positionAttribute, i);\n testPoint(_position$2, i, localThresholdSq, matrixWorld, raycaster, intersects2, this);\n }\n }\n } else {\n console.error(\"THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n }\n updateMorphTargets() {\n const geometry = this.geometry;\n if (geometry.isBufferGeometry) {\n const morphAttributes = geometry.morphAttributes;\n const keys = Object.keys(morphAttributes);\n if (keys.length > 0) {\n const morphAttribute = morphAttributes[keys[0]];\n if (morphAttribute !== void 0) {\n this.morphTargetInfluences = [];\n this.morphTargetDictionary = {};\n for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n const name = morphAttribute[m].name || String(m);\n this.morphTargetInfluences.push(0);\n this.morphTargetDictionary[name] = m;\n }\n }\n }\n } else {\n const morphTargets = geometry.morphTargets;\n if (morphTargets !== void 0 && morphTargets.length > 0) {\n console.error(\"THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.\");\n }\n }\n }\n}\nPoints.prototype.isPoints = true;\nfunction testPoint(point, index, localThresholdSq, matrixWorld, raycaster, intersects2, object) {\n const rayPointDistanceSq = _ray.distanceSqToPoint(point);\n if (rayPointDistanceSq < localThresholdSq) {\n const intersectPoint = new Vector3();\n _ray.closestPointToPoint(point, intersectPoint);\n intersectPoint.applyMatrix4(matrixWorld);\n const distance = raycaster.ray.origin.distanceTo(intersectPoint);\n if (distance < raycaster.near || distance > raycaster.far)\n return;\n intersects2.push({\n distance,\n distanceToRay: Math.sqrt(rayPointDistanceSq),\n point: intersectPoint,\n index,\n face: null,\n object\n });\n }\n}\nclass VideoTexture extends Texture {\n constructor(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) {\n super(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n this.format = format !== void 0 ? format : RGBFormat;\n this.minFilter = minFilter !== void 0 ? minFilter : LinearFilter;\n this.magFilter = magFilter !== void 0 ? magFilter : LinearFilter;\n this.generateMipmaps = false;\n const scope = this;\n function updateVideo() {\n scope.needsUpdate = true;\n video.requestVideoFrameCallback(updateVideo);\n }\n if (\"requestVideoFrameCallback\" in video) {\n video.requestVideoFrameCallback(updateVideo);\n }\n }\n clone() {\n return new this.constructor(this.image).copy(this);\n }\n update() {\n const video = this.image;\n const hasVideoFrameCallback = \"requestVideoFrameCallback\" in video;\n if (hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA) {\n this.needsUpdate = true;\n }\n }\n}\nVideoTexture.prototype.isVideoTexture = true;\nclass FramebufferTexture extends Texture {\n constructor(width, height, format) {\n super({width, height});\n this.format = format;\n this.magFilter = NearestFilter;\n this.minFilter = NearestFilter;\n this.generateMipmaps = false;\n this.needsUpdate = true;\n }\n}\nFramebufferTexture.prototype.isFramebufferTexture = true;\nclass CompressedTexture extends Texture {\n constructor(mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding) {\n super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n this.image = {width, height};\n this.mipmaps = mipmaps;\n this.flipY = false;\n this.generateMipmaps = false;\n }\n}\nCompressedTexture.prototype.isCompressedTexture = true;\nclass CanvasTexture extends Texture {\n constructor(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) {\n super(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n this.needsUpdate = true;\n }\n}\nCanvasTexture.prototype.isCanvasTexture = true;\nclass CircleGeometry extends BufferGeometry {\n constructor(radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2) {\n super();\n this.type = \"CircleGeometry\";\n this.parameters = {\n radius,\n segments,\n thetaStart,\n thetaLength\n };\n segments = Math.max(3, segments);\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n const vertex2 = new Vector3();\n const uv = new Vector2();\n vertices.push(0, 0, 0);\n normals.push(0, 0, 1);\n uvs.push(0.5, 0.5);\n for (let s = 0, i = 3; s <= segments; s++, i += 3) {\n const segment = thetaStart + s / segments * thetaLength;\n vertex2.x = radius * Math.cos(segment);\n vertex2.y = radius * Math.sin(segment);\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n normals.push(0, 0, 1);\n uv.x = (vertices[i] / radius + 1) / 2;\n uv.y = (vertices[i + 1] / radius + 1) / 2;\n uvs.push(uv.x, uv.y);\n }\n for (let i = 1; i <= segments; i++) {\n indices.push(i, i + 1, 0);\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n }\n static fromJSON(data) {\n return new CircleGeometry(data.radius, data.segments, data.thetaStart, data.thetaLength);\n }\n}\nclass CylinderGeometry extends BufferGeometry {\n constructor(radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) {\n super();\n this.type = \"CylinderGeometry\";\n this.parameters = {\n radiusTop,\n radiusBottom,\n height,\n radialSegments,\n heightSegments,\n openEnded,\n thetaStart,\n thetaLength\n };\n const scope = this;\n radialSegments = Math.floor(radialSegments);\n heightSegments = Math.floor(heightSegments);\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n let index = 0;\n const indexArray = [];\n const halfHeight = height / 2;\n let groupStart = 0;\n generateTorso();\n if (openEnded === false) {\n if (radiusTop > 0)\n generateCap(true);\n if (radiusBottom > 0)\n generateCap(false);\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n function generateTorso() {\n const normal = new Vector3();\n const vertex2 = new Vector3();\n let groupCount = 0;\n const slope = (radiusBottom - radiusTop) / height;\n for (let y = 0; y <= heightSegments; y++) {\n const indexRow = [];\n const v = y / heightSegments;\n const radius = v * (radiusBottom - radiusTop) + radiusTop;\n for (let x = 0; x <= radialSegments; x++) {\n const u = x / radialSegments;\n const theta = u * thetaLength + thetaStart;\n const sinTheta = Math.sin(theta);\n const cosTheta = Math.cos(theta);\n vertex2.x = radius * sinTheta;\n vertex2.y = -v * height + halfHeight;\n vertex2.z = radius * cosTheta;\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n normal.set(sinTheta, slope, cosTheta).normalize();\n normals.push(normal.x, normal.y, normal.z);\n uvs.push(u, 1 - v);\n indexRow.push(index++);\n }\n indexArray.push(indexRow);\n }\n for (let x = 0; x < radialSegments; x++) {\n for (let y = 0; y < heightSegments; y++) {\n const a = indexArray[y][x];\n const b = indexArray[y + 1][x];\n const c = indexArray[y + 1][x + 1];\n const d = indexArray[y][x + 1];\n indices.push(a, b, d);\n indices.push(b, c, d);\n groupCount += 6;\n }\n }\n scope.addGroup(groupStart, groupCount, 0);\n groupStart += groupCount;\n }\n function generateCap(top) {\n const centerIndexStart = index;\n const uv = new Vector2();\n const vertex2 = new Vector3();\n let groupCount = 0;\n const radius = top === true ? radiusTop : radiusBottom;\n const sign2 = top === true ? 1 : -1;\n for (let x = 1; x <= radialSegments; x++) {\n vertices.push(0, halfHeight * sign2, 0);\n normals.push(0, sign2, 0);\n uvs.push(0.5, 0.5);\n index++;\n }\n const centerIndexEnd = index;\n for (let x = 0; x <= radialSegments; x++) {\n const u = x / radialSegments;\n const theta = u * thetaLength + thetaStart;\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n vertex2.x = radius * sinTheta;\n vertex2.y = halfHeight * sign2;\n vertex2.z = radius * cosTheta;\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n normals.push(0, sign2, 0);\n uv.x = cosTheta * 0.5 + 0.5;\n uv.y = sinTheta * 0.5 * sign2 + 0.5;\n uvs.push(uv.x, uv.y);\n index++;\n }\n for (let x = 0; x < radialSegments; x++) {\n const c = centerIndexStart + x;\n const i = centerIndexEnd + x;\n if (top === true) {\n indices.push(i, i + 1, c);\n } else {\n indices.push(i + 1, i, c);\n }\n groupCount += 3;\n }\n scope.addGroup(groupStart, groupCount, top === true ? 1 : 2);\n groupStart += groupCount;\n }\n }\n static fromJSON(data) {\n return new CylinderGeometry(data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n }\n}\nclass ConeGeometry extends CylinderGeometry {\n constructor(radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) {\n super(0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength);\n this.type = \"ConeGeometry\";\n this.parameters = {\n radius,\n height,\n radialSegments,\n heightSegments,\n openEnded,\n thetaStart,\n thetaLength\n };\n }\n static fromJSON(data) {\n return new ConeGeometry(data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n }\n}\nclass PolyhedronGeometry extends BufferGeometry {\n constructor(vertices = [], indices = [], radius = 1, detail = 0) {\n super();\n this.type = \"PolyhedronGeometry\";\n this.parameters = {\n vertices,\n indices,\n radius,\n detail\n };\n const vertexBuffer = [];\n const uvBuffer = [];\n subdivide(detail);\n applyRadius(radius);\n generateUVs();\n this.setAttribute(\"position\", new Float32BufferAttribute(vertexBuffer, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(vertexBuffer.slice(), 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvBuffer, 2));\n if (detail === 0) {\n this.computeVertexNormals();\n } else {\n this.normalizeNormals();\n }\n function subdivide(detail2) {\n const a = new Vector3();\n const b = new Vector3();\n const c = new Vector3();\n for (let i = 0; i < indices.length; i += 3) {\n getVertexByIndex(indices[i + 0], a);\n getVertexByIndex(indices[i + 1], b);\n getVertexByIndex(indices[i + 2], c);\n subdivideFace(a, b, c, detail2);\n }\n }\n function subdivideFace(a, b, c, detail2) {\n const cols = detail2 + 1;\n const v = [];\n for (let i = 0; i <= cols; i++) {\n v[i] = [];\n const aj = a.clone().lerp(c, i / cols);\n const bj = b.clone().lerp(c, i / cols);\n const rows = cols - i;\n for (let j = 0; j <= rows; j++) {\n if (j === 0 && i === cols) {\n v[i][j] = aj;\n } else {\n v[i][j] = aj.clone().lerp(bj, j / rows);\n }\n }\n }\n for (let i = 0; i < cols; i++) {\n for (let j = 0; j < 2 * (cols - i) - 1; j++) {\n const k = Math.floor(j / 2);\n if (j % 2 === 0) {\n pushVertex(v[i][k + 1]);\n pushVertex(v[i + 1][k]);\n pushVertex(v[i][k]);\n } else {\n pushVertex(v[i][k + 1]);\n pushVertex(v[i + 1][k + 1]);\n pushVertex(v[i + 1][k]);\n }\n }\n }\n }\n function applyRadius(radius2) {\n const vertex2 = new Vector3();\n for (let i = 0; i < vertexBuffer.length; i += 3) {\n vertex2.x = vertexBuffer[i + 0];\n vertex2.y = vertexBuffer[i + 1];\n vertex2.z = vertexBuffer[i + 2];\n vertex2.normalize().multiplyScalar(radius2);\n vertexBuffer[i + 0] = vertex2.x;\n vertexBuffer[i + 1] = vertex2.y;\n vertexBuffer[i + 2] = vertex2.z;\n }\n }\n function generateUVs() {\n const vertex2 = new Vector3();\n for (let i = 0; i < vertexBuffer.length; i += 3) {\n vertex2.x = vertexBuffer[i + 0];\n vertex2.y = vertexBuffer[i + 1];\n vertex2.z = vertexBuffer[i + 2];\n const u = azimuth(vertex2) / 2 / Math.PI + 0.5;\n const v = inclination(vertex2) / Math.PI + 0.5;\n uvBuffer.push(u, 1 - v);\n }\n correctUVs();\n correctSeam();\n }\n function correctSeam() {\n for (let i = 0; i < uvBuffer.length; i += 6) {\n const x0 = uvBuffer[i + 0];\n const x1 = uvBuffer[i + 2];\n const x2 = uvBuffer[i + 4];\n const max = Math.max(x0, x1, x2);\n const min = Math.min(x0, x1, x2);\n if (max > 0.9 && min < 0.1) {\n if (x0 < 0.2)\n uvBuffer[i + 0] += 1;\n if (x1 < 0.2)\n uvBuffer[i + 2] += 1;\n if (x2 < 0.2)\n uvBuffer[i + 4] += 1;\n }\n }\n }\n function pushVertex(vertex2) {\n vertexBuffer.push(vertex2.x, vertex2.y, vertex2.z);\n }\n function getVertexByIndex(index, vertex2) {\n const stride = index * 3;\n vertex2.x = vertices[stride + 0];\n vertex2.y = vertices[stride + 1];\n vertex2.z = vertices[stride + 2];\n }\n function correctUVs() {\n const a = new Vector3();\n const b = new Vector3();\n const c = new Vector3();\n const centroid = new Vector3();\n const uvA = new Vector2();\n const uvB = new Vector2();\n const uvC = new Vector2();\n for (let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6) {\n a.set(vertexBuffer[i + 0], vertexBuffer[i + 1], vertexBuffer[i + 2]);\n b.set(vertexBuffer[i + 3], vertexBuffer[i + 4], vertexBuffer[i + 5]);\n c.set(vertexBuffer[i + 6], vertexBuffer[i + 7], vertexBuffer[i + 8]);\n uvA.set(uvBuffer[j + 0], uvBuffer[j + 1]);\n uvB.set(uvBuffer[j + 2], uvBuffer[j + 3]);\n uvC.set(uvBuffer[j + 4], uvBuffer[j + 5]);\n centroid.copy(a).add(b).add(c).divideScalar(3);\n const azi = azimuth(centroid);\n correctUV(uvA, j + 0, a, azi);\n correctUV(uvB, j + 2, b, azi);\n correctUV(uvC, j + 4, c, azi);\n }\n }\n function correctUV(uv, stride, vector, azimuth2) {\n if (azimuth2 < 0 && uv.x === 1) {\n uvBuffer[stride] = uv.x - 1;\n }\n if (vector.x === 0 && vector.z === 0) {\n uvBuffer[stride] = azimuth2 / 2 / Math.PI + 0.5;\n }\n }\n function azimuth(vector) {\n return Math.atan2(vector.z, -vector.x);\n }\n function inclination(vector) {\n return Math.atan2(-vector.y, Math.sqrt(vector.x * vector.x + vector.z * vector.z));\n }\n }\n static fromJSON(data) {\n return new PolyhedronGeometry(data.vertices, data.indices, data.radius, data.details);\n }\n}\nclass DodecahedronGeometry extends PolyhedronGeometry {\n constructor(radius = 1, detail = 0) {\n const t = (1 + Math.sqrt(5)) / 2;\n const r = 1 / t;\n const vertices = [\n -1,\n -1,\n -1,\n -1,\n -1,\n 1,\n -1,\n 1,\n -1,\n -1,\n 1,\n 1,\n 1,\n -1,\n -1,\n 1,\n -1,\n 1,\n 1,\n 1,\n -1,\n 1,\n 1,\n 1,\n 0,\n -r,\n -t,\n 0,\n -r,\n t,\n 0,\n r,\n -t,\n 0,\n r,\n t,\n -r,\n -t,\n 0,\n -r,\n t,\n 0,\n r,\n -t,\n 0,\n r,\n t,\n 0,\n -t,\n 0,\n -r,\n t,\n 0,\n -r,\n -t,\n 0,\n r,\n t,\n 0,\n r\n ];\n const indices = [\n 3,\n 11,\n 7,\n 3,\n 7,\n 15,\n 3,\n 15,\n 13,\n 7,\n 19,\n 17,\n 7,\n 17,\n 6,\n 7,\n 6,\n 15,\n 17,\n 4,\n 8,\n 17,\n 8,\n 10,\n 17,\n 10,\n 6,\n 8,\n 0,\n 16,\n 8,\n 16,\n 2,\n 8,\n 2,\n 10,\n 0,\n 12,\n 1,\n 0,\n 1,\n 18,\n 0,\n 18,\n 16,\n 6,\n 10,\n 2,\n 6,\n 2,\n 13,\n 6,\n 13,\n 15,\n 2,\n 16,\n 18,\n 2,\n 18,\n 3,\n 2,\n 3,\n 13,\n 18,\n 1,\n 9,\n 18,\n 9,\n 11,\n 18,\n 11,\n 3,\n 4,\n 14,\n 12,\n 4,\n 12,\n 0,\n 4,\n 0,\n 8,\n 11,\n 9,\n 5,\n 11,\n 5,\n 19,\n 11,\n 19,\n 7,\n 19,\n 5,\n 14,\n 19,\n 14,\n 4,\n 19,\n 4,\n 17,\n 1,\n 12,\n 14,\n 1,\n 14,\n 5,\n 1,\n 5,\n 9\n ];\n super(vertices, indices, radius, detail);\n this.type = \"DodecahedronGeometry\";\n this.parameters = {\n radius,\n detail\n };\n }\n static fromJSON(data) {\n return new DodecahedronGeometry(data.radius, data.detail);\n }\n}\nconst _v0 = new Vector3();\nconst _v1$1 = new Vector3();\nconst _normal = new Vector3();\nconst _triangle = new Triangle();\nclass EdgesGeometry extends BufferGeometry {\n constructor(geometry = null, thresholdAngle = 1) {\n super();\n this.type = \"EdgesGeometry\";\n this.parameters = {\n geometry,\n thresholdAngle\n };\n if (geometry !== null) {\n const precisionPoints = 4;\n const precision = Math.pow(10, precisionPoints);\n const thresholdDot = Math.cos(DEG2RAD * thresholdAngle);\n const indexAttr = geometry.getIndex();\n const positionAttr = geometry.getAttribute(\"position\");\n const indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n const indexArr = [0, 0, 0];\n const vertKeys = [\"a\", \"b\", \"c\"];\n const hashes = new Array(3);\n const edgeData = {};\n const vertices = [];\n for (let i = 0; i < indexCount; i += 3) {\n if (indexAttr) {\n indexArr[0] = indexAttr.getX(i);\n indexArr[1] = indexAttr.getX(i + 1);\n indexArr[2] = indexAttr.getX(i + 2);\n } else {\n indexArr[0] = i;\n indexArr[1] = i + 1;\n indexArr[2] = i + 2;\n }\n const {a, b, c} = _triangle;\n a.fromBufferAttribute(positionAttr, indexArr[0]);\n b.fromBufferAttribute(positionAttr, indexArr[1]);\n c.fromBufferAttribute(positionAttr, indexArr[2]);\n _triangle.getNormal(_normal);\n hashes[0] = `${Math.round(a.x * precision)},${Math.round(a.y * precision)},${Math.round(a.z * precision)}`;\n hashes[1] = `${Math.round(b.x * precision)},${Math.round(b.y * precision)},${Math.round(b.z * precision)}`;\n hashes[2] = `${Math.round(c.x * precision)},${Math.round(c.y * precision)},${Math.round(c.z * precision)}`;\n if (hashes[0] === hashes[1] || hashes[1] === hashes[2] || hashes[2] === hashes[0]) {\n continue;\n }\n for (let j = 0; j < 3; j++) {\n const jNext = (j + 1) % 3;\n const vecHash0 = hashes[j];\n const vecHash1 = hashes[jNext];\n const v0 = _triangle[vertKeys[j]];\n const v1 = _triangle[vertKeys[jNext]];\n const hash = `${vecHash0}_${vecHash1}`;\n const reverseHash = `${vecHash1}_${vecHash0}`;\n if (reverseHash in edgeData && edgeData[reverseHash]) {\n if (_normal.dot(edgeData[reverseHash].normal) <= thresholdDot) {\n vertices.push(v0.x, v0.y, v0.z);\n vertices.push(v1.x, v1.y, v1.z);\n }\n edgeData[reverseHash] = null;\n } else if (!(hash in edgeData)) {\n edgeData[hash] = {\n index0: indexArr[j],\n index1: indexArr[jNext],\n normal: _normal.clone()\n };\n }\n }\n }\n for (const key in edgeData) {\n if (edgeData[key]) {\n const {index0, index1} = edgeData[key];\n _v0.fromBufferAttribute(positionAttr, index0);\n _v1$1.fromBufferAttribute(positionAttr, index1);\n vertices.push(_v0.x, _v0.y, _v0.z);\n vertices.push(_v1$1.x, _v1$1.y, _v1$1.z);\n }\n }\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n }\n }\n}\nclass Curve {\n constructor() {\n this.type = \"Curve\";\n this.arcLengthDivisions = 200;\n }\n getPoint() {\n console.warn(\"THREE.Curve: .getPoint() not implemented.\");\n return null;\n }\n getPointAt(u, optionalTarget) {\n const t = this.getUtoTmapping(u);\n return this.getPoint(t, optionalTarget);\n }\n getPoints(divisions = 5) {\n const points = [];\n for (let d = 0; d <= divisions; d++) {\n points.push(this.getPoint(d / divisions));\n }\n return points;\n }\n getSpacedPoints(divisions = 5) {\n const points = [];\n for (let d = 0; d <= divisions; d++) {\n points.push(this.getPointAt(d / divisions));\n }\n return points;\n }\n getLength() {\n const lengths = this.getLengths();\n return lengths[lengths.length - 1];\n }\n getLengths(divisions = this.arcLengthDivisions) {\n if (this.cacheArcLengths && this.cacheArcLengths.length === divisions + 1 && !this.needsUpdate) {\n return this.cacheArcLengths;\n }\n this.needsUpdate = false;\n const cache = [];\n let current, last = this.getPoint(0);\n let sum = 0;\n cache.push(0);\n for (let p = 1; p <= divisions; p++) {\n current = this.getPoint(p / divisions);\n sum += current.distanceTo(last);\n cache.push(sum);\n last = current;\n }\n this.cacheArcLengths = cache;\n return cache;\n }\n updateArcLengths() {\n this.needsUpdate = true;\n this.getLengths();\n }\n getUtoTmapping(u, distance) {\n const arcLengths = this.getLengths();\n let i = 0;\n const il = arcLengths.length;\n let targetArcLength;\n if (distance) {\n targetArcLength = distance;\n } else {\n targetArcLength = u * arcLengths[il - 1];\n }\n let low = 0, high = il - 1, comparison;\n while (low <= high) {\n i = Math.floor(low + (high - low) / 2);\n comparison = arcLengths[i] - targetArcLength;\n if (comparison < 0) {\n low = i + 1;\n } else if (comparison > 0) {\n high = i - 1;\n } else {\n high = i;\n break;\n }\n }\n i = high;\n if (arcLengths[i] === targetArcLength) {\n return i / (il - 1);\n }\n const lengthBefore = arcLengths[i];\n const lengthAfter = arcLengths[i + 1];\n const segmentLength = lengthAfter - lengthBefore;\n const segmentFraction = (targetArcLength - lengthBefore) / segmentLength;\n const t = (i + segmentFraction) / (il - 1);\n return t;\n }\n getTangent(t, optionalTarget) {\n const delta = 1e-4;\n let t1 = t - delta;\n let t2 = t + delta;\n if (t1 < 0)\n t1 = 0;\n if (t2 > 1)\n t2 = 1;\n const pt1 = this.getPoint(t1);\n const pt2 = this.getPoint(t2);\n const tangent = optionalTarget || (pt1.isVector2 ? new Vector2() : new Vector3());\n tangent.copy(pt2).sub(pt1).normalize();\n return tangent;\n }\n getTangentAt(u, optionalTarget) {\n const t = this.getUtoTmapping(u);\n return this.getTangent(t, optionalTarget);\n }\n computeFrenetFrames(segments, closed) {\n const normal = new Vector3();\n const tangents = [];\n const normals = [];\n const binormals = [];\n const vec = new Vector3();\n const mat = new Matrix4();\n for (let i = 0; i <= segments; i++) {\n const u = i / segments;\n tangents[i] = this.getTangentAt(u, new Vector3());\n }\n normals[0] = new Vector3();\n binormals[0] = new Vector3();\n let min = Number.MAX_VALUE;\n const tx = Math.abs(tangents[0].x);\n const ty = Math.abs(tangents[0].y);\n const tz = Math.abs(tangents[0].z);\n if (tx <= min) {\n min = tx;\n normal.set(1, 0, 0);\n }\n if (ty <= min) {\n min = ty;\n normal.set(0, 1, 0);\n }\n if (tz <= min) {\n normal.set(0, 0, 1);\n }\n vec.crossVectors(tangents[0], normal).normalize();\n normals[0].crossVectors(tangents[0], vec);\n binormals[0].crossVectors(tangents[0], normals[0]);\n for (let i = 1; i <= segments; i++) {\n normals[i] = normals[i - 1].clone();\n binormals[i] = binormals[i - 1].clone();\n vec.crossVectors(tangents[i - 1], tangents[i]);\n if (vec.length() > Number.EPSILON) {\n vec.normalize();\n const theta = Math.acos(clamp(tangents[i - 1].dot(tangents[i]), -1, 1));\n normals[i].applyMatrix4(mat.makeRotationAxis(vec, theta));\n }\n binormals[i].crossVectors(tangents[i], normals[i]);\n }\n if (closed === true) {\n let theta = Math.acos(clamp(normals[0].dot(normals[segments]), -1, 1));\n theta /= segments;\n if (tangents[0].dot(vec.crossVectors(normals[0], normals[segments])) > 0) {\n theta = -theta;\n }\n for (let i = 1; i <= segments; i++) {\n normals[i].applyMatrix4(mat.makeRotationAxis(tangents[i], theta * i));\n binormals[i].crossVectors(tangents[i], normals[i]);\n }\n }\n return {\n tangents,\n normals,\n binormals\n };\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(source) {\n this.arcLengthDivisions = source.arcLengthDivisions;\n return this;\n }\n toJSON() {\n const data = {\n metadata: {\n version: 4.5,\n type: \"Curve\",\n generator: \"Curve.toJSON\"\n }\n };\n data.arcLengthDivisions = this.arcLengthDivisions;\n data.type = this.type;\n return data;\n }\n fromJSON(json) {\n this.arcLengthDivisions = json.arcLengthDivisions;\n return this;\n }\n}\nclass EllipseCurve extends Curve {\n constructor(aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0) {\n super();\n this.type = \"EllipseCurve\";\n this.aX = aX;\n this.aY = aY;\n this.xRadius = xRadius;\n this.yRadius = yRadius;\n this.aStartAngle = aStartAngle;\n this.aEndAngle = aEndAngle;\n this.aClockwise = aClockwise;\n this.aRotation = aRotation;\n }\n getPoint(t, optionalTarget) {\n const point = optionalTarget || new Vector2();\n const twoPi = Math.PI * 2;\n let deltaAngle = this.aEndAngle - this.aStartAngle;\n const samePoints = Math.abs(deltaAngle) < Number.EPSILON;\n while (deltaAngle < 0)\n deltaAngle += twoPi;\n while (deltaAngle > twoPi)\n deltaAngle -= twoPi;\n if (deltaAngle < Number.EPSILON) {\n if (samePoints) {\n deltaAngle = 0;\n } else {\n deltaAngle = twoPi;\n }\n }\n if (this.aClockwise === true && !samePoints) {\n if (deltaAngle === twoPi) {\n deltaAngle = -twoPi;\n } else {\n deltaAngle = deltaAngle - twoPi;\n }\n }\n const angle = this.aStartAngle + t * deltaAngle;\n let x = this.aX + this.xRadius * Math.cos(angle);\n let y = this.aY + this.yRadius * Math.sin(angle);\n if (this.aRotation !== 0) {\n const cos = Math.cos(this.aRotation);\n const sin = Math.sin(this.aRotation);\n const tx = x - this.aX;\n const ty = y - this.aY;\n x = tx * cos - ty * sin + this.aX;\n y = tx * sin + ty * cos + this.aY;\n }\n return point.set(x, y);\n }\n copy(source) {\n super.copy(source);\n this.aX = source.aX;\n this.aY = source.aY;\n this.xRadius = source.xRadius;\n this.yRadius = source.yRadius;\n this.aStartAngle = source.aStartAngle;\n this.aEndAngle = source.aEndAngle;\n this.aClockwise = source.aClockwise;\n this.aRotation = source.aRotation;\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.aX = this.aX;\n data.aY = this.aY;\n data.xRadius = this.xRadius;\n data.yRadius = this.yRadius;\n data.aStartAngle = this.aStartAngle;\n data.aEndAngle = this.aEndAngle;\n data.aClockwise = this.aClockwise;\n data.aRotation = this.aRotation;\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.aX = json.aX;\n this.aY = json.aY;\n this.xRadius = json.xRadius;\n this.yRadius = json.yRadius;\n this.aStartAngle = json.aStartAngle;\n this.aEndAngle = json.aEndAngle;\n this.aClockwise = json.aClockwise;\n this.aRotation = json.aRotation;\n return this;\n }\n}\nEllipseCurve.prototype.isEllipseCurve = true;\nclass ArcCurve extends EllipseCurve {\n constructor(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n super(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n this.type = \"ArcCurve\";\n }\n}\nArcCurve.prototype.isArcCurve = true;\nfunction CubicPoly() {\n let c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n function init(x0, x1, t0, t1) {\n c0 = x0;\n c1 = t0;\n c2 = -3 * x0 + 3 * x1 - 2 * t0 - t1;\n c3 = 2 * x0 - 2 * x1 + t0 + t1;\n }\n return {\n initCatmullRom: function(x0, x1, x2, x3, tension) {\n init(x1, x2, tension * (x2 - x0), tension * (x3 - x1));\n },\n initNonuniformCatmullRom: function(x0, x1, x2, x3, dt0, dt1, dt2) {\n let t1 = (x1 - x0) / dt0 - (x2 - x0) / (dt0 + dt1) + (x2 - x1) / dt1;\n let t2 = (x2 - x1) / dt1 - (x3 - x1) / (dt1 + dt2) + (x3 - x2) / dt2;\n t1 *= dt1;\n t2 *= dt1;\n init(x1, x2, t1, t2);\n },\n calc: function(t) {\n const t2 = t * t;\n const t3 = t2 * t;\n return c0 + c1 * t + c2 * t2 + c3 * t3;\n }\n };\n}\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\nclass CatmullRomCurve3 extends Curve {\n constructor(points = [], closed = false, curveType = \"centripetal\", tension = 0.5) {\n super();\n this.type = \"CatmullRomCurve3\";\n this.points = points;\n this.closed = closed;\n this.curveType = curveType;\n this.tension = tension;\n }\n getPoint(t, optionalTarget = new Vector3()) {\n const point = optionalTarget;\n const points = this.points;\n const l = points.length;\n const p = (l - (this.closed ? 0 : 1)) * t;\n let intPoint = Math.floor(p);\n let weight = p - intPoint;\n if (this.closed) {\n intPoint += intPoint > 0 ? 0 : (Math.floor(Math.abs(intPoint) / l) + 1) * l;\n } else if (weight === 0 && intPoint === l - 1) {\n intPoint = l - 2;\n weight = 1;\n }\n let p0, p3;\n if (this.closed || intPoint > 0) {\n p0 = points[(intPoint - 1) % l];\n } else {\n tmp.subVectors(points[0], points[1]).add(points[0]);\n p0 = tmp;\n }\n const p1 = points[intPoint % l];\n const p2 = points[(intPoint + 1) % l];\n if (this.closed || intPoint + 2 < l) {\n p3 = points[(intPoint + 2) % l];\n } else {\n tmp.subVectors(points[l - 1], points[l - 2]).add(points[l - 1]);\n p3 = tmp;\n }\n if (this.curveType === \"centripetal\" || this.curveType === \"chordal\") {\n const pow = this.curveType === \"chordal\" ? 0.5 : 0.25;\n let dt0 = Math.pow(p0.distanceToSquared(p1), pow);\n let dt1 = Math.pow(p1.distanceToSquared(p2), pow);\n let dt2 = Math.pow(p2.distanceToSquared(p3), pow);\n if (dt1 < 1e-4)\n dt1 = 1;\n if (dt0 < 1e-4)\n dt0 = dt1;\n if (dt2 < 1e-4)\n dt2 = dt1;\n px.initNonuniformCatmullRom(p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2);\n py.initNonuniformCatmullRom(p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2);\n pz.initNonuniformCatmullRom(p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2);\n } else if (this.curveType === \"catmullrom\") {\n px.initCatmullRom(p0.x, p1.x, p2.x, p3.x, this.tension);\n py.initCatmullRom(p0.y, p1.y, p2.y, p3.y, this.tension);\n pz.initCatmullRom(p0.z, p1.z, p2.z, p3.z, this.tension);\n }\n point.set(px.calc(weight), py.calc(weight), pz.calc(weight));\n return point;\n }\n copy(source) {\n super.copy(source);\n this.points = [];\n for (let i = 0, l = source.points.length; i < l; i++) {\n const point = source.points[i];\n this.points.push(point.clone());\n }\n this.closed = source.closed;\n this.curveType = source.curveType;\n this.tension = source.tension;\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.points = [];\n for (let i = 0, l = this.points.length; i < l; i++) {\n const point = this.points[i];\n data.points.push(point.toArray());\n }\n data.closed = this.closed;\n data.curveType = this.curveType;\n data.tension = this.tension;\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.points = [];\n for (let i = 0, l = json.points.length; i < l; i++) {\n const point = json.points[i];\n this.points.push(new Vector3().fromArray(point));\n }\n this.closed = json.closed;\n this.curveType = json.curveType;\n this.tension = json.tension;\n return this;\n }\n}\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\nfunction CatmullRom(t, p0, p1, p2, p3) {\n const v0 = (p2 - p0) * 0.5;\n const v1 = (p3 - p1) * 0.5;\n const t2 = t * t;\n const t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\nfunction QuadraticBezierP0(t, p) {\n const k = 1 - t;\n return k * k * p;\n}\nfunction QuadraticBezierP1(t, p) {\n return 2 * (1 - t) * t * p;\n}\nfunction QuadraticBezierP2(t, p) {\n return t * t * p;\n}\nfunction QuadraticBezier(t, p0, p1, p2) {\n return QuadraticBezierP0(t, p0) + QuadraticBezierP1(t, p1) + QuadraticBezierP2(t, p2);\n}\nfunction CubicBezierP0(t, p) {\n const k = 1 - t;\n return k * k * k * p;\n}\nfunction CubicBezierP1(t, p) {\n const k = 1 - t;\n return 3 * k * k * t * p;\n}\nfunction CubicBezierP2(t, p) {\n return 3 * (1 - t) * t * t * p;\n}\nfunction CubicBezierP3(t, p) {\n return t * t * t * p;\n}\nfunction CubicBezier(t, p0, p1, p2, p3) {\n return CubicBezierP0(t, p0) + CubicBezierP1(t, p1) + CubicBezierP2(t, p2) + CubicBezierP3(t, p3);\n}\nclass CubicBezierCurve extends Curve {\n constructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2()) {\n super();\n this.type = \"CubicBezierCurve\";\n this.v0 = v0;\n this.v1 = v1;\n this.v2 = v2;\n this.v3 = v3;\n }\n getPoint(t, optionalTarget = new Vector2()) {\n const point = optionalTarget;\n const v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n point.set(CubicBezier(t, v0.x, v1.x, v2.x, v3.x), CubicBezier(t, v0.y, v1.y, v2.y, v3.y));\n return point;\n }\n copy(source) {\n super.copy(source);\n this.v0.copy(source.v0);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n this.v3.copy(source.v3);\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.v0 = this.v0.toArray();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n data.v3 = this.v3.toArray();\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.v0.fromArray(json.v0);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n this.v3.fromArray(json.v3);\n return this;\n }\n}\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\nclass CubicBezierCurve3 extends Curve {\n constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3()) {\n super();\n this.type = \"CubicBezierCurve3\";\n this.v0 = v0;\n this.v1 = v1;\n this.v2 = v2;\n this.v3 = v3;\n }\n getPoint(t, optionalTarget = new Vector3()) {\n const point = optionalTarget;\n const v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n point.set(CubicBezier(t, v0.x, v1.x, v2.x, v3.x), CubicBezier(t, v0.y, v1.y, v2.y, v3.y), CubicBezier(t, v0.z, v1.z, v2.z, v3.z));\n return point;\n }\n copy(source) {\n super.copy(source);\n this.v0.copy(source.v0);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n this.v3.copy(source.v3);\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.v0 = this.v0.toArray();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n data.v3 = this.v3.toArray();\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.v0.fromArray(json.v0);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n this.v3.fromArray(json.v3);\n return this;\n }\n}\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\nclass LineCurve extends Curve {\n constructor(v1 = new Vector2(), v2 = new Vector2()) {\n super();\n this.type = \"LineCurve\";\n this.v1 = v1;\n this.v2 = v2;\n }\n getPoint(t, optionalTarget = new Vector2()) {\n const point = optionalTarget;\n if (t === 1) {\n point.copy(this.v2);\n } else {\n point.copy(this.v2).sub(this.v1);\n point.multiplyScalar(t).add(this.v1);\n }\n return point;\n }\n getPointAt(u, optionalTarget) {\n return this.getPoint(u, optionalTarget);\n }\n getTangent(t, optionalTarget) {\n const tangent = optionalTarget || new Vector2();\n tangent.copy(this.v2).sub(this.v1).normalize();\n return tangent;\n }\n copy(source) {\n super.copy(source);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n return this;\n }\n}\nLineCurve.prototype.isLineCurve = true;\nclass LineCurve3 extends Curve {\n constructor(v1 = new Vector3(), v2 = new Vector3()) {\n super();\n this.type = \"LineCurve3\";\n this.isLineCurve3 = true;\n this.v1 = v1;\n this.v2 = v2;\n }\n getPoint(t, optionalTarget = new Vector3()) {\n const point = optionalTarget;\n if (t === 1) {\n point.copy(this.v2);\n } else {\n point.copy(this.v2).sub(this.v1);\n point.multiplyScalar(t).add(this.v1);\n }\n return point;\n }\n getPointAt(u, optionalTarget) {\n return this.getPoint(u, optionalTarget);\n }\n copy(source) {\n super.copy(source);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n return this;\n }\n}\nclass QuadraticBezierCurve extends Curve {\n constructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2()) {\n super();\n this.type = \"QuadraticBezierCurve\";\n this.v0 = v0;\n this.v1 = v1;\n this.v2 = v2;\n }\n getPoint(t, optionalTarget = new Vector2()) {\n const point = optionalTarget;\n const v0 = this.v0, v1 = this.v1, v2 = this.v2;\n point.set(QuadraticBezier(t, v0.x, v1.x, v2.x), QuadraticBezier(t, v0.y, v1.y, v2.y));\n return point;\n }\n copy(source) {\n super.copy(source);\n this.v0.copy(source.v0);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.v0 = this.v0.toArray();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.v0.fromArray(json.v0);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n return this;\n }\n}\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\nclass QuadraticBezierCurve3 extends Curve {\n constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3()) {\n super();\n this.type = \"QuadraticBezierCurve3\";\n this.v0 = v0;\n this.v1 = v1;\n this.v2 = v2;\n }\n getPoint(t, optionalTarget = new Vector3()) {\n const point = optionalTarget;\n const v0 = this.v0, v1 = this.v1, v2 = this.v2;\n point.set(QuadraticBezier(t, v0.x, v1.x, v2.x), QuadraticBezier(t, v0.y, v1.y, v2.y), QuadraticBezier(t, v0.z, v1.z, v2.z));\n return point;\n }\n copy(source) {\n super.copy(source);\n this.v0.copy(source.v0);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.v0 = this.v0.toArray();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.v0.fromArray(json.v0);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n return this;\n }\n}\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\nclass SplineCurve extends Curve {\n constructor(points = []) {\n super();\n this.type = \"SplineCurve\";\n this.points = points;\n }\n getPoint(t, optionalTarget = new Vector2()) {\n const point = optionalTarget;\n const points = this.points;\n const p = (points.length - 1) * t;\n const intPoint = Math.floor(p);\n const weight = p - intPoint;\n const p0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n const p1 = points[intPoint];\n const p2 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n const p3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n point.set(CatmullRom(weight, p0.x, p1.x, p2.x, p3.x), CatmullRom(weight, p0.y, p1.y, p2.y, p3.y));\n return point;\n }\n copy(source) {\n super.copy(source);\n this.points = [];\n for (let i = 0, l = source.points.length; i < l; i++) {\n const point = source.points[i];\n this.points.push(point.clone());\n }\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.points = [];\n for (let i = 0, l = this.points.length; i < l; i++) {\n const point = this.points[i];\n data.points.push(point.toArray());\n }\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.points = [];\n for (let i = 0, l = json.points.length; i < l; i++) {\n const point = json.points[i];\n this.points.push(new Vector2().fromArray(point));\n }\n return this;\n }\n}\nSplineCurve.prototype.isSplineCurve = true;\nvar Curves = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n ArcCurve,\n CatmullRomCurve3,\n CubicBezierCurve,\n CubicBezierCurve3,\n EllipseCurve,\n LineCurve,\n LineCurve3,\n QuadraticBezierCurve,\n QuadraticBezierCurve3,\n SplineCurve\n});\nclass CurvePath extends Curve {\n constructor() {\n super();\n this.type = \"CurvePath\";\n this.curves = [];\n this.autoClose = false;\n }\n add(curve) {\n this.curves.push(curve);\n }\n closePath() {\n const startPoint = this.curves[0].getPoint(0);\n const endPoint = this.curves[this.curves.length - 1].getPoint(1);\n if (!startPoint.equals(endPoint)) {\n this.curves.push(new LineCurve(endPoint, startPoint));\n }\n }\n getPoint(t, optionalTarget) {\n const d = t * this.getLength();\n const curveLengths = this.getCurveLengths();\n let i = 0;\n while (i < curveLengths.length) {\n if (curveLengths[i] >= d) {\n const diff = curveLengths[i] - d;\n const curve = this.curves[i];\n const segmentLength = curve.getLength();\n const u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n return curve.getPointAt(u, optionalTarget);\n }\n i++;\n }\n return null;\n }\n getLength() {\n const lens = this.getCurveLengths();\n return lens[lens.length - 1];\n }\n updateArcLengths() {\n this.needsUpdate = true;\n this.cacheLengths = null;\n this.getCurveLengths();\n }\n getCurveLengths() {\n if (this.cacheLengths && this.cacheLengths.length === this.curves.length) {\n return this.cacheLengths;\n }\n const lengths = [];\n let sums = 0;\n for (let i = 0, l = this.curves.length; i < l; i++) {\n sums += this.curves[i].getLength();\n lengths.push(sums);\n }\n this.cacheLengths = lengths;\n return lengths;\n }\n getSpacedPoints(divisions = 40) {\n const points = [];\n for (let i = 0; i <= divisions; i++) {\n points.push(this.getPoint(i / divisions));\n }\n if (this.autoClose) {\n points.push(points[0]);\n }\n return points;\n }\n getPoints(divisions = 12) {\n const points = [];\n let last;\n for (let i = 0, curves = this.curves; i < curves.length; i++) {\n const curve = curves[i];\n const resolution = curve && curve.isEllipseCurve ? divisions * 2 : curve && (curve.isLineCurve || curve.isLineCurve3) ? 1 : curve && curve.isSplineCurve ? divisions * curve.points.length : divisions;\n const pts = curve.getPoints(resolution);\n for (let j = 0; j < pts.length; j++) {\n const point = pts[j];\n if (last && last.equals(point))\n continue;\n points.push(point);\n last = point;\n }\n }\n if (this.autoClose && points.length > 1 && !points[points.length - 1].equals(points[0])) {\n points.push(points[0]);\n }\n return points;\n }\n copy(source) {\n super.copy(source);\n this.curves = [];\n for (let i = 0, l = source.curves.length; i < l; i++) {\n const curve = source.curves[i];\n this.curves.push(curve.clone());\n }\n this.autoClose = source.autoClose;\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.autoClose = this.autoClose;\n data.curves = [];\n for (let i = 0, l = this.curves.length; i < l; i++) {\n const curve = this.curves[i];\n data.curves.push(curve.toJSON());\n }\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.autoClose = json.autoClose;\n this.curves = [];\n for (let i = 0, l = json.curves.length; i < l; i++) {\n const curve = json.curves[i];\n this.curves.push(new Curves[curve.type]().fromJSON(curve));\n }\n return this;\n }\n}\nclass Path extends CurvePath {\n constructor(points) {\n super();\n this.type = \"Path\";\n this.currentPoint = new Vector2();\n if (points) {\n this.setFromPoints(points);\n }\n }\n setFromPoints(points) {\n this.moveTo(points[0].x, points[0].y);\n for (let i = 1, l = points.length; i < l; i++) {\n this.lineTo(points[i].x, points[i].y);\n }\n return this;\n }\n moveTo(x, y) {\n this.currentPoint.set(x, y);\n return this;\n }\n lineTo(x, y) {\n const curve = new LineCurve(this.currentPoint.clone(), new Vector2(x, y));\n this.curves.push(curve);\n this.currentPoint.set(x, y);\n return this;\n }\n quadraticCurveTo(aCPx, aCPy, aX, aY) {\n const curve = new QuadraticBezierCurve(this.currentPoint.clone(), new Vector2(aCPx, aCPy), new Vector2(aX, aY));\n this.curves.push(curve);\n this.currentPoint.set(aX, aY);\n return this;\n }\n bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n const curve = new CubicBezierCurve(this.currentPoint.clone(), new Vector2(aCP1x, aCP1y), new Vector2(aCP2x, aCP2y), new Vector2(aX, aY));\n this.curves.push(curve);\n this.currentPoint.set(aX, aY);\n return this;\n }\n splineThru(pts) {\n const npts = [this.currentPoint.clone()].concat(pts);\n const curve = new SplineCurve(npts);\n this.curves.push(curve);\n this.currentPoint.copy(pts[pts.length - 1]);\n return this;\n }\n arc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n const x0 = this.currentPoint.x;\n const y0 = this.currentPoint.y;\n this.absarc(aX + x0, aY + y0, aRadius, aStartAngle, aEndAngle, aClockwise);\n return this;\n }\n absarc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n this.absellipse(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n return this;\n }\n ellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n const x0 = this.currentPoint.x;\n const y0 = this.currentPoint.y;\n this.absellipse(aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n return this;\n }\n absellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n const curve = new EllipseCurve(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n if (this.curves.length > 0) {\n const firstPoint = curve.getPoint(0);\n if (!firstPoint.equals(this.currentPoint)) {\n this.lineTo(firstPoint.x, firstPoint.y);\n }\n }\n this.curves.push(curve);\n const lastPoint = curve.getPoint(1);\n this.currentPoint.copy(lastPoint);\n return this;\n }\n copy(source) {\n super.copy(source);\n this.currentPoint.copy(source.currentPoint);\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.currentPoint = this.currentPoint.toArray();\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.currentPoint.fromArray(json.currentPoint);\n return this;\n }\n}\nclass Shape extends Path {\n constructor(points) {\n super(points);\n this.uuid = generateUUID();\n this.type = \"Shape\";\n this.holes = [];\n }\n getPointsHoles(divisions) {\n const holesPts = [];\n for (let i = 0, l = this.holes.length; i < l; i++) {\n holesPts[i] = this.holes[i].getPoints(divisions);\n }\n return holesPts;\n }\n extractPoints(divisions) {\n return {\n shape: this.getPoints(divisions),\n holes: this.getPointsHoles(divisions)\n };\n }\n copy(source) {\n super.copy(source);\n this.holes = [];\n for (let i = 0, l = source.holes.length; i < l; i++) {\n const hole = source.holes[i];\n this.holes.push(hole.clone());\n }\n return this;\n }\n toJSON() {\n const data = super.toJSON();\n data.uuid = this.uuid;\n data.holes = [];\n for (let i = 0, l = this.holes.length; i < l; i++) {\n const hole = this.holes[i];\n data.holes.push(hole.toJSON());\n }\n return data;\n }\n fromJSON(json) {\n super.fromJSON(json);\n this.uuid = json.uuid;\n this.holes = [];\n for (let i = 0, l = json.holes.length; i < l; i++) {\n const hole = json.holes[i];\n this.holes.push(new Path().fromJSON(hole));\n }\n return this;\n }\n}\nconst Earcut = {\n triangulate: function(data, holeIndices, dim = 2) {\n const hasHoles = holeIndices && holeIndices.length;\n const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n let outerNode = linkedList(data, 0, outerLen, dim, true);\n const triangles = [];\n if (!outerNode || outerNode.next === outerNode.prev)\n return triangles;\n let minX, minY, maxX, maxY, x, y, invSize;\n if (hasHoles)\n outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n for (let i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (x > maxX)\n maxX = x;\n if (y > maxY)\n maxY = y;\n }\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n return triangles;\n }\n};\nfunction linkedList(data, start, end, dim, clockwise) {\n let i, last;\n if (clockwise === signedArea(data, start, end, dim) > 0) {\n for (i = start; i < end; i += dim)\n last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim)\n last = insertNode(i, data[i], data[i + 1], last);\n }\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n return last;\n}\nfunction filterPoints(start, end) {\n if (!start)\n return start;\n if (!end)\n end = start;\n let p = start, again;\n do {\n again = false;\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)\n break;\n again = true;\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n return end;\n}\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear)\n return;\n if (!pass && invSize)\n indexCurve(ear, minX, minY, invSize);\n let stop = ear, prev, next;\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n removeNode(ear);\n ear = next.next;\n stop = next.next;\n continue;\n }\n ear = next;\n if (ear === stop) {\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n break;\n }\n }\n}\nfunction isEar(ear) {\n const a = ear.prev, b = ear, c = ear.next;\n if (area(a, b, c) >= 0)\n return false;\n let p = ear.next.next;\n while (p !== ear.prev) {\n if (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 return false;\n p = p.next;\n }\n return true;\n}\nfunction isEarHashed(ear, minX, minY, invSize) {\n const a = ear.prev, b = ear, c = ear.next;\n if (area(a, b, c) >= 0)\n return false;\n const minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x, minTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y, maxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x, maxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y;\n const minZ = zOrder(minTX, minTY, minX, minY, invSize), maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n let p = ear.prevZ, n = ear.nextZ;\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next && 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 return false;\n p = p.prevZ;\n if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0)\n return false;\n n = n.nextZ;\n }\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next && 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 return false;\n p = p.prevZ;\n }\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0)\n return false;\n n = n.nextZ;\n }\n return true;\n}\nfunction cureLocalIntersections(start, triangles, dim) {\n let p = start;\n do {\n const a = p.prev, b = p.next.next;\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n removeNode(p);\n removeNode(p.next);\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n return filterPoints(p);\n}\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n let a = start;\n do {\n let b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n let c = splitPolygon(a, b);\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\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}\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n const queue = [];\n let i, len, start, end, list;\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)\n list.steiner = true;\n queue.push(getLeftmost(list));\n }\n queue.sort(compareX);\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n return outerNode;\n}\nfunction compareX(a, b) {\n return a.x - b.x;\n}\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n if (outerNode) {\n const b = splitPolygon(outerNode, hole);\n filterPoints(outerNode, outerNode.next);\n filterPoints(b, b.next);\n }\n}\nfunction findHoleBridge(hole, outerNode) {\n let p = outerNode;\n const hx = hole.x;\n const hy = hole.y;\n let qx = -Infinity, m;\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n const 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)\n return p;\n if (hy === p.next.y)\n 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 if (!m)\n return null;\n if (hx === qx)\n return m;\n const stop = m, mx = m.x, my = m.y;\n let tanMin = Infinity, tan;\n p = m;\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n tan = Math.abs(hy - p.y) / (hx - p.x);\n if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) {\n m = p;\n tanMin = tan;\n }\n }\n p = p.next;\n } while (p !== stop);\n return m;\n}\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\nfunction indexCurve(start, minX, minY, invSize) {\n let p = start;\n do {\n if (p.z === null)\n 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 p.prevZ.nextZ = null;\n p.prevZ = null;\n sortLinked(p);\n}\nfunction sortLinked(list) {\n let i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1;\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\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)\n break;\n }\n qSize = inSize;\n while (pSize > 0 || qSize > 0 && q) {\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 if (tail)\n tail.nextZ = e;\n else\n list = e;\n e.prevZ = tail;\n tail = e;\n }\n p = q;\n }\n tail.nextZ = null;\n inSize *= 2;\n } while (numMerges > 1);\n return list;\n}\nfunction zOrder(x, y, minX, minY, invSize) {\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n x = (x | x << 8) & 16711935;\n x = (x | x << 4) & 252645135;\n x = (x | x << 2) & 858993459;\n x = (x | x << 1) & 1431655765;\n y = (y | y << 8) & 16711935;\n y = (y | y << 4) & 252645135;\n y = (y | y << 2) & 858993459;\n y = (y | y << 1) & 1431655765;\n return x | y << 1;\n}\nfunction getLeftmost(start) {\n let p = start, leftmost = start;\n do {\n if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y)\n leftmost = p;\n p = p.next;\n } while (p !== start);\n return leftmost;\n}\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px2, py2) {\n return (cx - px2) * (ay - py2) - (ax - px2) * (cy - py2) >= 0 && (ax - px2) * (by - py2) - (bx - px2) * (ay - py2) >= 0 && (bx - px2) * (cy - py2) - (cx - px2) * (by - py2) >= 0;\n}\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && (area(a.prev, a, b.prev) || area(a, b.prev, b)) || equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0);\n}\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\nfunction intersects(p1, q1, p2, q2) {\n const o1 = sign(area(p1, q1, p2));\n const o2 = sign(area(p1, q1, q2));\n const o3 = sign(area(p2, q2, p1));\n const o4 = sign(area(p2, q2, q1));\n if (o1 !== o2 && o3 !== o4)\n return true;\n if (o1 === 0 && onSegment(p1, p2, q1))\n return true;\n if (o2 === 0 && onSegment(p1, q2, q1))\n return true;\n if (o3 === 0 && onSegment(p2, p1, q2))\n return true;\n if (o4 === 0 && onSegment(p2, q1, q2))\n return true;\n return false;\n}\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\nfunction intersectsPolygon(a, b) {\n let p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b))\n return true;\n p = p.next;\n } while (p !== a);\n return false;\n}\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\nfunction middleInside(a, b) {\n let p = a, inside = false;\n const px2 = (a.x + b.x) / 2, py2 = (a.y + b.y) / 2;\n do {\n if (p.y > py2 !== p.next.y > py2 && p.next.y !== p.y && px2 < (p.next.x - p.x) * (py2 - p.y) / (p.next.y - p.y) + p.x)\n inside = !inside;\n p = p.next;\n } while (p !== a);\n return inside;\n}\nfunction splitPolygon(a, b) {\n const a2 = new Node(a.i, a.x, a.y), b2 = new Node(b.i, b.x, b.y), an = a.next, bp = b.prev;\n a.next = b;\n b.prev = a;\n a2.next = an;\n an.prev = a2;\n b2.next = a2;\n a2.prev = b2;\n bp.next = b2;\n b2.prev = bp;\n return b2;\n}\nfunction insertNode(i, x, y, last) {\n const p = new Node(i, x, y);\n if (!last) {\n p.prev = p;\n p.next = p;\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}\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n if (p.prevZ)\n p.prevZ.nextZ = p.nextZ;\n if (p.nextZ)\n p.nextZ.prevZ = p.prevZ;\n}\nfunction Node(i, x, y) {\n this.i = i;\n this.x = x;\n this.y = y;\n this.prev = null;\n this.next = null;\n this.z = null;\n this.prevZ = null;\n this.nextZ = null;\n this.steiner = false;\n}\nfunction signedArea(data, start, end, dim) {\n let sum = 0;\n for (let 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}\nclass ShapeUtils {\n static area(contour) {\n const n = contour.length;\n let a = 0;\n for (let p = n - 1, q = 0; q < n; p = q++) {\n a += contour[p].x * contour[q].y - contour[q].x * contour[p].y;\n }\n return a * 0.5;\n }\n static isClockWise(pts) {\n return ShapeUtils.area(pts) < 0;\n }\n static triangulateShape(contour, holes) {\n const vertices = [];\n const holeIndices = [];\n const faces = [];\n removeDupEndPts(contour);\n addContour(vertices, contour);\n let holeIndex = contour.length;\n holes.forEach(removeDupEndPts);\n for (let i = 0; i < holes.length; i++) {\n holeIndices.push(holeIndex);\n holeIndex += holes[i].length;\n addContour(vertices, holes[i]);\n }\n const triangles = Earcut.triangulate(vertices, holeIndices);\n for (let i = 0; i < triangles.length; i += 3) {\n faces.push(triangles.slice(i, i + 3));\n }\n return faces;\n }\n}\nfunction removeDupEndPts(points) {\n const l = points.length;\n if (l > 2 && points[l - 1].equals(points[0])) {\n points.pop();\n }\n}\nfunction addContour(vertices, contour) {\n for (let i = 0; i < contour.length; i++) {\n vertices.push(contour[i].x);\n vertices.push(contour[i].y);\n }\n}\nclass ExtrudeGeometry extends BufferGeometry {\n constructor(shapes = new Shape([new Vector2(0.5, 0.5), new Vector2(-0.5, 0.5), new Vector2(-0.5, -0.5), new Vector2(0.5, -0.5)]), options = {}) {\n super();\n this.type = \"ExtrudeGeometry\";\n this.parameters = {\n shapes,\n options\n };\n shapes = Array.isArray(shapes) ? shapes : [shapes];\n const scope = this;\n const verticesArray = [];\n const uvArray = [];\n for (let i = 0, l = shapes.length; i < l; i++) {\n const shape = shapes[i];\n addShape(shape);\n }\n this.setAttribute(\"position\", new Float32BufferAttribute(verticesArray, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvArray, 2));\n this.computeVertexNormals();\n function addShape(shape) {\n const placeholder = [];\n const curveSegments = options.curveSegments !== void 0 ? options.curveSegments : 12;\n const steps = options.steps !== void 0 ? options.steps : 1;\n let depth = options.depth !== void 0 ? options.depth : 1;\n let bevelEnabled = options.bevelEnabled !== void 0 ? options.bevelEnabled : true;\n let bevelThickness = options.bevelThickness !== void 0 ? options.bevelThickness : 0.2;\n let bevelSize = options.bevelSize !== void 0 ? options.bevelSize : bevelThickness - 0.1;\n let bevelOffset = options.bevelOffset !== void 0 ? options.bevelOffset : 0;\n let bevelSegments = options.bevelSegments !== void 0 ? options.bevelSegments : 3;\n const extrudePath = options.extrudePath;\n const uvgen = options.UVGenerator !== void 0 ? options.UVGenerator : WorldUVGenerator;\n if (options.amount !== void 0) {\n console.warn(\"THREE.ExtrudeBufferGeometry: amount has been renamed to depth.\");\n depth = options.amount;\n }\n let extrudePts, extrudeByPath = false;\n let splineTube, binormal, normal, position2;\n if (extrudePath) {\n extrudePts = extrudePath.getSpacedPoints(steps);\n extrudeByPath = true;\n bevelEnabled = false;\n splineTube = extrudePath.computeFrenetFrames(steps, false);\n binormal = new Vector3();\n normal = new Vector3();\n position2 = new Vector3();\n }\n if (!bevelEnabled) {\n bevelSegments = 0;\n bevelThickness = 0;\n bevelSize = 0;\n bevelOffset = 0;\n }\n const shapePoints = shape.extractPoints(curveSegments);\n let vertices = shapePoints.shape;\n const holes = shapePoints.holes;\n const reverse = !ShapeUtils.isClockWise(vertices);\n if (reverse) {\n vertices = vertices.reverse();\n for (let h = 0, hl = holes.length; h < hl; h++) {\n const ahole = holes[h];\n if (ShapeUtils.isClockWise(ahole)) {\n holes[h] = ahole.reverse();\n }\n }\n }\n const faces = ShapeUtils.triangulateShape(vertices, holes);\n const contour = vertices;\n for (let h = 0, hl = holes.length; h < hl; h++) {\n const ahole = holes[h];\n vertices = vertices.concat(ahole);\n }\n function scalePt2(pt, vec, size) {\n if (!vec)\n console.error(\"THREE.ExtrudeGeometry: vec does not exist\");\n return vec.clone().multiplyScalar(size).add(pt);\n }\n const vlen = vertices.length, flen = faces.length;\n function getBevelVec(inPt, inPrev, inNext) {\n let v_trans_x, v_trans_y, shrink_by;\n const v_prev_x = inPt.x - inPrev.x, v_prev_y = inPt.y - inPrev.y;\n const v_next_x = inNext.x - inPt.x, v_next_y = inNext.y - inPt.y;\n const v_prev_lensq = v_prev_x * v_prev_x + v_prev_y * v_prev_y;\n const collinear0 = v_prev_x * v_next_y - v_prev_y * v_next_x;\n if (Math.abs(collinear0) > Number.EPSILON) {\n const v_prev_len = Math.sqrt(v_prev_lensq);\n const v_next_len = Math.sqrt(v_next_x * v_next_x + v_next_y * v_next_y);\n const ptPrevShift_x = inPrev.x - v_prev_y / v_prev_len;\n const ptPrevShift_y = inPrev.y + v_prev_x / v_prev_len;\n const ptNextShift_x = inNext.x - v_next_y / v_next_len;\n const ptNextShift_y = inNext.y + v_next_x / v_next_len;\n const sf = ((ptNextShift_x - ptPrevShift_x) * v_next_y - (ptNextShift_y - ptPrevShift_y) * v_next_x) / (v_prev_x * v_next_y - v_prev_y * v_next_x);\n v_trans_x = ptPrevShift_x + v_prev_x * sf - inPt.x;\n v_trans_y = ptPrevShift_y + v_prev_y * sf - inPt.y;\n const v_trans_lensq = v_trans_x * v_trans_x + v_trans_y * v_trans_y;\n if (v_trans_lensq <= 2) {\n return new Vector2(v_trans_x, v_trans_y);\n } else {\n shrink_by = Math.sqrt(v_trans_lensq / 2);\n }\n } else {\n let direction_eq = false;\n if (v_prev_x > Number.EPSILON) {\n if (v_next_x > Number.EPSILON) {\n direction_eq = true;\n }\n } else {\n if (v_prev_x < -Number.EPSILON) {\n if (v_next_x < -Number.EPSILON) {\n direction_eq = true;\n }\n } else {\n if (Math.sign(v_prev_y) === Math.sign(v_next_y)) {\n direction_eq = true;\n }\n }\n }\n if (direction_eq) {\n v_trans_x = -v_prev_y;\n v_trans_y = v_prev_x;\n shrink_by = Math.sqrt(v_prev_lensq);\n } else {\n v_trans_x = v_prev_x;\n v_trans_y = v_prev_y;\n shrink_by = Math.sqrt(v_prev_lensq / 2);\n }\n }\n return new Vector2(v_trans_x / shrink_by, v_trans_y / shrink_by);\n }\n const contourMovements = [];\n for (let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) {\n if (j === il)\n j = 0;\n if (k === il)\n k = 0;\n contourMovements[i] = getBevelVec(contour[i], contour[j], contour[k]);\n }\n const holesMovements = [];\n let oneHoleMovements, verticesMovements = contourMovements.concat();\n for (let h = 0, hl = holes.length; h < hl; h++) {\n const ahole = holes[h];\n oneHoleMovements = [];\n for (let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) {\n if (j === il)\n j = 0;\n if (k === il)\n k = 0;\n oneHoleMovements[i] = getBevelVec(ahole[i], ahole[j], ahole[k]);\n }\n holesMovements.push(oneHoleMovements);\n verticesMovements = verticesMovements.concat(oneHoleMovements);\n }\n for (let b = 0; b < bevelSegments; b++) {\n const t = b / bevelSegments;\n const z = bevelThickness * Math.cos(t * Math.PI / 2);\n const bs2 = bevelSize * Math.sin(t * Math.PI / 2) + bevelOffset;\n for (let i = 0, il = contour.length; i < il; i++) {\n const vert = scalePt2(contour[i], contourMovements[i], bs2);\n v(vert.x, vert.y, -z);\n }\n for (let h = 0, hl = holes.length; h < hl; h++) {\n const ahole = holes[h];\n oneHoleMovements = holesMovements[h];\n for (let i = 0, il = ahole.length; i < il; i++) {\n const vert = scalePt2(ahole[i], oneHoleMovements[i], bs2);\n v(vert.x, vert.y, -z);\n }\n }\n }\n const bs = bevelSize + bevelOffset;\n for (let i = 0; i < vlen; i++) {\n const vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i];\n if (!extrudeByPath) {\n v(vert.x, vert.y, 0);\n } else {\n normal.copy(splineTube.normals[0]).multiplyScalar(vert.x);\n binormal.copy(splineTube.binormals[0]).multiplyScalar(vert.y);\n position2.copy(extrudePts[0]).add(normal).add(binormal);\n v(position2.x, position2.y, position2.z);\n }\n }\n for (let s = 1; s <= steps; s++) {\n for (let i = 0; i < vlen; i++) {\n const vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i];\n if (!extrudeByPath) {\n v(vert.x, vert.y, depth / steps * s);\n } else {\n normal.copy(splineTube.normals[s]).multiplyScalar(vert.x);\n binormal.copy(splineTube.binormals[s]).multiplyScalar(vert.y);\n position2.copy(extrudePts[s]).add(normal).add(binormal);\n v(position2.x, position2.y, position2.z);\n }\n }\n }\n for (let b = bevelSegments - 1; b >= 0; b--) {\n const t = b / bevelSegments;\n const z = bevelThickness * Math.cos(t * Math.PI / 2);\n const bs2 = bevelSize * Math.sin(t * Math.PI / 2) + bevelOffset;\n for (let i = 0, il = contour.length; i < il; i++) {\n const vert = scalePt2(contour[i], contourMovements[i], bs2);\n v(vert.x, vert.y, depth + z);\n }\n for (let h = 0, hl = holes.length; h < hl; h++) {\n const ahole = holes[h];\n oneHoleMovements = holesMovements[h];\n for (let i = 0, il = ahole.length; i < il; i++) {\n const vert = scalePt2(ahole[i], oneHoleMovements[i], bs2);\n if (!extrudeByPath) {\n v(vert.x, vert.y, depth + z);\n } else {\n v(vert.x, vert.y + extrudePts[steps - 1].y, extrudePts[steps - 1].x + z);\n }\n }\n }\n }\n buildLidFaces();\n buildSideFaces();\n function buildLidFaces() {\n const start = verticesArray.length / 3;\n if (bevelEnabled) {\n let layer = 0;\n let offset = vlen * layer;\n for (let i = 0; i < flen; i++) {\n const face = faces[i];\n f3(face[2] + offset, face[1] + offset, face[0] + offset);\n }\n layer = steps + bevelSegments * 2;\n offset = vlen * layer;\n for (let i = 0; i < flen; i++) {\n const face = faces[i];\n f3(face[0] + offset, face[1] + offset, face[2] + offset);\n }\n } else {\n for (let i = 0; i < flen; i++) {\n const face = faces[i];\n f3(face[2], face[1], face[0]);\n }\n for (let i = 0; i < flen; i++) {\n const face = faces[i];\n f3(face[0] + vlen * steps, face[1] + vlen * steps, face[2] + vlen * steps);\n }\n }\n scope.addGroup(start, verticesArray.length / 3 - start, 0);\n }\n function buildSideFaces() {\n const start = verticesArray.length / 3;\n let layeroffset = 0;\n sidewalls(contour, layeroffset);\n layeroffset += contour.length;\n for (let h = 0, hl = holes.length; h < hl; h++) {\n const ahole = holes[h];\n sidewalls(ahole, layeroffset);\n layeroffset += ahole.length;\n }\n scope.addGroup(start, verticesArray.length / 3 - start, 1);\n }\n function sidewalls(contour2, layeroffset) {\n let i = contour2.length;\n while (--i >= 0) {\n const j = i;\n let k = i - 1;\n if (k < 0)\n k = contour2.length - 1;\n for (let s = 0, sl = steps + bevelSegments * 2; s < sl; s++) {\n const slen1 = vlen * s;\n const slen2 = vlen * (s + 1);\n const a = layeroffset + j + slen1, b = layeroffset + k + slen1, c = layeroffset + k + slen2, d = layeroffset + j + slen2;\n f4(a, b, c, d);\n }\n }\n }\n function v(x, y, z) {\n placeholder.push(x);\n placeholder.push(y);\n placeholder.push(z);\n }\n function f3(a, b, c) {\n addVertex(a);\n addVertex(b);\n addVertex(c);\n const nextIndex = verticesArray.length / 3;\n const uvs = uvgen.generateTopUV(scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n addUV(uvs[0]);\n addUV(uvs[1]);\n addUV(uvs[2]);\n }\n function f4(a, b, c, d) {\n addVertex(a);\n addVertex(b);\n addVertex(d);\n addVertex(b);\n addVertex(c);\n addVertex(d);\n const nextIndex = verticesArray.length / 3;\n const uvs = uvgen.generateSideWallUV(scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n addUV(uvs[0]);\n addUV(uvs[1]);\n addUV(uvs[3]);\n addUV(uvs[1]);\n addUV(uvs[2]);\n addUV(uvs[3]);\n }\n function addVertex(index) {\n verticesArray.push(placeholder[index * 3 + 0]);\n verticesArray.push(placeholder[index * 3 + 1]);\n verticesArray.push(placeholder[index * 3 + 2]);\n }\n function addUV(vector2) {\n uvArray.push(vector2.x);\n uvArray.push(vector2.y);\n }\n }\n }\n toJSON() {\n const data = super.toJSON();\n const shapes = this.parameters.shapes;\n const options = this.parameters.options;\n return toJSON$1(shapes, options, data);\n }\n static fromJSON(data, shapes) {\n const geometryShapes = [];\n for (let j = 0, jl = data.shapes.length; j < jl; j++) {\n const shape = shapes[data.shapes[j]];\n geometryShapes.push(shape);\n }\n const extrudePath = data.options.extrudePath;\n if (extrudePath !== void 0) {\n data.options.extrudePath = new Curves[extrudePath.type]().fromJSON(extrudePath);\n }\n return new ExtrudeGeometry(geometryShapes, data.options);\n }\n}\nconst WorldUVGenerator = {\n generateTopUV: function(geometry, vertices, indexA, indexB, indexC) {\n const a_x = vertices[indexA * 3];\n const a_y = vertices[indexA * 3 + 1];\n const b_x = vertices[indexB * 3];\n const b_y = vertices[indexB * 3 + 1];\n const c_x = vertices[indexC * 3];\n const c_y = vertices[indexC * 3 + 1];\n return [\n new Vector2(a_x, a_y),\n new Vector2(b_x, b_y),\n new Vector2(c_x, c_y)\n ];\n },\n generateSideWallUV: function(geometry, vertices, indexA, indexB, indexC, indexD) {\n const a_x = vertices[indexA * 3];\n const a_y = vertices[indexA * 3 + 1];\n const a_z = vertices[indexA * 3 + 2];\n const b_x = vertices[indexB * 3];\n const b_y = vertices[indexB * 3 + 1];\n const b_z = vertices[indexB * 3 + 2];\n const c_x = vertices[indexC * 3];\n const c_y = vertices[indexC * 3 + 1];\n const c_z = vertices[indexC * 3 + 2];\n const d_x = vertices[indexD * 3];\n const d_y = vertices[indexD * 3 + 1];\n const d_z = vertices[indexD * 3 + 2];\n if (Math.abs(a_y - b_y) < Math.abs(a_x - b_x)) {\n return [\n new Vector2(a_x, 1 - a_z),\n new Vector2(b_x, 1 - b_z),\n new Vector2(c_x, 1 - c_z),\n new Vector2(d_x, 1 - d_z)\n ];\n } else {\n return [\n new Vector2(a_y, 1 - a_z),\n new Vector2(b_y, 1 - b_z),\n new Vector2(c_y, 1 - c_z),\n new Vector2(d_y, 1 - d_z)\n ];\n }\n }\n};\nfunction toJSON$1(shapes, options, data) {\n data.shapes = [];\n if (Array.isArray(shapes)) {\n for (let i = 0, l = shapes.length; i < l; i++) {\n const shape = shapes[i];\n data.shapes.push(shape.uuid);\n }\n } else {\n data.shapes.push(shapes.uuid);\n }\n if (options.extrudePath !== void 0)\n data.options.extrudePath = options.extrudePath.toJSON();\n return data;\n}\nclass IcosahedronGeometry extends PolyhedronGeometry {\n constructor(radius = 1, detail = 0) {\n const t = (1 + Math.sqrt(5)) / 2;\n const vertices = [\n -1,\n t,\n 0,\n 1,\n t,\n 0,\n -1,\n -t,\n 0,\n 1,\n -t,\n 0,\n 0,\n -1,\n t,\n 0,\n 1,\n t,\n 0,\n -1,\n -t,\n 0,\n 1,\n -t,\n t,\n 0,\n -1,\n t,\n 0,\n 1,\n -t,\n 0,\n -1,\n -t,\n 0,\n 1\n ];\n const indices = [\n 0,\n 11,\n 5,\n 0,\n 5,\n 1,\n 0,\n 1,\n 7,\n 0,\n 7,\n 10,\n 0,\n 10,\n 11,\n 1,\n 5,\n 9,\n 5,\n 11,\n 4,\n 11,\n 10,\n 2,\n 10,\n 7,\n 6,\n 7,\n 1,\n 8,\n 3,\n 9,\n 4,\n 3,\n 4,\n 2,\n 3,\n 2,\n 6,\n 3,\n 6,\n 8,\n 3,\n 8,\n 9,\n 4,\n 9,\n 5,\n 2,\n 4,\n 11,\n 6,\n 2,\n 10,\n 8,\n 6,\n 7,\n 9,\n 8,\n 1\n ];\n super(vertices, indices, radius, detail);\n this.type = \"IcosahedronGeometry\";\n this.parameters = {\n radius,\n detail\n };\n }\n static fromJSON(data) {\n return new IcosahedronGeometry(data.radius, data.detail);\n }\n}\nclass LatheGeometry extends BufferGeometry {\n constructor(points = [new Vector2(0, 0.5), new Vector2(0.5, 0), new Vector2(0, -0.5)], segments = 12, phiStart = 0, phiLength = Math.PI * 2) {\n super();\n this.type = \"LatheGeometry\";\n this.parameters = {\n points,\n segments,\n phiStart,\n phiLength\n };\n segments = Math.floor(segments);\n phiLength = clamp(phiLength, 0, Math.PI * 2);\n const indices = [];\n const vertices = [];\n const uvs = [];\n const initNormals = [];\n const normals = [];\n const inverseSegments = 1 / segments;\n const vertex2 = new Vector3();\n const uv = new Vector2();\n const normal = new Vector3();\n const curNormal = new Vector3();\n const prevNormal = new Vector3();\n let dx = 0;\n let dy = 0;\n for (let j = 0; j <= points.length - 1; j++) {\n switch (j) {\n case 0:\n dx = points[j + 1].x - points[j].x;\n dy = points[j + 1].y - points[j].y;\n normal.x = dy * 1;\n normal.y = -dx;\n normal.z = dy * 0;\n prevNormal.copy(normal);\n normal.normalize();\n initNormals.push(normal.x, normal.y, normal.z);\n break;\n case points.length - 1:\n initNormals.push(prevNormal.x, prevNormal.y, prevNormal.z);\n break;\n default:\n dx = points[j + 1].x - points[j].x;\n dy = points[j + 1].y - points[j].y;\n normal.x = dy * 1;\n normal.y = -dx;\n normal.z = dy * 0;\n curNormal.copy(normal);\n normal.x += prevNormal.x;\n normal.y += prevNormal.y;\n normal.z += prevNormal.z;\n normal.normalize();\n initNormals.push(normal.x, normal.y, normal.z);\n prevNormal.copy(curNormal);\n }\n }\n for (let i = 0; i <= segments; i++) {\n const phi = phiStart + i * inverseSegments * phiLength;\n const sin = Math.sin(phi);\n const cos = Math.cos(phi);\n for (let j = 0; j <= points.length - 1; j++) {\n vertex2.x = points[j].x * sin;\n vertex2.y = points[j].y;\n vertex2.z = points[j].x * cos;\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n uv.x = i / segments;\n uv.y = j / (points.length - 1);\n uvs.push(uv.x, uv.y);\n const x = initNormals[3 * j + 0] * sin;\n const y = initNormals[3 * j + 1];\n const z = initNormals[3 * j + 0] * cos;\n normals.push(x, y, z);\n }\n }\n for (let i = 0; i < segments; i++) {\n for (let j = 0; j < points.length - 1; j++) {\n const base = j + i * points.length;\n const a = base;\n const b = base + points.length;\n const c = base + points.length + 1;\n const d = base + 1;\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n }\n static fromJSON(data) {\n return new LatheGeometry(data.points, data.segments, data.phiStart, data.phiLength);\n }\n}\nclass OctahedronGeometry extends PolyhedronGeometry {\n constructor(radius = 1, detail = 0) {\n const vertices = [\n 1,\n 0,\n 0,\n -1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n -1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n -1\n ];\n const indices = [\n 0,\n 2,\n 4,\n 0,\n 4,\n 3,\n 0,\n 3,\n 5,\n 0,\n 5,\n 2,\n 1,\n 2,\n 5,\n 1,\n 5,\n 3,\n 1,\n 3,\n 4,\n 1,\n 4,\n 2\n ];\n super(vertices, indices, radius, detail);\n this.type = \"OctahedronGeometry\";\n this.parameters = {\n radius,\n detail\n };\n }\n static fromJSON(data) {\n return new OctahedronGeometry(data.radius, data.detail);\n }\n}\nclass RingGeometry extends BufferGeometry {\n constructor(innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2) {\n super();\n this.type = \"RingGeometry\";\n this.parameters = {\n innerRadius,\n outerRadius,\n thetaSegments,\n phiSegments,\n thetaStart,\n thetaLength\n };\n thetaSegments = Math.max(3, thetaSegments);\n phiSegments = Math.max(1, phiSegments);\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n let radius = innerRadius;\n const radiusStep = (outerRadius - innerRadius) / phiSegments;\n const vertex2 = new Vector3();\n const uv = new Vector2();\n for (let j = 0; j <= phiSegments; j++) {\n for (let i = 0; i <= thetaSegments; i++) {\n const segment = thetaStart + i / thetaSegments * thetaLength;\n vertex2.x = radius * Math.cos(segment);\n vertex2.y = radius * Math.sin(segment);\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n normals.push(0, 0, 1);\n uv.x = (vertex2.x / outerRadius + 1) / 2;\n uv.y = (vertex2.y / outerRadius + 1) / 2;\n uvs.push(uv.x, uv.y);\n }\n radius += radiusStep;\n }\n for (let j = 0; j < phiSegments; j++) {\n const thetaSegmentLevel = j * (thetaSegments + 1);\n for (let i = 0; i < thetaSegments; i++) {\n const segment = i + thetaSegmentLevel;\n const a = segment;\n const b = segment + thetaSegments + 1;\n const c = segment + thetaSegments + 2;\n const d = segment + 1;\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n }\n static fromJSON(data) {\n return new RingGeometry(data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength);\n }\n}\nclass ShapeGeometry extends BufferGeometry {\n constructor(shapes = new Shape([new Vector2(0, 0.5), new Vector2(-0.5, -0.5), new Vector2(0.5, -0.5)]), curveSegments = 12) {\n super();\n this.type = \"ShapeGeometry\";\n this.parameters = {\n shapes,\n curveSegments\n };\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n let groupStart = 0;\n let groupCount = 0;\n if (Array.isArray(shapes) === false) {\n addShape(shapes);\n } else {\n for (let i = 0; i < shapes.length; i++) {\n addShape(shapes[i]);\n this.addGroup(groupStart, groupCount, i);\n groupStart += groupCount;\n groupCount = 0;\n }\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n function addShape(shape) {\n const indexOffset = vertices.length / 3;\n const points = shape.extractPoints(curveSegments);\n let shapeVertices = points.shape;\n const shapeHoles = points.holes;\n if (ShapeUtils.isClockWise(shapeVertices) === false) {\n shapeVertices = shapeVertices.reverse();\n }\n for (let i = 0, l = shapeHoles.length; i < l; i++) {\n const shapeHole = shapeHoles[i];\n if (ShapeUtils.isClockWise(shapeHole) === true) {\n shapeHoles[i] = shapeHole.reverse();\n }\n }\n const faces = ShapeUtils.triangulateShape(shapeVertices, shapeHoles);\n for (let i = 0, l = shapeHoles.length; i < l; i++) {\n const shapeHole = shapeHoles[i];\n shapeVertices = shapeVertices.concat(shapeHole);\n }\n for (let i = 0, l = shapeVertices.length; i < l; i++) {\n const vertex2 = shapeVertices[i];\n vertices.push(vertex2.x, vertex2.y, 0);\n normals.push(0, 0, 1);\n uvs.push(vertex2.x, vertex2.y);\n }\n for (let i = 0, l = faces.length; i < l; i++) {\n const face = faces[i];\n const a = face[0] + indexOffset;\n const b = face[1] + indexOffset;\n const c = face[2] + indexOffset;\n indices.push(a, b, c);\n groupCount += 3;\n }\n }\n }\n toJSON() {\n const data = super.toJSON();\n const shapes = this.parameters.shapes;\n return toJSON(shapes, data);\n }\n static fromJSON(data, shapes) {\n const geometryShapes = [];\n for (let j = 0, jl = data.shapes.length; j < jl; j++) {\n const shape = shapes[data.shapes[j]];\n geometryShapes.push(shape);\n }\n return new ShapeGeometry(geometryShapes, data.curveSegments);\n }\n}\nfunction toJSON(shapes, data) {\n data.shapes = [];\n if (Array.isArray(shapes)) {\n for (let i = 0, l = shapes.length; i < l; i++) {\n const shape = shapes[i];\n data.shapes.push(shape.uuid);\n }\n } else {\n data.shapes.push(shapes.uuid);\n }\n return data;\n}\nclass SphereGeometry extends BufferGeometry {\n constructor(radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI) {\n super();\n this.type = \"SphereGeometry\";\n this.parameters = {\n radius,\n widthSegments,\n heightSegments,\n phiStart,\n phiLength,\n thetaStart,\n thetaLength\n };\n widthSegments = Math.max(3, Math.floor(widthSegments));\n heightSegments = Math.max(2, Math.floor(heightSegments));\n const thetaEnd = Math.min(thetaStart + thetaLength, Math.PI);\n let index = 0;\n const grid = [];\n const vertex2 = new Vector3();\n const normal = new Vector3();\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n for (let iy = 0; iy <= heightSegments; iy++) {\n const verticesRow = [];\n const v = iy / heightSegments;\n let uOffset = 0;\n if (iy == 0 && thetaStart == 0) {\n uOffset = 0.5 / widthSegments;\n } else if (iy == heightSegments && thetaEnd == Math.PI) {\n uOffset = -0.5 / widthSegments;\n }\n for (let ix = 0; ix <= widthSegments; ix++) {\n const u = ix / widthSegments;\n vertex2.x = -radius * Math.cos(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n vertex2.y = radius * Math.cos(thetaStart + v * thetaLength);\n vertex2.z = radius * Math.sin(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n normal.copy(vertex2).normalize();\n normals.push(normal.x, normal.y, normal.z);\n uvs.push(u + uOffset, 1 - v);\n verticesRow.push(index++);\n }\n grid.push(verticesRow);\n }\n for (let iy = 0; iy < heightSegments; iy++) {\n for (let ix = 0; ix < widthSegments; ix++) {\n const a = grid[iy][ix + 1];\n const b = grid[iy][ix];\n const c = grid[iy + 1][ix];\n const d = grid[iy + 1][ix + 1];\n if (iy !== 0 || thetaStart > 0)\n indices.push(a, b, d);\n if (iy !== heightSegments - 1 || thetaEnd < Math.PI)\n indices.push(b, c, d);\n }\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n }\n static fromJSON(data) {\n return new SphereGeometry(data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength);\n }\n}\nclass TetrahedronGeometry extends PolyhedronGeometry {\n constructor(radius = 1, detail = 0) {\n const vertices = [\n 1,\n 1,\n 1,\n -1,\n -1,\n 1,\n -1,\n 1,\n -1,\n 1,\n -1,\n -1\n ];\n const indices = [\n 2,\n 1,\n 0,\n 0,\n 3,\n 2,\n 1,\n 3,\n 0,\n 2,\n 3,\n 1\n ];\n super(vertices, indices, radius, detail);\n this.type = \"TetrahedronGeometry\";\n this.parameters = {\n radius,\n detail\n };\n }\n static fromJSON(data) {\n return new TetrahedronGeometry(data.radius, data.detail);\n }\n}\nclass TorusGeometry extends BufferGeometry {\n constructor(radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2) {\n super();\n this.type = \"TorusGeometry\";\n this.parameters = {\n radius,\n tube,\n radialSegments,\n tubularSegments,\n arc\n };\n radialSegments = Math.floor(radialSegments);\n tubularSegments = Math.floor(tubularSegments);\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n const center = new Vector3();\n const vertex2 = new Vector3();\n const normal = new Vector3();\n for (let j = 0; j <= radialSegments; j++) {\n for (let i = 0; i <= tubularSegments; i++) {\n const u = i / tubularSegments * arc;\n const v = j / radialSegments * Math.PI * 2;\n vertex2.x = (radius + tube * Math.cos(v)) * Math.cos(u);\n vertex2.y = (radius + tube * Math.cos(v)) * Math.sin(u);\n vertex2.z = tube * Math.sin(v);\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n center.x = radius * Math.cos(u);\n center.y = radius * Math.sin(u);\n normal.subVectors(vertex2, center).normalize();\n normals.push(normal.x, normal.y, normal.z);\n uvs.push(i / tubularSegments);\n uvs.push(j / radialSegments);\n }\n }\n for (let j = 1; j <= radialSegments; j++) {\n for (let i = 1; i <= tubularSegments; i++) {\n const a = (tubularSegments + 1) * j + i - 1;\n const b = (tubularSegments + 1) * (j - 1) + i - 1;\n const c = (tubularSegments + 1) * (j - 1) + i;\n const d = (tubularSegments + 1) * j + i;\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n }\n static fromJSON(data) {\n return new TorusGeometry(data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc);\n }\n}\nclass TorusKnotGeometry extends BufferGeometry {\n constructor(radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3) {\n super();\n this.type = \"TorusKnotGeometry\";\n this.parameters = {\n radius,\n tube,\n tubularSegments,\n radialSegments,\n p,\n q\n };\n tubularSegments = Math.floor(tubularSegments);\n radialSegments = Math.floor(radialSegments);\n const indices = [];\n const vertices = [];\n const normals = [];\n const uvs = [];\n const vertex2 = new Vector3();\n const normal = new Vector3();\n const P1 = new Vector3();\n const P2 = new Vector3();\n const B = new Vector3();\n const T = new Vector3();\n const N = new Vector3();\n for (let i = 0; i <= tubularSegments; ++i) {\n const u = i / tubularSegments * p * Math.PI * 2;\n calculatePositionOnCurve(u, p, q, radius, P1);\n calculatePositionOnCurve(u + 0.01, p, q, radius, P2);\n T.subVectors(P2, P1);\n N.addVectors(P2, P1);\n B.crossVectors(T, N);\n N.crossVectors(B, T);\n B.normalize();\n N.normalize();\n for (let j = 0; j <= radialSegments; ++j) {\n const v = j / radialSegments * Math.PI * 2;\n const cx = -tube * Math.cos(v);\n const cy = tube * Math.sin(v);\n vertex2.x = P1.x + (cx * N.x + cy * B.x);\n vertex2.y = P1.y + (cx * N.y + cy * B.y);\n vertex2.z = P1.z + (cx * N.z + cy * B.z);\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n normal.subVectors(vertex2, P1).normalize();\n normals.push(normal.x, normal.y, normal.z);\n uvs.push(i / tubularSegments);\n uvs.push(j / radialSegments);\n }\n }\n for (let j = 1; j <= tubularSegments; j++) {\n for (let i = 1; i <= radialSegments; i++) {\n const a = (radialSegments + 1) * (j - 1) + (i - 1);\n const b = (radialSegments + 1) * j + (i - 1);\n const c = (radialSegments + 1) * j + i;\n const d = (radialSegments + 1) * (j - 1) + i;\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n function calculatePositionOnCurve(u, p2, q2, radius2, position) {\n const cu = Math.cos(u);\n const su = Math.sin(u);\n const quOverP = q2 / p2 * u;\n const cs = Math.cos(quOverP);\n position.x = radius2 * (2 + cs) * 0.5 * cu;\n position.y = radius2 * (2 + cs) * su * 0.5;\n position.z = radius2 * Math.sin(quOverP) * 0.5;\n }\n }\n static fromJSON(data) {\n return new TorusKnotGeometry(data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q);\n }\n}\nclass TubeGeometry extends BufferGeometry {\n constructor(path = new QuadraticBezierCurve3(new Vector3(-1, -1, 0), new Vector3(-1, 1, 0), new Vector3(1, 1, 0)), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false) {\n super();\n this.type = \"TubeGeometry\";\n this.parameters = {\n path,\n tubularSegments,\n radius,\n radialSegments,\n closed\n };\n const frames = path.computeFrenetFrames(tubularSegments, closed);\n this.tangents = frames.tangents;\n this.normals = frames.normals;\n this.binormals = frames.binormals;\n const vertex2 = new Vector3();\n const normal = new Vector3();\n const uv = new Vector2();\n let P = new Vector3();\n const vertices = [];\n const normals = [];\n const uvs = [];\n const indices = [];\n generateBufferData();\n this.setIndex(indices);\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n function generateBufferData() {\n for (let i = 0; i < tubularSegments; i++) {\n generateSegment(i);\n }\n generateSegment(closed === false ? tubularSegments : 0);\n generateUVs();\n generateIndices();\n }\n function generateSegment(i) {\n P = path.getPointAt(i / tubularSegments, P);\n const N = frames.normals[i];\n const B = frames.binormals[i];\n for (let j = 0; j <= radialSegments; j++) {\n const v = j / radialSegments * Math.PI * 2;\n const sin = Math.sin(v);\n const cos = -Math.cos(v);\n normal.x = cos * N.x + sin * B.x;\n normal.y = cos * N.y + sin * B.y;\n normal.z = cos * N.z + sin * B.z;\n normal.normalize();\n normals.push(normal.x, normal.y, normal.z);\n vertex2.x = P.x + radius * normal.x;\n vertex2.y = P.y + radius * normal.y;\n vertex2.z = P.z + radius * normal.z;\n vertices.push(vertex2.x, vertex2.y, vertex2.z);\n }\n }\n function generateIndices() {\n for (let j = 1; j <= tubularSegments; j++) {\n for (let i = 1; i <= radialSegments; i++) {\n const a = (radialSegments + 1) * (j - 1) + (i - 1);\n const b = (radialSegments + 1) * j + (i - 1);\n const c = (radialSegments + 1) * j + i;\n const d = (radialSegments + 1) * (j - 1) + i;\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n }\n function generateUVs() {\n for (let i = 0; i <= tubularSegments; i++) {\n for (let j = 0; j <= radialSegments; j++) {\n uv.x = i / tubularSegments;\n uv.y = j / radialSegments;\n uvs.push(uv.x, uv.y);\n }\n }\n }\n }\n toJSON() {\n const data = super.toJSON();\n data.path = this.parameters.path.toJSON();\n return data;\n }\n static fromJSON(data) {\n return new TubeGeometry(new Curves[data.path.type]().fromJSON(data.path), data.tubularSegments, data.radius, data.radialSegments, data.closed);\n }\n}\nclass WireframeGeometry extends BufferGeometry {\n constructor(geometry = null) {\n super();\n this.type = \"WireframeGeometry\";\n this.parameters = {\n geometry\n };\n if (geometry !== null) {\n const vertices = [];\n const edges = new Set();\n const start = new Vector3();\n const end = new Vector3();\n if (geometry.index !== null) {\n const position = geometry.attributes.position;\n const indices = geometry.index;\n let groups = geometry.groups;\n if (groups.length === 0) {\n groups = [{start: 0, count: indices.count, materialIndex: 0}];\n }\n for (let o = 0, ol = groups.length; o < ol; ++o) {\n const group = groups[o];\n const groupStart = group.start;\n const groupCount = group.count;\n for (let i = groupStart, l = groupStart + groupCount; i < l; i += 3) {\n for (let j = 0; j < 3; j++) {\n const index1 = indices.getX(i + j);\n const index2 = indices.getX(i + (j + 1) % 3);\n start.fromBufferAttribute(position, index1);\n end.fromBufferAttribute(position, index2);\n if (isUniqueEdge(start, end, edges) === true) {\n vertices.push(start.x, start.y, start.z);\n vertices.push(end.x, end.y, end.z);\n }\n }\n }\n }\n } else {\n const position = geometry.attributes.position;\n for (let i = 0, l = position.count / 3; i < l; i++) {\n for (let j = 0; j < 3; j++) {\n const index1 = 3 * i + j;\n const index2 = 3 * i + (j + 1) % 3;\n start.fromBufferAttribute(position, index1);\n end.fromBufferAttribute(position, index2);\n if (isUniqueEdge(start, end, edges) === true) {\n vertices.push(start.x, start.y, start.z);\n vertices.push(end.x, end.y, end.z);\n }\n }\n }\n }\n this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n }\n }\n}\nfunction isUniqueEdge(start, end, edges) {\n const hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n const hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`;\n if (edges.has(hash1) === true || edges.has(hash2) === true) {\n return false;\n } else {\n edges.add(hash1, hash2);\n return true;\n }\n}\nvar Geometries = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n BoxGeometry,\n BoxBufferGeometry: BoxGeometry,\n CircleGeometry,\n CircleBufferGeometry: CircleGeometry,\n ConeGeometry,\n ConeBufferGeometry: ConeGeometry,\n CylinderGeometry,\n CylinderBufferGeometry: CylinderGeometry,\n DodecahedronGeometry,\n DodecahedronBufferGeometry: DodecahedronGeometry,\n EdgesGeometry,\n ExtrudeGeometry,\n ExtrudeBufferGeometry: ExtrudeGeometry,\n IcosahedronGeometry,\n IcosahedronBufferGeometry: IcosahedronGeometry,\n LatheGeometry,\n LatheBufferGeometry: LatheGeometry,\n OctahedronGeometry,\n OctahedronBufferGeometry: OctahedronGeometry,\n PlaneGeometry,\n PlaneBufferGeometry: PlaneGeometry,\n PolyhedronGeometry,\n PolyhedronBufferGeometry: PolyhedronGeometry,\n RingGeometry,\n RingBufferGeometry: RingGeometry,\n ShapeGeometry,\n ShapeBufferGeometry: ShapeGeometry,\n SphereGeometry,\n SphereBufferGeometry: SphereGeometry,\n TetrahedronGeometry,\n TetrahedronBufferGeometry: TetrahedronGeometry,\n TorusGeometry,\n TorusBufferGeometry: TorusGeometry,\n TorusKnotGeometry,\n TorusKnotBufferGeometry: TorusKnotGeometry,\n TubeGeometry,\n TubeBufferGeometry: TubeGeometry,\n WireframeGeometry\n});\nclass ShadowMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"ShadowMaterial\";\n this.color = new Color(0);\n this.transparent = true;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n return this;\n }\n}\nShadowMaterial.prototype.isShadowMaterial = true;\nclass MeshStandardMaterial extends Material {\n constructor(parameters) {\n super();\n this.defines = {STANDARD: \"\"};\n this.type = \"MeshStandardMaterial\";\n this.color = new Color(16777215);\n this.roughness = 1;\n this.metalness = 0;\n this.map = null;\n this.lightMap = null;\n this.lightMapIntensity = 1;\n this.aoMap = null;\n this.aoMapIntensity = 1;\n this.emissive = new Color(0);\n this.emissiveIntensity = 1;\n this.emissiveMap = null;\n this.bumpMap = null;\n this.bumpScale = 1;\n this.normalMap = null;\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.roughnessMap = null;\n this.metalnessMap = null;\n this.alphaMap = null;\n this.envMap = null;\n this.envMapIntensity = 1;\n this.refractionRatio = 0.98;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.wireframeLinecap = \"round\";\n this.wireframeLinejoin = \"round\";\n this.flatShading = false;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.defines = {STANDARD: \"\"};\n this.color.copy(source.color);\n this.roughness = source.roughness;\n this.metalness = source.metalness;\n this.map = source.map;\n this.lightMap = source.lightMap;\n this.lightMapIntensity = source.lightMapIntensity;\n this.aoMap = source.aoMap;\n this.aoMapIntensity = source.aoMapIntensity;\n this.emissive.copy(source.emissive);\n this.emissiveMap = source.emissiveMap;\n this.emissiveIntensity = source.emissiveIntensity;\n this.bumpMap = source.bumpMap;\n this.bumpScale = source.bumpScale;\n this.normalMap = source.normalMap;\n this.normalMapType = source.normalMapType;\n this.normalScale.copy(source.normalScale);\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.roughnessMap = source.roughnessMap;\n this.metalnessMap = source.metalnessMap;\n this.alphaMap = source.alphaMap;\n this.envMap = source.envMap;\n this.envMapIntensity = source.envMapIntensity;\n this.refractionRatio = source.refractionRatio;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.wireframeLinecap = source.wireframeLinecap;\n this.wireframeLinejoin = source.wireframeLinejoin;\n this.flatShading = source.flatShading;\n return this;\n }\n}\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n constructor(parameters) {\n super();\n this.defines = {\n STANDARD: \"\",\n PHYSICAL: \"\"\n };\n this.type = \"MeshPhysicalMaterial\";\n this.clearcoatMap = null;\n this.clearcoatRoughness = 0;\n this.clearcoatRoughnessMap = null;\n this.clearcoatNormalScale = new Vector2(1, 1);\n this.clearcoatNormalMap = null;\n this.ior = 1.5;\n Object.defineProperty(this, \"reflectivity\", {\n get: function() {\n return clamp(2.5 * (this.ior - 1) / (this.ior + 1), 0, 1);\n },\n set: function(reflectivity) {\n this.ior = (1 + 0.4 * reflectivity) / (1 - 0.4 * reflectivity);\n }\n });\n this.sheenColor = new Color(0);\n this.sheenColorMap = null;\n this.sheenRoughness = 1;\n this.sheenRoughnessMap = null;\n this.transmissionMap = null;\n this.thickness = 0;\n this.thicknessMap = null;\n this.attenuationDistance = 0;\n this.attenuationColor = new Color(1, 1, 1);\n this.specularIntensity = 1;\n this.specularIntensityMap = null;\n this.specularColor = new Color(1, 1, 1);\n this.specularColorMap = null;\n this._sheen = 0;\n this._clearcoat = 0;\n this._transmission = 0;\n this.setValues(parameters);\n }\n get sheen() {\n return this._sheen;\n }\n set sheen(value) {\n if (this._sheen > 0 !== value > 0) {\n this.version++;\n }\n this._sheen = value;\n }\n get clearcoat() {\n return this._clearcoat;\n }\n set clearcoat(value) {\n if (this._clearcoat > 0 !== value > 0) {\n this.version++;\n }\n this._clearcoat = value;\n }\n get transmission() {\n return this._transmission;\n }\n set transmission(value) {\n if (this._transmission > 0 !== value > 0) {\n this.version++;\n }\n this._transmission = value;\n }\n copy(source) {\n super.copy(source);\n this.defines = {\n STANDARD: \"\",\n PHYSICAL: \"\"\n };\n this.clearcoat = source.clearcoat;\n this.clearcoatMap = source.clearcoatMap;\n this.clearcoatRoughness = source.clearcoatRoughness;\n this.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n this.clearcoatNormalMap = source.clearcoatNormalMap;\n this.clearcoatNormalScale.copy(source.clearcoatNormalScale);\n this.ior = source.ior;\n this.sheen = source.sheen;\n this.sheenColor.copy(source.sheenColor);\n this.sheenColorMap = source.sheenColorMap;\n this.sheenRoughness = source.sheenRoughness;\n this.sheenRoughnessMap = source.sheenRoughnessMap;\n this.transmission = source.transmission;\n this.transmissionMap = source.transmissionMap;\n this.thickness = source.thickness;\n this.thicknessMap = source.thicknessMap;\n this.attenuationDistance = source.attenuationDistance;\n this.attenuationColor.copy(source.attenuationColor);\n this.specularIntensity = source.specularIntensity;\n this.specularIntensityMap = source.specularIntensityMap;\n this.specularColor.copy(source.specularColor);\n this.specularColorMap = source.specularColorMap;\n return this;\n }\n}\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\nclass MeshPhongMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"MeshPhongMaterial\";\n this.color = new Color(16777215);\n this.specular = new Color(1118481);\n this.shininess = 30;\n this.map = null;\n this.lightMap = null;\n this.lightMapIntensity = 1;\n this.aoMap = null;\n this.aoMapIntensity = 1;\n this.emissive = new Color(0);\n this.emissiveIntensity = 1;\n this.emissiveMap = null;\n this.bumpMap = null;\n this.bumpScale = 1;\n this.normalMap = null;\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.specularMap = null;\n this.alphaMap = null;\n this.envMap = null;\n this.combine = MultiplyOperation;\n this.reflectivity = 1;\n this.refractionRatio = 0.98;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.wireframeLinecap = \"round\";\n this.wireframeLinejoin = \"round\";\n this.flatShading = false;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.specular.copy(source.specular);\n this.shininess = source.shininess;\n this.map = source.map;\n this.lightMap = source.lightMap;\n this.lightMapIntensity = source.lightMapIntensity;\n this.aoMap = source.aoMap;\n this.aoMapIntensity = source.aoMapIntensity;\n this.emissive.copy(source.emissive);\n this.emissiveMap = source.emissiveMap;\n this.emissiveIntensity = source.emissiveIntensity;\n this.bumpMap = source.bumpMap;\n this.bumpScale = source.bumpScale;\n this.normalMap = source.normalMap;\n this.normalMapType = source.normalMapType;\n this.normalScale.copy(source.normalScale);\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.specularMap = source.specularMap;\n this.alphaMap = source.alphaMap;\n this.envMap = source.envMap;\n this.combine = source.combine;\n this.reflectivity = source.reflectivity;\n this.refractionRatio = source.refractionRatio;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.wireframeLinecap = source.wireframeLinecap;\n this.wireframeLinejoin = source.wireframeLinejoin;\n this.flatShading = source.flatShading;\n return this;\n }\n}\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\nclass MeshToonMaterial extends Material {\n constructor(parameters) {\n super();\n this.defines = {TOON: \"\"};\n this.type = \"MeshToonMaterial\";\n this.color = new Color(16777215);\n this.map = null;\n this.gradientMap = null;\n this.lightMap = null;\n this.lightMapIntensity = 1;\n this.aoMap = null;\n this.aoMapIntensity = 1;\n this.emissive = new Color(0);\n this.emissiveIntensity = 1;\n this.emissiveMap = null;\n this.bumpMap = null;\n this.bumpScale = 1;\n this.normalMap = null;\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.alphaMap = null;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.wireframeLinecap = \"round\";\n this.wireframeLinejoin = \"round\";\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.map = source.map;\n this.gradientMap = source.gradientMap;\n this.lightMap = source.lightMap;\n this.lightMapIntensity = source.lightMapIntensity;\n this.aoMap = source.aoMap;\n this.aoMapIntensity = source.aoMapIntensity;\n this.emissive.copy(source.emissive);\n this.emissiveMap = source.emissiveMap;\n this.emissiveIntensity = source.emissiveIntensity;\n this.bumpMap = source.bumpMap;\n this.bumpScale = source.bumpScale;\n this.normalMap = source.normalMap;\n this.normalMapType = source.normalMapType;\n this.normalScale.copy(source.normalScale);\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.alphaMap = source.alphaMap;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.wireframeLinecap = source.wireframeLinecap;\n this.wireframeLinejoin = source.wireframeLinejoin;\n return this;\n }\n}\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\nclass MeshNormalMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"MeshNormalMaterial\";\n this.bumpMap = null;\n this.bumpScale = 1;\n this.normalMap = null;\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.fog = false;\n this.flatShading = false;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.bumpMap = source.bumpMap;\n this.bumpScale = source.bumpScale;\n this.normalMap = source.normalMap;\n this.normalMapType = source.normalMapType;\n this.normalScale.copy(source.normalScale);\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.flatShading = source.flatShading;\n return this;\n }\n}\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\nclass MeshLambertMaterial extends Material {\n constructor(parameters) {\n super();\n this.type = \"MeshLambertMaterial\";\n this.color = new Color(16777215);\n this.map = null;\n this.lightMap = null;\n this.lightMapIntensity = 1;\n this.aoMap = null;\n this.aoMapIntensity = 1;\n this.emissive = new Color(0);\n this.emissiveIntensity = 1;\n this.emissiveMap = null;\n this.specularMap = null;\n this.alphaMap = null;\n this.envMap = null;\n this.combine = MultiplyOperation;\n this.reflectivity = 1;\n this.refractionRatio = 0.98;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.wireframeLinecap = \"round\";\n this.wireframeLinejoin = \"round\";\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.map = source.map;\n this.lightMap = source.lightMap;\n this.lightMapIntensity = source.lightMapIntensity;\n this.aoMap = source.aoMap;\n this.aoMapIntensity = source.aoMapIntensity;\n this.emissive.copy(source.emissive);\n this.emissiveMap = source.emissiveMap;\n this.emissiveIntensity = source.emissiveIntensity;\n this.specularMap = source.specularMap;\n this.alphaMap = source.alphaMap;\n this.envMap = source.envMap;\n this.combine = source.combine;\n this.reflectivity = source.reflectivity;\n this.refractionRatio = source.refractionRatio;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.wireframeLinecap = source.wireframeLinecap;\n this.wireframeLinejoin = source.wireframeLinejoin;\n return this;\n }\n}\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\nclass MeshMatcapMaterial extends Material {\n constructor(parameters) {\n super();\n this.defines = {MATCAP: \"\"};\n this.type = \"MeshMatcapMaterial\";\n this.color = new Color(16777215);\n this.matcap = null;\n this.map = null;\n this.bumpMap = null;\n this.bumpScale = 1;\n this.normalMap = null;\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.alphaMap = null;\n this.flatShading = false;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.defines = {MATCAP: \"\"};\n this.color.copy(source.color);\n this.matcap = source.matcap;\n this.map = source.map;\n this.bumpMap = source.bumpMap;\n this.bumpScale = source.bumpScale;\n this.normalMap = source.normalMap;\n this.normalMapType = source.normalMapType;\n this.normalScale.copy(source.normalScale);\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.alphaMap = source.alphaMap;\n this.flatShading = source.flatShading;\n return this;\n }\n}\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\nclass LineDashedMaterial extends LineBasicMaterial {\n constructor(parameters) {\n super();\n this.type = \"LineDashedMaterial\";\n this.scale = 1;\n this.dashSize = 3;\n this.gapSize = 1;\n this.setValues(parameters);\n }\n copy(source) {\n super.copy(source);\n this.scale = source.scale;\n this.dashSize = source.dashSize;\n this.gapSize = source.gapSize;\n return this;\n }\n}\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\nvar Materials = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n ShadowMaterial,\n SpriteMaterial,\n RawShaderMaterial,\n ShaderMaterial,\n PointsMaterial,\n MeshPhysicalMaterial,\n MeshStandardMaterial,\n MeshPhongMaterial,\n MeshToonMaterial,\n MeshNormalMaterial,\n MeshLambertMaterial,\n MeshDepthMaterial,\n MeshDistanceMaterial,\n MeshBasicMaterial,\n MeshMatcapMaterial,\n LineDashedMaterial,\n LineBasicMaterial,\n Material\n});\nconst AnimationUtils = {\n arraySlice: function(array, from, to) {\n if (AnimationUtils.isTypedArray(array)) {\n return new array.constructor(array.subarray(from, to !== void 0 ? to : array.length));\n }\n return array.slice(from, to);\n },\n convertArray: function(array, type, forceClone) {\n if (!array || !forceClone && array.constructor === type)\n return array;\n if (typeof type.BYTES_PER_ELEMENT === \"number\") {\n return new type(array);\n }\n return Array.prototype.slice.call(array);\n },\n isTypedArray: function(object) {\n return ArrayBuffer.isView(object) && !(object instanceof DataView);\n },\n getKeyframeOrder: function(times) {\n function compareTime(i, j) {\n return times[i] - times[j];\n }\n const n = times.length;\n const result = new Array(n);\n for (let i = 0; i !== n; ++i)\n result[i] = i;\n result.sort(compareTime);\n return result;\n },\n sortedArray: function(values, stride, order) {\n const nValues = values.length;\n const result = new values.constructor(nValues);\n for (let i = 0, dstOffset = 0; dstOffset !== nValues; ++i) {\n const srcOffset = order[i] * stride;\n for (let j = 0; j !== stride; ++j) {\n result[dstOffset++] = values[srcOffset + j];\n }\n }\n return result;\n },\n flattenJSON: function(jsonKeys, times, values, valuePropertyName) {\n let i = 1, key = jsonKeys[0];\n while (key !== void 0 && key[valuePropertyName] === void 0) {\n key = jsonKeys[i++];\n }\n if (key === void 0)\n return;\n let value = key[valuePropertyName];\n if (value === void 0)\n return;\n if (Array.isArray(value)) {\n do {\n value = key[valuePropertyName];\n if (value !== void 0) {\n times.push(key.time);\n values.push.apply(values, value);\n }\n key = jsonKeys[i++];\n } while (key !== void 0);\n } else if (value.toArray !== void 0) {\n do {\n value = key[valuePropertyName];\n if (value !== void 0) {\n times.push(key.time);\n value.toArray(values, values.length);\n }\n key = jsonKeys[i++];\n } while (key !== void 0);\n } else {\n do {\n value = key[valuePropertyName];\n if (value !== void 0) {\n times.push(key.time);\n values.push(value);\n }\n key = jsonKeys[i++];\n } while (key !== void 0);\n }\n },\n subclip: function(sourceClip, name, startFrame, endFrame, fps = 30) {\n const clip = sourceClip.clone();\n clip.name = name;\n const tracks = [];\n for (let i = 0; i < clip.tracks.length; ++i) {\n const track = clip.tracks[i];\n const valueSize = track.getValueSize();\n const times = [];\n const values = [];\n for (let j = 0; j < track.times.length; ++j) {\n const frame = track.times[j] * fps;\n if (frame < startFrame || frame >= endFrame)\n continue;\n times.push(track.times[j]);\n for (let k = 0; k < valueSize; ++k) {\n values.push(track.values[j * valueSize + k]);\n }\n }\n if (times.length === 0)\n continue;\n track.times = AnimationUtils.convertArray(times, track.times.constructor);\n track.values = AnimationUtils.convertArray(values, track.values.constructor);\n tracks.push(track);\n }\n clip.tracks = tracks;\n let minStartTime = Infinity;\n for (let i = 0; i < clip.tracks.length; ++i) {\n if (minStartTime > clip.tracks[i].times[0]) {\n minStartTime = clip.tracks[i].times[0];\n }\n }\n for (let i = 0; i < clip.tracks.length; ++i) {\n clip.tracks[i].shift(-1 * minStartTime);\n }\n clip.resetDuration();\n return clip;\n },\n makeClipAdditive: function(targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30) {\n if (fps <= 0)\n fps = 30;\n const numTracks = referenceClip.tracks.length;\n const referenceTime = referenceFrame / fps;\n for (let i = 0; i < numTracks; ++i) {\n const referenceTrack = referenceClip.tracks[i];\n const referenceTrackType = referenceTrack.ValueTypeName;\n if (referenceTrackType === \"bool\" || referenceTrackType === \"string\")\n continue;\n const targetTrack = targetClip.tracks.find(function(track) {\n return track.name === referenceTrack.name && track.ValueTypeName === referenceTrackType;\n });\n if (targetTrack === void 0)\n continue;\n let referenceOffset = 0;\n const referenceValueSize = referenceTrack.getValueSize();\n if (referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n referenceOffset = referenceValueSize / 3;\n }\n let targetOffset = 0;\n const targetValueSize = targetTrack.getValueSize();\n if (targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n targetOffset = targetValueSize / 3;\n }\n const lastIndex = referenceTrack.times.length - 1;\n let referenceValue;\n if (referenceTime <= referenceTrack.times[0]) {\n const startIndex = referenceOffset;\n const endIndex = referenceValueSize - referenceOffset;\n referenceValue = AnimationUtils.arraySlice(referenceTrack.values, startIndex, endIndex);\n } else if (referenceTime >= referenceTrack.times[lastIndex]) {\n const startIndex = lastIndex * referenceValueSize + referenceOffset;\n const endIndex = startIndex + referenceValueSize - referenceOffset;\n referenceValue = AnimationUtils.arraySlice(referenceTrack.values, startIndex, endIndex);\n } else {\n const interpolant = referenceTrack.createInterpolant();\n const startIndex = referenceOffset;\n const endIndex = referenceValueSize - referenceOffset;\n interpolant.evaluate(referenceTime);\n referenceValue = AnimationUtils.arraySlice(interpolant.resultBuffer, startIndex, endIndex);\n }\n if (referenceTrackType === \"quaternion\") {\n const referenceQuat = new Quaternion().fromArray(referenceValue).normalize().conjugate();\n referenceQuat.toArray(referenceValue);\n }\n const numTimes = targetTrack.times.length;\n for (let j = 0; j < numTimes; ++j) {\n const valueStart = j * targetValueSize + targetOffset;\n if (referenceTrackType === \"quaternion\") {\n Quaternion.multiplyQuaternionsFlat(targetTrack.values, valueStart, referenceValue, 0, targetTrack.values, valueStart);\n } else {\n const valueEnd = targetValueSize - targetOffset * 2;\n for (let k = 0; k < valueEnd; ++k) {\n targetTrack.values[valueStart + k] -= referenceValue[k];\n }\n }\n }\n }\n targetClip.blendMode = AdditiveAnimationBlendMode;\n return targetClip;\n }\n};\nclass Interpolant {\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n this.parameterPositions = parameterPositions;\n this._cachedIndex = 0;\n this.resultBuffer = resultBuffer !== void 0 ? resultBuffer : new sampleValues.constructor(sampleSize);\n this.sampleValues = sampleValues;\n this.valueSize = sampleSize;\n this.settings = null;\n this.DefaultSettings_ = {};\n }\n evaluate(t) {\n const pp = this.parameterPositions;\n let i1 = this._cachedIndex, t1 = pp[i1], t0 = pp[i1 - 1];\n validate_interval: {\n seek: {\n let right;\n linear_scan: {\n forward_scan:\n if (!(t < t1)) {\n for (let giveUpAt = i1 + 2; ; ) {\n if (t1 === void 0) {\n if (t < t0)\n break forward_scan;\n i1 = pp.length;\n this._cachedIndex = i1;\n return this.afterEnd_(i1 - 1, t, t0);\n }\n if (i1 === giveUpAt)\n break;\n t0 = t1;\n t1 = pp[++i1];\n if (t < t1) {\n break seek;\n }\n }\n right = pp.length;\n break linear_scan;\n }\n if (!(t >= t0)) {\n const t1global = pp[1];\n if (t < t1global) {\n i1 = 2;\n t0 = t1global;\n }\n for (let giveUpAt = i1 - 2; ; ) {\n if (t0 === void 0) {\n this._cachedIndex = 0;\n return this.beforeStart_(0, t, t1);\n }\n if (i1 === giveUpAt)\n break;\n t1 = t0;\n t0 = pp[--i1 - 1];\n if (t >= t0) {\n break seek;\n }\n }\n right = i1;\n i1 = 0;\n break linear_scan;\n }\n break validate_interval;\n }\n while (i1 < right) {\n const mid = i1 + right >>> 1;\n if (t < pp[mid]) {\n right = mid;\n } else {\n i1 = mid + 1;\n }\n }\n t1 = pp[i1];\n t0 = pp[i1 - 1];\n if (t0 === void 0) {\n this._cachedIndex = 0;\n return this.beforeStart_(0, t, t1);\n }\n if (t1 === void 0) {\n i1 = pp.length;\n this._cachedIndex = i1;\n return this.afterEnd_(i1 - 1, t0, t);\n }\n }\n this._cachedIndex = i1;\n this.intervalChanged_(i1, t0, t1);\n }\n return this.interpolate_(i1, t0, t, t1);\n }\n getSettings_() {\n return this.settings || this.DefaultSettings_;\n }\n copySampleValue_(index) {\n const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset = index * stride;\n for (let i = 0; i !== stride; ++i) {\n result[i] = values[offset + i];\n }\n return result;\n }\n interpolate_() {\n throw new Error(\"call to abstract method\");\n }\n intervalChanged_() {\n }\n}\nInterpolant.prototype.beforeStart_ = Interpolant.prototype.copySampleValue_;\nInterpolant.prototype.afterEnd_ = Interpolant.prototype.copySampleValue_;\nclass CubicInterpolant extends Interpolant {\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n this._weightPrev = -0;\n this._offsetPrev = -0;\n this._weightNext = -0;\n this._offsetNext = -0;\n this.DefaultSettings_ = {\n endingStart: ZeroCurvatureEnding,\n endingEnd: ZeroCurvatureEnding\n };\n }\n intervalChanged_(i1, t0, t1) {\n const pp = this.parameterPositions;\n let iPrev = i1 - 2, iNext = i1 + 1, tPrev = pp[iPrev], tNext = pp[iNext];\n if (tPrev === void 0) {\n switch (this.getSettings_().endingStart) {\n case ZeroSlopeEnding:\n iPrev = i1;\n tPrev = 2 * t0 - t1;\n break;\n case WrapAroundEnding:\n iPrev = pp.length - 2;\n tPrev = t0 + pp[iPrev] - pp[iPrev + 1];\n break;\n default:\n iPrev = i1;\n tPrev = t1;\n }\n }\n if (tNext === void 0) {\n switch (this.getSettings_().endingEnd) {\n case ZeroSlopeEnding:\n iNext = i1;\n tNext = 2 * t1 - t0;\n break;\n case WrapAroundEnding:\n iNext = 1;\n tNext = t1 + pp[1] - pp[0];\n break;\n default:\n iNext = i1 - 1;\n tNext = t0;\n }\n }\n const halfDt = (t1 - t0) * 0.5, stride = this.valueSize;\n this._weightPrev = halfDt / (t0 - tPrev);\n this._weightNext = halfDt / (tNext - t1);\n this._offsetPrev = iPrev * stride;\n this._offsetNext = iNext * stride;\n }\n interpolate_(i1, t0, t, t1) {\n const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, o1 = i1 * stride, o0 = o1 - stride, oP = this._offsetPrev, oN = this._offsetNext, wP = this._weightPrev, wN = this._weightNext, p = (t - t0) / (t1 - t0), pp = p * p, ppp = pp * p;\n const sP = -wP * ppp + 2 * wP * pp - wP * p;\n const s0 = (1 + wP) * ppp + (-1.5 - 2 * wP) * pp + (-0.5 + wP) * p + 1;\n const s1 = (-1 - wN) * ppp + (1.5 + wN) * pp + 0.5 * p;\n const sN = wN * ppp - wN * pp;\n for (let i = 0; i !== stride; ++i) {\n result[i] = sP * values[oP + i] + s0 * values[o0 + i] + s1 * values[o1 + i] + sN * values[oN + i];\n }\n return result;\n }\n}\nclass LinearInterpolant extends Interpolant {\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n }\n interpolate_(i1, t0, t, t1) {\n const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset1 = i1 * stride, offset0 = offset1 - stride, weight1 = (t - t0) / (t1 - t0), weight0 = 1 - weight1;\n for (let i = 0; i !== stride; ++i) {\n result[i] = values[offset0 + i] * weight0 + values[offset1 + i] * weight1;\n }\n return result;\n }\n}\nclass DiscreteInterpolant extends Interpolant {\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n }\n interpolate_(i1) {\n return this.copySampleValue_(i1 - 1);\n }\n}\nclass KeyframeTrack {\n constructor(name, times, values, interpolation) {\n if (name === void 0)\n throw new Error(\"THREE.KeyframeTrack: track name is undefined\");\n if (times === void 0 || times.length === 0)\n throw new Error(\"THREE.KeyframeTrack: no keyframes in track named \" + name);\n this.name = name;\n this.times = AnimationUtils.convertArray(times, this.TimeBufferType);\n this.values = AnimationUtils.convertArray(values, this.ValueBufferType);\n this.setInterpolation(interpolation || this.DefaultInterpolation);\n }\n static toJSON(track) {\n const trackType = track.constructor;\n let json;\n if (trackType.toJSON !== this.toJSON) {\n json = trackType.toJSON(track);\n } else {\n json = {\n name: track.name,\n times: AnimationUtils.convertArray(track.times, Array),\n values: AnimationUtils.convertArray(track.values, Array)\n };\n const interpolation = track.getInterpolation();\n if (interpolation !== track.DefaultInterpolation) {\n json.interpolation = interpolation;\n }\n }\n json.type = track.ValueTypeName;\n return json;\n }\n InterpolantFactoryMethodDiscrete(result) {\n return new DiscreteInterpolant(this.times, this.values, this.getValueSize(), result);\n }\n InterpolantFactoryMethodLinear(result) {\n return new LinearInterpolant(this.times, this.values, this.getValueSize(), result);\n }\n InterpolantFactoryMethodSmooth(result) {\n return new CubicInterpolant(this.times, this.values, this.getValueSize(), result);\n }\n setInterpolation(interpolation) {\n let factoryMethod;\n switch (interpolation) {\n case InterpolateDiscrete:\n factoryMethod = this.InterpolantFactoryMethodDiscrete;\n break;\n case InterpolateLinear:\n factoryMethod = this.InterpolantFactoryMethodLinear;\n break;\n case InterpolateSmooth:\n factoryMethod = this.InterpolantFactoryMethodSmooth;\n break;\n }\n if (factoryMethod === void 0) {\n const message = \"unsupported interpolation for \" + this.ValueTypeName + \" keyframe track named \" + this.name;\n if (this.createInterpolant === void 0) {\n if (interpolation !== this.DefaultInterpolation) {\n this.setInterpolation(this.DefaultInterpolation);\n } else {\n throw new Error(message);\n }\n }\n console.warn(\"THREE.KeyframeTrack:\", message);\n return this;\n }\n this.createInterpolant = factoryMethod;\n return this;\n }\n getInterpolation() {\n switch (this.createInterpolant) {\n case this.InterpolantFactoryMethodDiscrete:\n return InterpolateDiscrete;\n case this.InterpolantFactoryMethodLinear:\n return InterpolateLinear;\n case this.InterpolantFactoryMethodSmooth:\n return InterpolateSmooth;\n }\n }\n getValueSize() {\n return this.values.length / this.times.length;\n }\n shift(timeOffset) {\n if (timeOffset !== 0) {\n const times = this.times;\n for (let i = 0, n = times.length; i !== n; ++i) {\n times[i] += timeOffset;\n }\n }\n return this;\n }\n scale(timeScale) {\n if (timeScale !== 1) {\n const times = this.times;\n for (let i = 0, n = times.length; i !== n; ++i) {\n times[i] *= timeScale;\n }\n }\n return this;\n }\n trim(startTime, endTime) {\n const times = this.times, nKeys = times.length;\n let from = 0, to = nKeys - 1;\n while (from !== nKeys && times[from] < startTime) {\n ++from;\n }\n while (to !== -1 && times[to] > endTime) {\n --to;\n }\n ++to;\n if (from !== 0 || to !== nKeys) {\n if (from >= to) {\n to = Math.max(to, 1);\n from = to - 1;\n }\n const stride = this.getValueSize();\n this.times = AnimationUtils.arraySlice(times, from, to);\n this.values = AnimationUtils.arraySlice(this.values, from * stride, to * stride);\n }\n return this;\n }\n validate() {\n let valid = true;\n const valueSize = this.getValueSize();\n if (valueSize - Math.floor(valueSize) !== 0) {\n console.error(\"THREE.KeyframeTrack: Invalid value size in track.\", this);\n valid = false;\n }\n const times = this.times, values = this.values, nKeys = times.length;\n if (nKeys === 0) {\n console.error(\"THREE.KeyframeTrack: Track is empty.\", this);\n valid = false;\n }\n let prevTime = null;\n for (let i = 0; i !== nKeys; i++) {\n const currTime = times[i];\n if (typeof currTime === \"number\" && isNaN(currTime)) {\n console.error(\"THREE.KeyframeTrack: Time is not a valid number.\", this, i, currTime);\n valid = false;\n break;\n }\n if (prevTime !== null && prevTime > currTime) {\n console.error(\"THREE.KeyframeTrack: Out of order keys.\", this, i, currTime, prevTime);\n valid = false;\n break;\n }\n prevTime = currTime;\n }\n if (values !== void 0) {\n if (AnimationUtils.isTypedArray(values)) {\n for (let i = 0, n = values.length; i !== n; ++i) {\n const value = values[i];\n if (isNaN(value)) {\n console.error(\"THREE.KeyframeTrack: Value is not a valid number.\", this, i, value);\n valid = false;\n break;\n }\n }\n }\n }\n return valid;\n }\n optimize() {\n const times = AnimationUtils.arraySlice(this.times), values = AnimationUtils.arraySlice(this.values), stride = this.getValueSize(), smoothInterpolation = this.getInterpolation() === InterpolateSmooth, lastIndex = times.length - 1;\n let writeIndex = 1;\n for (let i = 1; i < lastIndex; ++i) {\n let keep = false;\n const time = times[i];\n const timeNext = times[i + 1];\n if (time !== timeNext && (i !== 1 || time !== times[0])) {\n if (!smoothInterpolation) {\n const offset = i * stride, offsetP = offset - stride, offsetN = offset + stride;\n for (let j = 0; j !== stride; ++j) {\n const value = values[offset + j];\n if (value !== values[offsetP + j] || value !== values[offsetN + j]) {\n keep = true;\n break;\n }\n }\n } else {\n keep = true;\n }\n }\n if (keep) {\n if (i !== writeIndex) {\n times[writeIndex] = times[i];\n const readOffset = i * stride, writeOffset = writeIndex * stride;\n for (let j = 0; j !== stride; ++j) {\n values[writeOffset + j] = values[readOffset + j];\n }\n }\n ++writeIndex;\n }\n }\n if (lastIndex > 0) {\n times[writeIndex] = times[lastIndex];\n for (let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++j) {\n values[writeOffset + j] = values[readOffset + j];\n }\n ++writeIndex;\n }\n if (writeIndex !== times.length) {\n this.times = AnimationUtils.arraySlice(times, 0, writeIndex);\n this.values = AnimationUtils.arraySlice(values, 0, writeIndex * stride);\n } else {\n this.times = times;\n this.values = values;\n }\n return this;\n }\n clone() {\n const times = AnimationUtils.arraySlice(this.times, 0);\n const values = AnimationUtils.arraySlice(this.values, 0);\n const TypedKeyframeTrack = this.constructor;\n const track = new TypedKeyframeTrack(this.name, times, values);\n track.createInterpolant = this.createInterpolant;\n return track;\n }\n}\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nclass BooleanKeyframeTrack extends KeyframeTrack {\n}\nBooleanKeyframeTrack.prototype.ValueTypeName = \"bool\";\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nclass ColorKeyframeTrack extends KeyframeTrack {\n}\nColorKeyframeTrack.prototype.ValueTypeName = \"color\";\nclass NumberKeyframeTrack extends KeyframeTrack {\n}\nNumberKeyframeTrack.prototype.ValueTypeName = \"number\";\nclass QuaternionLinearInterpolant extends Interpolant {\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n }\n interpolate_(i1, t0, t, t1) {\n const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, alpha = (t - t0) / (t1 - t0);\n let offset = i1 * stride;\n for (let end = offset + stride; offset !== end; offset += 4) {\n Quaternion.slerpFlat(result, 0, values, offset - stride, values, offset, alpha);\n }\n return result;\n }\n}\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n InterpolantFactoryMethodLinear(result) {\n return new QuaternionLinearInterpolant(this.times, this.values, this.getValueSize(), result);\n }\n}\nQuaternionKeyframeTrack.prototype.ValueTypeName = \"quaternion\";\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nclass StringKeyframeTrack extends KeyframeTrack {\n}\nStringKeyframeTrack.prototype.ValueTypeName = \"string\";\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nclass VectorKeyframeTrack extends KeyframeTrack {\n}\nVectorKeyframeTrack.prototype.ValueTypeName = \"vector\";\nclass AnimationClip {\n constructor(name, duration = -1, tracks, blendMode = NormalAnimationBlendMode) {\n this.name = name;\n this.tracks = tracks;\n this.duration = duration;\n this.blendMode = blendMode;\n this.uuid = generateUUID();\n if (this.duration < 0) {\n this.resetDuration();\n }\n }\n static parse(json) {\n const tracks = [], jsonTracks = json.tracks, frameTime = 1 / (json.fps || 1);\n for (let i = 0, n = jsonTracks.length; i !== n; ++i) {\n tracks.push(parseKeyframeTrack(jsonTracks[i]).scale(frameTime));\n }\n const clip = new this(json.name, json.duration, tracks, json.blendMode);\n clip.uuid = json.uuid;\n return clip;\n }\n static toJSON(clip) {\n const tracks = [], clipTracks = clip.tracks;\n const json = {\n name: clip.name,\n duration: clip.duration,\n tracks,\n uuid: clip.uuid,\n blendMode: clip.blendMode\n };\n for (let i = 0, n = clipTracks.length; i !== n; ++i) {\n tracks.push(KeyframeTrack.toJSON(clipTracks[i]));\n }\n return json;\n }\n static CreateFromMorphTargetSequence(name, morphTargetSequence, fps, noLoop) {\n const numMorphTargets = morphTargetSequence.length;\n const tracks = [];\n for (let i = 0; i < numMorphTargets; i++) {\n let times = [];\n let values = [];\n times.push((i + numMorphTargets - 1) % numMorphTargets, i, (i + 1) % numMorphTargets);\n values.push(0, 1, 0);\n const order = AnimationUtils.getKeyframeOrder(times);\n times = AnimationUtils.sortedArray(times, 1, order);\n values = AnimationUtils.sortedArray(values, 1, order);\n if (!noLoop && times[0] === 0) {\n times.push(numMorphTargets);\n values.push(values[0]);\n }\n tracks.push(new NumberKeyframeTrack(\".morphTargetInfluences[\" + morphTargetSequence[i].name + \"]\", times, values).scale(1 / fps));\n }\n return new this(name, -1, tracks);\n }\n static findByName(objectOrClipArray, name) {\n let clipArray = objectOrClipArray;\n if (!Array.isArray(objectOrClipArray)) {\n const o = objectOrClipArray;\n clipArray = o.geometry && o.geometry.animations || o.animations;\n }\n for (let i = 0; i < clipArray.length; i++) {\n if (clipArray[i].name === name) {\n return clipArray[i];\n }\n }\n return null;\n }\n static CreateClipsFromMorphTargetSequences(morphTargets, fps, noLoop) {\n const animationToMorphTargets = {};\n const pattern = /^([\\w-]*?)([\\d]+)$/;\n for (let i = 0, il = morphTargets.length; i < il; i++) {\n const morphTarget = morphTargets[i];\n const parts = morphTarget.name.match(pattern);\n if (parts && parts.length > 1) {\n const name = parts[1];\n let animationMorphTargets = animationToMorphTargets[name];\n if (!animationMorphTargets) {\n animationToMorphTargets[name] = animationMorphTargets = [];\n }\n animationMorphTargets.push(morphTarget);\n }\n }\n const clips = [];\n for (const name in animationToMorphTargets) {\n clips.push(this.CreateFromMorphTargetSequence(name, animationToMorphTargets[name], fps, noLoop));\n }\n return clips;\n }\n static parseAnimation(animation, bones) {\n if (!animation) {\n console.error(\"THREE.AnimationClip: No animation in JSONLoader data.\");\n return null;\n }\n const addNonemptyTrack = function(trackType, trackName, animationKeys, propertyName, destTracks) {\n if (animationKeys.length !== 0) {\n const times = [];\n const values = [];\n AnimationUtils.flattenJSON(animationKeys, times, values, propertyName);\n if (times.length !== 0) {\n destTracks.push(new trackType(trackName, times, values));\n }\n }\n };\n const tracks = [];\n const clipName = animation.name || \"default\";\n const fps = animation.fps || 30;\n const blendMode = animation.blendMode;\n let duration = animation.length || -1;\n const hierarchyTracks = animation.hierarchy || [];\n for (let h = 0; h < hierarchyTracks.length; h++) {\n const animationKeys = hierarchyTracks[h].keys;\n if (!animationKeys || animationKeys.length === 0)\n continue;\n if (animationKeys[0].morphTargets) {\n const morphTargetNames = {};\n let k;\n for (k = 0; k < animationKeys.length; k++) {\n if (animationKeys[k].morphTargets) {\n for (let m = 0; m < animationKeys[k].morphTargets.length; m++) {\n morphTargetNames[animationKeys[k].morphTargets[m]] = -1;\n }\n }\n }\n for (const morphTargetName in morphTargetNames) {\n const times = [];\n const values = [];\n for (let m = 0; m !== animationKeys[k].morphTargets.length; ++m) {\n const animationKey = animationKeys[k];\n times.push(animationKey.time);\n values.push(animationKey.morphTarget === morphTargetName ? 1 : 0);\n }\n tracks.push(new NumberKeyframeTrack(\".morphTargetInfluence[\" + morphTargetName + \"]\", times, values));\n }\n duration = morphTargetNames.length * (fps || 1);\n } else {\n const boneName = \".bones[\" + bones[h].name + \"]\";\n addNonemptyTrack(VectorKeyframeTrack, boneName + \".position\", animationKeys, \"pos\", tracks);\n addNonemptyTrack(QuaternionKeyframeTrack, boneName + \".quaternion\", animationKeys, \"rot\", tracks);\n addNonemptyTrack(VectorKeyframeTrack, boneName + \".scale\", animationKeys, \"scl\", tracks);\n }\n }\n if (tracks.length === 0) {\n return null;\n }\n const clip = new this(clipName, duration, tracks, blendMode);\n return clip;\n }\n resetDuration() {\n const tracks = this.tracks;\n let duration = 0;\n for (let i = 0, n = tracks.length; i !== n; ++i) {\n const track = this.tracks[i];\n duration = Math.max(duration, track.times[track.times.length - 1]);\n }\n this.duration = duration;\n return this;\n }\n trim() {\n for (let i = 0; i < this.tracks.length; i++) {\n this.tracks[i].trim(0, this.duration);\n }\n return this;\n }\n validate() {\n let valid = true;\n for (let i = 0; i < this.tracks.length; i++) {\n valid = valid && this.tracks[i].validate();\n }\n return valid;\n }\n optimize() {\n for (let i = 0; i < this.tracks.length; i++) {\n this.tracks[i].optimize();\n }\n return this;\n }\n clone() {\n const tracks = [];\n for (let i = 0; i < this.tracks.length; i++) {\n tracks.push(this.tracks[i].clone());\n }\n return new this.constructor(this.name, this.duration, tracks, this.blendMode);\n }\n toJSON() {\n return this.constructor.toJSON(this);\n }\n}\nfunction getTrackTypeForValueTypeName(typeName) {\n switch (typeName.toLowerCase()) {\n case \"scalar\":\n case \"double\":\n case \"float\":\n case \"number\":\n case \"integer\":\n return NumberKeyframeTrack;\n case \"vector\":\n case \"vector2\":\n case \"vector3\":\n case \"vector4\":\n return VectorKeyframeTrack;\n case \"color\":\n return ColorKeyframeTrack;\n case \"quaternion\":\n return QuaternionKeyframeTrack;\n case \"bool\":\n case \"boolean\":\n return BooleanKeyframeTrack;\n case \"string\":\n return StringKeyframeTrack;\n }\n throw new Error(\"THREE.KeyframeTrack: Unsupported typeName: \" + typeName);\n}\nfunction parseKeyframeTrack(json) {\n if (json.type === void 0) {\n throw new Error(\"THREE.KeyframeTrack: track type undefined, can not parse\");\n }\n const trackType = getTrackTypeForValueTypeName(json.type);\n if (json.times === void 0) {\n const times = [], values = [];\n AnimationUtils.flattenJSON(json.keys, times, values, \"value\");\n json.times = times;\n json.values = values;\n }\n if (trackType.parse !== void 0) {\n return trackType.parse(json);\n } else {\n return new trackType(json.name, json.times, json.values, json.interpolation);\n }\n}\nconst Cache = {\n enabled: false,\n files: {},\n add: function(key, file) {\n if (this.enabled === false)\n return;\n this.files[key] = file;\n },\n get: function(key) {\n if (this.enabled === false)\n return;\n return this.files[key];\n },\n remove: function(key) {\n delete this.files[key];\n },\n clear: function() {\n this.files = {};\n }\n};\nclass LoadingManager {\n constructor(onLoad, onProgress, onError) {\n const scope = this;\n let isLoading = false;\n let itemsLoaded = 0;\n let itemsTotal = 0;\n let urlModifier = void 0;\n const handlers = [];\n this.onStart = void 0;\n this.onLoad = onLoad;\n this.onProgress = onProgress;\n this.onError = onError;\n this.itemStart = function(url) {\n itemsTotal++;\n if (isLoading === false) {\n if (scope.onStart !== void 0) {\n scope.onStart(url, itemsLoaded, itemsTotal);\n }\n }\n isLoading = true;\n };\n this.itemEnd = function(url) {\n itemsLoaded++;\n if (scope.onProgress !== void 0) {\n scope.onProgress(url, itemsLoaded, itemsTotal);\n }\n if (itemsLoaded === itemsTotal) {\n isLoading = false;\n if (scope.onLoad !== void 0) {\n scope.onLoad();\n }\n }\n };\n this.itemError = function(url) {\n if (scope.onError !== void 0) {\n scope.onError(url);\n }\n };\n this.resolveURL = function(url) {\n if (urlModifier) {\n return urlModifier(url);\n }\n return url;\n };\n this.setURLModifier = function(transform) {\n urlModifier = transform;\n return this;\n };\n this.addHandler = function(regex, loader) {\n handlers.push(regex, loader);\n return this;\n };\n this.removeHandler = function(regex) {\n const index = handlers.indexOf(regex);\n if (index !== -1) {\n handlers.splice(index, 2);\n }\n return this;\n };\n this.getHandler = function(file) {\n for (let i = 0, l = handlers.length; i < l; i += 2) {\n const regex = handlers[i];\n const loader = handlers[i + 1];\n if (regex.global)\n regex.lastIndex = 0;\n if (regex.test(file)) {\n return loader;\n }\n }\n return null;\n };\n }\n}\nconst DefaultLoadingManager = new LoadingManager();\nclass Loader {\n constructor(manager) {\n this.manager = manager !== void 0 ? manager : DefaultLoadingManager;\n this.crossOrigin = \"anonymous\";\n this.withCredentials = false;\n this.path = \"\";\n this.resourcePath = \"\";\n this.requestHeader = {};\n }\n load() {\n }\n loadAsync(url, onProgress) {\n const scope = this;\n return new Promise(function(resolve, reject) {\n scope.load(url, resolve, onProgress, reject);\n });\n }\n parse() {\n }\n setCrossOrigin(crossOrigin) {\n this.crossOrigin = crossOrigin;\n return this;\n }\n setWithCredentials(value) {\n this.withCredentials = value;\n return this;\n }\n setPath(path) {\n this.path = path;\n return this;\n }\n setResourcePath(resourcePath) {\n this.resourcePath = resourcePath;\n return this;\n }\n setRequestHeader(requestHeader) {\n this.requestHeader = requestHeader;\n return this;\n }\n}\nconst loading = {};\nclass FileLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n if (url === void 0)\n url = \"\";\n if (this.path !== void 0)\n url = this.path + url;\n url = this.manager.resolveURL(url);\n const cached = Cache.get(url);\n if (cached !== void 0) {\n this.manager.itemStart(url);\n setTimeout(() => {\n if (onLoad)\n onLoad(cached);\n this.manager.itemEnd(url);\n }, 0);\n return cached;\n }\n if (loading[url] !== void 0) {\n loading[url].push({\n onLoad,\n onProgress,\n onError\n });\n return;\n }\n loading[url] = [];\n loading[url].push({\n onLoad,\n onProgress,\n onError\n });\n const req = new Request(url, {\n headers: new Headers(this.requestHeader),\n credentials: this.withCredentials ? \"include\" : \"same-origin\"\n });\n fetch(req).then((response) => {\n if (response.status === 200 || response.status === 0) {\n if (response.status === 0) {\n console.warn(\"THREE.FileLoader: HTTP Status 0 received.\");\n }\n if (typeof ReadableStream === \"undefined\" || response.body.getReader === void 0) {\n return response;\n }\n const callbacks = loading[url];\n const reader = response.body.getReader();\n const contentLength = response.headers.get(\"Content-Length\");\n const total = contentLength ? parseInt(contentLength) : 0;\n const lengthComputable = total !== 0;\n let loaded = 0;\n const stream = new ReadableStream({\n start(controller) {\n readData();\n function readData() {\n reader.read().then(({done, value}) => {\n if (done) {\n controller.close();\n } else {\n loaded += value.byteLength;\n const event = new ProgressEvent(\"progress\", {lengthComputable, loaded, total});\n for (let i = 0, il = callbacks.length; i < il; i++) {\n const callback = callbacks[i];\n if (callback.onProgress)\n callback.onProgress(event);\n }\n controller.enqueue(value);\n readData();\n }\n });\n }\n }\n });\n return new Response(stream);\n } else {\n throw Error(`fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`);\n }\n }).then((response) => {\n switch (this.responseType) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"document\":\n return response.text().then((text) => {\n const parser = new DOMParser();\n return parser.parseFromString(text, this.mimeType);\n });\n case \"json\":\n return response.json();\n default:\n return response.text();\n }\n }).then((data) => {\n Cache.add(url, data);\n const callbacks = loading[url];\n delete loading[url];\n for (let i = 0, il = callbacks.length; i < il; i++) {\n const callback = callbacks[i];\n if (callback.onLoad)\n callback.onLoad(data);\n }\n }).catch((err) => {\n const callbacks = loading[url];\n if (callbacks === void 0) {\n this.manager.itemError(url);\n throw err;\n }\n delete loading[url];\n for (let i = 0, il = callbacks.length; i < il; i++) {\n const callback = callbacks[i];\n if (callback.onError)\n callback.onError(err);\n }\n this.manager.itemError(url);\n }).finally(() => {\n this.manager.itemEnd(url);\n });\n this.manager.itemStart(url);\n }\n setResponseType(value) {\n this.responseType = value;\n return this;\n }\n setMimeType(value) {\n this.mimeType = value;\n return this;\n }\n}\nclass AnimationLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\n loader.load(url, function(text) {\n try {\n onLoad(scope.parse(JSON.parse(text)));\n } catch (e) {\n if (onError) {\n onError(e);\n } else {\n console.error(e);\n }\n scope.manager.itemError(url);\n }\n }, onProgress, onError);\n }\n parse(json) {\n const animations = [];\n for (let i = 0; i < json.length; i++) {\n const clip = AnimationClip.parse(json[i]);\n animations.push(clip);\n }\n return animations;\n }\n}\nclass CompressedTextureLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const images = [];\n const texture = new CompressedTexture();\n const loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setResponseType(\"arraybuffer\");\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(scope.withCredentials);\n let loaded = 0;\n function loadTexture(i) {\n loader.load(url[i], function(buffer) {\n const texDatas = scope.parse(buffer, true);\n images[i] = {\n width: texDatas.width,\n height: texDatas.height,\n format: texDatas.format,\n mipmaps: texDatas.mipmaps\n };\n loaded += 1;\n if (loaded === 6) {\n if (texDatas.mipmapCount === 1)\n texture.minFilter = LinearFilter;\n texture.image = images;\n texture.format = texDatas.format;\n texture.needsUpdate = true;\n if (onLoad)\n onLoad(texture);\n }\n }, onProgress, onError);\n }\n if (Array.isArray(url)) {\n for (let i = 0, il = url.length; i < il; ++i) {\n loadTexture(i);\n }\n } else {\n loader.load(url, function(buffer) {\n const texDatas = scope.parse(buffer, true);\n if (texDatas.isCubemap) {\n const faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n for (let f = 0; f < faces; f++) {\n images[f] = {mipmaps: []};\n for (let i = 0; i < texDatas.mipmapCount; i++) {\n images[f].mipmaps.push(texDatas.mipmaps[f * texDatas.mipmapCount + i]);\n images[f].format = texDatas.format;\n images[f].width = texDatas.width;\n images[f].height = texDatas.height;\n }\n }\n texture.image = images;\n } else {\n texture.image.width = texDatas.width;\n texture.image.height = texDatas.height;\n texture.mipmaps = texDatas.mipmaps;\n }\n if (texDatas.mipmapCount === 1) {\n texture.minFilter = LinearFilter;\n }\n texture.format = texDatas.format;\n texture.needsUpdate = true;\n if (onLoad)\n onLoad(texture);\n }, onProgress, onError);\n }\n return texture;\n }\n}\nclass ImageLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n if (this.path !== void 0)\n url = this.path + url;\n url = this.manager.resolveURL(url);\n const scope = this;\n const cached = Cache.get(url);\n if (cached !== void 0) {\n scope.manager.itemStart(url);\n setTimeout(function() {\n if (onLoad)\n onLoad(cached);\n scope.manager.itemEnd(url);\n }, 0);\n return cached;\n }\n const image = createElementNS(\"img\");\n function onImageLoad() {\n removeEventListeners();\n Cache.add(url, this);\n if (onLoad)\n onLoad(this);\n scope.manager.itemEnd(url);\n }\n function onImageError(event) {\n removeEventListeners();\n if (onError)\n onError(event);\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n }\n function removeEventListeners() {\n image.removeEventListener(\"load\", onImageLoad, false);\n image.removeEventListener(\"error\", onImageError, false);\n }\n image.addEventListener(\"load\", onImageLoad, false);\n image.addEventListener(\"error\", onImageError, false);\n if (url.substr(0, 5) !== \"data:\") {\n if (this.crossOrigin !== void 0)\n image.crossOrigin = this.crossOrigin;\n }\n scope.manager.itemStart(url);\n image.src = url;\n return image;\n }\n}\nclass CubeTextureLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(urls, onLoad, onProgress, onError) {\n const texture = new CubeTexture();\n const loader = new ImageLoader(this.manager);\n loader.setCrossOrigin(this.crossOrigin);\n loader.setPath(this.path);\n let loaded = 0;\n function loadTexture(i) {\n loader.load(urls[i], function(image) {\n texture.images[i] = image;\n loaded++;\n if (loaded === 6) {\n texture.needsUpdate = true;\n if (onLoad)\n onLoad(texture);\n }\n }, void 0, onError);\n }\n for (let i = 0; i < urls.length; ++i) {\n loadTexture(i);\n }\n return texture;\n }\n}\nclass DataTextureLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const texture = new DataTexture();\n const loader = new FileLoader(this.manager);\n loader.setResponseType(\"arraybuffer\");\n loader.setRequestHeader(this.requestHeader);\n loader.setPath(this.path);\n loader.setWithCredentials(scope.withCredentials);\n loader.load(url, function(buffer) {\n const texData = scope.parse(buffer);\n if (!texData)\n return;\n if (texData.image !== void 0) {\n texture.image = texData.image;\n } else if (texData.data !== void 0) {\n texture.image.width = texData.width;\n texture.image.height = texData.height;\n texture.image.data = texData.data;\n }\n texture.wrapS = texData.wrapS !== void 0 ? texData.wrapS : ClampToEdgeWrapping;\n texture.wrapT = texData.wrapT !== void 0 ? texData.wrapT : ClampToEdgeWrapping;\n texture.magFilter = texData.magFilter !== void 0 ? texData.magFilter : LinearFilter;\n texture.minFilter = texData.minFilter !== void 0 ? texData.minFilter : LinearFilter;\n texture.anisotropy = texData.anisotropy !== void 0 ? texData.anisotropy : 1;\n if (texData.encoding !== void 0) {\n texture.encoding = texData.encoding;\n }\n if (texData.flipY !== void 0) {\n texture.flipY = texData.flipY;\n }\n if (texData.format !== void 0) {\n texture.format = texData.format;\n }\n if (texData.type !== void 0) {\n texture.type = texData.type;\n }\n if (texData.mipmaps !== void 0) {\n texture.mipmaps = texData.mipmaps;\n texture.minFilter = LinearMipmapLinearFilter;\n }\n if (texData.mipmapCount === 1) {\n texture.minFilter = LinearFilter;\n }\n if (texData.generateMipmaps !== void 0) {\n texture.generateMipmaps = texData.generateMipmaps;\n }\n texture.needsUpdate = true;\n if (onLoad)\n onLoad(texture, texData);\n }, onProgress, onError);\n return texture;\n }\n}\nclass TextureLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const texture = new Texture();\n const loader = new ImageLoader(this.manager);\n loader.setCrossOrigin(this.crossOrigin);\n loader.setPath(this.path);\n loader.load(url, function(image) {\n texture.image = image;\n texture.needsUpdate = true;\n if (onLoad !== void 0) {\n onLoad(texture);\n }\n }, onProgress, onError);\n return texture;\n }\n}\nclass Light extends Object3D {\n constructor(color, intensity = 1) {\n super();\n this.type = \"Light\";\n this.color = new Color(color);\n this.intensity = intensity;\n }\n dispose() {\n }\n copy(source) {\n super.copy(source);\n this.color.copy(source.color);\n this.intensity = source.intensity;\n return this;\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n data.object.color = this.color.getHex();\n data.object.intensity = this.intensity;\n if (this.groundColor !== void 0)\n data.object.groundColor = this.groundColor.getHex();\n if (this.distance !== void 0)\n data.object.distance = this.distance;\n if (this.angle !== void 0)\n data.object.angle = this.angle;\n if (this.decay !== void 0)\n data.object.decay = this.decay;\n if (this.penumbra !== void 0)\n data.object.penumbra = this.penumbra;\n if (this.shadow !== void 0)\n data.object.shadow = this.shadow.toJSON();\n return data;\n }\n}\nLight.prototype.isLight = true;\nclass HemisphereLight extends Light {\n constructor(skyColor, groundColor, intensity) {\n super(skyColor, intensity);\n this.type = \"HemisphereLight\";\n this.position.copy(Object3D.DefaultUp);\n this.updateMatrix();\n this.groundColor = new Color(groundColor);\n }\n copy(source) {\n Light.prototype.copy.call(this, source);\n this.groundColor.copy(source.groundColor);\n return this;\n }\n}\nHemisphereLight.prototype.isHemisphereLight = true;\nconst _projScreenMatrix$1 = /* @__PURE__ */ new Matrix4();\nconst _lightPositionWorld$1 = /* @__PURE__ */ new Vector3();\nconst _lookTarget$1 = /* @__PURE__ */ new Vector3();\nclass LightShadow {\n constructor(camera) {\n this.camera = camera;\n this.bias = 0;\n this.normalBias = 0;\n this.radius = 1;\n this.blurSamples = 8;\n this.mapSize = new Vector2(512, 512);\n this.map = null;\n this.mapPass = null;\n this.matrix = new Matrix4();\n this.autoUpdate = true;\n this.needsUpdate = false;\n this._frustum = new Frustum();\n this._frameExtents = new Vector2(1, 1);\n this._viewportCount = 1;\n this._viewports = [\n new Vector4(0, 0, 1, 1)\n ];\n }\n getViewportCount() {\n return this._viewportCount;\n }\n getFrustum() {\n return this._frustum;\n }\n updateMatrices(light) {\n const shadowCamera = this.camera;\n const shadowMatrix = this.matrix;\n _lightPositionWorld$1.setFromMatrixPosition(light.matrixWorld);\n shadowCamera.position.copy(_lightPositionWorld$1);\n _lookTarget$1.setFromMatrixPosition(light.target.matrixWorld);\n shadowCamera.lookAt(_lookTarget$1);\n shadowCamera.updateMatrixWorld();\n _projScreenMatrix$1.multiplyMatrices(shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse);\n this._frustum.setFromProjectionMatrix(_projScreenMatrix$1);\n shadowMatrix.set(0.5, 0, 0, 0.5, 0, 0.5, 0, 0.5, 0, 0, 0.5, 0.5, 0, 0, 0, 1);\n shadowMatrix.multiply(shadowCamera.projectionMatrix);\n shadowMatrix.multiply(shadowCamera.matrixWorldInverse);\n }\n getViewport(viewportIndex) {\n return this._viewports[viewportIndex];\n }\n getFrameExtents() {\n return this._frameExtents;\n }\n dispose() {\n if (this.map) {\n this.map.dispose();\n }\n if (this.mapPass) {\n this.mapPass.dispose();\n }\n }\n copy(source) {\n this.camera = source.camera.clone();\n this.bias = source.bias;\n this.radius = source.radius;\n this.mapSize.copy(source.mapSize);\n return this;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n toJSON() {\n const object = {};\n if (this.bias !== 0)\n object.bias = this.bias;\n if (this.normalBias !== 0)\n object.normalBias = this.normalBias;\n if (this.radius !== 1)\n object.radius = this.radius;\n if (this.mapSize.x !== 512 || this.mapSize.y !== 512)\n object.mapSize = this.mapSize.toArray();\n object.camera = this.camera.toJSON(false).object;\n delete object.camera.matrix;\n return object;\n }\n}\nclass SpotLightShadow extends LightShadow {\n constructor() {\n super(new PerspectiveCamera(50, 1, 0.5, 500));\n this.focus = 1;\n }\n updateMatrices(light) {\n const camera = this.camera;\n const fov2 = RAD2DEG * 2 * light.angle * this.focus;\n const aspect2 = this.mapSize.width / this.mapSize.height;\n const far = light.distance || camera.far;\n if (fov2 !== camera.fov || aspect2 !== camera.aspect || far !== camera.far) {\n camera.fov = fov2;\n camera.aspect = aspect2;\n camera.far = far;\n camera.updateProjectionMatrix();\n }\n super.updateMatrices(light);\n }\n copy(source) {\n super.copy(source);\n this.focus = source.focus;\n return this;\n }\n}\nSpotLightShadow.prototype.isSpotLightShadow = true;\nclass SpotLight extends Light {\n constructor(color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1) {\n super(color, intensity);\n this.type = \"SpotLight\";\n this.position.copy(Object3D.DefaultUp);\n this.updateMatrix();\n this.target = new Object3D();\n this.distance = distance;\n this.angle = angle;\n this.penumbra = penumbra;\n this.decay = decay;\n this.shadow = new SpotLightShadow();\n }\n get power() {\n return this.intensity * Math.PI;\n }\n set power(power) {\n this.intensity = power / Math.PI;\n }\n dispose() {\n this.shadow.dispose();\n }\n copy(source) {\n super.copy(source);\n this.distance = source.distance;\n this.angle = source.angle;\n this.penumbra = source.penumbra;\n this.decay = source.decay;\n this.target = source.target.clone();\n this.shadow = source.shadow.clone();\n return this;\n }\n}\nSpotLight.prototype.isSpotLight = true;\nconst _projScreenMatrix = /* @__PURE__ */ new Matrix4();\nconst _lightPositionWorld = /* @__PURE__ */ new Vector3();\nconst _lookTarget = /* @__PURE__ */ new Vector3();\nclass PointLightShadow extends LightShadow {\n constructor() {\n super(new PerspectiveCamera(90, 1, 0.5, 500));\n this._frameExtents = new Vector2(4, 2);\n this._viewportCount = 6;\n this._viewports = [\n new Vector4(2, 1, 1, 1),\n new Vector4(0, 1, 1, 1),\n new Vector4(3, 1, 1, 1),\n new Vector4(1, 1, 1, 1),\n new Vector4(3, 0, 1, 1),\n new Vector4(1, 0, 1, 1)\n ];\n this._cubeDirections = [\n new Vector3(1, 0, 0),\n new Vector3(-1, 0, 0),\n new Vector3(0, 0, 1),\n new Vector3(0, 0, -1),\n new Vector3(0, 1, 0),\n new Vector3(0, -1, 0)\n ];\n this._cubeUps = [\n new Vector3(0, 1, 0),\n new Vector3(0, 1, 0),\n new Vector3(0, 1, 0),\n new Vector3(0, 1, 0),\n new Vector3(0, 0, 1),\n new Vector3(0, 0, -1)\n ];\n }\n updateMatrices(light, viewportIndex = 0) {\n const camera = this.camera;\n const shadowMatrix = this.matrix;\n const far = light.distance || camera.far;\n if (far !== camera.far) {\n camera.far = far;\n camera.updateProjectionMatrix();\n }\n _lightPositionWorld.setFromMatrixPosition(light.matrixWorld);\n camera.position.copy(_lightPositionWorld);\n _lookTarget.copy(camera.position);\n _lookTarget.add(this._cubeDirections[viewportIndex]);\n camera.up.copy(this._cubeUps[viewportIndex]);\n camera.lookAt(_lookTarget);\n camera.updateMatrixWorld();\n shadowMatrix.makeTranslation(-_lightPositionWorld.x, -_lightPositionWorld.y, -_lightPositionWorld.z);\n _projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n this._frustum.setFromProjectionMatrix(_projScreenMatrix);\n }\n}\nPointLightShadow.prototype.isPointLightShadow = true;\nclass PointLight extends Light {\n constructor(color, intensity, distance = 0, decay = 1) {\n super(color, intensity);\n this.type = \"PointLight\";\n this.distance = distance;\n this.decay = decay;\n this.shadow = new PointLightShadow();\n }\n get power() {\n return this.intensity * 4 * Math.PI;\n }\n set power(power) {\n this.intensity = power / (4 * Math.PI);\n }\n dispose() {\n this.shadow.dispose();\n }\n copy(source) {\n super.copy(source);\n this.distance = source.distance;\n this.decay = source.decay;\n this.shadow = source.shadow.clone();\n return this;\n }\n}\nPointLight.prototype.isPointLight = true;\nclass DirectionalLightShadow extends LightShadow {\n constructor() {\n super(new OrthographicCamera(-5, 5, 5, -5, 0.5, 500));\n }\n}\nDirectionalLightShadow.prototype.isDirectionalLightShadow = true;\nclass DirectionalLight extends Light {\n constructor(color, intensity) {\n super(color, intensity);\n this.type = \"DirectionalLight\";\n this.position.copy(Object3D.DefaultUp);\n this.updateMatrix();\n this.target = new Object3D();\n this.shadow = new DirectionalLightShadow();\n }\n dispose() {\n this.shadow.dispose();\n }\n copy(source) {\n super.copy(source);\n this.target = source.target.clone();\n this.shadow = source.shadow.clone();\n return this;\n }\n}\nDirectionalLight.prototype.isDirectionalLight = true;\nclass AmbientLight extends Light {\n constructor(color, intensity) {\n super(color, intensity);\n this.type = \"AmbientLight\";\n }\n}\nAmbientLight.prototype.isAmbientLight = true;\nclass RectAreaLight extends Light {\n constructor(color, intensity, width = 10, height = 10) {\n super(color, intensity);\n this.type = \"RectAreaLight\";\n this.width = width;\n this.height = height;\n }\n get power() {\n return this.intensity * this.width * this.height * Math.PI;\n }\n set power(power) {\n this.intensity = power / (this.width * this.height * Math.PI);\n }\n copy(source) {\n super.copy(source);\n this.width = source.width;\n this.height = source.height;\n return this;\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n data.object.width = this.width;\n data.object.height = this.height;\n return data;\n }\n}\nRectAreaLight.prototype.isRectAreaLight = true;\nclass SphericalHarmonics3 {\n constructor() {\n this.coefficients = [];\n for (let i = 0; i < 9; i++) {\n this.coefficients.push(new Vector3());\n }\n }\n set(coefficients) {\n for (let i = 0; i < 9; i++) {\n this.coefficients[i].copy(coefficients[i]);\n }\n return this;\n }\n zero() {\n for (let i = 0; i < 9; i++) {\n this.coefficients[i].set(0, 0, 0);\n }\n return this;\n }\n getAt(normal, target) {\n const x = normal.x, y = normal.y, z = normal.z;\n const coeff = this.coefficients;\n target.copy(coeff[0]).multiplyScalar(0.282095);\n target.addScaledVector(coeff[1], 0.488603 * y);\n target.addScaledVector(coeff[2], 0.488603 * z);\n target.addScaledVector(coeff[3], 0.488603 * x);\n target.addScaledVector(coeff[4], 1.092548 * (x * y));\n target.addScaledVector(coeff[5], 1.092548 * (y * z));\n target.addScaledVector(coeff[6], 0.315392 * (3 * z * z - 1));\n target.addScaledVector(coeff[7], 1.092548 * (x * z));\n target.addScaledVector(coeff[8], 0.546274 * (x * x - y * y));\n return target;\n }\n getIrradianceAt(normal, target) {\n const x = normal.x, y = normal.y, z = normal.z;\n const coeff = this.coefficients;\n target.copy(coeff[0]).multiplyScalar(0.886227);\n target.addScaledVector(coeff[1], 2 * 0.511664 * y);\n target.addScaledVector(coeff[2], 2 * 0.511664 * z);\n target.addScaledVector(coeff[3], 2 * 0.511664 * x);\n target.addScaledVector(coeff[4], 2 * 0.429043 * x * y);\n target.addScaledVector(coeff[5], 2 * 0.429043 * y * z);\n target.addScaledVector(coeff[6], 0.743125 * z * z - 0.247708);\n target.addScaledVector(coeff[7], 2 * 0.429043 * x * z);\n target.addScaledVector(coeff[8], 0.429043 * (x * x - y * y));\n return target;\n }\n add(sh) {\n for (let i = 0; i < 9; i++) {\n this.coefficients[i].add(sh.coefficients[i]);\n }\n return this;\n }\n addScaledSH(sh, s) {\n for (let i = 0; i < 9; i++) {\n this.coefficients[i].addScaledVector(sh.coefficients[i], s);\n }\n return this;\n }\n scale(s) {\n for (let i = 0; i < 9; i++) {\n this.coefficients[i].multiplyScalar(s);\n }\n return this;\n }\n lerp(sh, alpha) {\n for (let i = 0; i < 9; i++) {\n this.coefficients[i].lerp(sh.coefficients[i], alpha);\n }\n return this;\n }\n equals(sh) {\n for (let i = 0; i < 9; i++) {\n if (!this.coefficients[i].equals(sh.coefficients[i])) {\n return false;\n }\n }\n return true;\n }\n copy(sh) {\n return this.set(sh.coefficients);\n }\n clone() {\n return new this.constructor().copy(this);\n }\n fromArray(array, offset = 0) {\n const coefficients = this.coefficients;\n for (let i = 0; i < 9; i++) {\n coefficients[i].fromArray(array, offset + i * 3);\n }\n return this;\n }\n toArray(array = [], offset = 0) {\n const coefficients = this.coefficients;\n for (let i = 0; i < 9; i++) {\n coefficients[i].toArray(array, offset + i * 3);\n }\n return array;\n }\n static getBasisAt(normal, shBasis) {\n const x = normal.x, y = normal.y, z = normal.z;\n shBasis[0] = 0.282095;\n shBasis[1] = 0.488603 * y;\n shBasis[2] = 0.488603 * z;\n shBasis[3] = 0.488603 * x;\n shBasis[4] = 1.092548 * x * y;\n shBasis[5] = 1.092548 * y * z;\n shBasis[6] = 0.315392 * (3 * z * z - 1);\n shBasis[7] = 1.092548 * x * z;\n shBasis[8] = 0.546274 * (x * x - y * y);\n }\n}\nSphericalHarmonics3.prototype.isSphericalHarmonics3 = true;\nclass LightProbe extends Light {\n constructor(sh = new SphericalHarmonics3(), intensity = 1) {\n super(void 0, intensity);\n this.sh = sh;\n }\n copy(source) {\n super.copy(source);\n this.sh.copy(source.sh);\n return this;\n }\n fromJSON(json) {\n this.intensity = json.intensity;\n this.sh.fromArray(json.sh);\n return this;\n }\n toJSON(meta) {\n const data = super.toJSON(meta);\n data.object.sh = this.sh.toArray();\n return data;\n }\n}\nLightProbe.prototype.isLightProbe = true;\nclass MaterialLoader extends Loader {\n constructor(manager) {\n super(manager);\n this.textures = {};\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const loader = new FileLoader(scope.manager);\n loader.setPath(scope.path);\n loader.setRequestHeader(scope.requestHeader);\n loader.setWithCredentials(scope.withCredentials);\n loader.load(url, function(text) {\n try {\n onLoad(scope.parse(JSON.parse(text)));\n } catch (e) {\n if (onError) {\n onError(e);\n } else {\n console.error(e);\n }\n scope.manager.itemError(url);\n }\n }, onProgress, onError);\n }\n parse(json) {\n const textures = this.textures;\n function getTexture(name) {\n if (textures[name] === void 0) {\n console.warn(\"THREE.MaterialLoader: Undefined texture\", name);\n }\n return textures[name];\n }\n const material = new Materials[json.type]();\n if (json.uuid !== void 0)\n material.uuid = json.uuid;\n if (json.name !== void 0)\n material.name = json.name;\n if (json.color !== void 0 && material.color !== void 0)\n material.color.setHex(json.color);\n if (json.roughness !== void 0)\n material.roughness = json.roughness;\n if (json.metalness !== void 0)\n material.metalness = json.metalness;\n if (json.sheen !== void 0)\n material.sheen = json.sheen;\n if (json.sheenColor !== void 0)\n material.sheenColor = new Color().setHex(json.sheenColor);\n if (json.sheenRoughness !== void 0)\n material.sheenRoughness = json.sheenRoughness;\n if (json.emissive !== void 0 && material.emissive !== void 0)\n material.emissive.setHex(json.emissive);\n if (json.specular !== void 0 && material.specular !== void 0)\n material.specular.setHex(json.specular);\n if (json.specularIntensity !== void 0)\n material.specularIntensity = json.specularIntensity;\n if (json.specularColor !== void 0 && material.specularColor !== void 0)\n material.specularColor.setHex(json.specularColor);\n if (json.shininess !== void 0)\n material.shininess = json.shininess;\n if (json.clearcoat !== void 0)\n material.clearcoat = json.clearcoat;\n if (json.clearcoatRoughness !== void 0)\n material.clearcoatRoughness = json.clearcoatRoughness;\n if (json.transmission !== void 0)\n material.transmission = json.transmission;\n if (json.thickness !== void 0)\n material.thickness = json.thickness;\n if (json.attenuationDistance !== void 0)\n material.attenuationDistance = json.attenuationDistance;\n if (json.attenuationColor !== void 0 && material.attenuationColor !== void 0)\n material.attenuationColor.setHex(json.attenuationColor);\n if (json.fog !== void 0)\n material.fog = json.fog;\n if (json.flatShading !== void 0)\n material.flatShading = json.flatShading;\n if (json.blending !== void 0)\n material.blending = json.blending;\n if (json.combine !== void 0)\n material.combine = json.combine;\n if (json.side !== void 0)\n material.side = json.side;\n if (json.shadowSide !== void 0)\n material.shadowSide = json.shadowSide;\n if (json.opacity !== void 0)\n material.opacity = json.opacity;\n if (json.format !== void 0)\n material.format = json.format;\n if (json.transparent !== void 0)\n material.transparent = json.transparent;\n if (json.alphaTest !== void 0)\n material.alphaTest = json.alphaTest;\n if (json.depthTest !== void 0)\n material.depthTest = json.depthTest;\n if (json.depthWrite !== void 0)\n material.depthWrite = json.depthWrite;\n if (json.colorWrite !== void 0)\n material.colorWrite = json.colorWrite;\n if (json.stencilWrite !== void 0)\n material.stencilWrite = json.stencilWrite;\n if (json.stencilWriteMask !== void 0)\n material.stencilWriteMask = json.stencilWriteMask;\n if (json.stencilFunc !== void 0)\n material.stencilFunc = json.stencilFunc;\n if (json.stencilRef !== void 0)\n material.stencilRef = json.stencilRef;\n if (json.stencilFuncMask !== void 0)\n material.stencilFuncMask = json.stencilFuncMask;\n if (json.stencilFail !== void 0)\n material.stencilFail = json.stencilFail;\n if (json.stencilZFail !== void 0)\n material.stencilZFail = json.stencilZFail;\n if (json.stencilZPass !== void 0)\n material.stencilZPass = json.stencilZPass;\n if (json.wireframe !== void 0)\n material.wireframe = json.wireframe;\n if (json.wireframeLinewidth !== void 0)\n material.wireframeLinewidth = json.wireframeLinewidth;\n if (json.wireframeLinecap !== void 0)\n material.wireframeLinecap = json.wireframeLinecap;\n if (json.wireframeLinejoin !== void 0)\n material.wireframeLinejoin = json.wireframeLinejoin;\n if (json.rotation !== void 0)\n material.rotation = json.rotation;\n if (json.linewidth !== 1)\n material.linewidth = json.linewidth;\n if (json.dashSize !== void 0)\n material.dashSize = json.dashSize;\n if (json.gapSize !== void 0)\n material.gapSize = json.gapSize;\n if (json.scale !== void 0)\n material.scale = json.scale;\n if (json.polygonOffset !== void 0)\n material.polygonOffset = json.polygonOffset;\n if (json.polygonOffsetFactor !== void 0)\n material.polygonOffsetFactor = json.polygonOffsetFactor;\n if (json.polygonOffsetUnits !== void 0)\n material.polygonOffsetUnits = json.polygonOffsetUnits;\n if (json.dithering !== void 0)\n material.dithering = json.dithering;\n if (json.alphaToCoverage !== void 0)\n material.alphaToCoverage = json.alphaToCoverage;\n if (json.premultipliedAlpha !== void 0)\n material.premultipliedAlpha = json.premultipliedAlpha;\n if (json.visible !== void 0)\n material.visible = json.visible;\n if (json.toneMapped !== void 0)\n material.toneMapped = json.toneMapped;\n if (json.userData !== void 0)\n material.userData = json.userData;\n if (json.vertexColors !== void 0) {\n if (typeof json.vertexColors === \"number\") {\n material.vertexColors = json.vertexColors > 0 ? true : false;\n } else {\n material.vertexColors = json.vertexColors;\n }\n }\n if (json.uniforms !== void 0) {\n for (const name in json.uniforms) {\n const uniform = json.uniforms[name];\n material.uniforms[name] = {};\n switch (uniform.type) {\n case \"t\":\n material.uniforms[name].value = getTexture(uniform.value);\n break;\n case \"c\":\n material.uniforms[name].value = new Color().setHex(uniform.value);\n break;\n case \"v2\":\n material.uniforms[name].value = new Vector2().fromArray(uniform.value);\n break;\n case \"v3\":\n material.uniforms[name].value = new Vector3().fromArray(uniform.value);\n break;\n case \"v4\":\n material.uniforms[name].value = new Vector4().fromArray(uniform.value);\n break;\n case \"m3\":\n material.uniforms[name].value = new Matrix3().fromArray(uniform.value);\n break;\n case \"m4\":\n material.uniforms[name].value = new Matrix4().fromArray(uniform.value);\n break;\n default:\n material.uniforms[name].value = uniform.value;\n }\n }\n }\n if (json.defines !== void 0)\n material.defines = json.defines;\n if (json.vertexShader !== void 0)\n material.vertexShader = json.vertexShader;\n if (json.fragmentShader !== void 0)\n material.fragmentShader = json.fragmentShader;\n if (json.extensions !== void 0) {\n for (const key in json.extensions) {\n material.extensions[key] = json.extensions[key];\n }\n }\n if (json.shading !== void 0)\n material.flatShading = json.shading === 1;\n if (json.size !== void 0)\n material.size = json.size;\n if (json.sizeAttenuation !== void 0)\n material.sizeAttenuation = json.sizeAttenuation;\n if (json.map !== void 0)\n material.map = getTexture(json.map);\n if (json.matcap !== void 0)\n material.matcap = getTexture(json.matcap);\n if (json.alphaMap !== void 0)\n material.alphaMap = getTexture(json.alphaMap);\n if (json.bumpMap !== void 0)\n material.bumpMap = getTexture(json.bumpMap);\n if (json.bumpScale !== void 0)\n material.bumpScale = json.bumpScale;\n if (json.normalMap !== void 0)\n material.normalMap = getTexture(json.normalMap);\n if (json.normalMapType !== void 0)\n material.normalMapType = json.normalMapType;\n if (json.normalScale !== void 0) {\n let normalScale = json.normalScale;\n if (Array.isArray(normalScale) === false) {\n normalScale = [normalScale, normalScale];\n }\n material.normalScale = new Vector2().fromArray(normalScale);\n }\n if (json.displacementMap !== void 0)\n material.displacementMap = getTexture(json.displacementMap);\n if (json.displacementScale !== void 0)\n material.displacementScale = json.displacementScale;\n if (json.displacementBias !== void 0)\n material.displacementBias = json.displacementBias;\n if (json.roughnessMap !== void 0)\n material.roughnessMap = getTexture(json.roughnessMap);\n if (json.metalnessMap !== void 0)\n material.metalnessMap = getTexture(json.metalnessMap);\n if (json.emissiveMap !== void 0)\n material.emissiveMap = getTexture(json.emissiveMap);\n if (json.emissiveIntensity !== void 0)\n material.emissiveIntensity = json.emissiveIntensity;\n if (json.specularMap !== void 0)\n material.specularMap = getTexture(json.specularMap);\n if (json.specularIntensityMap !== void 0)\n material.specularIntensityMap = getTexture(json.specularIntensityMap);\n if (json.specularColorMap !== void 0)\n material.specularColorMap = getTexture(json.specularColorMap);\n if (json.envMap !== void 0)\n material.envMap = getTexture(json.envMap);\n if (json.envMapIntensity !== void 0)\n material.envMapIntensity = json.envMapIntensity;\n if (json.reflectivity !== void 0)\n material.reflectivity = json.reflectivity;\n if (json.refractionRatio !== void 0)\n material.refractionRatio = json.refractionRatio;\n if (json.lightMap !== void 0)\n material.lightMap = getTexture(json.lightMap);\n if (json.lightMapIntensity !== void 0)\n material.lightMapIntensity = json.lightMapIntensity;\n if (json.aoMap !== void 0)\n material.aoMap = getTexture(json.aoMap);\n if (json.aoMapIntensity !== void 0)\n material.aoMapIntensity = json.aoMapIntensity;\n if (json.gradientMap !== void 0)\n material.gradientMap = getTexture(json.gradientMap);\n if (json.clearcoatMap !== void 0)\n material.clearcoatMap = getTexture(json.clearcoatMap);\n if (json.clearcoatRoughnessMap !== void 0)\n material.clearcoatRoughnessMap = getTexture(json.clearcoatRoughnessMap);\n if (json.clearcoatNormalMap !== void 0)\n material.clearcoatNormalMap = getTexture(json.clearcoatNormalMap);\n if (json.clearcoatNormalScale !== void 0)\n material.clearcoatNormalScale = new Vector2().fromArray(json.clearcoatNormalScale);\n if (json.transmissionMap !== void 0)\n material.transmissionMap = getTexture(json.transmissionMap);\n if (json.thicknessMap !== void 0)\n material.thicknessMap = getTexture(json.thicknessMap);\n if (json.sheenColorMap !== void 0)\n material.sheenColorMap = getTexture(json.sheenColorMap);\n if (json.sheenRoughnessMap !== void 0)\n material.sheenRoughnessMap = getTexture(json.sheenRoughnessMap);\n return material;\n }\n setTextures(value) {\n this.textures = value;\n return this;\n }\n}\nclass LoaderUtils {\n static decodeText(array) {\n if (typeof TextDecoder !== \"undefined\") {\n return new TextDecoder().decode(array);\n }\n let s = \"\";\n for (let i = 0, il = array.length; i < il; i++) {\n s += String.fromCharCode(array[i]);\n }\n try {\n return decodeURIComponent(escape(s));\n } catch (e) {\n return s;\n }\n }\n static extractUrlBase(url) {\n const index = url.lastIndexOf(\"/\");\n if (index === -1)\n return \"./\";\n return url.substr(0, index + 1);\n }\n static resolveURL(url, path) {\n if (typeof url !== \"string\" || url === \"\")\n return \"\";\n if (/^https?:\\/\\//i.test(path) && /^\\//.test(url)) {\n path = path.replace(/(^https?:\\/\\/[^\\/]+).*/i, \"$1\");\n }\n if (/^(https?:)?\\/\\//i.test(url))\n return url;\n if (/^data:.*,.*$/i.test(url))\n return url;\n if (/^blob:.*$/i.test(url))\n return url;\n return path + url;\n }\n}\nclass InstancedBufferGeometry extends BufferGeometry {\n constructor() {\n super();\n this.type = \"InstancedBufferGeometry\";\n this.instanceCount = Infinity;\n }\n copy(source) {\n super.copy(source);\n this.instanceCount = source.instanceCount;\n return this;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n toJSON() {\n const data = super.toJSON(this);\n data.instanceCount = this.instanceCount;\n data.isInstancedBufferGeometry = true;\n return data;\n }\n}\nInstancedBufferGeometry.prototype.isInstancedBufferGeometry = true;\nclass BufferGeometryLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const loader = new FileLoader(scope.manager);\n loader.setPath(scope.path);\n loader.setRequestHeader(scope.requestHeader);\n loader.setWithCredentials(scope.withCredentials);\n loader.load(url, function(text) {\n try {\n onLoad(scope.parse(JSON.parse(text)));\n } catch (e) {\n if (onError) {\n onError(e);\n } else {\n console.error(e);\n }\n scope.manager.itemError(url);\n }\n }, onProgress, onError);\n }\n parse(json) {\n const interleavedBufferMap = {};\n const arrayBufferMap = {};\n function getInterleavedBuffer(json2, uuid) {\n if (interleavedBufferMap[uuid] !== void 0)\n return interleavedBufferMap[uuid];\n const interleavedBuffers = json2.interleavedBuffers;\n const interleavedBuffer = interleavedBuffers[uuid];\n const buffer = getArrayBuffer(json2, interleavedBuffer.buffer);\n const array = getTypedArray(interleavedBuffer.type, buffer);\n const ib = new InterleavedBuffer(array, interleavedBuffer.stride);\n ib.uuid = interleavedBuffer.uuid;\n interleavedBufferMap[uuid] = ib;\n return ib;\n }\n function getArrayBuffer(json2, uuid) {\n if (arrayBufferMap[uuid] !== void 0)\n return arrayBufferMap[uuid];\n const arrayBuffers = json2.arrayBuffers;\n const arrayBuffer = arrayBuffers[uuid];\n const ab = new Uint32Array(arrayBuffer).buffer;\n arrayBufferMap[uuid] = ab;\n return ab;\n }\n const geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n const index = json.data.index;\n if (index !== void 0) {\n const typedArray = getTypedArray(index.type, index.array);\n geometry.setIndex(new BufferAttribute(typedArray, 1));\n }\n const attributes = json.data.attributes;\n for (const key in attributes) {\n const attribute = attributes[key];\n let bufferAttribute;\n if (attribute.isInterleavedBufferAttribute) {\n const interleavedBuffer = getInterleavedBuffer(json.data, attribute.data);\n bufferAttribute = new InterleavedBufferAttribute(interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized);\n } else {\n const typedArray = getTypedArray(attribute.type, attribute.array);\n const bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n bufferAttribute = new bufferAttributeConstr(typedArray, attribute.itemSize, attribute.normalized);\n }\n if (attribute.name !== void 0)\n bufferAttribute.name = attribute.name;\n if (attribute.usage !== void 0)\n bufferAttribute.setUsage(attribute.usage);\n if (attribute.updateRange !== void 0) {\n bufferAttribute.updateRange.offset = attribute.updateRange.offset;\n bufferAttribute.updateRange.count = attribute.updateRange.count;\n }\n geometry.setAttribute(key, bufferAttribute);\n }\n const morphAttributes = json.data.morphAttributes;\n if (morphAttributes) {\n for (const key in morphAttributes) {\n const attributeArray = morphAttributes[key];\n const array = [];\n for (let i = 0, il = attributeArray.length; i < il; i++) {\n const attribute = attributeArray[i];\n let bufferAttribute;\n if (attribute.isInterleavedBufferAttribute) {\n const interleavedBuffer = getInterleavedBuffer(json.data, attribute.data);\n bufferAttribute = new InterleavedBufferAttribute(interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized);\n } else {\n const typedArray = getTypedArray(attribute.type, attribute.array);\n bufferAttribute = new BufferAttribute(typedArray, attribute.itemSize, attribute.normalized);\n }\n if (attribute.name !== void 0)\n bufferAttribute.name = attribute.name;\n array.push(bufferAttribute);\n }\n geometry.morphAttributes[key] = array;\n }\n }\n const morphTargetsRelative = json.data.morphTargetsRelative;\n if (morphTargetsRelative) {\n geometry.morphTargetsRelative = true;\n }\n const groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n if (groups !== void 0) {\n for (let i = 0, n = groups.length; i !== n; ++i) {\n const group = groups[i];\n geometry.addGroup(group.start, group.count, group.materialIndex);\n }\n }\n const boundingSphere = json.data.boundingSphere;\n if (boundingSphere !== void 0) {\n const center = new Vector3();\n if (boundingSphere.center !== void 0) {\n center.fromArray(boundingSphere.center);\n }\n geometry.boundingSphere = new Sphere(center, boundingSphere.radius);\n }\n if (json.name)\n geometry.name = json.name;\n if (json.userData)\n geometry.userData = json.userData;\n return geometry;\n }\n}\nclass ObjectLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const path = this.path === \"\" ? LoaderUtils.extractUrlBase(url) : this.path;\n this.resourcePath = this.resourcePath || path;\n const loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\n loader.load(url, function(text) {\n let json = null;\n try {\n json = JSON.parse(text);\n } catch (error) {\n if (onError !== void 0)\n onError(error);\n console.error(\"THREE:ObjectLoader: Can't parse \" + url + \".\", error.message);\n return;\n }\n const metadata = json.metadata;\n if (metadata === void 0 || metadata.type === void 0 || metadata.type.toLowerCase() === \"geometry\") {\n console.error(\"THREE.ObjectLoader: Can't load \" + url);\n return;\n }\n scope.parse(json, onLoad);\n }, onProgress, onError);\n }\n async loadAsync(url, onProgress) {\n const scope = this;\n const path = this.path === \"\" ? LoaderUtils.extractUrlBase(url) : this.path;\n this.resourcePath = this.resourcePath || path;\n const loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\n const text = await loader.loadAsync(url, onProgress);\n const json = JSON.parse(text);\n const metadata = json.metadata;\n if (metadata === void 0 || metadata.type === void 0 || metadata.type.toLowerCase() === \"geometry\") {\n throw new Error(\"THREE.ObjectLoader: Can't load \" + url);\n }\n return await scope.parseAsync(json);\n }\n parse(json, onLoad) {\n const animations = this.parseAnimations(json.animations);\n const shapes = this.parseShapes(json.shapes);\n const geometries = this.parseGeometries(json.geometries, shapes);\n const images = this.parseImages(json.images, function() {\n if (onLoad !== void 0)\n onLoad(object);\n });\n const textures = this.parseTextures(json.textures, images);\n const materials = this.parseMaterials(json.materials, textures);\n const object = this.parseObject(json.object, geometries, materials, textures, animations);\n const skeletons = this.parseSkeletons(json.skeletons, object);\n this.bindSkeletons(object, skeletons);\n if (onLoad !== void 0) {\n let hasImages = false;\n for (const uuid in images) {\n if (images[uuid] instanceof HTMLImageElement) {\n hasImages = true;\n break;\n }\n }\n if (hasImages === false)\n onLoad(object);\n }\n return object;\n }\n async parseAsync(json) {\n const animations = this.parseAnimations(json.animations);\n const shapes = this.parseShapes(json.shapes);\n const geometries = this.parseGeometries(json.geometries, shapes);\n const images = await this.parseImagesAsync(json.images);\n const textures = this.parseTextures(json.textures, images);\n const materials = this.parseMaterials(json.materials, textures);\n const object = this.parseObject(json.object, geometries, materials, textures, animations);\n const skeletons = this.parseSkeletons(json.skeletons, object);\n this.bindSkeletons(object, skeletons);\n return object;\n }\n parseShapes(json) {\n const shapes = {};\n if (json !== void 0) {\n for (let i = 0, l = json.length; i < l; i++) {\n const shape = new Shape().fromJSON(json[i]);\n shapes[shape.uuid] = shape;\n }\n }\n return shapes;\n }\n parseSkeletons(json, object) {\n const skeletons = {};\n const bones = {};\n object.traverse(function(child) {\n if (child.isBone)\n bones[child.uuid] = child;\n });\n if (json !== void 0) {\n for (let i = 0, l = json.length; i < l; i++) {\n const skeleton = new Skeleton().fromJSON(json[i], bones);\n skeletons[skeleton.uuid] = skeleton;\n }\n }\n return skeletons;\n }\n parseGeometries(json, shapes) {\n const geometries = {};\n if (json !== void 0) {\n const bufferGeometryLoader = new BufferGeometryLoader();\n for (let i = 0, l = json.length; i < l; i++) {\n let geometry;\n const data = json[i];\n switch (data.type) {\n case \"BufferGeometry\":\n case \"InstancedBufferGeometry\":\n geometry = bufferGeometryLoader.parse(data);\n break;\n case \"Geometry\":\n console.error(\"THREE.ObjectLoader: The legacy Geometry type is no longer supported.\");\n break;\n default:\n if (data.type in Geometries) {\n geometry = Geometries[data.type].fromJSON(data, shapes);\n } else {\n console.warn(`THREE.ObjectLoader: Unsupported geometry type \"${data.type}\"`);\n }\n }\n geometry.uuid = data.uuid;\n if (data.name !== void 0)\n geometry.name = data.name;\n if (geometry.isBufferGeometry === true && data.userData !== void 0)\n geometry.userData = data.userData;\n geometries[data.uuid] = geometry;\n }\n }\n return geometries;\n }\n parseMaterials(json, textures) {\n const cache = {};\n const materials = {};\n if (json !== void 0) {\n const loader = new MaterialLoader();\n loader.setTextures(textures);\n for (let i = 0, l = json.length; i < l; i++) {\n const data = json[i];\n if (data.type === \"MultiMaterial\") {\n const array = [];\n for (let j = 0; j < data.materials.length; j++) {\n const material = data.materials[j];\n if (cache[material.uuid] === void 0) {\n cache[material.uuid] = loader.parse(material);\n }\n array.push(cache[material.uuid]);\n }\n materials[data.uuid] = array;\n } else {\n if (cache[data.uuid] === void 0) {\n cache[data.uuid] = loader.parse(data);\n }\n materials[data.uuid] = cache[data.uuid];\n }\n }\n }\n return materials;\n }\n parseAnimations(json) {\n const animations = {};\n if (json !== void 0) {\n for (let i = 0; i < json.length; i++) {\n const data = json[i];\n const clip = AnimationClip.parse(data);\n animations[clip.uuid] = clip;\n }\n }\n return animations;\n }\n parseImages(json, onLoad) {\n const scope = this;\n const images = {};\n let loader;\n function loadImage(url) {\n scope.manager.itemStart(url);\n return loader.load(url, function() {\n scope.manager.itemEnd(url);\n }, void 0, function() {\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n });\n }\n function deserializeImage(image) {\n if (typeof image === \"string\") {\n const url = image;\n const path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(url) ? url : scope.resourcePath + url;\n return loadImage(path);\n } else {\n if (image.data) {\n return {\n data: getTypedArray(image.type, image.data),\n width: image.width,\n height: image.height\n };\n } else {\n return null;\n }\n }\n }\n if (json !== void 0 && json.length > 0) {\n const manager = new LoadingManager(onLoad);\n loader = new ImageLoader(manager);\n loader.setCrossOrigin(this.crossOrigin);\n for (let i = 0, il = json.length; i < il; i++) {\n const image = json[i];\n const url = image.url;\n if (Array.isArray(url)) {\n images[image.uuid] = [];\n for (let j = 0, jl = url.length; j < jl; j++) {\n const currentUrl = url[j];\n const deserializedImage = deserializeImage(currentUrl);\n if (deserializedImage !== null) {\n if (deserializedImage instanceof HTMLImageElement) {\n images[image.uuid].push(deserializedImage);\n } else {\n images[image.uuid].push(new DataTexture(deserializedImage.data, deserializedImage.width, deserializedImage.height));\n }\n }\n }\n } else {\n const deserializedImage = deserializeImage(image.url);\n if (deserializedImage !== null) {\n images[image.uuid] = deserializedImage;\n }\n }\n }\n }\n return images;\n }\n async parseImagesAsync(json) {\n const scope = this;\n const images = {};\n let loader;\n async function deserializeImage(image) {\n if (typeof image === \"string\") {\n const url = image;\n const path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(url) ? url : scope.resourcePath + url;\n return await loader.loadAsync(path);\n } else {\n if (image.data) {\n return {\n data: getTypedArray(image.type, image.data),\n width: image.width,\n height: image.height\n };\n } else {\n return null;\n }\n }\n }\n if (json !== void 0 && json.length > 0) {\n loader = new ImageLoader(this.manager);\n loader.setCrossOrigin(this.crossOrigin);\n for (let i = 0, il = json.length; i < il; i++) {\n const image = json[i];\n const url = image.url;\n if (Array.isArray(url)) {\n images[image.uuid] = [];\n for (let j = 0, jl = url.length; j < jl; j++) {\n const currentUrl = url[j];\n const deserializedImage = await deserializeImage(currentUrl);\n if (deserializedImage !== null) {\n if (deserializedImage instanceof HTMLImageElement) {\n images[image.uuid].push(deserializedImage);\n } else {\n images[image.uuid].push(new DataTexture(deserializedImage.data, deserializedImage.width, deserializedImage.height));\n }\n }\n }\n } else {\n const deserializedImage = await deserializeImage(image.url);\n if (deserializedImage !== null) {\n images[image.uuid] = deserializedImage;\n }\n }\n }\n }\n return images;\n }\n parseTextures(json, images) {\n function parseConstant(value, type) {\n if (typeof value === \"number\")\n return value;\n console.warn(\"THREE.ObjectLoader.parseTexture: Constant should be in numeric form.\", value);\n return type[value];\n }\n const textures = {};\n if (json !== void 0) {\n for (let i = 0, l = json.length; i < l; i++) {\n const data = json[i];\n if (data.image === void 0) {\n console.warn('THREE.ObjectLoader: No \"image\" specified for', data.uuid);\n }\n if (images[data.image] === void 0) {\n console.warn(\"THREE.ObjectLoader: Undefined image\", data.image);\n }\n let texture;\n const image = images[data.image];\n if (Array.isArray(image)) {\n texture = new CubeTexture(image);\n if (image.length === 6)\n texture.needsUpdate = true;\n } else {\n if (image && image.data) {\n texture = new DataTexture(image.data, image.width, image.height);\n } else {\n texture = new Texture(image);\n }\n if (image)\n texture.needsUpdate = true;\n }\n texture.uuid = data.uuid;\n if (data.name !== void 0)\n texture.name = data.name;\n if (data.mapping !== void 0)\n texture.mapping = parseConstant(data.mapping, TEXTURE_MAPPING);\n if (data.offset !== void 0)\n texture.offset.fromArray(data.offset);\n if (data.repeat !== void 0)\n texture.repeat.fromArray(data.repeat);\n if (data.center !== void 0)\n texture.center.fromArray(data.center);\n if (data.rotation !== void 0)\n texture.rotation = data.rotation;\n if (data.wrap !== void 0) {\n texture.wrapS = parseConstant(data.wrap[0], TEXTURE_WRAPPING);\n texture.wrapT = parseConstant(data.wrap[1], TEXTURE_WRAPPING);\n }\n if (data.format !== void 0)\n texture.format = data.format;\n if (data.type !== void 0)\n texture.type = data.type;\n if (data.encoding !== void 0)\n texture.encoding = data.encoding;\n if (data.minFilter !== void 0)\n texture.minFilter = parseConstant(data.minFilter, TEXTURE_FILTER);\n if (data.magFilter !== void 0)\n texture.magFilter = parseConstant(data.magFilter, TEXTURE_FILTER);\n if (data.anisotropy !== void 0)\n texture.anisotropy = data.anisotropy;\n if (data.flipY !== void 0)\n texture.flipY = data.flipY;\n if (data.premultiplyAlpha !== void 0)\n texture.premultiplyAlpha = data.premultiplyAlpha;\n if (data.unpackAlignment !== void 0)\n texture.unpackAlignment = data.unpackAlignment;\n if (data.userData !== void 0)\n texture.userData = data.userData;\n textures[data.uuid] = texture;\n }\n }\n return textures;\n }\n parseObject(data, geometries, materials, textures, animations) {\n let object;\n function getGeometry(name) {\n if (geometries[name] === void 0) {\n console.warn(\"THREE.ObjectLoader: Undefined geometry\", name);\n }\n return geometries[name];\n }\n function getMaterial(name) {\n if (name === void 0)\n return void 0;\n if (Array.isArray(name)) {\n const array = [];\n for (let i = 0, l = name.length; i < l; i++) {\n const uuid = name[i];\n if (materials[uuid] === void 0) {\n console.warn(\"THREE.ObjectLoader: Undefined material\", uuid);\n }\n array.push(materials[uuid]);\n }\n return array;\n }\n if (materials[name] === void 0) {\n console.warn(\"THREE.ObjectLoader: Undefined material\", name);\n }\n return materials[name];\n }\n function getTexture(uuid) {\n if (textures[uuid] === void 0) {\n console.warn(\"THREE.ObjectLoader: Undefined texture\", uuid);\n }\n return textures[uuid];\n }\n let geometry, material;\n switch (data.type) {\n case \"Scene\":\n object = new Scene();\n if (data.background !== void 0) {\n if (Number.isInteger(data.background)) {\n object.background = new Color(data.background);\n } else {\n object.background = getTexture(data.background);\n }\n }\n if (data.environment !== void 0) {\n object.environment = getTexture(data.environment);\n }\n if (data.fog !== void 0) {\n if (data.fog.type === \"Fog\") {\n object.fog = new Fog(data.fog.color, data.fog.near, data.fog.far);\n } else if (data.fog.type === \"FogExp2\") {\n object.fog = new FogExp2(data.fog.color, data.fog.density);\n }\n }\n break;\n case \"PerspectiveCamera\":\n object = new PerspectiveCamera(data.fov, data.aspect, data.near, data.far);\n if (data.focus !== void 0)\n object.focus = data.focus;\n if (data.zoom !== void 0)\n object.zoom = data.zoom;\n if (data.filmGauge !== void 0)\n object.filmGauge = data.filmGauge;\n if (data.filmOffset !== void 0)\n object.filmOffset = data.filmOffset;\n if (data.view !== void 0)\n object.view = Object.assign({}, data.view);\n break;\n case \"OrthographicCamera\":\n object = new OrthographicCamera(data.left, data.right, data.top, data.bottom, data.near, data.far);\n if (data.zoom !== void 0)\n object.zoom = data.zoom;\n if (data.view !== void 0)\n object.view = Object.assign({}, data.view);\n break;\n case \"AmbientLight\":\n object = new AmbientLight(data.color, data.intensity);\n break;\n case \"DirectionalLight\":\n object = new DirectionalLight(data.color, data.intensity);\n break;\n case \"PointLight\":\n object = new PointLight(data.color, data.intensity, data.distance, data.decay);\n break;\n case \"RectAreaLight\":\n object = new RectAreaLight(data.color, data.intensity, data.width, data.height);\n break;\n case \"SpotLight\":\n object = new SpotLight(data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay);\n break;\n case \"HemisphereLight\":\n object = new HemisphereLight(data.color, data.groundColor, data.intensity);\n break;\n case \"LightProbe\":\n object = new LightProbe().fromJSON(data);\n break;\n case \"SkinnedMesh\":\n geometry = getGeometry(data.geometry);\n material = getMaterial(data.material);\n object = new SkinnedMesh(geometry, material);\n if (data.bindMode !== void 0)\n object.bindMode = data.bindMode;\n if (data.bindMatrix !== void 0)\n object.bindMatrix.fromArray(data.bindMatrix);\n if (data.skeleton !== void 0)\n object.skeleton = data.skeleton;\n break;\n case \"Mesh\":\n geometry = getGeometry(data.geometry);\n material = getMaterial(data.material);\n object = new Mesh(geometry, material);\n break;\n case \"InstancedMesh\":\n geometry = getGeometry(data.geometry);\n material = getMaterial(data.material);\n const count = data.count;\n const instanceMatrix = data.instanceMatrix;\n const instanceColor = data.instanceColor;\n object = new InstancedMesh(geometry, material, count);\n object.instanceMatrix = new InstancedBufferAttribute(new Float32Array(instanceMatrix.array), 16);\n if (instanceColor !== void 0)\n object.instanceColor = new InstancedBufferAttribute(new Float32Array(instanceColor.array), instanceColor.itemSize);\n break;\n case \"LOD\":\n object = new LOD();\n break;\n case \"Line\":\n object = new Line(getGeometry(data.geometry), getMaterial(data.material));\n break;\n case \"LineLoop\":\n object = new LineLoop(getGeometry(data.geometry), getMaterial(data.material));\n break;\n case \"LineSegments\":\n object = new LineSegments(getGeometry(data.geometry), getMaterial(data.material));\n break;\n case \"PointCloud\":\n case \"Points\":\n object = new Points(getGeometry(data.geometry), getMaterial(data.material));\n break;\n case \"Sprite\":\n object = new Sprite(getMaterial(data.material));\n break;\n case \"Group\":\n object = new Group();\n break;\n case \"Bone\":\n object = new Bone();\n break;\n default:\n object = new Object3D();\n }\n object.uuid = data.uuid;\n if (data.name !== void 0)\n object.name = data.name;\n if (data.matrix !== void 0) {\n object.matrix.fromArray(data.matrix);\n if (data.matrixAutoUpdate !== void 0)\n object.matrixAutoUpdate = data.matrixAutoUpdate;\n if (object.matrixAutoUpdate)\n object.matrix.decompose(object.position, object.quaternion, object.scale);\n } else {\n if (data.position !== void 0)\n object.position.fromArray(data.position);\n if (data.rotation !== void 0)\n object.rotation.fromArray(data.rotation);\n if (data.quaternion !== void 0)\n object.quaternion.fromArray(data.quaternion);\n if (data.scale !== void 0)\n object.scale.fromArray(data.scale);\n }\n if (data.castShadow !== void 0)\n object.castShadow = data.castShadow;\n if (data.receiveShadow !== void 0)\n object.receiveShadow = data.receiveShadow;\n if (data.shadow) {\n if (data.shadow.bias !== void 0)\n object.shadow.bias = data.shadow.bias;\n if (data.shadow.normalBias !== void 0)\n object.shadow.normalBias = data.shadow.normalBias;\n if (data.shadow.radius !== void 0)\n object.shadow.radius = data.shadow.radius;\n if (data.shadow.mapSize !== void 0)\n object.shadow.mapSize.fromArray(data.shadow.mapSize);\n if (data.shadow.camera !== void 0)\n object.shadow.camera = this.parseObject(data.shadow.camera);\n }\n if (data.visible !== void 0)\n object.visible = data.visible;\n if (data.frustumCulled !== void 0)\n object.frustumCulled = data.frustumCulled;\n if (data.renderOrder !== void 0)\n object.renderOrder = data.renderOrder;\n if (data.userData !== void 0)\n object.userData = data.userData;\n if (data.layers !== void 0)\n object.layers.mask = data.layers;\n if (data.children !== void 0) {\n const children = data.children;\n for (let i = 0; i < children.length; i++) {\n object.add(this.parseObject(children[i], geometries, materials, textures, animations));\n }\n }\n if (data.animations !== void 0) {\n const objectAnimations = data.animations;\n for (let i = 0; i < objectAnimations.length; i++) {\n const uuid = objectAnimations[i];\n object.animations.push(animations[uuid]);\n }\n }\n if (data.type === \"LOD\") {\n if (data.autoUpdate !== void 0)\n object.autoUpdate = data.autoUpdate;\n const levels = data.levels;\n for (let l = 0; l < levels.length; l++) {\n const level = levels[l];\n const child = object.getObjectByProperty(\"uuid\", level.object);\n if (child !== void 0) {\n object.addLevel(child, level.distance);\n }\n }\n }\n return object;\n }\n bindSkeletons(object, skeletons) {\n if (Object.keys(skeletons).length === 0)\n return;\n object.traverse(function(child) {\n if (child.isSkinnedMesh === true && child.skeleton !== void 0) {\n const skeleton = skeletons[child.skeleton];\n if (skeleton === void 0) {\n console.warn(\"THREE.ObjectLoader: No skeleton found with UUID:\", child.skeleton);\n } else {\n child.bind(skeleton, child.bindMatrix);\n }\n }\n });\n }\n setTexturePath(value) {\n console.warn(\"THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().\");\n return this.setResourcePath(value);\n }\n}\nconst TEXTURE_MAPPING = {\n UVMapping,\n CubeReflectionMapping,\n CubeRefractionMapping,\n EquirectangularReflectionMapping,\n EquirectangularRefractionMapping,\n CubeUVReflectionMapping,\n CubeUVRefractionMapping\n};\nconst TEXTURE_WRAPPING = {\n RepeatWrapping,\n ClampToEdgeWrapping,\n MirroredRepeatWrapping\n};\nconst TEXTURE_FILTER = {\n NearestFilter,\n NearestMipmapNearestFilter,\n NearestMipmapLinearFilter,\n LinearFilter,\n LinearMipmapNearestFilter,\n LinearMipmapLinearFilter\n};\nclass ImageBitmapLoader extends Loader {\n constructor(manager) {\n super(manager);\n if (typeof createImageBitmap === \"undefined\") {\n console.warn(\"THREE.ImageBitmapLoader: createImageBitmap() not supported.\");\n }\n if (typeof fetch === \"undefined\") {\n console.warn(\"THREE.ImageBitmapLoader: fetch() not supported.\");\n }\n this.options = {premultiplyAlpha: \"none\"};\n }\n setOptions(options) {\n this.options = options;\n return this;\n }\n load(url, onLoad, onProgress, onError) {\n if (url === void 0)\n url = \"\";\n if (this.path !== void 0)\n url = this.path + url;\n url = this.manager.resolveURL(url);\n const scope = this;\n const cached = Cache.get(url);\n if (cached !== void 0) {\n scope.manager.itemStart(url);\n setTimeout(function() {\n if (onLoad)\n onLoad(cached);\n scope.manager.itemEnd(url);\n }, 0);\n return cached;\n }\n const fetchOptions = {};\n fetchOptions.credentials = this.crossOrigin === \"anonymous\" ? \"same-origin\" : \"include\";\n fetchOptions.headers = this.requestHeader;\n fetch(url, fetchOptions).then(function(res) {\n return res.blob();\n }).then(function(blob) {\n return createImageBitmap(blob, Object.assign(scope.options, {colorSpaceConversion: \"none\"}));\n }).then(function(imageBitmap) {\n Cache.add(url, imageBitmap);\n if (onLoad)\n onLoad(imageBitmap);\n scope.manager.itemEnd(url);\n }).catch(function(e) {\n if (onError)\n onError(e);\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n });\n scope.manager.itemStart(url);\n }\n}\nImageBitmapLoader.prototype.isImageBitmapLoader = true;\nlet _context;\nconst AudioContext = {\n getContext: function() {\n if (_context === void 0) {\n _context = new (window.AudioContext || window.webkitAudioContext)();\n }\n return _context;\n },\n setContext: function(value) {\n _context = value;\n }\n};\nclass AudioLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const loader = new FileLoader(this.manager);\n loader.setResponseType(\"arraybuffer\");\n loader.setPath(this.path);\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\n loader.load(url, function(buffer) {\n try {\n const bufferCopy = buffer.slice(0);\n const context = AudioContext.getContext();\n context.decodeAudioData(bufferCopy, function(audioBuffer) {\n onLoad(audioBuffer);\n });\n } catch (e) {\n if (onError) {\n onError(e);\n } else {\n console.error(e);\n }\n scope.manager.itemError(url);\n }\n }, onProgress, onError);\n }\n}\nclass HemisphereLightProbe extends LightProbe {\n constructor(skyColor, groundColor, intensity = 1) {\n super(void 0, intensity);\n const color1 = new Color().set(skyColor);\n const color2 = new Color().set(groundColor);\n const sky = new Vector3(color1.r, color1.g, color1.b);\n const ground = new Vector3(color2.r, color2.g, color2.b);\n const c0 = Math.sqrt(Math.PI);\n const c1 = c0 * Math.sqrt(0.75);\n this.sh.coefficients[0].copy(sky).add(ground).multiplyScalar(c0);\n this.sh.coefficients[1].copy(sky).sub(ground).multiplyScalar(c1);\n }\n}\nHemisphereLightProbe.prototype.isHemisphereLightProbe = true;\nclass AmbientLightProbe extends LightProbe {\n constructor(color, intensity = 1) {\n super(void 0, intensity);\n const color1 = new Color().set(color);\n this.sh.coefficients[0].set(color1.r, color1.g, color1.b).multiplyScalar(2 * Math.sqrt(Math.PI));\n }\n}\nAmbientLightProbe.prototype.isAmbientLightProbe = true;\nconst _eyeRight = /* @__PURE__ */ new Matrix4();\nconst _eyeLeft = /* @__PURE__ */ new Matrix4();\nconst _projectionMatrix = /* @__PURE__ */ new Matrix4();\nclass StereoCamera {\n constructor() {\n this.type = \"StereoCamera\";\n this.aspect = 1;\n this.eyeSep = 0.064;\n this.cameraL = new PerspectiveCamera();\n this.cameraL.layers.enable(1);\n this.cameraL.matrixAutoUpdate = false;\n this.cameraR = new PerspectiveCamera();\n this.cameraR.layers.enable(2);\n this.cameraR.matrixAutoUpdate = false;\n this._cache = {\n focus: null,\n fov: null,\n aspect: null,\n near: null,\n far: null,\n zoom: null,\n eyeSep: null\n };\n }\n update(camera) {\n const cache = this._cache;\n const needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov || cache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near || cache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n if (needsUpdate) {\n cache.focus = camera.focus;\n cache.fov = camera.fov;\n cache.aspect = camera.aspect * this.aspect;\n cache.near = camera.near;\n cache.far = camera.far;\n cache.zoom = camera.zoom;\n cache.eyeSep = this.eyeSep;\n _projectionMatrix.copy(camera.projectionMatrix);\n const eyeSepHalf = cache.eyeSep / 2;\n const eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n const ymax = cache.near * Math.tan(DEG2RAD * cache.fov * 0.5) / cache.zoom;\n let xmin, xmax;\n _eyeLeft.elements[12] = -eyeSepHalf;\n _eyeRight.elements[12] = eyeSepHalf;\n xmin = -ymax * cache.aspect + eyeSepOnProjection;\n xmax = ymax * cache.aspect + eyeSepOnProjection;\n _projectionMatrix.elements[0] = 2 * cache.near / (xmax - xmin);\n _projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin);\n this.cameraL.projectionMatrix.copy(_projectionMatrix);\n xmin = -ymax * cache.aspect - eyeSepOnProjection;\n xmax = ymax * cache.aspect - eyeSepOnProjection;\n _projectionMatrix.elements[0] = 2 * cache.near / (xmax - xmin);\n _projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin);\n this.cameraR.projectionMatrix.copy(_projectionMatrix);\n }\n this.cameraL.matrixWorld.copy(camera.matrixWorld).multiply(_eyeLeft);\n this.cameraR.matrixWorld.copy(camera.matrixWorld).multiply(_eyeRight);\n }\n}\nclass Clock {\n constructor(autoStart = true) {\n this.autoStart = autoStart;\n this.startTime = 0;\n this.oldTime = 0;\n this.elapsedTime = 0;\n this.running = false;\n }\n start() {\n this.startTime = now();\n this.oldTime = this.startTime;\n this.elapsedTime = 0;\n this.running = true;\n }\n stop() {\n this.getElapsedTime();\n this.running = false;\n this.autoStart = false;\n }\n getElapsedTime() {\n this.getDelta();\n return this.elapsedTime;\n }\n getDelta() {\n let diff = 0;\n if (this.autoStart && !this.running) {\n this.start();\n return 0;\n }\n if (this.running) {\n const newTime = now();\n diff = (newTime - this.oldTime) / 1e3;\n this.oldTime = newTime;\n this.elapsedTime += diff;\n }\n return diff;\n }\n}\nfunction now() {\n return (typeof performance === \"undefined\" ? Date : performance).now();\n}\nconst _position$1 = /* @__PURE__ */ new Vector3();\nconst _quaternion$1 = /* @__PURE__ */ new Quaternion();\nconst _scale$1 = /* @__PURE__ */ new Vector3();\nconst _orientation$1 = /* @__PURE__ */ new Vector3();\nclass AudioListener extends Object3D {\n constructor() {\n super();\n this.type = \"AudioListener\";\n this.context = AudioContext.getContext();\n this.gain = this.context.createGain();\n this.gain.connect(this.context.destination);\n this.filter = null;\n this.timeDelta = 0;\n this._clock = new Clock();\n }\n getInput() {\n return this.gain;\n }\n removeFilter() {\n if (this.filter !== null) {\n this.gain.disconnect(this.filter);\n this.filter.disconnect(this.context.destination);\n this.gain.connect(this.context.destination);\n this.filter = null;\n }\n return this;\n }\n getFilter() {\n return this.filter;\n }\n setFilter(value) {\n if (this.filter !== null) {\n this.gain.disconnect(this.filter);\n this.filter.disconnect(this.context.destination);\n } else {\n this.gain.disconnect(this.context.destination);\n }\n this.filter = value;\n this.gain.connect(this.filter);\n this.filter.connect(this.context.destination);\n return this;\n }\n getMasterVolume() {\n return this.gain.gain.value;\n }\n setMasterVolume(value) {\n this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01);\n return this;\n }\n updateMatrixWorld(force) {\n super.updateMatrixWorld(force);\n const listener = this.context.listener;\n const up = this.up;\n this.timeDelta = this._clock.getDelta();\n this.matrixWorld.decompose(_position$1, _quaternion$1, _scale$1);\n _orientation$1.set(0, 0, -1).applyQuaternion(_quaternion$1);\n if (listener.positionX) {\n const endTime = this.context.currentTime + this.timeDelta;\n listener.positionX.linearRampToValueAtTime(_position$1.x, endTime);\n listener.positionY.linearRampToValueAtTime(_position$1.y, endTime);\n listener.positionZ.linearRampToValueAtTime(_position$1.z, endTime);\n listener.forwardX.linearRampToValueAtTime(_orientation$1.x, endTime);\n listener.forwardY.linearRampToValueAtTime(_orientation$1.y, endTime);\n listener.forwardZ.linearRampToValueAtTime(_orientation$1.z, endTime);\n listener.upX.linearRampToValueAtTime(up.x, endTime);\n listener.upY.linearRampToValueAtTime(up.y, endTime);\n listener.upZ.linearRampToValueAtTime(up.z, endTime);\n } else {\n listener.setPosition(_position$1.x, _position$1.y, _position$1.z);\n listener.setOrientation(_orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z);\n }\n }\n}\nclass Audio extends Object3D {\n constructor(listener) {\n super();\n this.type = \"Audio\";\n this.listener = listener;\n this.context = listener.context;\n this.gain = this.context.createGain();\n this.gain.connect(listener.getInput());\n this.autoplay = false;\n this.buffer = null;\n this.detune = 0;\n this.loop = false;\n this.loopStart = 0;\n this.loopEnd = 0;\n this.offset = 0;\n this.duration = void 0;\n this.playbackRate = 1;\n this.isPlaying = false;\n this.hasPlaybackControl = true;\n this.source = null;\n this.sourceType = \"empty\";\n this._startedAt = 0;\n this._progress = 0;\n this._connected = false;\n this.filters = [];\n }\n getOutput() {\n return this.gain;\n }\n setNodeSource(audioNode) {\n this.hasPlaybackControl = false;\n this.sourceType = \"audioNode\";\n this.source = audioNode;\n this.connect();\n return this;\n }\n setMediaElementSource(mediaElement) {\n this.hasPlaybackControl = false;\n this.sourceType = \"mediaNode\";\n this.source = this.context.createMediaElementSource(mediaElement);\n this.connect();\n return this;\n }\n setMediaStreamSource(mediaStream) {\n this.hasPlaybackControl = false;\n this.sourceType = \"mediaStreamNode\";\n this.source = this.context.createMediaStreamSource(mediaStream);\n this.connect();\n return this;\n }\n setBuffer(audioBuffer) {\n this.buffer = audioBuffer;\n this.sourceType = \"buffer\";\n if (this.autoplay)\n this.play();\n return this;\n }\n play(delay = 0) {\n if (this.isPlaying === true) {\n console.warn(\"THREE.Audio: Audio is already playing.\");\n return;\n }\n if (this.hasPlaybackControl === false) {\n console.warn(\"THREE.Audio: this Audio has no playback control.\");\n return;\n }\n this._startedAt = this.context.currentTime + delay;\n const source = this.context.createBufferSource();\n source.buffer = this.buffer;\n source.loop = this.loop;\n source.loopStart = this.loopStart;\n source.loopEnd = this.loopEnd;\n source.onended = this.onEnded.bind(this);\n source.start(this._startedAt, this._progress + this.offset, this.duration);\n this.isPlaying = true;\n this.source = source;\n this.setDetune(this.detune);\n this.setPlaybackRate(this.playbackRate);\n return this.connect();\n }\n pause() {\n if (this.hasPlaybackControl === false) {\n console.warn(\"THREE.Audio: this Audio has no playback control.\");\n return;\n }\n if (this.isPlaying === true) {\n this._progress += Math.max(this.context.currentTime - this._startedAt, 0) * this.playbackRate;\n if (this.loop === true) {\n this._progress = this._progress % (this.duration || this.buffer.duration);\n }\n this.source.stop();\n this.source.onended = null;\n this.isPlaying = false;\n }\n return this;\n }\n stop() {\n if (this.hasPlaybackControl === false) {\n console.warn(\"THREE.Audio: this Audio has no playback control.\");\n return;\n }\n this._progress = 0;\n this.source.stop();\n this.source.onended = null;\n this.isPlaying = false;\n return this;\n }\n connect() {\n if (this.filters.length > 0) {\n this.source.connect(this.filters[0]);\n for (let i = 1, l = this.filters.length; i < l; i++) {\n this.filters[i - 1].connect(this.filters[i]);\n }\n this.filters[this.filters.length - 1].connect(this.getOutput());\n } else {\n this.source.connect(this.getOutput());\n }\n this._connected = true;\n return this;\n }\n disconnect() {\n if (this.filters.length > 0) {\n this.source.disconnect(this.filters[0]);\n for (let i = 1, l = this.filters.length; i < l; i++) {\n this.filters[i - 1].disconnect(this.filters[i]);\n }\n this.filters[this.filters.length - 1].disconnect(this.getOutput());\n } else {\n this.source.disconnect(this.getOutput());\n }\n this._connected = false;\n return this;\n }\n getFilters() {\n return this.filters;\n }\n setFilters(value) {\n if (!value)\n value = [];\n if (this._connected === true) {\n this.disconnect();\n this.filters = value.slice();\n this.connect();\n } else {\n this.filters = value.slice();\n }\n return this;\n }\n setDetune(value) {\n this.detune = value;\n if (this.source.detune === void 0)\n return;\n if (this.isPlaying === true) {\n this.source.detune.setTargetAtTime(this.detune, this.context.currentTime, 0.01);\n }\n return this;\n }\n getDetune() {\n return this.detune;\n }\n getFilter() {\n return this.getFilters()[0];\n }\n setFilter(filter) {\n return this.setFilters(filter ? [filter] : []);\n }\n setPlaybackRate(value) {\n if (this.hasPlaybackControl === false) {\n console.warn(\"THREE.Audio: this Audio has no playback control.\");\n return;\n }\n this.playbackRate = value;\n if (this.isPlaying === true) {\n this.source.playbackRate.setTargetAtTime(this.playbackRate, this.context.currentTime, 0.01);\n }\n return this;\n }\n getPlaybackRate() {\n return this.playbackRate;\n }\n onEnded() {\n this.isPlaying = false;\n }\n getLoop() {\n if (this.hasPlaybackControl === false) {\n console.warn(\"THREE.Audio: this Audio has no playback control.\");\n return false;\n }\n return this.loop;\n }\n setLoop(value) {\n if (this.hasPlaybackControl === false) {\n console.warn(\"THREE.Audio: this Audio has no playback control.\");\n return;\n }\n this.loop = value;\n if (this.isPlaying === true) {\n this.source.loop = this.loop;\n }\n return this;\n }\n setLoopStart(value) {\n this.loopStart = value;\n return this;\n }\n setLoopEnd(value) {\n this.loopEnd = value;\n return this;\n }\n getVolume() {\n return this.gain.gain.value;\n }\n setVolume(value) {\n this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01);\n return this;\n }\n}\nconst _position = /* @__PURE__ */ new Vector3();\nconst _quaternion = /* @__PURE__ */ new Quaternion();\nconst _scale = /* @__PURE__ */ new Vector3();\nconst _orientation = /* @__PURE__ */ new Vector3();\nclass PositionalAudio extends Audio {\n constructor(listener) {\n super(listener);\n this.panner = this.context.createPanner();\n this.panner.panningModel = \"HRTF\";\n this.panner.connect(this.gain);\n }\n getOutput() {\n return this.panner;\n }\n getRefDistance() {\n return this.panner.refDistance;\n }\n setRefDistance(value) {\n this.panner.refDistance = value;\n return this;\n }\n getRolloffFactor() {\n return this.panner.rolloffFactor;\n }\n setRolloffFactor(value) {\n this.panner.rolloffFactor = value;\n return this;\n }\n getDistanceModel() {\n return this.panner.distanceModel;\n }\n setDistanceModel(value) {\n this.panner.distanceModel = value;\n return this;\n }\n getMaxDistance() {\n return this.panner.maxDistance;\n }\n setMaxDistance(value) {\n this.panner.maxDistance = value;\n return this;\n }\n setDirectionalCone(coneInnerAngle, coneOuterAngle, coneOuterGain) {\n this.panner.coneInnerAngle = coneInnerAngle;\n this.panner.coneOuterAngle = coneOuterAngle;\n this.panner.coneOuterGain = coneOuterGain;\n return this;\n }\n updateMatrixWorld(force) {\n super.updateMatrixWorld(force);\n if (this.hasPlaybackControl === true && this.isPlaying === false)\n return;\n this.matrixWorld.decompose(_position, _quaternion, _scale);\n _orientation.set(0, 0, 1).applyQuaternion(_quaternion);\n const panner = this.panner;\n if (panner.positionX) {\n const endTime = this.context.currentTime + this.listener.timeDelta;\n panner.positionX.linearRampToValueAtTime(_position.x, endTime);\n panner.positionY.linearRampToValueAtTime(_position.y, endTime);\n panner.positionZ.linearRampToValueAtTime(_position.z, endTime);\n panner.orientationX.linearRampToValueAtTime(_orientation.x, endTime);\n panner.orientationY.linearRampToValueAtTime(_orientation.y, endTime);\n panner.orientationZ.linearRampToValueAtTime(_orientation.z, endTime);\n } else {\n panner.setPosition(_position.x, _position.y, _position.z);\n panner.setOrientation(_orientation.x, _orientation.y, _orientation.z);\n }\n }\n}\nclass AudioAnalyser {\n constructor(audio, fftSize = 2048) {\n this.analyser = audio.context.createAnalyser();\n this.analyser.fftSize = fftSize;\n this.data = new Uint8Array(this.analyser.frequencyBinCount);\n audio.getOutput().connect(this.analyser);\n }\n getFrequencyData() {\n this.analyser.getByteFrequencyData(this.data);\n return this.data;\n }\n getAverageFrequency() {\n let value = 0;\n const data = this.getFrequencyData();\n for (let i = 0; i < data.length; i++) {\n value += data[i];\n }\n return value / data.length;\n }\n}\nclass PropertyMixer {\n constructor(binding, typeName, valueSize) {\n this.binding = binding;\n this.valueSize = valueSize;\n let mixFunction, mixFunctionAdditive, setIdentity;\n switch (typeName) {\n case \"quaternion\":\n mixFunction = this._slerp;\n mixFunctionAdditive = this._slerpAdditive;\n setIdentity = this._setAdditiveIdentityQuaternion;\n this.buffer = new Float64Array(valueSize * 6);\n this._workIndex = 5;\n break;\n case \"string\":\n case \"bool\":\n mixFunction = this._select;\n mixFunctionAdditive = this._select;\n setIdentity = this._setAdditiveIdentityOther;\n this.buffer = new Array(valueSize * 5);\n break;\n default:\n mixFunction = this._lerp;\n mixFunctionAdditive = this._lerpAdditive;\n setIdentity = this._setAdditiveIdentityNumeric;\n this.buffer = new Float64Array(valueSize * 5);\n }\n this._mixBufferRegion = mixFunction;\n this._mixBufferRegionAdditive = mixFunctionAdditive;\n this._setIdentity = setIdentity;\n this._origIndex = 3;\n this._addIndex = 4;\n this.cumulativeWeight = 0;\n this.cumulativeWeightAdditive = 0;\n this.useCount = 0;\n this.referenceCount = 0;\n }\n accumulate(accuIndex, weight) {\n const buffer = this.buffer, stride = this.valueSize, offset = accuIndex * stride + stride;\n let currentWeight = this.cumulativeWeight;\n if (currentWeight === 0) {\n for (let i = 0; i !== stride; ++i) {\n buffer[offset + i] = buffer[i];\n }\n currentWeight = weight;\n } else {\n currentWeight += weight;\n const mix = weight / currentWeight;\n this._mixBufferRegion(buffer, offset, 0, mix, stride);\n }\n this.cumulativeWeight = currentWeight;\n }\n accumulateAdditive(weight) {\n const buffer = this.buffer, stride = this.valueSize, offset = stride * this._addIndex;\n if (this.cumulativeWeightAdditive === 0) {\n this._setIdentity();\n }\n this._mixBufferRegionAdditive(buffer, offset, 0, weight, stride);\n this.cumulativeWeightAdditive += weight;\n }\n apply(accuIndex) {\n const stride = this.valueSize, buffer = this.buffer, offset = accuIndex * stride + stride, weight = this.cumulativeWeight, weightAdditive = this.cumulativeWeightAdditive, binding = this.binding;\n this.cumulativeWeight = 0;\n this.cumulativeWeightAdditive = 0;\n if (weight < 1) {\n const originalValueOffset = stride * this._origIndex;\n this._mixBufferRegion(buffer, offset, originalValueOffset, 1 - weight, stride);\n }\n if (weightAdditive > 0) {\n this._mixBufferRegionAdditive(buffer, offset, this._addIndex * stride, 1, stride);\n }\n for (let i = stride, e = stride + stride; i !== e; ++i) {\n if (buffer[i] !== buffer[i + stride]) {\n binding.setValue(buffer, offset);\n break;\n }\n }\n }\n saveOriginalState() {\n const binding = this.binding;\n const buffer = this.buffer, stride = this.valueSize, originalValueOffset = stride * this._origIndex;\n binding.getValue(buffer, originalValueOffset);\n for (let i = stride, e = originalValueOffset; i !== e; ++i) {\n buffer[i] = buffer[originalValueOffset + i % stride];\n }\n this._setIdentity();\n this.cumulativeWeight = 0;\n this.cumulativeWeightAdditive = 0;\n }\n restoreOriginalState() {\n const originalValueOffset = this.valueSize * 3;\n this.binding.setValue(this.buffer, originalValueOffset);\n }\n _setAdditiveIdentityNumeric() {\n const startIndex = this._addIndex * this.valueSize;\n const endIndex = startIndex + this.valueSize;\n for (let i = startIndex; i < endIndex; i++) {\n this.buffer[i] = 0;\n }\n }\n _setAdditiveIdentityQuaternion() {\n this._setAdditiveIdentityNumeric();\n this.buffer[this._addIndex * this.valueSize + 3] = 1;\n }\n _setAdditiveIdentityOther() {\n const startIndex = this._origIndex * this.valueSize;\n const targetIndex = this._addIndex * this.valueSize;\n for (let i = 0; i < this.valueSize; i++) {\n this.buffer[targetIndex + i] = this.buffer[startIndex + i];\n }\n }\n _select(buffer, dstOffset, srcOffset, t, stride) {\n if (t >= 0.5) {\n for (let i = 0; i !== stride; ++i) {\n buffer[dstOffset + i] = buffer[srcOffset + i];\n }\n }\n }\n _slerp(buffer, dstOffset, srcOffset, t) {\n Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t);\n }\n _slerpAdditive(buffer, dstOffset, srcOffset, t, stride) {\n const workOffset = this._workIndex * stride;\n Quaternion.multiplyQuaternionsFlat(buffer, workOffset, buffer, dstOffset, buffer, srcOffset);\n Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t);\n }\n _lerp(buffer, dstOffset, srcOffset, t, stride) {\n const s = 1 - t;\n for (let i = 0; i !== stride; ++i) {\n const j = dstOffset + i;\n buffer[j] = buffer[j] * s + buffer[srcOffset + i] * t;\n }\n }\n _lerpAdditive(buffer, dstOffset, srcOffset, t, stride) {\n for (let i = 0; i !== stride; ++i) {\n const j = dstOffset + i;\n buffer[j] = buffer[j] + buffer[srcOffset + i] * t;\n }\n }\n}\nconst _RESERVED_CHARS_RE = \"\\\\[\\\\]\\\\.:\\\\/\";\nconst _reservedRe = new RegExp(\"[\" + _RESERVED_CHARS_RE + \"]\", \"g\");\nconst _wordChar = \"[^\" + _RESERVED_CHARS_RE + \"]\";\nconst _wordCharOrDot = \"[^\" + _RESERVED_CHARS_RE.replace(\"\\\\.\", \"\") + \"]\";\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace(\"WC\", _wordChar);\nconst _nodeRe = /(WCOD+)?/.source.replace(\"WCOD\", _wordCharOrDot);\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace(\"WC\", _wordChar);\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace(\"WC\", _wordChar);\nconst _trackRe = new RegExp(\"^\" + _directoryRe + _nodeRe + _objectRe + _propertyRe + \"$\");\nconst _supportedObjectNames = [\"material\", \"materials\", \"bones\"];\nclass Composite {\n constructor(targetGroup, path, optionalParsedPath) {\n const parsedPath = optionalParsedPath || PropertyBinding.parseTrackName(path);\n this._targetGroup = targetGroup;\n this._bindings = targetGroup.subscribe_(path, parsedPath);\n }\n getValue(array, offset) {\n this.bind();\n const firstValidIndex = this._targetGroup.nCachedObjects_, binding = this._bindings[firstValidIndex];\n if (binding !== void 0)\n binding.getValue(array, offset);\n }\n setValue(array, offset) {\n const bindings = this._bindings;\n for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n bindings[i].setValue(array, offset);\n }\n }\n bind() {\n const bindings = this._bindings;\n for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n bindings[i].bind();\n }\n }\n unbind() {\n const bindings = this._bindings;\n for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n bindings[i].unbind();\n }\n }\n}\nclass PropertyBinding {\n constructor(rootNode, path, parsedPath) {\n this.path = path;\n this.parsedPath = parsedPath || PropertyBinding.parseTrackName(path);\n this.node = PropertyBinding.findNode(rootNode, this.parsedPath.nodeName) || rootNode;\n this.rootNode = rootNode;\n this.getValue = this._getValue_unbound;\n this.setValue = this._setValue_unbound;\n }\n static create(root, path, parsedPath) {\n if (!(root && root.isAnimationObjectGroup)) {\n return new PropertyBinding(root, path, parsedPath);\n } else {\n return new PropertyBinding.Composite(root, path, parsedPath);\n }\n }\n static sanitizeNodeName(name) {\n return name.replace(/\\s/g, \"_\").replace(_reservedRe, \"\");\n }\n static parseTrackName(trackName) {\n const matches = _trackRe.exec(trackName);\n if (!matches) {\n throw new Error(\"PropertyBinding: Cannot parse trackName: \" + trackName);\n }\n const results = {\n nodeName: matches[2],\n objectName: matches[3],\n objectIndex: matches[4],\n propertyName: matches[5],\n propertyIndex: matches[6]\n };\n const lastDot = results.nodeName && results.nodeName.lastIndexOf(\".\");\n if (lastDot !== void 0 && lastDot !== -1) {\n const objectName = results.nodeName.substring(lastDot + 1);\n if (_supportedObjectNames.indexOf(objectName) !== -1) {\n results.nodeName = results.nodeName.substring(0, lastDot);\n results.objectName = objectName;\n }\n }\n if (results.propertyName === null || results.propertyName.length === 0) {\n throw new Error(\"PropertyBinding: can not parse propertyName from trackName: \" + trackName);\n }\n return results;\n }\n static findNode(root, nodeName) {\n if (!nodeName || nodeName === \"\" || nodeName === \".\" || nodeName === -1 || nodeName === root.name || nodeName === root.uuid) {\n return root;\n }\n if (root.skeleton) {\n const bone = root.skeleton.getBoneByName(nodeName);\n if (bone !== void 0) {\n return bone;\n }\n }\n if (root.children) {\n const searchNodeSubtree = function(children) {\n for (let i = 0; i < children.length; i++) {\n const childNode = children[i];\n if (childNode.name === nodeName || childNode.uuid === nodeName) {\n return childNode;\n }\n const result = searchNodeSubtree(childNode.children);\n if (result)\n return result;\n }\n return null;\n };\n const subTreeNode = searchNodeSubtree(root.children);\n if (subTreeNode) {\n return subTreeNode;\n }\n }\n return null;\n }\n _getValue_unavailable() {\n }\n _setValue_unavailable() {\n }\n _getValue_direct(buffer, offset) {\n buffer[offset] = this.targetObject[this.propertyName];\n }\n _getValue_array(buffer, offset) {\n const source = this.resolvedProperty;\n for (let i = 0, n = source.length; i !== n; ++i) {\n buffer[offset++] = source[i];\n }\n }\n _getValue_arrayElement(buffer, offset) {\n buffer[offset] = this.resolvedProperty[this.propertyIndex];\n }\n _getValue_toArray(buffer, offset) {\n this.resolvedProperty.toArray(buffer, offset);\n }\n _setValue_direct(buffer, offset) {\n this.targetObject[this.propertyName] = buffer[offset];\n }\n _setValue_direct_setNeedsUpdate(buffer, offset) {\n this.targetObject[this.propertyName] = buffer[offset];\n this.targetObject.needsUpdate = true;\n }\n _setValue_direct_setMatrixWorldNeedsUpdate(buffer, offset) {\n this.targetObject[this.propertyName] = buffer[offset];\n this.targetObject.matrixWorldNeedsUpdate = true;\n }\n _setValue_array(buffer, offset) {\n const dest = this.resolvedProperty;\n for (let i = 0, n = dest.length; i !== n; ++i) {\n dest[i] = buffer[offset++];\n }\n }\n _setValue_array_setNeedsUpdate(buffer, offset) {\n const dest = this.resolvedProperty;\n for (let i = 0, n = dest.length; i !== n; ++i) {\n dest[i] = buffer[offset++];\n }\n this.targetObject.needsUpdate = true;\n }\n _setValue_array_setMatrixWorldNeedsUpdate(buffer, offset) {\n const dest = this.resolvedProperty;\n for (let i = 0, n = dest.length; i !== n; ++i) {\n dest[i] = buffer[offset++];\n }\n this.targetObject.matrixWorldNeedsUpdate = true;\n }\n _setValue_arrayElement(buffer, offset) {\n this.resolvedProperty[this.propertyIndex] = buffer[offset];\n }\n _setValue_arrayElement_setNeedsUpdate(buffer, offset) {\n this.resolvedProperty[this.propertyIndex] = buffer[offset];\n this.targetObject.needsUpdate = true;\n }\n _setValue_arrayElement_setMatrixWorldNeedsUpdate(buffer, offset) {\n this.resolvedProperty[this.propertyIndex] = buffer[offset];\n this.targetObject.matrixWorldNeedsUpdate = true;\n }\n _setValue_fromArray(buffer, offset) {\n this.resolvedProperty.fromArray(buffer, offset);\n }\n _setValue_fromArray_setNeedsUpdate(buffer, offset) {\n this.resolvedProperty.fromArray(buffer, offset);\n this.targetObject.needsUpdate = true;\n }\n _setValue_fromArray_setMatrixWorldNeedsUpdate(buffer, offset) {\n this.resolvedProperty.fromArray(buffer, offset);\n this.targetObject.matrixWorldNeedsUpdate = true;\n }\n _getValue_unbound(targetArray, offset) {\n this.bind();\n this.getValue(targetArray, offset);\n }\n _setValue_unbound(sourceArray, offset) {\n this.bind();\n this.setValue(sourceArray, offset);\n }\n bind() {\n let targetObject = this.node;\n const parsedPath = this.parsedPath;\n const objectName = parsedPath.objectName;\n const propertyName = parsedPath.propertyName;\n let propertyIndex = parsedPath.propertyIndex;\n if (!targetObject) {\n targetObject = PropertyBinding.findNode(this.rootNode, parsedPath.nodeName) || this.rootNode;\n this.node = targetObject;\n }\n this.getValue = this._getValue_unavailable;\n this.setValue = this._setValue_unavailable;\n if (!targetObject) {\n console.error(\"THREE.PropertyBinding: Trying to update node for track: \" + this.path + \" but it wasn't found.\");\n return;\n }\n if (objectName) {\n let objectIndex = parsedPath.objectIndex;\n switch (objectName) {\n case \"materials\":\n if (!targetObject.material) {\n console.error(\"THREE.PropertyBinding: Can not bind to material as node does not have a material.\", this);\n return;\n }\n if (!targetObject.material.materials) {\n console.error(\"THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.\", this);\n return;\n }\n targetObject = targetObject.material.materials;\n break;\n case \"bones\":\n if (!targetObject.skeleton) {\n console.error(\"THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.\", this);\n return;\n }\n targetObject = targetObject.skeleton.bones;\n for (let i = 0; i < targetObject.length; i++) {\n if (targetObject[i].name === objectIndex) {\n objectIndex = i;\n break;\n }\n }\n break;\n default:\n if (targetObject[objectName] === void 0) {\n console.error(\"THREE.PropertyBinding: Can not bind to objectName of node undefined.\", this);\n return;\n }\n targetObject = targetObject[objectName];\n }\n if (objectIndex !== void 0) {\n if (targetObject[objectIndex] === void 0) {\n console.error(\"THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.\", this, targetObject);\n return;\n }\n targetObject = targetObject[objectIndex];\n }\n }\n const nodeProperty = targetObject[propertyName];\n if (nodeProperty === void 0) {\n const nodeName = parsedPath.nodeName;\n console.error(\"THREE.PropertyBinding: Trying to update property for track: \" + nodeName + \".\" + propertyName + \" but it wasn't found.\", targetObject);\n return;\n }\n let versioning = this.Versioning.None;\n this.targetObject = targetObject;\n if (targetObject.needsUpdate !== void 0) {\n versioning = this.Versioning.NeedsUpdate;\n } else if (targetObject.matrixWorldNeedsUpdate !== void 0) {\n versioning = this.Versioning.MatrixWorldNeedsUpdate;\n }\n let bindingType = this.BindingType.Direct;\n if (propertyIndex !== void 0) {\n if (propertyName === \"morphTargetInfluences\") {\n if (!targetObject.geometry) {\n console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.\", this);\n return;\n }\n if (targetObject.geometry.isBufferGeometry) {\n if (!targetObject.geometry.morphAttributes) {\n console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.\", this);\n return;\n }\n if (targetObject.morphTargetDictionary[propertyIndex] !== void 0) {\n propertyIndex = targetObject.morphTargetDictionary[propertyIndex];\n }\n } else {\n console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.\", this);\n return;\n }\n }\n bindingType = this.BindingType.ArrayElement;\n this.resolvedProperty = nodeProperty;\n this.propertyIndex = propertyIndex;\n } else if (nodeProperty.fromArray !== void 0 && nodeProperty.toArray !== void 0) {\n bindingType = this.BindingType.HasFromToArray;\n this.resolvedProperty = nodeProperty;\n } else if (Array.isArray(nodeProperty)) {\n bindingType = this.BindingType.EntireArray;\n this.resolvedProperty = nodeProperty;\n } else {\n this.propertyName = propertyName;\n }\n this.getValue = this.GetterByBindingType[bindingType];\n this.setValue = this.SetterByBindingTypeAndVersioning[bindingType][versioning];\n }\n unbind() {\n this.node = null;\n this.getValue = this._getValue_unbound;\n this.setValue = this._setValue_unbound;\n }\n}\nPropertyBinding.Composite = Composite;\nPropertyBinding.prototype.BindingType = {\n Direct: 0,\n EntireArray: 1,\n ArrayElement: 2,\n HasFromToArray: 3\n};\nPropertyBinding.prototype.Versioning = {\n None: 0,\n NeedsUpdate: 1,\n MatrixWorldNeedsUpdate: 2\n};\nPropertyBinding.prototype.GetterByBindingType = [\n PropertyBinding.prototype._getValue_direct,\n PropertyBinding.prototype._getValue_array,\n PropertyBinding.prototype._getValue_arrayElement,\n PropertyBinding.prototype._getValue_toArray\n];\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n [\n PropertyBinding.prototype._setValue_direct,\n PropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n PropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate\n ],\n [\n PropertyBinding.prototype._setValue_array,\n PropertyBinding.prototype._setValue_array_setNeedsUpdate,\n PropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate\n ],\n [\n PropertyBinding.prototype._setValue_arrayElement,\n PropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n PropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate\n ],\n [\n PropertyBinding.prototype._setValue_fromArray,\n PropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n PropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate\n ]\n];\nclass AnimationObjectGroup {\n constructor() {\n this.uuid = generateUUID();\n this._objects = Array.prototype.slice.call(arguments);\n this.nCachedObjects_ = 0;\n const indices = {};\n this._indicesByUUID = indices;\n for (let i = 0, n = arguments.length; i !== n; ++i) {\n indices[arguments[i].uuid] = i;\n }\n this._paths = [];\n this._parsedPaths = [];\n this._bindings = [];\n this._bindingsIndicesByPath = {};\n const scope = this;\n this.stats = {\n objects: {\n get total() {\n return scope._objects.length;\n },\n get inUse() {\n return this.total - scope.nCachedObjects_;\n }\n },\n get bindingsPerObject() {\n return scope._bindings.length;\n }\n };\n }\n add() {\n const objects = this._objects, indicesByUUID = this._indicesByUUID, paths = this._paths, parsedPaths = this._parsedPaths, bindings = this._bindings, nBindings = bindings.length;\n let knownObject = void 0, nObjects = objects.length, nCachedObjects = this.nCachedObjects_;\n for (let i = 0, n = arguments.length; i !== n; ++i) {\n const object = arguments[i], uuid = object.uuid;\n let index = indicesByUUID[uuid];\n if (index === void 0) {\n index = nObjects++;\n indicesByUUID[uuid] = index;\n objects.push(object);\n for (let j = 0, m = nBindings; j !== m; ++j) {\n bindings[j].push(new PropertyBinding(object, paths[j], parsedPaths[j]));\n }\n } else if (index < nCachedObjects) {\n knownObject = objects[index];\n const firstActiveIndex = --nCachedObjects, lastCachedObject = objects[firstActiveIndex];\n indicesByUUID[lastCachedObject.uuid] = index;\n objects[index] = lastCachedObject;\n indicesByUUID[uuid] = firstActiveIndex;\n objects[firstActiveIndex] = object;\n for (let j = 0, m = nBindings; j !== m; ++j) {\n const bindingsForPath = bindings[j], lastCached = bindingsForPath[firstActiveIndex];\n let binding = bindingsForPath[index];\n bindingsForPath[index] = lastCached;\n if (binding === void 0) {\n binding = new PropertyBinding(object, paths[j], parsedPaths[j]);\n }\n bindingsForPath[firstActiveIndex] = binding;\n }\n } else if (objects[index] !== knownObject) {\n console.error(\"THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.\");\n }\n }\n this.nCachedObjects_ = nCachedObjects;\n }\n remove() {\n const objects = this._objects, indicesByUUID = this._indicesByUUID, bindings = this._bindings, nBindings = bindings.length;\n let nCachedObjects = this.nCachedObjects_;\n for (let i = 0, n = arguments.length; i !== n; ++i) {\n const object = arguments[i], uuid = object.uuid, index = indicesByUUID[uuid];\n if (index !== void 0 && index >= nCachedObjects) {\n const lastCachedIndex = nCachedObjects++, firstActiveObject = objects[lastCachedIndex];\n indicesByUUID[firstActiveObject.uuid] = index;\n objects[index] = firstActiveObject;\n indicesByUUID[uuid] = lastCachedIndex;\n objects[lastCachedIndex] = object;\n for (let j = 0, m = nBindings; j !== m; ++j) {\n const bindingsForPath = bindings[j], firstActive = bindingsForPath[lastCachedIndex], binding = bindingsForPath[index];\n bindingsForPath[index] = firstActive;\n bindingsForPath[lastCachedIndex] = binding;\n }\n }\n }\n this.nCachedObjects_ = nCachedObjects;\n }\n uncache() {\n const objects = this._objects, indicesByUUID = this._indicesByUUID, bindings = this._bindings, nBindings = bindings.length;\n let nCachedObjects = this.nCachedObjects_, nObjects = objects.length;\n for (let i = 0, n = arguments.length; i !== n; ++i) {\n const object = arguments[i], uuid = object.uuid, index = indicesByUUID[uuid];\n if (index !== void 0) {\n delete indicesByUUID[uuid];\n if (index < nCachedObjects) {\n const firstActiveIndex = --nCachedObjects, lastCachedObject = objects[firstActiveIndex], lastIndex = --nObjects, lastObject = objects[lastIndex];\n indicesByUUID[lastCachedObject.uuid] = index;\n objects[index] = lastCachedObject;\n indicesByUUID[lastObject.uuid] = firstActiveIndex;\n objects[firstActiveIndex] = lastObject;\n objects.pop();\n for (let j = 0, m = nBindings; j !== m; ++j) {\n const bindingsForPath = bindings[j], lastCached = bindingsForPath[firstActiveIndex], last = bindingsForPath[lastIndex];\n bindingsForPath[index] = lastCached;\n bindingsForPath[firstActiveIndex] = last;\n bindingsForPath.pop();\n }\n } else {\n const lastIndex = --nObjects, lastObject = objects[lastIndex];\n if (lastIndex > 0) {\n indicesByUUID[lastObject.uuid] = index;\n }\n objects[index] = lastObject;\n objects.pop();\n for (let j = 0, m = nBindings; j !== m; ++j) {\n const bindingsForPath = bindings[j];\n bindingsForPath[index] = bindingsForPath[lastIndex];\n bindingsForPath.pop();\n }\n }\n }\n }\n this.nCachedObjects_ = nCachedObjects;\n }\n subscribe_(path, parsedPath) {\n const indicesByPath = this._bindingsIndicesByPath;\n let index = indicesByPath[path];\n const bindings = this._bindings;\n if (index !== void 0)\n return bindings[index];\n const paths = this._paths, parsedPaths = this._parsedPaths, objects = this._objects, nObjects = objects.length, nCachedObjects = this.nCachedObjects_, bindingsForPath = new Array(nObjects);\n index = bindings.length;\n indicesByPath[path] = index;\n paths.push(path);\n parsedPaths.push(parsedPath);\n bindings.push(bindingsForPath);\n for (let i = nCachedObjects, n = objects.length; i !== n; ++i) {\n const object = objects[i];\n bindingsForPath[i] = new PropertyBinding(object, path, parsedPath);\n }\n return bindingsForPath;\n }\n unsubscribe_(path) {\n const indicesByPath = this._bindingsIndicesByPath, index = indicesByPath[path];\n if (index !== void 0) {\n const paths = this._paths, parsedPaths = this._parsedPaths, bindings = this._bindings, lastBindingsIndex = bindings.length - 1, lastBindings = bindings[lastBindingsIndex], lastBindingsPath = path[lastBindingsIndex];\n indicesByPath[lastBindingsPath] = index;\n bindings[index] = lastBindings;\n bindings.pop();\n parsedPaths[index] = parsedPaths[lastBindingsIndex];\n parsedPaths.pop();\n paths[index] = paths[lastBindingsIndex];\n paths.pop();\n }\n }\n}\nAnimationObjectGroup.prototype.isAnimationObjectGroup = true;\nclass AnimationAction {\n constructor(mixer, clip, localRoot = null, blendMode = clip.blendMode) {\n this._mixer = mixer;\n this._clip = clip;\n this._localRoot = localRoot;\n this.blendMode = blendMode;\n const tracks = clip.tracks, nTracks = tracks.length, interpolants = new Array(nTracks);\n const interpolantSettings = {\n endingStart: ZeroCurvatureEnding,\n endingEnd: ZeroCurvatureEnding\n };\n for (let i = 0; i !== nTracks; ++i) {\n const interpolant = tracks[i].createInterpolant(null);\n interpolants[i] = interpolant;\n interpolant.settings = interpolantSettings;\n }\n this._interpolantSettings = interpolantSettings;\n this._interpolants = interpolants;\n this._propertyBindings = new Array(nTracks);\n this._cacheIndex = null;\n this._byClipCacheIndex = null;\n this._timeScaleInterpolant = null;\n this._weightInterpolant = null;\n this.loop = LoopRepeat;\n this._loopCount = -1;\n this._startTime = null;\n this.time = 0;\n this.timeScale = 1;\n this._effectiveTimeScale = 1;\n this.weight = 1;\n this._effectiveWeight = 1;\n this.repetitions = Infinity;\n this.paused = false;\n this.enabled = true;\n this.clampWhenFinished = false;\n this.zeroSlopeAtStart = true;\n this.zeroSlopeAtEnd = true;\n }\n play() {\n this._mixer._activateAction(this);\n return this;\n }\n stop() {\n this._mixer._deactivateAction(this);\n return this.reset();\n }\n reset() {\n this.paused = false;\n this.enabled = true;\n this.time = 0;\n this._loopCount = -1;\n this._startTime = null;\n return this.stopFading().stopWarping();\n }\n isRunning() {\n return this.enabled && !this.paused && this.timeScale !== 0 && this._startTime === null && this._mixer._isActiveAction(this);\n }\n isScheduled() {\n return this._mixer._isActiveAction(this);\n }\n startAt(time) {\n this._startTime = time;\n return this;\n }\n setLoop(mode, repetitions) {\n this.loop = mode;\n this.repetitions = repetitions;\n return this;\n }\n setEffectiveWeight(weight) {\n this.weight = weight;\n this._effectiveWeight = this.enabled ? weight : 0;\n return this.stopFading();\n }\n getEffectiveWeight() {\n return this._effectiveWeight;\n }\n fadeIn(duration) {\n return this._scheduleFading(duration, 0, 1);\n }\n fadeOut(duration) {\n return this._scheduleFading(duration, 1, 0);\n }\n crossFadeFrom(fadeOutAction, duration, warp) {\n fadeOutAction.fadeOut(duration);\n this.fadeIn(duration);\n if (warp) {\n const fadeInDuration = this._clip.duration, fadeOutDuration = fadeOutAction._clip.duration, startEndRatio = fadeOutDuration / fadeInDuration, endStartRatio = fadeInDuration / fadeOutDuration;\n fadeOutAction.warp(1, startEndRatio, duration);\n this.warp(endStartRatio, 1, duration);\n }\n return this;\n }\n crossFadeTo(fadeInAction, duration, warp) {\n return fadeInAction.crossFadeFrom(this, duration, warp);\n }\n stopFading() {\n const weightInterpolant = this._weightInterpolant;\n if (weightInterpolant !== null) {\n this._weightInterpolant = null;\n this._mixer._takeBackControlInterpolant(weightInterpolant);\n }\n return this;\n }\n setEffectiveTimeScale(timeScale) {\n this.timeScale = timeScale;\n this._effectiveTimeScale = this.paused ? 0 : timeScale;\n return this.stopWarping();\n }\n getEffectiveTimeScale() {\n return this._effectiveTimeScale;\n }\n setDuration(duration) {\n this.timeScale = this._clip.duration / duration;\n return this.stopWarping();\n }\n syncWith(action) {\n this.time = action.time;\n this.timeScale = action.timeScale;\n return this.stopWarping();\n }\n halt(duration) {\n return this.warp(this._effectiveTimeScale, 0, duration);\n }\n warp(startTimeScale, endTimeScale, duration) {\n const mixer = this._mixer, now2 = mixer.time, timeScale = this.timeScale;\n let interpolant = this._timeScaleInterpolant;\n if (interpolant === null) {\n interpolant = mixer._lendControlInterpolant();\n this._timeScaleInterpolant = interpolant;\n }\n const times = interpolant.parameterPositions, values = interpolant.sampleValues;\n times[0] = now2;\n times[1] = now2 + duration;\n values[0] = startTimeScale / timeScale;\n values[1] = endTimeScale / timeScale;\n return this;\n }\n stopWarping() {\n const timeScaleInterpolant = this._timeScaleInterpolant;\n if (timeScaleInterpolant !== null) {\n this._timeScaleInterpolant = null;\n this._mixer._takeBackControlInterpolant(timeScaleInterpolant);\n }\n return this;\n }\n getMixer() {\n return this._mixer;\n }\n getClip() {\n return this._clip;\n }\n getRoot() {\n return this._localRoot || this._mixer._root;\n }\n _update(time, deltaTime, timeDirection, accuIndex) {\n if (!this.enabled) {\n this._updateWeight(time);\n return;\n }\n const startTime = this._startTime;\n if (startTime !== null) {\n const timeRunning = (time - startTime) * timeDirection;\n if (timeRunning < 0 || timeDirection === 0) {\n return;\n }\n this._startTime = null;\n deltaTime = timeDirection * timeRunning;\n }\n deltaTime *= this._updateTimeScale(time);\n const clipTime = this._updateTime(deltaTime);\n const weight = this._updateWeight(time);\n if (weight > 0) {\n const interpolants = this._interpolants;\n const propertyMixers = this._propertyBindings;\n switch (this.blendMode) {\n case AdditiveAnimationBlendMode:\n for (let j = 0, m = interpolants.length; j !== m; ++j) {\n interpolants[j].evaluate(clipTime);\n propertyMixers[j].accumulateAdditive(weight);\n }\n break;\n case NormalAnimationBlendMode:\n default:\n for (let j = 0, m = interpolants.length; j !== m; ++j) {\n interpolants[j].evaluate(clipTime);\n propertyMixers[j].accumulate(accuIndex, weight);\n }\n }\n }\n }\n _updateWeight(time) {\n let weight = 0;\n if (this.enabled) {\n weight = this.weight;\n const interpolant = this._weightInterpolant;\n if (interpolant !== null) {\n const interpolantValue = interpolant.evaluate(time)[0];\n weight *= interpolantValue;\n if (time > interpolant.parameterPositions[1]) {\n this.stopFading();\n if (interpolantValue === 0) {\n this.enabled = false;\n }\n }\n }\n }\n this._effectiveWeight = weight;\n return weight;\n }\n _updateTimeScale(time) {\n let timeScale = 0;\n if (!this.paused) {\n timeScale = this.timeScale;\n const interpolant = this._timeScaleInterpolant;\n if (interpolant !== null) {\n const interpolantValue = interpolant.evaluate(time)[0];\n timeScale *= interpolantValue;\n if (time > interpolant.parameterPositions[1]) {\n this.stopWarping();\n if (timeScale === 0) {\n this.paused = true;\n } else {\n this.timeScale = timeScale;\n }\n }\n }\n }\n this._effectiveTimeScale = timeScale;\n return timeScale;\n }\n _updateTime(deltaTime) {\n const duration = this._clip.duration;\n const loop = this.loop;\n let time = this.time + deltaTime;\n let loopCount = this._loopCount;\n const pingPong = loop === LoopPingPong;\n if (deltaTime === 0) {\n if (loopCount === -1)\n return time;\n return pingPong && (loopCount & 1) === 1 ? duration - time : time;\n }\n if (loop === LoopOnce) {\n if (loopCount === -1) {\n this._loopCount = 0;\n this._setEndings(true, true, false);\n }\n handle_stop: {\n if (time >= duration) {\n time = duration;\n } else if (time < 0) {\n time = 0;\n } else {\n this.time = time;\n break handle_stop;\n }\n if (this.clampWhenFinished)\n this.paused = true;\n else\n this.enabled = false;\n this.time = time;\n this._mixer.dispatchEvent({\n type: \"finished\",\n action: this,\n direction: deltaTime < 0 ? -1 : 1\n });\n }\n } else {\n if (loopCount === -1) {\n if (deltaTime >= 0) {\n loopCount = 0;\n this._setEndings(true, this.repetitions === 0, pingPong);\n } else {\n this._setEndings(this.repetitions === 0, true, pingPong);\n }\n }\n if (time >= duration || time < 0) {\n const loopDelta = Math.floor(time / duration);\n time -= duration * loopDelta;\n loopCount += Math.abs(loopDelta);\n const pending = this.repetitions - loopCount;\n if (pending <= 0) {\n if (this.clampWhenFinished)\n this.paused = true;\n else\n this.enabled = false;\n time = deltaTime > 0 ? duration : 0;\n this.time = time;\n this._mixer.dispatchEvent({\n type: \"finished\",\n action: this,\n direction: deltaTime > 0 ? 1 : -1\n });\n } else {\n if (pending === 1) {\n const atStart = deltaTime < 0;\n this._setEndings(atStart, !atStart, pingPong);\n } else {\n this._setEndings(false, false, pingPong);\n }\n this._loopCount = loopCount;\n this.time = time;\n this._mixer.dispatchEvent({\n type: \"loop\",\n action: this,\n loopDelta\n });\n }\n } else {\n this.time = time;\n }\n if (pingPong && (loopCount & 1) === 1) {\n return duration - time;\n }\n }\n return time;\n }\n _setEndings(atStart, atEnd, pingPong) {\n const settings = this._interpolantSettings;\n if (pingPong) {\n settings.endingStart = ZeroSlopeEnding;\n settings.endingEnd = ZeroSlopeEnding;\n } else {\n if (atStart) {\n settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n } else {\n settings.endingStart = WrapAroundEnding;\n }\n if (atEnd) {\n settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n } else {\n settings.endingEnd = WrapAroundEnding;\n }\n }\n }\n _scheduleFading(duration, weightNow, weightThen) {\n const mixer = this._mixer, now2 = mixer.time;\n let interpolant = this._weightInterpolant;\n if (interpolant === null) {\n interpolant = mixer._lendControlInterpolant();\n this._weightInterpolant = interpolant;\n }\n const times = interpolant.parameterPositions, values = interpolant.sampleValues;\n times[0] = now2;\n values[0] = weightNow;\n times[1] = now2 + duration;\n values[1] = weightThen;\n return this;\n }\n}\nclass AnimationMixer extends EventDispatcher {\n constructor(root) {\n super();\n this._root = root;\n this._initMemoryManager();\n this._accuIndex = 0;\n this.time = 0;\n this.timeScale = 1;\n }\n _bindAction(action, prototypeAction) {\n const root = action._localRoot || this._root, tracks = action._clip.tracks, nTracks = tracks.length, bindings = action._propertyBindings, interpolants = action._interpolants, rootUuid = root.uuid, bindingsByRoot = this._bindingsByRootAndName;\n let bindingsByName = bindingsByRoot[rootUuid];\n if (bindingsByName === void 0) {\n bindingsByName = {};\n bindingsByRoot[rootUuid] = bindingsByName;\n }\n for (let i = 0; i !== nTracks; ++i) {\n const track = tracks[i], trackName = track.name;\n let binding = bindingsByName[trackName];\n if (binding !== void 0) {\n bindings[i] = binding;\n } else {\n binding = bindings[i];\n if (binding !== void 0) {\n if (binding._cacheIndex === null) {\n ++binding.referenceCount;\n this._addInactiveBinding(binding, rootUuid, trackName);\n }\n continue;\n }\n const path = prototypeAction && prototypeAction._propertyBindings[i].binding.parsedPath;\n binding = new PropertyMixer(PropertyBinding.create(root, trackName, path), track.ValueTypeName, track.getValueSize());\n ++binding.referenceCount;\n this._addInactiveBinding(binding, rootUuid, trackName);\n bindings[i] = binding;\n }\n interpolants[i].resultBuffer = binding.buffer;\n }\n }\n _activateAction(action) {\n if (!this._isActiveAction(action)) {\n if (action._cacheIndex === null) {\n const rootUuid = (action._localRoot || this._root).uuid, clipUuid = action._clip.uuid, actionsForClip = this._actionsByClip[clipUuid];\n this._bindAction(action, actionsForClip && actionsForClip.knownActions[0]);\n this._addInactiveAction(action, clipUuid, rootUuid);\n }\n const bindings = action._propertyBindings;\n for (let i = 0, n = bindings.length; i !== n; ++i) {\n const binding = bindings[i];\n if (binding.useCount++ === 0) {\n this._lendBinding(binding);\n binding.saveOriginalState();\n }\n }\n this._lendAction(action);\n }\n }\n _deactivateAction(action) {\n if (this._isActiveAction(action)) {\n const bindings = action._propertyBindings;\n for (let i = 0, n = bindings.length; i !== n; ++i) {\n const binding = bindings[i];\n if (--binding.useCount === 0) {\n binding.restoreOriginalState();\n this._takeBackBinding(binding);\n }\n }\n this._takeBackAction(action);\n }\n }\n _initMemoryManager() {\n this._actions = [];\n this._nActiveActions = 0;\n this._actionsByClip = {};\n this._bindings = [];\n this._nActiveBindings = 0;\n this._bindingsByRootAndName = {};\n this._controlInterpolants = [];\n this._nActiveControlInterpolants = 0;\n const scope = this;\n this.stats = {\n actions: {\n get total() {\n return scope._actions.length;\n },\n get inUse() {\n return scope._nActiveActions;\n }\n },\n bindings: {\n get total() {\n return scope._bindings.length;\n },\n get inUse() {\n return scope._nActiveBindings;\n }\n },\n controlInterpolants: {\n get total() {\n return scope._controlInterpolants.length;\n },\n get inUse() {\n return scope._nActiveControlInterpolants;\n }\n }\n };\n }\n _isActiveAction(action) {\n const index = action._cacheIndex;\n return index !== null && index < this._nActiveActions;\n }\n _addInactiveAction(action, clipUuid, rootUuid) {\n const actions = this._actions, actionsByClip = this._actionsByClip;\n let actionsForClip = actionsByClip[clipUuid];\n if (actionsForClip === void 0) {\n actionsForClip = {\n knownActions: [action],\n actionByRoot: {}\n };\n action._byClipCacheIndex = 0;\n actionsByClip[clipUuid] = actionsForClip;\n } else {\n const knownActions = actionsForClip.knownActions;\n action._byClipCacheIndex = knownActions.length;\n knownActions.push(action);\n }\n action._cacheIndex = actions.length;\n actions.push(action);\n actionsForClip.actionByRoot[rootUuid] = action;\n }\n _removeInactiveAction(action) {\n const actions = this._actions, lastInactiveAction = actions[actions.length - 1], cacheIndex = action._cacheIndex;\n lastInactiveAction._cacheIndex = cacheIndex;\n actions[cacheIndex] = lastInactiveAction;\n actions.pop();\n action._cacheIndex = null;\n const clipUuid = action._clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid], knownActionsForClip = actionsForClip.knownActions, lastKnownAction = knownActionsForClip[knownActionsForClip.length - 1], byClipCacheIndex = action._byClipCacheIndex;\n lastKnownAction._byClipCacheIndex = byClipCacheIndex;\n knownActionsForClip[byClipCacheIndex] = lastKnownAction;\n knownActionsForClip.pop();\n action._byClipCacheIndex = null;\n const actionByRoot = actionsForClip.actionByRoot, rootUuid = (action._localRoot || this._root).uuid;\n delete actionByRoot[rootUuid];\n if (knownActionsForClip.length === 0) {\n delete actionsByClip[clipUuid];\n }\n this._removeInactiveBindingsForAction(action);\n }\n _removeInactiveBindingsForAction(action) {\n const bindings = action._propertyBindings;\n for (let i = 0, n = bindings.length; i !== n; ++i) {\n const binding = bindings[i];\n if (--binding.referenceCount === 0) {\n this._removeInactiveBinding(binding);\n }\n }\n }\n _lendAction(action) {\n const actions = this._actions, prevIndex = action._cacheIndex, lastActiveIndex = this._nActiveActions++, firstInactiveAction = actions[lastActiveIndex];\n action._cacheIndex = lastActiveIndex;\n actions[lastActiveIndex] = action;\n firstInactiveAction._cacheIndex = prevIndex;\n actions[prevIndex] = firstInactiveAction;\n }\n _takeBackAction(action) {\n const actions = this._actions, prevIndex = action._cacheIndex, firstInactiveIndex = --this._nActiveActions, lastActiveAction = actions[firstInactiveIndex];\n action._cacheIndex = firstInactiveIndex;\n actions[firstInactiveIndex] = action;\n lastActiveAction._cacheIndex = prevIndex;\n actions[prevIndex] = lastActiveAction;\n }\n _addInactiveBinding(binding, rootUuid, trackName) {\n const bindingsByRoot = this._bindingsByRootAndName, bindings = this._bindings;\n let bindingByName = bindingsByRoot[rootUuid];\n if (bindingByName === void 0) {\n bindingByName = {};\n bindingsByRoot[rootUuid] = bindingByName;\n }\n bindingByName[trackName] = binding;\n binding._cacheIndex = bindings.length;\n bindings.push(binding);\n }\n _removeInactiveBinding(binding) {\n const bindings = this._bindings, propBinding = binding.binding, rootUuid = propBinding.rootNode.uuid, trackName = propBinding.path, bindingsByRoot = this._bindingsByRootAndName, bindingByName = bindingsByRoot[rootUuid], lastInactiveBinding = bindings[bindings.length - 1], cacheIndex = binding._cacheIndex;\n lastInactiveBinding._cacheIndex = cacheIndex;\n bindings[cacheIndex] = lastInactiveBinding;\n bindings.pop();\n delete bindingByName[trackName];\n if (Object.keys(bindingByName).length === 0) {\n delete bindingsByRoot[rootUuid];\n }\n }\n _lendBinding(binding) {\n const bindings = this._bindings, prevIndex = binding._cacheIndex, lastActiveIndex = this._nActiveBindings++, firstInactiveBinding = bindings[lastActiveIndex];\n binding._cacheIndex = lastActiveIndex;\n bindings[lastActiveIndex] = binding;\n firstInactiveBinding._cacheIndex = prevIndex;\n bindings[prevIndex] = firstInactiveBinding;\n }\n _takeBackBinding(binding) {\n const bindings = this._bindings, prevIndex = binding._cacheIndex, firstInactiveIndex = --this._nActiveBindings, lastActiveBinding = bindings[firstInactiveIndex];\n binding._cacheIndex = firstInactiveIndex;\n bindings[firstInactiveIndex] = binding;\n lastActiveBinding._cacheIndex = prevIndex;\n bindings[prevIndex] = lastActiveBinding;\n }\n _lendControlInterpolant() {\n const interpolants = this._controlInterpolants, lastActiveIndex = this._nActiveControlInterpolants++;\n let interpolant = interpolants[lastActiveIndex];\n if (interpolant === void 0) {\n interpolant = new LinearInterpolant(new Float32Array(2), new Float32Array(2), 1, this._controlInterpolantsResultBuffer);\n interpolant.__cacheIndex = lastActiveIndex;\n interpolants[lastActiveIndex] = interpolant;\n }\n return interpolant;\n }\n _takeBackControlInterpolant(interpolant) {\n const interpolants = this._controlInterpolants, prevIndex = interpolant.__cacheIndex, firstInactiveIndex = --this._nActiveControlInterpolants, lastActiveInterpolant = interpolants[firstInactiveIndex];\n interpolant.__cacheIndex = firstInactiveIndex;\n interpolants[firstInactiveIndex] = interpolant;\n lastActiveInterpolant.__cacheIndex = prevIndex;\n interpolants[prevIndex] = lastActiveInterpolant;\n }\n clipAction(clip, optionalRoot, blendMode) {\n const root = optionalRoot || this._root, rootUuid = root.uuid;\n let clipObject = typeof clip === \"string\" ? AnimationClip.findByName(root, clip) : clip;\n const clipUuid = clipObject !== null ? clipObject.uuid : clip;\n const actionsForClip = this._actionsByClip[clipUuid];\n let prototypeAction = null;\n if (blendMode === void 0) {\n if (clipObject !== null) {\n blendMode = clipObject.blendMode;\n } else {\n blendMode = NormalAnimationBlendMode;\n }\n }\n if (actionsForClip !== void 0) {\n const existingAction = actionsForClip.actionByRoot[rootUuid];\n if (existingAction !== void 0 && existingAction.blendMode === blendMode) {\n return existingAction;\n }\n prototypeAction = actionsForClip.knownActions[0];\n if (clipObject === null)\n clipObject = prototypeAction._clip;\n }\n if (clipObject === null)\n return null;\n const newAction = new AnimationAction(this, clipObject, optionalRoot, blendMode);\n this._bindAction(newAction, prototypeAction);\n this._addInactiveAction(newAction, clipUuid, rootUuid);\n return newAction;\n }\n existingAction(clip, optionalRoot) {\n const root = optionalRoot || this._root, rootUuid = root.uuid, clipObject = typeof clip === \"string\" ? AnimationClip.findByName(root, clip) : clip, clipUuid = clipObject ? clipObject.uuid : clip, actionsForClip = this._actionsByClip[clipUuid];\n if (actionsForClip !== void 0) {\n return actionsForClip.actionByRoot[rootUuid] || null;\n }\n return null;\n }\n stopAllAction() {\n const actions = this._actions, nActions = this._nActiveActions;\n for (let i = nActions - 1; i >= 0; --i) {\n actions[i].stop();\n }\n return this;\n }\n update(deltaTime) {\n deltaTime *= this.timeScale;\n const actions = this._actions, nActions = this._nActiveActions, time = this.time += deltaTime, timeDirection = Math.sign(deltaTime), accuIndex = this._accuIndex ^= 1;\n for (let i = 0; i !== nActions; ++i) {\n const action = actions[i];\n action._update(time, deltaTime, timeDirection, accuIndex);\n }\n const bindings = this._bindings, nBindings = this._nActiveBindings;\n for (let i = 0; i !== nBindings; ++i) {\n bindings[i].apply(accuIndex);\n }\n return this;\n }\n setTime(timeInSeconds) {\n this.time = 0;\n for (let i = 0; i < this._actions.length; i++) {\n this._actions[i].time = 0;\n }\n return this.update(timeInSeconds);\n }\n getRoot() {\n return this._root;\n }\n uncacheClip(clip) {\n const actions = this._actions, clipUuid = clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid];\n if (actionsForClip !== void 0) {\n const actionsToRemove = actionsForClip.knownActions;\n for (let i = 0, n = actionsToRemove.length; i !== n; ++i) {\n const action = actionsToRemove[i];\n this._deactivateAction(action);\n const cacheIndex = action._cacheIndex, lastInactiveAction = actions[actions.length - 1];\n action._cacheIndex = null;\n action._byClipCacheIndex = null;\n lastInactiveAction._cacheIndex = cacheIndex;\n actions[cacheIndex] = lastInactiveAction;\n actions.pop();\n this._removeInactiveBindingsForAction(action);\n }\n delete actionsByClip[clipUuid];\n }\n }\n uncacheRoot(root) {\n const rootUuid = root.uuid, actionsByClip = this._actionsByClip;\n for (const clipUuid in actionsByClip) {\n const actionByRoot = actionsByClip[clipUuid].actionByRoot, action = actionByRoot[rootUuid];\n if (action !== void 0) {\n this._deactivateAction(action);\n this._removeInactiveAction(action);\n }\n }\n const bindingsByRoot = this._bindingsByRootAndName, bindingByName = bindingsByRoot[rootUuid];\n if (bindingByName !== void 0) {\n for (const trackName in bindingByName) {\n const binding = bindingByName[trackName];\n binding.restoreOriginalState();\n this._removeInactiveBinding(binding);\n }\n }\n }\n uncacheAction(clip, optionalRoot) {\n const action = this.existingAction(clip, optionalRoot);\n if (action !== null) {\n this._deactivateAction(action);\n this._removeInactiveAction(action);\n }\n }\n}\nAnimationMixer.prototype._controlInterpolantsResultBuffer = new Float32Array(1);\nclass Uniform {\n constructor(value) {\n if (typeof value === \"string\") {\n console.warn(\"THREE.Uniform: Type parameter is no longer needed.\");\n value = arguments[1];\n }\n this.value = value;\n }\n clone() {\n return new Uniform(this.value.clone === void 0 ? this.value : this.value.clone());\n }\n}\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n constructor(array, stride, meshPerAttribute = 1) {\n super(array, stride);\n this.meshPerAttribute = meshPerAttribute;\n }\n copy(source) {\n super.copy(source);\n this.meshPerAttribute = source.meshPerAttribute;\n return this;\n }\n clone(data) {\n const ib = super.clone(data);\n ib.meshPerAttribute = this.meshPerAttribute;\n return ib;\n }\n toJSON(data) {\n const json = super.toJSON(data);\n json.isInstancedInterleavedBuffer = true;\n json.meshPerAttribute = this.meshPerAttribute;\n return json;\n }\n}\nInstancedInterleavedBuffer.prototype.isInstancedInterleavedBuffer = true;\nclass GLBufferAttribute {\n constructor(buffer, type, itemSize, elementSize, count) {\n this.buffer = buffer;\n this.type = type;\n this.itemSize = itemSize;\n this.elementSize = elementSize;\n this.count = count;\n this.version = 0;\n }\n set needsUpdate(value) {\n if (value === true)\n this.version++;\n }\n setBuffer(buffer) {\n this.buffer = buffer;\n return this;\n }\n setType(type, elementSize) {\n this.type = type;\n this.elementSize = elementSize;\n return this;\n }\n setItemSize(itemSize) {\n this.itemSize = itemSize;\n return this;\n }\n setCount(count) {\n this.count = count;\n return this;\n }\n}\nGLBufferAttribute.prototype.isGLBufferAttribute = true;\nclass Raycaster {\n constructor(origin, direction, near = 0, far = Infinity) {\n this.ray = new Ray(origin, direction);\n this.near = near;\n this.far = far;\n this.camera = null;\n this.layers = new Layers();\n this.params = {\n Mesh: {},\n Line: {threshold: 1},\n LOD: {},\n Points: {threshold: 1},\n Sprite: {}\n };\n }\n set(origin, direction) {\n this.ray.set(origin, direction);\n }\n setFromCamera(coords, camera) {\n if (camera && camera.isPerspectiveCamera) {\n this.ray.origin.setFromMatrixPosition(camera.matrixWorld);\n this.ray.direction.set(coords.x, coords.y, 0.5).unproject(camera).sub(this.ray.origin).normalize();\n this.camera = camera;\n } else if (camera && camera.isOrthographicCamera) {\n this.ray.origin.set(coords.x, coords.y, (camera.near + camera.far) / (camera.near - camera.far)).unproject(camera);\n this.ray.direction.set(0, 0, -1).transformDirection(camera.matrixWorld);\n this.camera = camera;\n } else {\n console.error(\"THREE.Raycaster: Unsupported camera type: \" + camera.type);\n }\n }\n intersectObject(object, recursive = true, intersects2 = []) {\n intersectObject(object, this, intersects2, recursive);\n intersects2.sort(ascSort);\n return intersects2;\n }\n intersectObjects(objects, recursive = true, intersects2 = []) {\n for (let i = 0, l = objects.length; i < l; i++) {\n intersectObject(objects[i], this, intersects2, recursive);\n }\n intersects2.sort(ascSort);\n return intersects2;\n }\n}\nfunction ascSort(a, b) {\n return a.distance - b.distance;\n}\nfunction intersectObject(object, raycaster, intersects2, recursive) {\n if (object.layers.test(raycaster.layers)) {\n object.raycast(raycaster, intersects2);\n }\n if (recursive === true) {\n const children = object.children;\n for (let i = 0, l = children.length; i < l; i++) {\n intersectObject(children[i], raycaster, intersects2, true);\n }\n }\n}\nclass Spherical {\n constructor(radius = 1, phi = 0, theta = 0) {\n this.radius = radius;\n this.phi = phi;\n this.theta = theta;\n return this;\n }\n set(radius, phi, theta) {\n this.radius = radius;\n this.phi = phi;\n this.theta = theta;\n return this;\n }\n copy(other) {\n this.radius = other.radius;\n this.phi = other.phi;\n this.theta = other.theta;\n return this;\n }\n makeSafe() {\n const EPS = 1e-6;\n this.phi = Math.max(EPS, Math.min(Math.PI - EPS, this.phi));\n return this;\n }\n setFromVector3(v) {\n return this.setFromCartesianCoords(v.x, v.y, v.z);\n }\n setFromCartesianCoords(x, y, z) {\n this.radius = Math.sqrt(x * x + y * y + z * z);\n if (this.radius === 0) {\n this.theta = 0;\n this.phi = 0;\n } else {\n this.theta = Math.atan2(x, z);\n this.phi = Math.acos(clamp(y / this.radius, -1, 1));\n }\n return this;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nclass Cylindrical {\n constructor(radius = 1, theta = 0, y = 0) {\n this.radius = radius;\n this.theta = theta;\n this.y = y;\n return this;\n }\n set(radius, theta, y) {\n this.radius = radius;\n this.theta = theta;\n this.y = y;\n return this;\n }\n copy(other) {\n this.radius = other.radius;\n this.theta = other.theta;\n this.y = other.y;\n return this;\n }\n setFromVector3(v) {\n return this.setFromCartesianCoords(v.x, v.y, v.z);\n }\n setFromCartesianCoords(x, y, z) {\n this.radius = Math.sqrt(x * x + z * z);\n this.theta = Math.atan2(x, z);\n this.y = y;\n return this;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nconst _vector$4 = /* @__PURE__ */ new Vector2();\nclass Box2 {\n constructor(min = new Vector2(Infinity, Infinity), max = new Vector2(-Infinity, -Infinity)) {\n this.min = min;\n this.max = max;\n }\n set(min, max) {\n this.min.copy(min);\n this.max.copy(max);\n return this;\n }\n setFromPoints(points) {\n this.makeEmpty();\n for (let i = 0, il = points.length; i < il; i++) {\n this.expandByPoint(points[i]);\n }\n return this;\n }\n setFromCenterAndSize(center, size) {\n const halfSize = _vector$4.copy(size).multiplyScalar(0.5);\n this.min.copy(center).sub(halfSize);\n this.max.copy(center).add(halfSize);\n return this;\n }\n clone() {\n return new this.constructor().copy(this);\n }\n copy(box) {\n this.min.copy(box.min);\n this.max.copy(box.max);\n return this;\n }\n makeEmpty() {\n this.min.x = this.min.y = Infinity;\n this.max.x = this.max.y = -Infinity;\n return this;\n }\n isEmpty() {\n return this.max.x < this.min.x || this.max.y < this.min.y;\n }\n getCenter(target) {\n return this.isEmpty() ? target.set(0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n }\n getSize(target) {\n return this.isEmpty() ? target.set(0, 0) : target.subVectors(this.max, this.min);\n }\n expandByPoint(point) {\n this.min.min(point);\n this.max.max(point);\n return this;\n }\n expandByVector(vector) {\n this.min.sub(vector);\n this.max.add(vector);\n return this;\n }\n expandByScalar(scalar) {\n this.min.addScalar(-scalar);\n this.max.addScalar(scalar);\n return this;\n }\n containsPoint(point) {\n return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y ? false : true;\n }\n containsBox(box) {\n return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y;\n }\n getParameter(point, target) {\n return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y));\n }\n intersectsBox(box) {\n return box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n }\n clampPoint(point, target) {\n return target.copy(point).clamp(this.min, this.max);\n }\n distanceToPoint(point) {\n const clampedPoint = _vector$4.copy(point).clamp(this.min, this.max);\n return clampedPoint.sub(point).length();\n }\n intersect(box) {\n this.min.max(box.min);\n this.max.min(box.max);\n return this;\n }\n union(box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n }\n translate(offset) {\n this.min.add(offset);\n this.max.add(offset);\n return this;\n }\n equals(box) {\n return box.min.equals(this.min) && box.max.equals(this.max);\n }\n}\nBox2.prototype.isBox2 = true;\nconst _startP = /* @__PURE__ */ new Vector3();\nconst _startEnd = /* @__PURE__ */ new Vector3();\nclass Line3 {\n constructor(start = new Vector3(), end = new Vector3()) {\n this.start = start;\n this.end = end;\n }\n set(start, end) {\n this.start.copy(start);\n this.end.copy(end);\n return this;\n }\n copy(line) {\n this.start.copy(line.start);\n this.end.copy(line.end);\n return this;\n }\n getCenter(target) {\n return target.addVectors(this.start, this.end).multiplyScalar(0.5);\n }\n delta(target) {\n return target.subVectors(this.end, this.start);\n }\n distanceSq() {\n return this.start.distanceToSquared(this.end);\n }\n distance() {\n return this.start.distanceTo(this.end);\n }\n at(t, target) {\n return this.delta(target).multiplyScalar(t).add(this.start);\n }\n closestPointToPointParameter(point, clampToLine) {\n _startP.subVectors(point, this.start);\n _startEnd.subVectors(this.end, this.start);\n const startEnd2 = _startEnd.dot(_startEnd);\n const startEnd_startP = _startEnd.dot(_startP);\n let t = startEnd_startP / startEnd2;\n if (clampToLine) {\n t = clamp(t, 0, 1);\n }\n return t;\n }\n closestPointToPoint(point, clampToLine, target) {\n const t = this.closestPointToPointParameter(point, clampToLine);\n return this.delta(target).multiplyScalar(t).add(this.start);\n }\n applyMatrix4(matrix) {\n this.start.applyMatrix4(matrix);\n this.end.applyMatrix4(matrix);\n return this;\n }\n equals(line) {\n return line.start.equals(this.start) && line.end.equals(this.end);\n }\n clone() {\n return new this.constructor().copy(this);\n }\n}\nconst _vector$3 = /* @__PURE__ */ new Vector3();\nclass SpotLightHelper extends Object3D {\n constructor(light, color) {\n super();\n this.light = light;\n this.light.updateMatrixWorld();\n this.matrix = light.matrixWorld;\n this.matrixAutoUpdate = false;\n this.color = color;\n const geometry = new BufferGeometry();\n const positions = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 1,\n 0,\n 0,\n 0,\n -1,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n -1,\n 1\n ];\n for (let i = 0, j = 1, l = 32; i < l; i++, j++) {\n const p1 = i / l * Math.PI * 2;\n const p2 = j / l * Math.PI * 2;\n positions.push(Math.cos(p1), Math.sin(p1), 1, Math.cos(p2), Math.sin(p2), 1);\n }\n geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n const material = new LineBasicMaterial({fog: false, toneMapped: false});\n this.cone = new LineSegments(geometry, material);\n this.add(this.cone);\n this.update();\n }\n dispose() {\n this.cone.geometry.dispose();\n this.cone.material.dispose();\n }\n update() {\n this.light.updateMatrixWorld();\n const coneLength = this.light.distance ? this.light.distance : 1e3;\n const coneWidth = coneLength * Math.tan(this.light.angle);\n this.cone.scale.set(coneWidth, coneWidth, coneLength);\n _vector$3.setFromMatrixPosition(this.light.target.matrixWorld);\n this.cone.lookAt(_vector$3);\n if (this.color !== void 0) {\n this.cone.material.color.set(this.color);\n } else {\n this.cone.material.color.copy(this.light.color);\n }\n }\n}\nconst _vector$2 = /* @__PURE__ */ new Vector3();\nconst _boneMatrix = /* @__PURE__ */ new Matrix4();\nconst _matrixWorldInv = /* @__PURE__ */ new Matrix4();\nclass SkeletonHelper extends LineSegments {\n constructor(object) {\n const bones = getBoneList(object);\n const geometry = new BufferGeometry();\n const vertices = [];\n const colors = [];\n const color1 = new Color(0, 0, 1);\n const color2 = new Color(0, 1, 0);\n for (let i = 0; i < bones.length; i++) {\n const bone = bones[i];\n if (bone.parent && bone.parent.isBone) {\n vertices.push(0, 0, 0);\n vertices.push(0, 0, 0);\n colors.push(color1.r, color1.g, color1.b);\n colors.push(color2.r, color2.g, color2.b);\n }\n }\n geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n const material = new LineBasicMaterial({vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true});\n super(geometry, material);\n this.type = \"SkeletonHelper\";\n this.isSkeletonHelper = true;\n this.root = object;\n this.bones = bones;\n this.matrix = object.matrixWorld;\n this.matrixAutoUpdate = false;\n }\n updateMatrixWorld(force) {\n const bones = this.bones;\n const geometry = this.geometry;\n const position = geometry.getAttribute(\"position\");\n _matrixWorldInv.copy(this.root.matrixWorld).invert();\n for (let i = 0, j = 0; i < bones.length; i++) {\n const bone = bones[i];\n if (bone.parent && bone.parent.isBone) {\n _boneMatrix.multiplyMatrices(_matrixWorldInv, bone.matrixWorld);\n _vector$2.setFromMatrixPosition(_boneMatrix);\n position.setXYZ(j, _vector$2.x, _vector$2.y, _vector$2.z);\n _boneMatrix.multiplyMatrices(_matrixWorldInv, bone.parent.matrixWorld);\n _vector$2.setFromMatrixPosition(_boneMatrix);\n position.setXYZ(j + 1, _vector$2.x, _vector$2.y, _vector$2.z);\n j += 2;\n }\n }\n geometry.getAttribute(\"position\").needsUpdate = true;\n super.updateMatrixWorld(force);\n }\n}\nfunction getBoneList(object) {\n const boneList = [];\n if (object && object.isBone) {\n boneList.push(object);\n }\n for (let i = 0; i < object.children.length; i++) {\n boneList.push.apply(boneList, getBoneList(object.children[i]));\n }\n return boneList;\n}\nclass PointLightHelper extends Mesh {\n constructor(light, sphereSize, color) {\n const geometry = new SphereGeometry(sphereSize, 4, 2);\n const material = new MeshBasicMaterial({wireframe: true, fog: false, toneMapped: false});\n super(geometry, material);\n this.light = light;\n this.light.updateMatrixWorld();\n this.color = color;\n this.type = \"PointLightHelper\";\n this.matrix = this.light.matrixWorld;\n this.matrixAutoUpdate = false;\n this.update();\n }\n dispose() {\n this.geometry.dispose();\n this.material.dispose();\n }\n update() {\n if (this.color !== void 0) {\n this.material.color.set(this.color);\n } else {\n this.material.color.copy(this.light.color);\n }\n }\n}\nconst _vector$1 = /* @__PURE__ */ new Vector3();\nconst _color1 = /* @__PURE__ */ new Color();\nconst _color2 = /* @__PURE__ */ new Color();\nclass HemisphereLightHelper extends Object3D {\n constructor(light, size, color) {\n super();\n this.light = light;\n this.light.updateMatrixWorld();\n this.matrix = light.matrixWorld;\n this.matrixAutoUpdate = false;\n this.color = color;\n const geometry = new OctahedronGeometry(size);\n geometry.rotateY(Math.PI * 0.5);\n this.material = new MeshBasicMaterial({wireframe: true, fog: false, toneMapped: false});\n if (this.color === void 0)\n this.material.vertexColors = true;\n const position = geometry.getAttribute(\"position\");\n const colors = new Float32Array(position.count * 3);\n geometry.setAttribute(\"color\", new BufferAttribute(colors, 3));\n this.add(new Mesh(geometry, this.material));\n this.update();\n }\n dispose() {\n this.children[0].geometry.dispose();\n this.children[0].material.dispose();\n }\n update() {\n const mesh = this.children[0];\n if (this.color !== void 0) {\n this.material.color.set(this.color);\n } else {\n const colors = mesh.geometry.getAttribute(\"color\");\n _color1.copy(this.light.color);\n _color2.copy(this.light.groundColor);\n for (let i = 0, l = colors.count; i < l; i++) {\n const color = i < l / 2 ? _color1 : _color2;\n colors.setXYZ(i, color.r, color.g, color.b);\n }\n colors.needsUpdate = true;\n }\n mesh.lookAt(_vector$1.setFromMatrixPosition(this.light.matrixWorld).negate());\n }\n}\nclass GridHelper extends LineSegments {\n constructor(size = 10, divisions = 10, color1 = 4473924, color2 = 8947848) {\n color1 = new Color(color1);\n color2 = new Color(color2);\n const center = divisions / 2;\n const step = size / divisions;\n const halfSize = size / 2;\n const vertices = [], colors = [];\n for (let i = 0, j = 0, k = -halfSize; i <= divisions; i++, k += step) {\n vertices.push(-halfSize, 0, k, halfSize, 0, k);\n vertices.push(k, 0, -halfSize, k, 0, halfSize);\n const color = i === center ? color1 : color2;\n color.toArray(colors, j);\n j += 3;\n color.toArray(colors, j);\n j += 3;\n color.toArray(colors, j);\n j += 3;\n color.toArray(colors, j);\n j += 3;\n }\n const geometry = new BufferGeometry();\n geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n const material = new LineBasicMaterial({vertexColors: true, toneMapped: false});\n super(geometry, material);\n this.type = \"GridHelper\";\n }\n}\nclass PolarGridHelper extends LineSegments {\n constructor(radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 4473924, color2 = 8947848) {\n color1 = new Color(color1);\n color2 = new Color(color2);\n const vertices = [];\n const colors = [];\n for (let i = 0; i <= radials; i++) {\n const v = i / radials * (Math.PI * 2);\n const x = Math.sin(v) * radius;\n const z = Math.cos(v) * radius;\n vertices.push(0, 0, 0);\n vertices.push(x, 0, z);\n const color = i & 1 ? color1 : color2;\n colors.push(color.r, color.g, color.b);\n colors.push(color.r, color.g, color.b);\n }\n for (let i = 0; i <= circles; i++) {\n const color = i & 1 ? color1 : color2;\n const r = radius - radius / circles * i;\n for (let j = 0; j < divisions; j++) {\n let v = j / divisions * (Math.PI * 2);\n let x = Math.sin(v) * r;\n let z = Math.cos(v) * r;\n vertices.push(x, 0, z);\n colors.push(color.r, color.g, color.b);\n v = (j + 1) / divisions * (Math.PI * 2);\n x = Math.sin(v) * r;\n z = Math.cos(v) * r;\n vertices.push(x, 0, z);\n colors.push(color.r, color.g, color.b);\n }\n }\n const geometry = new BufferGeometry();\n geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n const material = new LineBasicMaterial({vertexColors: true, toneMapped: false});\n super(geometry, material);\n this.type = \"PolarGridHelper\";\n }\n}\nconst _v1 = /* @__PURE__ */ new Vector3();\nconst _v2 = /* @__PURE__ */ new Vector3();\nconst _v3 = /* @__PURE__ */ new Vector3();\nclass DirectionalLightHelper extends Object3D {\n constructor(light, size, color) {\n super();\n this.light = light;\n this.light.updateMatrixWorld();\n this.matrix = light.matrixWorld;\n this.matrixAutoUpdate = false;\n this.color = color;\n if (size === void 0)\n size = 1;\n let geometry = new BufferGeometry();\n geometry.setAttribute(\"position\", new Float32BufferAttribute([\n -size,\n size,\n 0,\n size,\n size,\n 0,\n size,\n -size,\n 0,\n -size,\n -size,\n 0,\n -size,\n size,\n 0\n ], 3));\n const material = new LineBasicMaterial({fog: false, toneMapped: false});\n this.lightPlane = new Line(geometry, material);\n this.add(this.lightPlane);\n geometry = new BufferGeometry();\n geometry.setAttribute(\"position\", new Float32BufferAttribute([0, 0, 0, 0, 0, 1], 3));\n this.targetLine = new Line(geometry, material);\n this.add(this.targetLine);\n this.update();\n }\n dispose() {\n this.lightPlane.geometry.dispose();\n this.lightPlane.material.dispose();\n this.targetLine.geometry.dispose();\n this.targetLine.material.dispose();\n }\n update() {\n _v1.setFromMatrixPosition(this.light.matrixWorld);\n _v2.setFromMatrixPosition(this.light.target.matrixWorld);\n _v3.subVectors(_v2, _v1);\n this.lightPlane.lookAt(_v2);\n if (this.color !== void 0) {\n this.lightPlane.material.color.set(this.color);\n this.targetLine.material.color.set(this.color);\n } else {\n this.lightPlane.material.color.copy(this.light.color);\n this.targetLine.material.color.copy(this.light.color);\n }\n this.targetLine.lookAt(_v2);\n this.targetLine.scale.z = _v3.length();\n }\n}\nconst _vector = /* @__PURE__ */ new Vector3();\nconst _camera = /* @__PURE__ */ new Camera();\nclass CameraHelper extends LineSegments {\n constructor(camera) {\n const geometry = new BufferGeometry();\n const material = new LineBasicMaterial({color: 16777215, vertexColors: true, toneMapped: false});\n const vertices = [];\n const colors = [];\n const pointMap = {};\n const colorFrustum = new Color(16755200);\n const colorCone = new Color(16711680);\n const colorUp = new Color(43775);\n const colorTarget = new Color(16777215);\n const colorCross = new Color(3355443);\n addLine(\"n1\", \"n2\", colorFrustum);\n addLine(\"n2\", \"n4\", colorFrustum);\n addLine(\"n4\", \"n3\", colorFrustum);\n addLine(\"n3\", \"n1\", colorFrustum);\n addLine(\"f1\", \"f2\", colorFrustum);\n addLine(\"f2\", \"f4\", colorFrustum);\n addLine(\"f4\", \"f3\", colorFrustum);\n addLine(\"f3\", \"f1\", colorFrustum);\n addLine(\"n1\", \"f1\", colorFrustum);\n addLine(\"n2\", \"f2\", colorFrustum);\n addLine(\"n3\", \"f3\", colorFrustum);\n addLine(\"n4\", \"f4\", colorFrustum);\n addLine(\"p\", \"n1\", colorCone);\n addLine(\"p\", \"n2\", colorCone);\n addLine(\"p\", \"n3\", colorCone);\n addLine(\"p\", \"n4\", colorCone);\n addLine(\"u1\", \"u2\", colorUp);\n addLine(\"u2\", \"u3\", colorUp);\n addLine(\"u3\", \"u1\", colorUp);\n addLine(\"c\", \"t\", colorTarget);\n addLine(\"p\", \"c\", colorCross);\n addLine(\"cn1\", \"cn2\", colorCross);\n addLine(\"cn3\", \"cn4\", colorCross);\n addLine(\"cf1\", \"cf2\", colorCross);\n addLine(\"cf3\", \"cf4\", colorCross);\n function addLine(a, b, color) {\n addPoint(a, color);\n addPoint(b, color);\n }\n function addPoint(id, color) {\n vertices.push(0, 0, 0);\n colors.push(color.r, color.g, color.b);\n if (pointMap[id] === void 0) {\n pointMap[id] = [];\n }\n pointMap[id].push(vertices.length / 3 - 1);\n }\n geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n super(geometry, material);\n this.type = \"CameraHelper\";\n this.camera = camera;\n if (this.camera.updateProjectionMatrix)\n this.camera.updateProjectionMatrix();\n this.matrix = camera.matrixWorld;\n this.matrixAutoUpdate = false;\n this.pointMap = pointMap;\n this.update();\n }\n update() {\n const geometry = this.geometry;\n const pointMap = this.pointMap;\n const w = 1, h = 1;\n _camera.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse);\n setPoint(\"c\", pointMap, geometry, _camera, 0, 0, -1);\n setPoint(\"t\", pointMap, geometry, _camera, 0, 0, 1);\n setPoint(\"n1\", pointMap, geometry, _camera, -w, -h, -1);\n setPoint(\"n2\", pointMap, geometry, _camera, w, -h, -1);\n setPoint(\"n3\", pointMap, geometry, _camera, -w, h, -1);\n setPoint(\"n4\", pointMap, geometry, _camera, w, h, -1);\n setPoint(\"f1\", pointMap, geometry, _camera, -w, -h, 1);\n setPoint(\"f2\", pointMap, geometry, _camera, w, -h, 1);\n setPoint(\"f3\", pointMap, geometry, _camera, -w, h, 1);\n setPoint(\"f4\", pointMap, geometry, _camera, w, h, 1);\n setPoint(\"u1\", pointMap, geometry, _camera, w * 0.7, h * 1.1, -1);\n setPoint(\"u2\", pointMap, geometry, _camera, -w * 0.7, h * 1.1, -1);\n setPoint(\"u3\", pointMap, geometry, _camera, 0, h * 2, -1);\n setPoint(\"cf1\", pointMap, geometry, _camera, -w, 0, 1);\n setPoint(\"cf2\", pointMap, geometry, _camera, w, 0, 1);\n setPoint(\"cf3\", pointMap, geometry, _camera, 0, -h, 1);\n setPoint(\"cf4\", pointMap, geometry, _camera, 0, h, 1);\n setPoint(\"cn1\", pointMap, geometry, _camera, -w, 0, -1);\n setPoint(\"cn2\", pointMap, geometry, _camera, w, 0, -1);\n setPoint(\"cn3\", pointMap, geometry, _camera, 0, -h, -1);\n setPoint(\"cn4\", pointMap, geometry, _camera, 0, h, -1);\n geometry.getAttribute(\"position\").needsUpdate = true;\n }\n dispose() {\n this.geometry.dispose();\n this.material.dispose();\n }\n}\nfunction setPoint(point, pointMap, geometry, camera, x, y, z) {\n _vector.set(x, y, z).unproject(camera);\n const points = pointMap[point];\n if (points !== void 0) {\n const position = geometry.getAttribute(\"position\");\n for (let i = 0, l = points.length; i < l; i++) {\n position.setXYZ(points[i], _vector.x, _vector.y, _vector.z);\n }\n }\n}\nconst _box = /* @__PURE__ */ new Box3();\nclass BoxHelper extends LineSegments {\n constructor(object, color = 16776960) {\n const 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 const positions = new Float32Array(8 * 3);\n const geometry = new BufferGeometry();\n geometry.setIndex(new BufferAttribute(indices, 1));\n geometry.setAttribute(\"position\", new BufferAttribute(positions, 3));\n super(geometry, new LineBasicMaterial({color, toneMapped: false}));\n this.object = object;\n this.type = \"BoxHelper\";\n this.matrixAutoUpdate = false;\n this.update();\n }\n update(object) {\n if (object !== void 0) {\n console.warn(\"THREE.BoxHelper: .update() has no longer arguments.\");\n }\n if (this.object !== void 0) {\n _box.setFromObject(this.object);\n }\n if (_box.isEmpty())\n return;\n const min = _box.min;\n const max = _box.max;\n const position = this.geometry.attributes.position;\n const array = position.array;\n array[0] = max.x;\n array[1] = max.y;\n array[2] = max.z;\n array[3] = min.x;\n array[4] = max.y;\n array[5] = max.z;\n array[6] = min.x;\n array[7] = min.y;\n array[8] = max.z;\n array[9] = max.x;\n array[10] = min.y;\n array[11] = max.z;\n array[12] = max.x;\n array[13] = max.y;\n array[14] = min.z;\n array[15] = min.x;\n array[16] = max.y;\n array[17] = min.z;\n array[18] = min.x;\n array[19] = min.y;\n array[20] = min.z;\n array[21] = max.x;\n array[22] = min.y;\n array[23] = min.z;\n position.needsUpdate = true;\n this.geometry.computeBoundingSphere();\n }\n setFromObject(object) {\n this.object = object;\n this.update();\n return this;\n }\n copy(source) {\n LineSegments.prototype.copy.call(this, source);\n this.object = source.object;\n return this;\n }\n}\nclass Box3Helper extends LineSegments {\n constructor(box, color = 16776960) {\n const 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 const 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 const geometry = new BufferGeometry();\n geometry.setIndex(new BufferAttribute(indices, 1));\n geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n super(geometry, new LineBasicMaterial({color, toneMapped: false}));\n this.box = box;\n this.type = \"Box3Helper\";\n this.geometry.computeBoundingSphere();\n }\n updateMatrixWorld(force) {\n const box = this.box;\n if (box.isEmpty())\n return;\n box.getCenter(this.position);\n box.getSize(this.scale);\n this.scale.multiplyScalar(0.5);\n super.updateMatrixWorld(force);\n }\n}\nclass PlaneHelper extends Line {\n constructor(plane, size = 1, hex = 16776960) {\n const color = hex;\n const 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 const geometry = new BufferGeometry();\n geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n geometry.computeBoundingSphere();\n super(geometry, new LineBasicMaterial({color, toneMapped: false}));\n this.type = \"PlaneHelper\";\n this.plane = plane;\n this.size = size;\n const positions2 = [1, 1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1, -1, 1];\n const geometry2 = new BufferGeometry();\n geometry2.setAttribute(\"position\", new Float32BufferAttribute(positions2, 3));\n geometry2.computeBoundingSphere();\n this.add(new Mesh(geometry2, new MeshBasicMaterial({color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false})));\n }\n updateMatrixWorld(force) {\n let scale = -this.plane.constant;\n if (Math.abs(scale) < 1e-8)\n scale = 1e-8;\n this.scale.set(0.5 * this.size, 0.5 * this.size, scale);\n this.children[0].material.side = scale < 0 ? BackSide : FrontSide;\n this.lookAt(this.plane.normal);\n super.updateMatrixWorld(force);\n }\n}\nconst _axis = /* @__PURE__ */ new Vector3();\nlet _lineGeometry, _coneGeometry;\nclass ArrowHelper extends Object3D {\n constructor(dir = new Vector3(0, 0, 1), origin = new Vector3(0, 0, 0), length = 1, color = 16776960, headLength = length * 0.2, headWidth = headLength * 0.2) {\n super();\n this.type = \"ArrowHelper\";\n if (_lineGeometry === void 0) {\n _lineGeometry = new BufferGeometry();\n _lineGeometry.setAttribute(\"position\", new Float32BufferAttribute([0, 0, 0, 0, 1, 0], 3));\n _coneGeometry = new CylinderGeometry(0, 0.5, 1, 5, 1);\n _coneGeometry.translate(0, -0.5, 0);\n }\n this.position.copy(origin);\n this.line = new Line(_lineGeometry, new LineBasicMaterial({color, toneMapped: false}));\n this.line.matrixAutoUpdate = false;\n this.add(this.line);\n this.cone = new Mesh(_coneGeometry, new MeshBasicMaterial({color, toneMapped: false}));\n this.cone.matrixAutoUpdate = false;\n this.add(this.cone);\n this.setDirection(dir);\n this.setLength(length, headLength, headWidth);\n }\n setDirection(dir) {\n if (dir.y > 0.99999) {\n this.quaternion.set(0, 0, 0, 1);\n } else if (dir.y < -0.99999) {\n this.quaternion.set(1, 0, 0, 0);\n } else {\n _axis.set(dir.z, 0, -dir.x).normalize();\n const radians = Math.acos(dir.y);\n this.quaternion.setFromAxisAngle(_axis, radians);\n }\n }\n setLength(length, headLength = length * 0.2, headWidth = headLength * 0.2) {\n this.line.scale.set(1, Math.max(1e-4, length - headLength), 1);\n this.line.updateMatrix();\n this.cone.scale.set(headWidth, headLength, headWidth);\n this.cone.position.y = length;\n this.cone.updateMatrix();\n }\n setColor(color) {\n this.line.material.color.set(color);\n this.cone.material.color.set(color);\n }\n copy(source) {\n super.copy(source, false);\n this.line.copy(source.line);\n this.cone.copy(source.cone);\n return this;\n }\n}\nclass AxesHelper extends LineSegments {\n constructor(size = 1) {\n const vertices = [\n 0,\n 0,\n 0,\n size,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n size,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n size\n ];\n const colors = [\n 1,\n 0,\n 0,\n 1,\n 0.6,\n 0,\n 0,\n 1,\n 0,\n 0.6,\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0.6,\n 1\n ];\n const geometry = new BufferGeometry();\n geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n const material = new LineBasicMaterial({vertexColors: true, toneMapped: false});\n super(geometry, material);\n this.type = \"AxesHelper\";\n }\n setColors(xAxisColor, yAxisColor, zAxisColor) {\n const color = new Color();\n const array = this.geometry.attributes.color.array;\n color.set(xAxisColor);\n color.toArray(array, 0);\n color.toArray(array, 3);\n color.set(yAxisColor);\n color.toArray(array, 6);\n color.toArray(array, 9);\n color.set(zAxisColor);\n color.toArray(array, 12);\n color.toArray(array, 15);\n this.geometry.attributes.color.needsUpdate = true;\n return this;\n }\n dispose() {\n this.geometry.dispose();\n this.material.dispose();\n }\n}\nclass ShapePath {\n constructor() {\n this.type = \"ShapePath\";\n this.color = new Color();\n this.subPaths = [];\n this.currentPath = null;\n }\n moveTo(x, y) {\n this.currentPath = new Path();\n this.subPaths.push(this.currentPath);\n this.currentPath.moveTo(x, y);\n return this;\n }\n lineTo(x, y) {\n this.currentPath.lineTo(x, y);\n return this;\n }\n quadraticCurveTo(aCPx, aCPy, aX, aY) {\n this.currentPath.quadraticCurveTo(aCPx, aCPy, aX, aY);\n return this;\n }\n bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n this.currentPath.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY);\n return this;\n }\n splineThru(pts) {\n this.currentPath.splineThru(pts);\n return this;\n }\n toShapes(isCCW, noHoles) {\n function toShapesNoHoles(inSubpaths) {\n const shapes2 = [];\n for (let i = 0, l = inSubpaths.length; i < l; i++) {\n const tmpPath2 = inSubpaths[i];\n const tmpShape2 = new Shape();\n tmpShape2.curves = tmpPath2.curves;\n shapes2.push(tmpShape2);\n }\n return shapes2;\n }\n function isPointInsidePolygon(inPt, inPolygon) {\n const polyLen = inPolygon.length;\n let inside = false;\n for (let p = polyLen - 1, q = 0; q < polyLen; p = q++) {\n let edgeLowPt = inPolygon[p];\n let edgeHighPt = inPolygon[q];\n let edgeDx = edgeHighPt.x - edgeLowPt.x;\n let edgeDy = edgeHighPt.y - edgeLowPt.y;\n if (Math.abs(edgeDy) > Number.EPSILON) {\n if (edgeDy < 0) {\n edgeLowPt = inPolygon[q];\n edgeDx = -edgeDx;\n edgeHighPt = inPolygon[p];\n edgeDy = -edgeDy;\n }\n if (inPt.y < edgeLowPt.y || inPt.y > edgeHighPt.y)\n continue;\n if (inPt.y === edgeLowPt.y) {\n if (inPt.x === edgeLowPt.x)\n return true;\n } else {\n const perpEdge = edgeDy * (inPt.x - edgeLowPt.x) - edgeDx * (inPt.y - edgeLowPt.y);\n if (perpEdge === 0)\n return true;\n if (perpEdge < 0)\n continue;\n inside = !inside;\n }\n } else {\n if (inPt.y !== edgeLowPt.y)\n continue;\n if (edgeHighPt.x <= inPt.x && inPt.x <= edgeLowPt.x || edgeLowPt.x <= inPt.x && inPt.x <= edgeHighPt.x)\n return true;\n }\n }\n return inside;\n }\n const isClockWise = ShapeUtils.isClockWise;\n const subPaths = this.subPaths;\n if (subPaths.length === 0)\n return [];\n if (noHoles === true)\n return toShapesNoHoles(subPaths);\n let solid, tmpPath, tmpShape;\n const shapes = [];\n if (subPaths.length === 1) {\n tmpPath = subPaths[0];\n tmpShape = new Shape();\n tmpShape.curves = tmpPath.curves;\n shapes.push(tmpShape);\n return shapes;\n }\n let holesFirst = !isClockWise(subPaths[0].getPoints());\n holesFirst = isCCW ? !holesFirst : holesFirst;\n const betterShapeHoles = [];\n const newShapes = [];\n let newShapeHoles = [];\n let mainIdx = 0;\n let tmpPoints;\n newShapes[mainIdx] = void 0;\n newShapeHoles[mainIdx] = [];\n for (let i = 0, l = subPaths.length; i < l; i++) {\n tmpPath = subPaths[i];\n tmpPoints = tmpPath.getPoints();\n solid = isClockWise(tmpPoints);\n solid = isCCW ? !solid : solid;\n if (solid) {\n if (!holesFirst && newShapes[mainIdx])\n mainIdx++;\n newShapes[mainIdx] = {s: new Shape(), p: tmpPoints};\n newShapes[mainIdx].s.curves = tmpPath.curves;\n if (holesFirst)\n mainIdx++;\n newShapeHoles[mainIdx] = [];\n } else {\n newShapeHoles[mainIdx].push({h: tmpPath, p: tmpPoints[0]});\n }\n }\n if (!newShapes[0])\n return toShapesNoHoles(subPaths);\n if (newShapes.length > 1) {\n let ambiguous = false;\n const toChange = [];\n for (let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) {\n betterShapeHoles[sIdx] = [];\n }\n for (let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) {\n const sho = newShapeHoles[sIdx];\n for (let hIdx = 0; hIdx < sho.length; hIdx++) {\n const ho = sho[hIdx];\n let hole_unassigned = true;\n for (let s2Idx = 0; s2Idx < newShapes.length; s2Idx++) {\n if (isPointInsidePolygon(ho.p, newShapes[s2Idx].p)) {\n if (sIdx !== s2Idx)\n toChange.push({froms: sIdx, tos: s2Idx, hole: hIdx});\n if (hole_unassigned) {\n hole_unassigned = false;\n betterShapeHoles[s2Idx].push(ho);\n } else {\n ambiguous = true;\n }\n }\n }\n if (hole_unassigned) {\n betterShapeHoles[sIdx].push(ho);\n }\n }\n }\n if (toChange.length > 0) {\n if (!ambiguous)\n newShapeHoles = betterShapeHoles;\n }\n }\n let tmpHoles;\n for (let i = 0, il = newShapes.length; i < il; i++) {\n tmpShape = newShapes[i].s;\n shapes.push(tmpShape);\n tmpHoles = newShapeHoles[i];\n for (let j = 0, jl = tmpHoles.length; j < jl; j++) {\n tmpShape.holes.push(tmpHoles[j].h);\n }\n }\n return shapes;\n }\n}\nconst _floatView = new Float32Array(1);\nconst _int32View = new Int32Array(_floatView.buffer);\nclass DataUtils {\n static toHalfFloat(val) {\n if (val > 65504) {\n console.warn(\"THREE.DataUtils.toHalfFloat(): value exceeds 65504.\");\n val = 65504;\n }\n _floatView[0] = val;\n const x = _int32View[0];\n let bits = x >> 16 & 32768;\n let m = x >> 12 & 2047;\n const e = x >> 23 & 255;\n if (e < 103)\n return bits;\n if (e > 142) {\n bits |= 31744;\n bits |= (e == 255 ? 0 : 1) && x & 8388607;\n return bits;\n }\n if (e < 113) {\n m |= 2048;\n bits |= (m >> 114 - e) + (m >> 113 - e & 1);\n return bits;\n }\n bits |= e - 112 << 10 | m >> 1;\n bits += m & 1;\n return bits;\n }\n}\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\nfunction MeshFaceMaterial(materials) {\n console.warn(\"THREE.MeshFaceMaterial has been removed. Use an Array instead.\");\n return materials;\n}\nfunction MultiMaterial(materials = []) {\n console.warn(\"THREE.MultiMaterial has been removed. Use an Array instead.\");\n materials.isMultiMaterial = true;\n materials.materials = materials;\n materials.clone = function() {\n return materials.slice();\n };\n return materials;\n}\nfunction PointCloud(geometry, material) {\n console.warn(\"THREE.PointCloud has been renamed to THREE.Points.\");\n return new Points(geometry, material);\n}\nfunction Particle(material) {\n console.warn(\"THREE.Particle has been renamed to THREE.Sprite.\");\n return new Sprite(material);\n}\nfunction ParticleSystem(geometry, material) {\n console.warn(\"THREE.ParticleSystem has been renamed to THREE.Points.\");\n return new Points(geometry, material);\n}\nfunction PointCloudMaterial(parameters) {\n console.warn(\"THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.\");\n return new PointsMaterial(parameters);\n}\nfunction ParticleBasicMaterial(parameters) {\n console.warn(\"THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.\");\n return new PointsMaterial(parameters);\n}\nfunction ParticleSystemMaterial(parameters) {\n console.warn(\"THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.\");\n return new PointsMaterial(parameters);\n}\nfunction Vertex(x, y, z) {\n console.warn(\"THREE.Vertex has been removed. Use THREE.Vector3 instead.\");\n return new Vector3(x, y, z);\n}\nfunction DynamicBufferAttribute(array, itemSize) {\n console.warn(\"THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.\");\n return new BufferAttribute(array, itemSize).setUsage(DynamicDrawUsage);\n}\nfunction Int8Attribute(array, itemSize) {\n console.warn(\"THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.\");\n return new Int8BufferAttribute(array, itemSize);\n}\nfunction Uint8Attribute(array, itemSize) {\n console.warn(\"THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.\");\n return new Uint8BufferAttribute(array, itemSize);\n}\nfunction Uint8ClampedAttribute(array, itemSize) {\n console.warn(\"THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.\");\n return new Uint8ClampedBufferAttribute(array, itemSize);\n}\nfunction Int16Attribute(array, itemSize) {\n console.warn(\"THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.\");\n return new Int16BufferAttribute(array, itemSize);\n}\nfunction Uint16Attribute(array, itemSize) {\n console.warn(\"THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.\");\n return new Uint16BufferAttribute(array, itemSize);\n}\nfunction Int32Attribute(array, itemSize) {\n console.warn(\"THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.\");\n return new Int32BufferAttribute(array, itemSize);\n}\nfunction Uint32Attribute(array, itemSize) {\n console.warn(\"THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.\");\n return new Uint32BufferAttribute(array, itemSize);\n}\nfunction Float32Attribute(array, itemSize) {\n console.warn(\"THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.\");\n return new Float32BufferAttribute(array, itemSize);\n}\nfunction Float64Attribute(array, itemSize) {\n console.warn(\"THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.\");\n return new Float64BufferAttribute(array, itemSize);\n}\nCurve.create = function(construct, getPoint) {\n console.log(\"THREE.Curve.create() has been deprecated\");\n construct.prototype = Object.create(Curve.prototype);\n construct.prototype.constructor = construct;\n construct.prototype.getPoint = getPoint;\n return construct;\n};\nPath.prototype.fromPoints = function(points) {\n console.warn(\"THREE.Path: .fromPoints() has been renamed to .setFromPoints().\");\n return this.setFromPoints(points);\n};\nfunction AxisHelper(size) {\n console.warn(\"THREE.AxisHelper has been renamed to THREE.AxesHelper.\");\n return new AxesHelper(size);\n}\nfunction BoundingBoxHelper(object, color) {\n console.warn(\"THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.\");\n return new BoxHelper(object, color);\n}\nfunction EdgesHelper(object, hex) {\n console.warn(\"THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.\");\n return new LineSegments(new EdgesGeometry(object.geometry), new LineBasicMaterial({color: hex !== void 0 ? hex : 16777215}));\n}\nGridHelper.prototype.setColors = function() {\n console.error(\"THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.\");\n};\nSkeletonHelper.prototype.update = function() {\n console.error(\"THREE.SkeletonHelper: update() no longer needs to be called.\");\n};\nfunction WireframeHelper(object, hex) {\n console.warn(\"THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.\");\n return new LineSegments(new WireframeGeometry(object.geometry), new LineBasicMaterial({color: hex !== void 0 ? hex : 16777215}));\n}\nLoader.prototype.extractUrlBase = function(url) {\n console.warn(\"THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.\");\n return LoaderUtils.extractUrlBase(url);\n};\nLoader.Handlers = {\n add: function() {\n console.error(\"THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.\");\n },\n get: function() {\n console.error(\"THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.\");\n }\n};\nfunction XHRLoader(manager) {\n console.warn(\"THREE.XHRLoader has been renamed to THREE.FileLoader.\");\n return new FileLoader(manager);\n}\nfunction BinaryTextureLoader(manager) {\n console.warn(\"THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.\");\n return new DataTextureLoader(manager);\n}\nBox2.prototype.center = function(optionalTarget) {\n console.warn(\"THREE.Box2: .center() has been renamed to .getCenter().\");\n return this.getCenter(optionalTarget);\n};\nBox2.prototype.empty = function() {\n console.warn(\"THREE.Box2: .empty() has been renamed to .isEmpty().\");\n return this.isEmpty();\n};\nBox2.prototype.isIntersectionBox = function(box) {\n console.warn(\"THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().\");\n return this.intersectsBox(box);\n};\nBox2.prototype.size = function(optionalTarget) {\n console.warn(\"THREE.Box2: .size() has been renamed to .getSize().\");\n return this.getSize(optionalTarget);\n};\nBox3.prototype.center = function(optionalTarget) {\n console.warn(\"THREE.Box3: .center() has been renamed to .getCenter().\");\n return this.getCenter(optionalTarget);\n};\nBox3.prototype.empty = function() {\n console.warn(\"THREE.Box3: .empty() has been renamed to .isEmpty().\");\n return this.isEmpty();\n};\nBox3.prototype.isIntersectionBox = function(box) {\n console.warn(\"THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().\");\n return this.intersectsBox(box);\n};\nBox3.prototype.isIntersectionSphere = function(sphere) {\n console.warn(\"THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().\");\n return this.intersectsSphere(sphere);\n};\nBox3.prototype.size = function(optionalTarget) {\n console.warn(\"THREE.Box3: .size() has been renamed to .getSize().\");\n return this.getSize(optionalTarget);\n};\nSphere.prototype.empty = function() {\n console.warn(\"THREE.Sphere: .empty() has been renamed to .isEmpty().\");\n return this.isEmpty();\n};\nFrustum.prototype.setFromMatrix = function(m) {\n console.warn(\"THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().\");\n return this.setFromProjectionMatrix(m);\n};\nLine3.prototype.center = function(optionalTarget) {\n console.warn(\"THREE.Line3: .center() has been renamed to .getCenter().\");\n return this.getCenter(optionalTarget);\n};\nMatrix3.prototype.flattenToArrayOffset = function(array, offset) {\n console.warn(\"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\");\n return this.toArray(array, offset);\n};\nMatrix3.prototype.multiplyVector3 = function(vector) {\n console.warn(\"THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.\");\n return vector.applyMatrix3(this);\n};\nMatrix3.prototype.multiplyVector3Array = function() {\n console.error(\"THREE.Matrix3: .multiplyVector3Array() has been removed.\");\n};\nMatrix3.prototype.applyToBufferAttribute = function(attribute) {\n console.warn(\"THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.\");\n return attribute.applyMatrix3(this);\n};\nMatrix3.prototype.applyToVector3Array = function() {\n console.error(\"THREE.Matrix3: .applyToVector3Array() has been removed.\");\n};\nMatrix3.prototype.getInverse = function(matrix) {\n console.warn(\"THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.\");\n return this.copy(matrix).invert();\n};\nMatrix4.prototype.extractPosition = function(m) {\n console.warn(\"THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().\");\n return this.copyPosition(m);\n};\nMatrix4.prototype.flattenToArrayOffset = function(array, offset) {\n console.warn(\"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\");\n return this.toArray(array, offset);\n};\nMatrix4.prototype.getPosition = function() {\n console.warn(\"THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.\");\n return new Vector3().setFromMatrixColumn(this, 3);\n};\nMatrix4.prototype.setRotationFromQuaternion = function(q) {\n console.warn(\"THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().\");\n return this.makeRotationFromQuaternion(q);\n};\nMatrix4.prototype.multiplyToArray = function() {\n console.warn(\"THREE.Matrix4: .multiplyToArray() has been removed.\");\n};\nMatrix4.prototype.multiplyVector3 = function(vector) {\n console.warn(\"THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.\");\n return vector.applyMatrix4(this);\n};\nMatrix4.prototype.multiplyVector4 = function(vector) {\n console.warn(\"THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.\");\n return vector.applyMatrix4(this);\n};\nMatrix4.prototype.multiplyVector3Array = function() {\n console.error(\"THREE.Matrix4: .multiplyVector3Array() has been removed.\");\n};\nMatrix4.prototype.rotateAxis = function(v) {\n console.warn(\"THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.\");\n v.transformDirection(this);\n};\nMatrix4.prototype.crossVector = function(vector) {\n console.warn(\"THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.\");\n return vector.applyMatrix4(this);\n};\nMatrix4.prototype.translate = function() {\n console.error(\"THREE.Matrix4: .translate() has been removed.\");\n};\nMatrix4.prototype.rotateX = function() {\n console.error(\"THREE.Matrix4: .rotateX() has been removed.\");\n};\nMatrix4.prototype.rotateY = function() {\n console.error(\"THREE.Matrix4: .rotateY() has been removed.\");\n};\nMatrix4.prototype.rotateZ = function() {\n console.error(\"THREE.Matrix4: .rotateZ() has been removed.\");\n};\nMatrix4.prototype.rotateByAxis = function() {\n console.error(\"THREE.Matrix4: .rotateByAxis() has been removed.\");\n};\nMatrix4.prototype.applyToBufferAttribute = function(attribute) {\n console.warn(\"THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.\");\n return attribute.applyMatrix4(this);\n};\nMatrix4.prototype.applyToVector3Array = function() {\n console.error(\"THREE.Matrix4: .applyToVector3Array() has been removed.\");\n};\nMatrix4.prototype.makeFrustum = function(left, right, bottom, top, near, far) {\n console.warn(\"THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.\");\n return this.makePerspective(left, right, top, bottom, near, far);\n};\nMatrix4.prototype.getInverse = function(matrix) {\n console.warn(\"THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.\");\n return this.copy(matrix).invert();\n};\nPlane.prototype.isIntersectionLine = function(line) {\n console.warn(\"THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().\");\n return this.intersectsLine(line);\n};\nQuaternion.prototype.multiplyVector3 = function(vector) {\n console.warn(\"THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.\");\n return vector.applyQuaternion(this);\n};\nQuaternion.prototype.inverse = function() {\n console.warn(\"THREE.Quaternion: .inverse() has been renamed to invert().\");\n return this.invert();\n};\nRay.prototype.isIntersectionBox = function(box) {\n console.warn(\"THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().\");\n return this.intersectsBox(box);\n};\nRay.prototype.isIntersectionPlane = function(plane) {\n console.warn(\"THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().\");\n return this.intersectsPlane(plane);\n};\nRay.prototype.isIntersectionSphere = function(sphere) {\n console.warn(\"THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().\");\n return this.intersectsSphere(sphere);\n};\nTriangle.prototype.area = function() {\n console.warn(\"THREE.Triangle: .area() has been renamed to .getArea().\");\n return this.getArea();\n};\nTriangle.prototype.barycoordFromPoint = function(point, target) {\n console.warn(\"THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().\");\n return this.getBarycoord(point, target);\n};\nTriangle.prototype.midpoint = function(target) {\n console.warn(\"THREE.Triangle: .midpoint() has been renamed to .getMidpoint().\");\n return this.getMidpoint(target);\n};\nTriangle.prototypenormal = function(target) {\n console.warn(\"THREE.Triangle: .normal() has been renamed to .getNormal().\");\n return this.getNormal(target);\n};\nTriangle.prototype.plane = function(target) {\n console.warn(\"THREE.Triangle: .plane() has been renamed to .getPlane().\");\n return this.getPlane(target);\n};\nTriangle.barycoordFromPoint = function(point, a, b, c, target) {\n console.warn(\"THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().\");\n return Triangle.getBarycoord(point, a, b, c, target);\n};\nTriangle.normal = function(a, b, c, target) {\n console.warn(\"THREE.Triangle: .normal() has been renamed to .getNormal().\");\n return Triangle.getNormal(a, b, c, target);\n};\nShape.prototype.extractAllPoints = function(divisions) {\n console.warn(\"THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.\");\n return this.extractPoints(divisions);\n};\nShape.prototype.extrude = function(options) {\n console.warn(\"THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.\");\n return new ExtrudeGeometry(this, options);\n};\nShape.prototype.makeGeometry = function(options) {\n console.warn(\"THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.\");\n return new ShapeGeometry(this, options);\n};\nVector2.prototype.fromAttribute = function(attribute, index, offset) {\n console.warn(\"THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().\");\n return this.fromBufferAttribute(attribute, index, offset);\n};\nVector2.prototype.distanceToManhattan = function(v) {\n console.warn(\"THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().\");\n return this.manhattanDistanceTo(v);\n};\nVector2.prototype.lengthManhattan = function() {\n console.warn(\"THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().\");\n return this.manhattanLength();\n};\nVector3.prototype.setEulerFromRotationMatrix = function() {\n console.error(\"THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.\");\n};\nVector3.prototype.setEulerFromQuaternion = function() {\n console.error(\"THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.\");\n};\nVector3.prototype.getPositionFromMatrix = function(m) {\n console.warn(\"THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().\");\n return this.setFromMatrixPosition(m);\n};\nVector3.prototype.getScaleFromMatrix = function(m) {\n console.warn(\"THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().\");\n return this.setFromMatrixScale(m);\n};\nVector3.prototype.getColumnFromMatrix = function(index, matrix) {\n console.warn(\"THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().\");\n return this.setFromMatrixColumn(matrix, index);\n};\nVector3.prototype.applyProjection = function(m) {\n console.warn(\"THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.\");\n return this.applyMatrix4(m);\n};\nVector3.prototype.fromAttribute = function(attribute, index, offset) {\n console.warn(\"THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().\");\n return this.fromBufferAttribute(attribute, index, offset);\n};\nVector3.prototype.distanceToManhattan = function(v) {\n console.warn(\"THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().\");\n return this.manhattanDistanceTo(v);\n};\nVector3.prototype.lengthManhattan = function() {\n console.warn(\"THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().\");\n return this.manhattanLength();\n};\nVector4.prototype.fromAttribute = function(attribute, index, offset) {\n console.warn(\"THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().\");\n return this.fromBufferAttribute(attribute, index, offset);\n};\nVector4.prototype.lengthManhattan = function() {\n console.warn(\"THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().\");\n return this.manhattanLength();\n};\nObject3D.prototype.getChildByName = function(name) {\n console.warn(\"THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().\");\n return this.getObjectByName(name);\n};\nObject3D.prototype.renderDepth = function() {\n console.warn(\"THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.\");\n};\nObject3D.prototype.translate = function(distance, axis) {\n console.warn(\"THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.\");\n return this.translateOnAxis(axis, distance);\n};\nObject3D.prototype.getWorldRotation = function() {\n console.error(\"THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.\");\n};\nObject3D.prototype.applyMatrix = function(matrix) {\n console.warn(\"THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().\");\n return this.applyMatrix4(matrix);\n};\nObject.defineProperties(Object3D.prototype, {\n eulerOrder: {\n get: function() {\n console.warn(\"THREE.Object3D: .eulerOrder is now .rotation.order.\");\n return this.rotation.order;\n },\n set: function(value) {\n console.warn(\"THREE.Object3D: .eulerOrder is now .rotation.order.\");\n this.rotation.order = value;\n }\n },\n useQuaternion: {\n get: function() {\n console.warn(\"THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.\");\n },\n set: function() {\n console.warn(\"THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.\");\n }\n }\n});\nMesh.prototype.setDrawMode = function() {\n console.error(\"THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.\");\n};\nObject.defineProperties(Mesh.prototype, {\n drawMode: {\n get: function() {\n console.error(\"THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.\");\n return TrianglesDrawMode;\n },\n set: function() {\n console.error(\"THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.\");\n }\n }\n});\nSkinnedMesh.prototype.initBones = function() {\n console.error(\"THREE.SkinnedMesh: initBones() has been removed.\");\n};\nPerspectiveCamera.prototype.setLens = function(focalLength, filmGauge) {\n console.warn(\"THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup.\");\n if (filmGauge !== void 0)\n this.filmGauge = filmGauge;\n this.setFocalLength(focalLength);\n};\nObject.defineProperties(Light.prototype, {\n onlyShadow: {\n set: function() {\n console.warn(\"THREE.Light: .onlyShadow has been removed.\");\n }\n },\n shadowCameraFov: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowCameraFov is now .shadow.camera.fov.\");\n this.shadow.camera.fov = value;\n }\n },\n shadowCameraLeft: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowCameraLeft is now .shadow.camera.left.\");\n this.shadow.camera.left = value;\n }\n },\n shadowCameraRight: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowCameraRight is now .shadow.camera.right.\");\n this.shadow.camera.right = value;\n }\n },\n shadowCameraTop: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowCameraTop is now .shadow.camera.top.\");\n this.shadow.camera.top = value;\n }\n },\n shadowCameraBottom: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.\");\n this.shadow.camera.bottom = value;\n }\n },\n shadowCameraNear: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowCameraNear is now .shadow.camera.near.\");\n this.shadow.camera.near = value;\n }\n },\n shadowCameraFar: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowCameraFar is now .shadow.camera.far.\");\n this.shadow.camera.far = value;\n }\n },\n shadowCameraVisible: {\n set: function() {\n console.warn(\"THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.\");\n }\n },\n shadowBias: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowBias is now .shadow.bias.\");\n this.shadow.bias = value;\n }\n },\n shadowDarkness: {\n set: function() {\n console.warn(\"THREE.Light: .shadowDarkness has been removed.\");\n }\n },\n shadowMapWidth: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.\");\n this.shadow.mapSize.width = value;\n }\n },\n shadowMapHeight: {\n set: function(value) {\n console.warn(\"THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.\");\n this.shadow.mapSize.height = value;\n }\n }\n});\nObject.defineProperties(BufferAttribute.prototype, {\n length: {\n get: function() {\n console.warn(\"THREE.BufferAttribute: .length has been deprecated. Use .count instead.\");\n return this.array.length;\n }\n },\n dynamic: {\n get: function() {\n console.warn(\"THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.\");\n return this.usage === DynamicDrawUsage;\n },\n set: function() {\n console.warn(\"THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.\");\n this.setUsage(DynamicDrawUsage);\n }\n }\n});\nBufferAttribute.prototype.setDynamic = function(value) {\n console.warn(\"THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.\");\n this.setUsage(value === true ? DynamicDrawUsage : StaticDrawUsage);\n return this;\n};\nBufferAttribute.prototype.copyIndicesArray = function() {\n console.error(\"THREE.BufferAttribute: .copyIndicesArray() has been removed.\");\n}, BufferAttribute.prototype.setArray = function() {\n console.error(\"THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers\");\n};\nBufferGeometry.prototype.addIndex = function(index) {\n console.warn(\"THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().\");\n this.setIndex(index);\n};\nBufferGeometry.prototype.addAttribute = function(name, attribute) {\n console.warn(\"THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().\");\n if (!(attribute && attribute.isBufferAttribute) && !(attribute && attribute.isInterleavedBufferAttribute)) {\n console.warn(\"THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).\");\n return this.setAttribute(name, new BufferAttribute(arguments[1], arguments[2]));\n }\n if (name === \"index\") {\n console.warn(\"THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.\");\n this.setIndex(attribute);\n return this;\n }\n return this.setAttribute(name, attribute);\n};\nBufferGeometry.prototype.addDrawCall = function(start, count, indexOffset) {\n if (indexOffset !== void 0) {\n console.warn(\"THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.\");\n }\n console.warn(\"THREE.BufferGeometry: .addDrawCall() is now .addGroup().\");\n this.addGroup(start, count);\n};\nBufferGeometry.prototype.clearDrawCalls = function() {\n console.warn(\"THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().\");\n this.clearGroups();\n};\nBufferGeometry.prototype.computeOffsets = function() {\n console.warn(\"THREE.BufferGeometry: .computeOffsets() has been removed.\");\n};\nBufferGeometry.prototype.removeAttribute = function(name) {\n console.warn(\"THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().\");\n return this.deleteAttribute(name);\n};\nBufferGeometry.prototype.applyMatrix = function(matrix) {\n console.warn(\"THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().\");\n return this.applyMatrix4(matrix);\n};\nObject.defineProperties(BufferGeometry.prototype, {\n drawcalls: {\n get: function() {\n console.error(\"THREE.BufferGeometry: .drawcalls has been renamed to .groups.\");\n return this.groups;\n }\n },\n offsets: {\n get: function() {\n console.warn(\"THREE.BufferGeometry: .offsets has been renamed to .groups.\");\n return this.groups;\n }\n }\n});\nInterleavedBuffer.prototype.setDynamic = function(value) {\n console.warn(\"THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.\");\n this.setUsage(value === true ? DynamicDrawUsage : StaticDrawUsage);\n return this;\n};\nInterleavedBuffer.prototype.setArray = function() {\n console.error(\"THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers\");\n};\nExtrudeGeometry.prototype.getArrays = function() {\n console.error(\"THREE.ExtrudeGeometry: .getArrays() has been removed.\");\n};\nExtrudeGeometry.prototype.addShapeList = function() {\n console.error(\"THREE.ExtrudeGeometry: .addShapeList() has been removed.\");\n};\nExtrudeGeometry.prototype.addShape = function() {\n console.error(\"THREE.ExtrudeGeometry: .addShape() has been removed.\");\n};\nScene.prototype.dispose = function() {\n console.error(\"THREE.Scene: .dispose() has been removed.\");\n};\nUniform.prototype.onUpdate = function() {\n console.warn(\"THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.\");\n return this;\n};\nObject.defineProperties(Material.prototype, {\n wrapAround: {\n get: function() {\n console.warn(\"THREE.Material: .wrapAround has been removed.\");\n },\n set: function() {\n console.warn(\"THREE.Material: .wrapAround has been removed.\");\n }\n },\n overdraw: {\n get: function() {\n console.warn(\"THREE.Material: .overdraw has been removed.\");\n },\n set: function() {\n console.warn(\"THREE.Material: .overdraw has been removed.\");\n }\n },\n wrapRGB: {\n get: function() {\n console.warn(\"THREE.Material: .wrapRGB has been removed.\");\n return new Color();\n }\n },\n shading: {\n get: function() {\n console.error(\"THREE.\" + this.type + \": .shading has been removed. Use the boolean .flatShading instead.\");\n },\n set: function(value) {\n console.warn(\"THREE.\" + this.type + \": .shading has been removed. Use the boolean .flatShading instead.\");\n this.flatShading = value === FlatShading;\n }\n },\n stencilMask: {\n get: function() {\n console.warn(\"THREE.\" + this.type + \": .stencilMask has been removed. Use .stencilFuncMask instead.\");\n return this.stencilFuncMask;\n },\n set: function(value) {\n console.warn(\"THREE.\" + this.type + \": .stencilMask has been removed. Use .stencilFuncMask instead.\");\n this.stencilFuncMask = value;\n }\n },\n vertexTangents: {\n get: function() {\n console.warn(\"THREE.\" + this.type + \": .vertexTangents has been removed.\");\n },\n set: function() {\n console.warn(\"THREE.\" + this.type + \": .vertexTangents has been removed.\");\n }\n }\n});\nObject.defineProperties(ShaderMaterial.prototype, {\n derivatives: {\n get: function() {\n console.warn(\"THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.\");\n return this.extensions.derivatives;\n },\n set: function(value) {\n console.warn(\"THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.\");\n this.extensions.derivatives = value;\n }\n }\n});\nWebGLRenderer.prototype.clearTarget = function(renderTarget, color, depth, stencil) {\n console.warn(\"THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.\");\n this.setRenderTarget(renderTarget);\n this.clear(color, depth, stencil);\n};\nWebGLRenderer.prototype.animate = function(callback) {\n console.warn(\"THREE.WebGLRenderer: .animate() is now .setAnimationLoop().\");\n this.setAnimationLoop(callback);\n};\nWebGLRenderer.prototype.getCurrentRenderTarget = function() {\n console.warn(\"THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().\");\n return this.getRenderTarget();\n};\nWebGLRenderer.prototype.getMaxAnisotropy = function() {\n console.warn(\"THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().\");\n return this.capabilities.getMaxAnisotropy();\n};\nWebGLRenderer.prototype.getPrecision = function() {\n console.warn(\"THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.\");\n return this.capabilities.precision;\n};\nWebGLRenderer.prototype.resetGLState = function() {\n console.warn(\"THREE.WebGLRenderer: .resetGLState() is now .state.reset().\");\n return this.state.reset();\n};\nWebGLRenderer.prototype.supportsFloatTextures = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' ).\");\n return this.extensions.get(\"OES_texture_float\");\n};\nWebGLRenderer.prototype.supportsHalfFloatTextures = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' ).\");\n return this.extensions.get(\"OES_texture_half_float\");\n};\nWebGLRenderer.prototype.supportsStandardDerivatives = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' ).\");\n return this.extensions.get(\"OES_standard_derivatives\");\n};\nWebGLRenderer.prototype.supportsCompressedTextureS3TC = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' ).\");\n return this.extensions.get(\"WEBGL_compressed_texture_s3tc\");\n};\nWebGLRenderer.prototype.supportsCompressedTexturePVRTC = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' ).\");\n return this.extensions.get(\"WEBGL_compressed_texture_pvrtc\");\n};\nWebGLRenderer.prototype.supportsBlendMinMax = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' ).\");\n return this.extensions.get(\"EXT_blend_minmax\");\n};\nWebGLRenderer.prototype.supportsVertexTextures = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.\");\n return this.capabilities.vertexTextures;\n};\nWebGLRenderer.prototype.supportsInstancedArrays = function() {\n console.warn(\"THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' ).\");\n return this.extensions.get(\"ANGLE_instanced_arrays\");\n};\nWebGLRenderer.prototype.enableScissorTest = function(boolean) {\n console.warn(\"THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().\");\n this.setScissorTest(boolean);\n};\nWebGLRenderer.prototype.initMaterial = function() {\n console.warn(\"THREE.WebGLRenderer: .initMaterial() has been removed.\");\n};\nWebGLRenderer.prototype.addPrePlugin = function() {\n console.warn(\"THREE.WebGLRenderer: .addPrePlugin() has been removed.\");\n};\nWebGLRenderer.prototype.addPostPlugin = function() {\n console.warn(\"THREE.WebGLRenderer: .addPostPlugin() has been removed.\");\n};\nWebGLRenderer.prototype.updateShadowMap = function() {\n console.warn(\"THREE.WebGLRenderer: .updateShadowMap() has been removed.\");\n};\nWebGLRenderer.prototype.setFaceCulling = function() {\n console.warn(\"THREE.WebGLRenderer: .setFaceCulling() has been removed.\");\n};\nWebGLRenderer.prototype.allocTextureUnit = function() {\n console.warn(\"THREE.WebGLRenderer: .allocTextureUnit() has been removed.\");\n};\nWebGLRenderer.prototype.setTexture = function() {\n console.warn(\"THREE.WebGLRenderer: .setTexture() has been removed.\");\n};\nWebGLRenderer.prototype.setTexture2D = function() {\n console.warn(\"THREE.WebGLRenderer: .setTexture2D() has been removed.\");\n};\nWebGLRenderer.prototype.setTextureCube = function() {\n console.warn(\"THREE.WebGLRenderer: .setTextureCube() has been removed.\");\n};\nWebGLRenderer.prototype.getActiveMipMapLevel = function() {\n console.warn(\"THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().\");\n return this.getActiveMipmapLevel();\n};\nObject.defineProperties(WebGLRenderer.prototype, {\n shadowMapEnabled: {\n get: function() {\n return this.shadowMap.enabled;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.\");\n this.shadowMap.enabled = value;\n }\n },\n shadowMapType: {\n get: function() {\n return this.shadowMap.type;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.\");\n this.shadowMap.type = value;\n }\n },\n shadowMapCullFace: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.\");\n return void 0;\n },\n set: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.\");\n }\n },\n context: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.\");\n return this.getContext();\n }\n },\n vr: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .vr has been renamed to .xr\");\n return this.xr;\n }\n },\n gammaInput: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.\");\n return false;\n },\n set: function() {\n console.warn(\"THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.\");\n }\n },\n gammaOutput: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.\");\n return false;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.\");\n this.outputEncoding = value === true ? sRGBEncoding : LinearEncoding;\n }\n },\n toneMappingWhitePoint: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.\");\n return 1;\n },\n set: function() {\n console.warn(\"THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.\");\n }\n },\n gammaFactor: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .gammaFactor has been removed.\");\n return 2;\n },\n set: function() {\n console.warn(\"THREE.WebGLRenderer: .gammaFactor has been removed.\");\n }\n }\n});\nObject.defineProperties(WebGLShadowMap.prototype, {\n cullFace: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.\");\n return void 0;\n },\n set: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.\");\n }\n },\n renderReverseSided: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.\");\n return void 0;\n },\n set: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.\");\n }\n },\n renderSingleSided: {\n get: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.\");\n return void 0;\n },\n set: function() {\n console.warn(\"THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.\");\n }\n }\n});\nfunction WebGLRenderTargetCube(width, height, options) {\n console.warn(\"THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).\");\n return new WebGLCubeRenderTarget(width, options);\n}\nObject.defineProperties(WebGLRenderTarget.prototype, {\n wrapS: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.\");\n return this.texture.wrapS;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.\");\n this.texture.wrapS = value;\n }\n },\n wrapT: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.\");\n return this.texture.wrapT;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.\");\n this.texture.wrapT = value;\n }\n },\n magFilter: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.\");\n return this.texture.magFilter;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.\");\n this.texture.magFilter = value;\n }\n },\n minFilter: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.\");\n return this.texture.minFilter;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.\");\n this.texture.minFilter = value;\n }\n },\n anisotropy: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.\");\n return this.texture.anisotropy;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.\");\n this.texture.anisotropy = value;\n }\n },\n offset: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .offset is now .texture.offset.\");\n return this.texture.offset;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .offset is now .texture.offset.\");\n this.texture.offset = value;\n }\n },\n repeat: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .repeat is now .texture.repeat.\");\n return this.texture.repeat;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .repeat is now .texture.repeat.\");\n this.texture.repeat = value;\n }\n },\n format: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .format is now .texture.format.\");\n return this.texture.format;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .format is now .texture.format.\");\n this.texture.format = value;\n }\n },\n type: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .type is now .texture.type.\");\n return this.texture.type;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .type is now .texture.type.\");\n this.texture.type = value;\n }\n },\n generateMipmaps: {\n get: function() {\n console.warn(\"THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.\");\n return this.texture.generateMipmaps;\n },\n set: function(value) {\n console.warn(\"THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.\");\n this.texture.generateMipmaps = value;\n }\n }\n});\nAudio.prototype.load = function(file) {\n console.warn(\"THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.\");\n const scope = this;\n const audioLoader = new AudioLoader();\n audioLoader.load(file, function(buffer) {\n scope.setBuffer(buffer);\n });\n return this;\n};\nAudioAnalyser.prototype.getData = function() {\n console.warn(\"THREE.AudioAnalyser: .getData() is now .getFrequencyData().\");\n return this.getFrequencyData();\n};\nCubeCamera.prototype.updateCubeMap = function(renderer, scene) {\n console.warn(\"THREE.CubeCamera: .updateCubeMap() is now .update().\");\n return this.update(renderer, scene);\n};\nCubeCamera.prototype.clear = function(renderer, color, depth, stencil) {\n console.warn(\"THREE.CubeCamera: .clear() is now .renderTarget.clear().\");\n return this.renderTarget.clear(renderer, color, depth, stencil);\n};\nImageUtils.crossOrigin = void 0;\nImageUtils.loadTexture = function(url, mapping, onLoad, onError) {\n console.warn(\"THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.\");\n const loader = new TextureLoader();\n loader.setCrossOrigin(this.crossOrigin);\n const texture = loader.load(url, onLoad, void 0, onError);\n if (mapping)\n texture.mapping = mapping;\n return texture;\n};\nImageUtils.loadTextureCube = function(urls, mapping, onLoad, onError) {\n console.warn(\"THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.\");\n const loader = new CubeTextureLoader();\n loader.setCrossOrigin(this.crossOrigin);\n const texture = loader.load(urls, onLoad, void 0, onError);\n if (mapping)\n texture.mapping = mapping;\n return texture;\n};\nImageUtils.loadCompressedTexture = function() {\n console.error(\"THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.\");\n};\nImageUtils.loadCompressedTextureCube = function() {\n console.error(\"THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.\");\n};\nfunction CanvasRenderer() {\n console.error(\"THREE.CanvasRenderer has been removed\");\n}\nfunction JSONLoader() {\n console.error(\"THREE.JSONLoader has been removed.\");\n}\nconst SceneUtils = {\n createMultiMaterialObject: function() {\n console.error(\"THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js\");\n },\n detach: function() {\n console.error(\"THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js\");\n },\n attach: function() {\n console.error(\"THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js\");\n }\n};\nfunction LensFlare() {\n console.error(\"THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js\");\n}\nfunction ParametricGeometry() {\n console.error(\"THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js\");\n return new BufferGeometry();\n}\nfunction TextGeometry() {\n console.error(\"THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js\");\n return new BufferGeometry();\n}\nfunction FontLoader() {\n console.error(\"THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js\");\n}\nfunction Font() {\n console.error(\"THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js\");\n}\nfunction ImmediateRenderObject() {\n console.error(\"THREE.ImmediateRenderObject has been removed.\");\n}\nif (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"register\", {detail: {\n revision: REVISION\n }}));\n}\nif (typeof window !== \"undefined\") {\n if (window.__THREE__) {\n console.warn(\"WARNING: Multiple instances of Three.js being imported.\");\n } else {\n window.__THREE__ = REVISION;\n }\n}\nexport {ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, 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, BoxGeometry as BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleGeometry as CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeGeometry as ConeBufferGeometry, ConeGeometry, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry as CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry as DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry as ExtrudeBufferGeometry, ExtrudeGeometry, FaceColors, FileLoader, FlatShading, Float16BufferAttribute, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronGeometry as IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry as LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry as OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneGeometry as PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry as PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, 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_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBFormat, RGBIntegerFormat, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry as RingBufferGeometry, RingGeometry, SRGB8_ALPHA8_ASTC_10x10_Format, SRGB8_ALPHA8_ASTC_10x5_Format, SRGB8_ALPHA8_ASTC_10x6_Format, SRGB8_ALPHA8_ASTC_10x8_Format, SRGB8_ALPHA8_ASTC_12x10_Format, SRGB8_ALPHA8_ASTC_12x12_Format, SRGB8_ALPHA8_ASTC_4x4_Format, SRGB8_ALPHA8_ASTC_5x4_Format, SRGB8_ALPHA8_ASTC_5x5_Format, SRGB8_ALPHA8_ASTC_6x5_Format, SRGB8_ALPHA8_ASTC_6x6_Format, SRGB8_ALPHA8_ASTC_8x5_Format, SRGB8_ALPHA8_ASTC_8x6_Format, SRGB8_ALPHA8_ASTC_8x8_Format, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry as ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereGeometry as SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry as TetrahedronBufferGeometry, TetrahedronGeometry, TextGeometry, Texture, TextureLoader, TorusGeometry as TorusBufferGeometry, TorusGeometry, TorusKnotGeometry as TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry as TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding};\nexport default null;\n", "import {\n BufferGeometry,\n FileLoader,\n Float32BufferAttribute,\n Group,\n LineBasicMaterial,\n LineSegments,\n Loader,\n Material,\n Mesh,\n MeshPhongMaterial,\n Points,\n PointsMaterial,\n Vector3\n} from \"/-/three@v0.136.0-4Px7Kx1INqCFBN0tXUQc/dist=es2019,mode=imports/optimized/three.js\";\nconst _object_pattern = /^[og]\\s*(.+)?/;\nconst _material_library_pattern = /^mtllib /;\nconst _material_use_pattern = /^usemtl /;\nconst _map_use_pattern = /^usemap /;\nconst _vA = new Vector3();\nconst _vB = new Vector3();\nconst _vC = new Vector3();\nconst _ab = new Vector3();\nconst _cb = new Vector3();\nfunction ParserState() {\n const state = {\n objects: [],\n object: {},\n vertices: [],\n normals: [],\n colors: [],\n uvs: [],\n materials: {},\n materialLibraries: [],\n startObject: function(name, fromDeclaration) {\n if (this.object && this.object.fromDeclaration === false) {\n this.object.name = name;\n this.object.fromDeclaration = fromDeclaration !== false;\n return;\n }\n const previousMaterial = this.object && typeof this.object.currentMaterial === \"function\" ? this.object.currentMaterial() : void 0;\n if (this.object && typeof this.object._finalize === \"function\") {\n this.object._finalize(true);\n }\n this.object = {\n name: name || \"\",\n fromDeclaration: fromDeclaration !== false,\n geometry: {\n vertices: [],\n normals: [],\n colors: [],\n uvs: [],\n hasUVIndices: false\n },\n materials: [],\n smooth: true,\n startMaterial: function(name2, libraries) {\n const previous = this._finalize(false);\n if (previous && (previous.inherited || previous.groupCount <= 0)) {\n this.materials.splice(previous.index, 1);\n }\n const material = {\n index: this.materials.length,\n name: name2 || \"\",\n mtllib: Array.isArray(libraries) && libraries.length > 0 ? libraries[libraries.length - 1] : \"\",\n smooth: previous !== void 0 ? previous.smooth : this.smooth,\n groupStart: previous !== void 0 ? previous.groupEnd : 0,\n groupEnd: -1,\n groupCount: -1,\n inherited: false,\n clone: function(index) {\n const cloned = {\n index: typeof index === \"number\" ? index : this.index,\n name: this.name,\n mtllib: this.mtllib,\n smooth: this.smooth,\n groupStart: 0,\n groupEnd: -1,\n groupCount: -1,\n inherited: false\n };\n cloned.clone = this.clone.bind(cloned);\n return cloned;\n }\n };\n this.materials.push(material);\n return material;\n },\n currentMaterial: function() {\n if (this.materials.length > 0) {\n return this.materials[this.materials.length - 1];\n }\n return void 0;\n },\n _finalize: function(end) {\n const lastMultiMaterial = this.currentMaterial();\n if (lastMultiMaterial && lastMultiMaterial.groupEnd === -1) {\n lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3;\n lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart;\n lastMultiMaterial.inherited = false;\n }\n if (end && this.materials.length > 1) {\n for (let mi = this.materials.length - 1; mi >= 0; mi--) {\n if (this.materials[mi].groupCount <= 0) {\n this.materials.splice(mi, 1);\n }\n }\n }\n if (end && this.materials.length === 0) {\n this.materials.push({\n name: \"\",\n smooth: this.smooth\n });\n }\n return lastMultiMaterial;\n }\n };\n if (previousMaterial && previousMaterial.name && typeof previousMaterial.clone === \"function\") {\n const declared = previousMaterial.clone(0);\n declared.inherited = true;\n this.object.materials.push(declared);\n }\n this.objects.push(this.object);\n },\n finalize: function() {\n if (this.object && typeof this.object._finalize === \"function\") {\n this.object._finalize(true);\n }\n },\n parseVertexIndex: function(value, len) {\n const index = parseInt(value, 10);\n return (index >= 0 ? index - 1 : index + len / 3) * 3;\n },\n parseNormalIndex: function(value, len) {\n const index = parseInt(value, 10);\n return (index >= 0 ? index - 1 : index + len / 3) * 3;\n },\n parseUVIndex: function(value, len) {\n const index = parseInt(value, 10);\n return (index >= 0 ? index - 1 : index + len / 2) * 2;\n },\n addVertex: function(a, b, c) {\n const src = this.vertices;\n const dst = this.object.geometry.vertices;\n dst.push(src[a + 0], src[a + 1], src[a + 2]);\n dst.push(src[b + 0], src[b + 1], src[b + 2]);\n dst.push(src[c + 0], src[c + 1], src[c + 2]);\n },\n addVertexPoint: function(a) {\n const src = this.vertices;\n const dst = this.object.geometry.vertices;\n dst.push(src[a + 0], src[a + 1], src[a + 2]);\n },\n addVertexLine: function(a) {\n const src = this.vertices;\n const dst = this.object.geometry.vertices;\n dst.push(src[a + 0], src[a + 1], src[a + 2]);\n },\n addNormal: function(a, b, c) {\n const src = this.normals;\n const dst = this.object.geometry.normals;\n dst.push(src[a + 0], src[a + 1], src[a + 2]);\n dst.push(src[b + 0], src[b + 1], src[b + 2]);\n dst.push(src[c + 0], src[c + 1], src[c + 2]);\n },\n addFaceNormal: function(a, b, c) {\n const src = this.vertices;\n const dst = this.object.geometry.normals;\n _vA.fromArray(src, a);\n _vB.fromArray(src, b);\n _vC.fromArray(src, c);\n _cb.subVectors(_vC, _vB);\n _ab.subVectors(_vA, _vB);\n _cb.cross(_ab);\n _cb.normalize();\n dst.push(_cb.x, _cb.y, _cb.z);\n dst.push(_cb.x, _cb.y, _cb.z);\n dst.push(_cb.x, _cb.y, _cb.z);\n },\n addColor: function(a, b, c) {\n const src = this.colors;\n const dst = this.object.geometry.colors;\n if (src[a] !== void 0)\n dst.push(src[a + 0], src[a + 1], src[a + 2]);\n if (src[b] !== void 0)\n dst.push(src[b + 0], src[b + 1], src[b + 2]);\n if (src[c] !== void 0)\n dst.push(src[c + 0], src[c + 1], src[c + 2]);\n },\n addUV: function(a, b, c) {\n const src = this.uvs;\n const dst = this.object.geometry.uvs;\n dst.push(src[a + 0], src[a + 1]);\n dst.push(src[b + 0], src[b + 1]);\n dst.push(src[c + 0], src[c + 1]);\n },\n addDefaultUV: function() {\n const dst = this.object.geometry.uvs;\n dst.push(0, 0);\n dst.push(0, 0);\n dst.push(0, 0);\n },\n addUVLine: function(a) {\n const src = this.uvs;\n const dst = this.object.geometry.uvs;\n dst.push(src[a + 0], src[a + 1]);\n },\n addFace: function(a, b, c, ua, ub, uc, na, nb, nc) {\n const vLen = this.vertices.length;\n let ia = this.parseVertexIndex(a, vLen);\n let ib = this.parseVertexIndex(b, vLen);\n let ic = this.parseVertexIndex(c, vLen);\n this.addVertex(ia, ib, ic);\n this.addColor(ia, ib, ic);\n if (na !== void 0 && na !== \"\") {\n const nLen = this.normals.length;\n ia = this.parseNormalIndex(na, nLen);\n ib = this.parseNormalIndex(nb, nLen);\n ic = this.parseNormalIndex(nc, nLen);\n this.addNormal(ia, ib, ic);\n } else {\n this.addFaceNormal(ia, ib, ic);\n }\n if (ua !== void 0 && ua !== \"\") {\n const uvLen = this.uvs.length;\n ia = this.parseUVIndex(ua, uvLen);\n ib = this.parseUVIndex(ub, uvLen);\n ic = this.parseUVIndex(uc, uvLen);\n this.addUV(ia, ib, ic);\n this.object.geometry.hasUVIndices = true;\n } else {\n this.addDefaultUV();\n }\n },\n addPointGeometry: function(vertices) {\n this.object.geometry.type = \"Points\";\n const vLen = this.vertices.length;\n for (let vi = 0, l = vertices.length; vi < l; vi++) {\n const index = this.parseVertexIndex(vertices[vi], vLen);\n this.addVertexPoint(index);\n this.addColor(index);\n }\n },\n addLineGeometry: function(vertices, uvs) {\n this.object.geometry.type = \"Line\";\n const vLen = this.vertices.length;\n const uvLen = this.uvs.length;\n for (let vi = 0, l = vertices.length; vi < l; vi++) {\n this.addVertexLine(this.parseVertexIndex(vertices[vi], vLen));\n }\n for (let uvi = 0, l = uvs.length; uvi < l; uvi++) {\n this.addUVLine(this.parseUVIndex(uvs[uvi], uvLen));\n }\n }\n };\n state.startObject(\"\", false);\n return state;\n}\nclass OBJLoader extends Loader {\n constructor(manager) {\n super(manager);\n this.materials = null;\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\n loader.load(url, function(text) {\n try {\n onLoad(scope.parse(text));\n } catch (e) {\n if (onError) {\n onError(e);\n } else {\n console.error(e);\n }\n scope.manager.itemError(url);\n }\n }, onProgress, onError);\n }\n setMaterials(materials) {\n this.materials = materials;\n return this;\n }\n parse(text) {\n const state = new ParserState();\n if (text.indexOf(\"\\r\\n\") !== -1) {\n text = text.replace(/\\r\\n/g, \"\\n\");\n }\n if (text.indexOf(\"\\\\\\n\") !== -1) {\n text = text.replace(/\\\\\\n/g, \"\");\n }\n const lines = text.split(\"\\n\");\n let line = \"\", lineFirstChar = \"\";\n let lineLength = 0;\n let result = [];\n const trimLeft = typeof \"\".trimLeft === \"function\";\n for (let i = 0, l = lines.length; i < l; i++) {\n line = lines[i];\n line = trimLeft ? line.trimLeft() : line.trim();\n lineLength = line.length;\n if (lineLength === 0)\n continue;\n lineFirstChar = line.charAt(0);\n if (lineFirstChar === \"#\")\n continue;\n if (lineFirstChar === \"v\") {\n const data = line.split(/\\s+/);\n switch (data[0]) {\n case \"v\":\n state.vertices.push(parseFloat(data[1]), parseFloat(data[2]), parseFloat(data[3]));\n if (data.length >= 7) {\n state.colors.push(parseFloat(data[4]), parseFloat(data[5]), parseFloat(data[6]));\n } else {\n state.colors.push(void 0, void 0, void 0);\n }\n break;\n case \"vn\":\n state.normals.push(parseFloat(data[1]), parseFloat(data[2]), parseFloat(data[3]));\n break;\n case \"vt\":\n state.uvs.push(parseFloat(data[1]), parseFloat(data[2]));\n break;\n }\n } else if (lineFirstChar === \"f\") {\n const lineData = line.substr(1).trim();\n const vertexData = lineData.split(/\\s+/);\n const faceVertices = [];\n for (let j = 0, jl = vertexData.length; j < jl; j++) {\n const vertex = vertexData[j];\n if (vertex.length > 0) {\n const vertexParts = vertex.split(\"/\");\n faceVertices.push(vertexParts);\n }\n }\n const v1 = faceVertices[0];\n for (let j = 1, jl = faceVertices.length - 1; j < jl; j++) {\n const v2 = faceVertices[j];\n const v3 = faceVertices[j + 1];\n state.addFace(v1[0], v2[0], v3[0], v1[1], v2[1], v3[1], v1[2], v2[2], v3[2]);\n }\n } else if (lineFirstChar === \"l\") {\n const lineParts = line.substring(1).trim().split(\" \");\n let lineVertices = [];\n const lineUVs = [];\n if (line.indexOf(\"/\") === -1) {\n lineVertices = lineParts;\n } else {\n for (let li = 0, llen = lineParts.length; li < llen; li++) {\n const parts = lineParts[li].split(\"/\");\n if (parts[0] !== \"\")\n lineVertices.push(parts[0]);\n if (parts[1] !== \"\")\n lineUVs.push(parts[1]);\n }\n }\n state.addLineGeometry(lineVertices, lineUVs);\n } else if (lineFirstChar === \"p\") {\n const lineData = line.substr(1).trim();\n const pointData = lineData.split(\" \");\n state.addPointGeometry(pointData);\n } else if ((result = _object_pattern.exec(line)) !== null) {\n const name = (\" \" + result[0].substr(1).trim()).substr(1);\n state.startObject(name);\n } else if (_material_use_pattern.test(line)) {\n state.object.startMaterial(line.substring(7).trim(), state.materialLibraries);\n } else if (_material_library_pattern.test(line)) {\n state.materialLibraries.push(line.substring(7).trim());\n } else if (_map_use_pattern.test(line)) {\n console.warn('THREE.OBJLoader: Rendering identifier \"usemap\" not supported. Textures must be defined in MTL files.');\n } else if (lineFirstChar === \"s\") {\n result = line.split(\" \");\n if (result.length > 1) {\n const value = result[1].trim().toLowerCase();\n state.object.smooth = value !== \"0\" && value !== \"off\";\n } else {\n state.object.smooth = true;\n }\n const material = state.object.currentMaterial();\n if (material)\n material.smooth = state.object.smooth;\n } else {\n if (line === \"\\0\")\n continue;\n console.warn('THREE.OBJLoader: Unexpected line: \"' + line + '\"');\n }\n }\n state.finalize();\n const container = new Group();\n container.materialLibraries = [].concat(state.materialLibraries);\n const hasPrimitives = !(state.objects.length === 1 && state.objects[0].geometry.vertices.length === 0);\n if (hasPrimitives === true) {\n for (let i = 0, l = state.objects.length; i < l; i++) {\n const object = state.objects[i];\n const geometry = object.geometry;\n const materials = object.materials;\n const isLine = geometry.type === \"Line\";\n const isPoints = geometry.type === \"Points\";\n let hasVertexColors = false;\n if (geometry.vertices.length === 0)\n continue;\n const buffergeometry = new BufferGeometry();\n buffergeometry.setAttribute(\"position\", new Float32BufferAttribute(geometry.vertices, 3));\n if (geometry.normals.length > 0) {\n buffergeometry.setAttribute(\"normal\", new Float32BufferAttribute(geometry.normals, 3));\n }\n if (geometry.colors.length > 0) {\n hasVertexColors = true;\n buffergeometry.setAttribute(\"color\", new Float32BufferAttribute(geometry.colors, 3));\n }\n if (geometry.hasUVIndices === true) {\n buffergeometry.setAttribute(\"uv\", new Float32BufferAttribute(geometry.uvs, 2));\n }\n const createdMaterials = [];\n for (let mi = 0, miLen = materials.length; mi < miLen; mi++) {\n const sourceMaterial = materials[mi];\n const materialHash = sourceMaterial.name + \"_\" + sourceMaterial.smooth + \"_\" + hasVertexColors;\n let material = state.materials[materialHash];\n if (this.materials !== null) {\n material = this.materials.create(sourceMaterial.name);\n if (isLine && material && !(material instanceof LineBasicMaterial)) {\n const materialLine = new LineBasicMaterial();\n Material.prototype.copy.call(materialLine, material);\n materialLine.color.copy(material.color);\n material = materialLine;\n } else if (isPoints && material && !(material instanceof PointsMaterial)) {\n const materialPoints = new PointsMaterial({size: 10, sizeAttenuation: false});\n Material.prototype.copy.call(materialPoints, material);\n materialPoints.color.copy(material.color);\n materialPoints.map = material.map;\n material = materialPoints;\n }\n }\n if (material === void 0) {\n if (isLine) {\n material = new LineBasicMaterial();\n } else if (isPoints) {\n material = new PointsMaterial({size: 1, sizeAttenuation: false});\n } else {\n material = new MeshPhongMaterial();\n }\n material.name = sourceMaterial.name;\n material.flatShading = sourceMaterial.smooth ? false : true;\n material.vertexColors = hasVertexColors;\n state.materials[materialHash] = material;\n }\n createdMaterials.push(material);\n }\n let mesh;\n if (createdMaterials.length > 1) {\n for (let mi = 0, miLen = materials.length; mi < miLen; mi++) {\n const sourceMaterial = materials[mi];\n buffergeometry.addGroup(sourceMaterial.groupStart, sourceMaterial.groupCount, mi);\n }\n if (isLine) {\n mesh = new LineSegments(buffergeometry, createdMaterials);\n } else if (isPoints) {\n mesh = new Points(buffergeometry, createdMaterials);\n } else {\n mesh = new Mesh(buffergeometry, createdMaterials);\n }\n } else {\n if (isLine) {\n mesh = new LineSegments(buffergeometry, createdMaterials[0]);\n } else if (isPoints) {\n mesh = new Points(buffergeometry, createdMaterials[0]);\n } else {\n mesh = new Mesh(buffergeometry, createdMaterials[0]);\n }\n }\n mesh.name = object.name;\n container.add(mesh);\n }\n } else {\n if (state.vertices.length > 0) {\n const material = new PointsMaterial({size: 1, sizeAttenuation: false});\n const buffergeometry = new BufferGeometry();\n buffergeometry.setAttribute(\"position\", new Float32BufferAttribute(state.vertices, 3));\n if (state.colors.length > 0 && state.colors[0] !== void 0) {\n buffergeometry.setAttribute(\"color\", new Float32BufferAttribute(state.colors, 3));\n material.vertexColors = true;\n }\n const points = new Points(buffergeometry, material);\n container.add(points);\n }\n }\n return container;\n }\n}\nexport {OBJLoader};\nexport default null;\n", "import {\n Color,\n DefaultLoadingManager,\n FileLoader,\n FrontSide,\n Loader,\n LoaderUtils,\n MeshPhongMaterial,\n RepeatWrapping,\n TextureLoader,\n Vector2\n} from \"/-/three@v0.136.0-4Px7Kx1INqCFBN0tXUQc/dist=es2019,mode=imports/optimized/three.js\";\nclass MTLLoader extends Loader {\n constructor(manager) {\n super(manager);\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n const path = this.path === \"\" ? LoaderUtils.extractUrlBase(url) : this.path;\n const loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\n loader.load(url, function(text) {\n try {\n onLoad(scope.parse(text, path));\n } catch (e) {\n if (onError) {\n onError(e);\n } else {\n console.error(e);\n }\n scope.manager.itemError(url);\n }\n }, onProgress, onError);\n }\n setMaterialOptions(value) {\n this.materialOptions = value;\n return this;\n }\n parse(text, path) {\n const lines = text.split(\"\\n\");\n let info = {};\n const delimiter_pattern = /\\s+/;\n const materialsInfo = {};\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n line = line.trim();\n if (line.length === 0 || line.charAt(0) === \"#\") {\n continue;\n }\n const pos = line.indexOf(\" \");\n let key = pos >= 0 ? line.substring(0, pos) : line;\n key = key.toLowerCase();\n let value = pos >= 0 ? line.substring(pos + 1) : \"\";\n value = value.trim();\n if (key === \"newmtl\") {\n info = {name: value};\n materialsInfo[value] = info;\n } else {\n if (key === \"ka\" || key === \"kd\" || key === \"ks\" || key === \"ke\") {\n const ss = value.split(delimiter_pattern, 3);\n info[key] = [parseFloat(ss[0]), parseFloat(ss[1]), parseFloat(ss[2])];\n } else {\n info[key] = value;\n }\n }\n }\n const materialCreator = new MaterialCreator(this.resourcePath || path, this.materialOptions);\n materialCreator.setCrossOrigin(this.crossOrigin);\n materialCreator.setManager(this.manager);\n materialCreator.setMaterials(materialsInfo);\n return materialCreator;\n }\n}\nclass MaterialCreator {\n constructor(baseUrl = \"\", options = {}) {\n this.baseUrl = baseUrl;\n this.options = options;\n this.materialsInfo = {};\n this.materials = {};\n this.materialsArray = [];\n this.nameLookup = {};\n this.crossOrigin = \"anonymous\";\n this.side = this.options.side !== void 0 ? this.options.side : FrontSide;\n this.wrap = this.options.wrap !== void 0 ? this.options.wrap : RepeatWrapping;\n }\n setCrossOrigin(value) {\n this.crossOrigin = value;\n return this;\n }\n setManager(value) {\n this.manager = value;\n }\n setMaterials(materialsInfo) {\n this.materialsInfo = this.convert(materialsInfo);\n this.materials = {};\n this.materialsArray = [];\n this.nameLookup = {};\n }\n convert(materialsInfo) {\n if (!this.options)\n return materialsInfo;\n const converted = {};\n for (const mn in materialsInfo) {\n const mat = materialsInfo[mn];\n const covmat = {};\n converted[mn] = covmat;\n for (const prop in mat) {\n let save = true;\n let value = mat[prop];\n const lprop = prop.toLowerCase();\n switch (lprop) {\n case \"kd\":\n case \"ka\":\n case \"ks\":\n if (this.options && this.options.normalizeRGB) {\n value = [value[0] / 255, value[1] / 255, value[2] / 255];\n }\n if (this.options && this.options.ignoreZeroRGBs) {\n if (value[0] === 0 && value[1] === 0 && value[2] === 0) {\n save = false;\n }\n }\n break;\n default:\n break;\n }\n if (save) {\n covmat[lprop] = value;\n }\n }\n }\n return converted;\n }\n preload() {\n for (const mn in this.materialsInfo) {\n this.create(mn);\n }\n }\n getIndex(materialName) {\n return this.nameLookup[materialName];\n }\n getAsArray() {\n let index = 0;\n for (const mn in this.materialsInfo) {\n this.materialsArray[index] = this.create(mn);\n this.nameLookup[mn] = index;\n index++;\n }\n return this.materialsArray;\n }\n create(materialName) {\n if (this.materials[materialName] === void 0) {\n this.createMaterial_(materialName);\n }\n return this.materials[materialName];\n }\n createMaterial_(materialName) {\n const scope = this;\n const mat = this.materialsInfo[materialName];\n const params = {\n name: materialName,\n side: this.side\n };\n function resolveURL(baseUrl, url) {\n if (typeof url !== \"string\" || url === \"\")\n return \"\";\n if (/^https?:\\/\\//i.test(url))\n return url;\n return baseUrl + url;\n }\n function setMapForType(mapType, value) {\n if (params[mapType])\n return;\n const texParams = scope.getTextureParams(value, params);\n const map = scope.loadTexture(resolveURL(scope.baseUrl, texParams.url));\n map.repeat.copy(texParams.scale);\n map.offset.copy(texParams.offset);\n map.wrapS = scope.wrap;\n map.wrapT = scope.wrap;\n params[mapType] = map;\n }\n for (const prop in mat) {\n const value = mat[prop];\n let n;\n if (value === \"\")\n continue;\n switch (prop.toLowerCase()) {\n case \"kd\":\n params.color = new Color().fromArray(value);\n break;\n case \"ks\":\n params.specular = new Color().fromArray(value);\n break;\n case \"ke\":\n params.emissive = new Color().fromArray(value);\n break;\n case \"map_kd\":\n setMapForType(\"map\", value);\n break;\n case \"map_ks\":\n setMapForType(\"specularMap\", value);\n break;\n case \"map_ke\":\n setMapForType(\"emissiveMap\", value);\n break;\n case \"norm\":\n setMapForType(\"normalMap\", value);\n break;\n case \"map_bump\":\n case \"bump\":\n setMapForType(\"bumpMap\", value);\n break;\n case \"map_d\":\n setMapForType(\"alphaMap\", value);\n params.transparent = true;\n break;\n case \"ns\":\n params.shininess = parseFloat(value);\n break;\n case \"d\":\n n = parseFloat(value);\n if (n < 1) {\n params.opacity = n;\n params.transparent = true;\n }\n break;\n case \"tr\":\n n = parseFloat(value);\n if (this.options && this.options.invertTrProperty)\n n = 1 - n;\n if (n > 0) {\n params.opacity = 1 - n;\n params.transparent = true;\n }\n break;\n default:\n break;\n }\n }\n this.materials[materialName] = new MeshPhongMaterial(params);\n return this.materials[materialName];\n }\n getTextureParams(value, matParams) {\n const texParams = {\n scale: new Vector2(1, 1),\n offset: new Vector2(0, 0)\n };\n const items = value.split(/\\s+/);\n let pos;\n pos = items.indexOf(\"-bm\");\n if (pos >= 0) {\n matParams.bumpScale = parseFloat(items[pos + 1]);\n items.splice(pos, 2);\n }\n pos = items.indexOf(\"-s\");\n if (pos >= 0) {\n texParams.scale.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2]));\n items.splice(pos, 4);\n }\n pos = items.indexOf(\"-o\");\n if (pos >= 0) {\n texParams.offset.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2]));\n items.splice(pos, 4);\n }\n texParams.url = items.join(\" \").trim();\n return texParams;\n }\n loadTexture(url, mapping, onLoad, onProgress, onError) {\n const manager = this.manager !== void 0 ? this.manager : DefaultLoadingManager;\n let loader = manager.getHandler(url);\n if (loader === null) {\n loader = new TextureLoader(manager);\n }\n if (loader.setCrossOrigin)\n loader.setCrossOrigin(this.crossOrigin);\n const texture = loader.load(url, onLoad, onProgress, onError);\n if (mapping !== void 0)\n texture.mapping = mapping;\n return texture;\n }\n}\nexport {MTLLoader};\nexport default null;\n", "import {\n AnimationClip,\n Bone,\n Box3,\n BufferAttribute,\n BufferGeometry,\n ClampToEdgeWrapping,\n Color,\n DirectionalLight,\n DoubleSide,\n FileLoader,\n FrontSide,\n Group,\n ImageBitmapLoader,\n InterleavedBuffer,\n InterleavedBufferAttribute,\n Interpolant,\n InterpolateDiscrete,\n InterpolateLinear,\n Line,\n LineBasicMaterial,\n LineLoop,\n LineSegments,\n LinearFilter,\n LinearMipmapLinearFilter,\n LinearMipmapNearestFilter,\n Loader,\n LoaderUtils,\n Material,\n MathUtils,\n Matrix4,\n Mesh,\n MeshBasicMaterial,\n MeshPhysicalMaterial,\n MeshStandardMaterial,\n MirroredRepeatWrapping,\n NearestFilter,\n NearestMipmapLinearFilter,\n NearestMipmapNearestFilter,\n NumberKeyframeTrack,\n Object3D,\n OrthographicCamera,\n PerspectiveCamera,\n PointLight,\n Points,\n PointsMaterial,\n PropertyBinding,\n Quaternion,\n QuaternionKeyframeTrack,\n RGBFormat,\n RepeatWrapping,\n Skeleton,\n SkinnedMesh,\n Sphere,\n SpotLight,\n TangentSpaceNormalMap,\n Texture,\n TextureLoader,\n TriangleFanDrawMode,\n TriangleStripDrawMode,\n Vector2,\n Vector3,\n VectorKeyframeTrack,\n sRGBEncoding\n} from \"/-/three@v0.136.0-4Px7Kx1INqCFBN0tXUQc/dist=es2019,mode=imports/optimized/three.js\";\nclass GLTFLoader extends Loader {\n constructor(manager) {\n super(manager);\n this.dracoLoader = null;\n this.ktx2Loader = null;\n this.meshoptDecoder = null;\n this.pluginCallbacks = [];\n this.register(function(parser) {\n return new GLTFMaterialsClearcoatExtension(parser);\n });\n this.register(function(parser) {\n return new GLTFTextureBasisUExtension(parser);\n });\n this.register(function(parser) {\n return new GLTFTextureWebPExtension(parser);\n });\n this.register(function(parser) {\n return new GLTFMaterialsSheenExtension(parser);\n });\n this.register(function(parser) {\n return new GLTFMaterialsTransmissionExtension(parser);\n });\n this.register(function(parser) {\n return new GLTFMaterialsVolumeExtension(parser);\n });\n this.register(function(parser) {\n return new GLTFMaterialsIorExtension(parser);\n });\n this.register(function(parser) {\n return new GLTFMaterialsSpecularExtension(parser);\n });\n this.register(function(parser) {\n return new GLTFLightsExtension(parser);\n });\n this.register(function(parser) {\n return new GLTFMeshoptCompression(parser);\n });\n }\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n let resourcePath;\n if (this.resourcePath !== \"\") {\n resourcePath = this.resourcePath;\n } else if (this.path !== \"\") {\n resourcePath = this.path;\n } else {\n resourcePath = LoaderUtils.extractUrlBase(url);\n }\n this.manager.itemStart(url);\n const _onError = function(e) {\n if (onError) {\n onError(e);\n } else {\n console.error(e);\n }\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n };\n const loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setResponseType(\"arraybuffer\");\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\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 setDRACOLoader(dracoLoader) {\n this.dracoLoader = dracoLoader;\n return this;\n }\n setDDSLoader() {\n throw new Error('THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".');\n }\n setKTX2Loader(ktx2Loader) {\n this.ktx2Loader = ktx2Loader;\n return this;\n }\n setMeshoptDecoder(meshoptDecoder) {\n this.meshoptDecoder = meshoptDecoder;\n return this;\n }\n register(callback) {\n if (this.pluginCallbacks.indexOf(callback) === -1) {\n this.pluginCallbacks.push(callback);\n }\n return this;\n }\n unregister(callback) {\n if (this.pluginCallbacks.indexOf(callback) !== -1) {\n this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1);\n }\n return this;\n }\n parse(data, path, onLoad, onError) {\n let content;\n const extensions = {};\n const plugins = {};\n if (typeof data === \"string\") {\n content = data;\n } else {\n const magic = LoaderUtils.decodeText(new Uint8Array(data, 0, 4));\n if (magic === BINARY_EXTENSION_HEADER_MAGIC) {\n try {\n extensions[EXTENSIONS.KHR_BINARY_GLTF] = new GLTFBinaryExtension(data);\n } catch (error) {\n if (onError)\n onError(error);\n return;\n }\n content = extensions[EXTENSIONS.KHR_BINARY_GLTF].content;\n } else {\n content = LoaderUtils.decodeText(new Uint8Array(data));\n }\n }\n const json = JSON.parse(content);\n if (json.asset === void 0 || json.asset.version[0] < 2) {\n if (onError)\n onError(new Error(\"THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.\"));\n return;\n }\n const parser = new GLTFParser(json, {\n path: path || this.resourcePath || \"\",\n crossOrigin: this.crossOrigin,\n requestHeader: this.requestHeader,\n manager: this.manager,\n ktx2Loader: this.ktx2Loader,\n meshoptDecoder: this.meshoptDecoder\n });\n parser.fileLoader.setRequestHeader(this.requestHeader);\n for (let i = 0; i < this.pluginCallbacks.length; i++) {\n const plugin = this.pluginCallbacks[i](parser);\n plugins[plugin.name] = plugin;\n extensions[plugin.name] = true;\n }\n if (json.extensionsUsed) {\n for (let i = 0; i < json.extensionsUsed.length; ++i) {\n const extensionName = json.extensionsUsed[i];\n const extensionsRequired = json.extensionsRequired || [];\n switch (extensionName) {\n case EXTENSIONS.KHR_MATERIALS_UNLIT:\n extensions[extensionName] = new GLTFMaterialsUnlitExtension();\n break;\n case EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n extensions[extensionName] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n break;\n case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n extensions[extensionName] = new GLTFDracoMeshCompressionExtension(json, this.dracoLoader);\n break;\n case EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n extensions[extensionName] = new GLTFTextureTransformExtension();\n break;\n case EXTENSIONS.KHR_MESH_QUANTIZATION:\n extensions[extensionName] = new GLTFMeshQuantizationExtension();\n break;\n default:\n if (extensionsRequired.indexOf(extensionName) >= 0 && plugins[extensionName] === void 0) {\n console.warn('THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".');\n }\n }\n }\n }\n parser.setExtensions(extensions);\n parser.setPlugins(plugins);\n parser.parse(onLoad, onError);\n }\n parseAsync(data, path) {\n const scope = this;\n return new Promise(function(resolve, reject) {\n scope.parse(data, path, resolve, reject);\n });\n }\n}\nfunction GLTFRegistry() {\n let objects = {};\n return {\n get: function(key) {\n return objects[key];\n },\n add: function(key, object) {\n objects[key] = object;\n },\n remove: function(key) {\n delete objects[key];\n },\n removeAll: function() {\n objects = {};\n }\n };\n}\nconst 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_CLEARCOAT: \"KHR_materials_clearcoat\",\n KHR_MATERIALS_IOR: \"KHR_materials_ior\",\n KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: \"KHR_materials_pbrSpecularGlossiness\",\n KHR_MATERIALS_SHEEN: \"KHR_materials_sheen\",\n KHR_MATERIALS_SPECULAR: \"KHR_materials_specular\",\n KHR_MATERIALS_TRANSMISSION: \"KHR_materials_transmission\",\n KHR_MATERIALS_UNLIT: \"KHR_materials_unlit\",\n KHR_MATERIALS_VOLUME: \"KHR_materials_volume\",\n KHR_TEXTURE_BASISU: \"KHR_texture_basisu\",\n KHR_TEXTURE_TRANSFORM: \"KHR_texture_transform\",\n KHR_MESH_QUANTIZATION: \"KHR_mesh_quantization\",\n EXT_TEXTURE_WEBP: \"EXT_texture_webp\",\n EXT_MESHOPT_COMPRESSION: \"EXT_meshopt_compression\"\n};\nclass GLTFLightsExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n this.cache = {refs: {}, uses: {}};\n }\n _markDefs() {\n const parser = this.parser;\n const nodeDefs = this.parser.json.nodes || [];\n for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n const nodeDef = nodeDefs[nodeIndex];\n if (nodeDef.extensions && nodeDef.extensions[this.name] && nodeDef.extensions[this.name].light !== void 0) {\n parser._addNodeRef(this.cache, nodeDef.extensions[this.name].light);\n }\n }\n }\n _loadLight(lightIndex) {\n const parser = this.parser;\n const cacheKey = \"light:\" + lightIndex;\n let dependency = parser.cache.get(cacheKey);\n if (dependency)\n return dependency;\n const json = parser.json;\n const extensions = json.extensions && json.extensions[this.name] || {};\n const lightDefs = extensions.lights || [];\n const lightDef = lightDefs[lightIndex];\n let lightNode;\n const color = new Color(16777215);\n if (lightDef.color !== void 0)\n color.fromArray(lightDef.color);\n const range = lightDef.range !== void 0 ? lightDef.range : 0;\n switch (lightDef.type) {\n case \"directional\":\n lightNode = new DirectionalLight(color);\n lightNode.target.position.set(0, 0, -1);\n lightNode.add(lightNode.target);\n break;\n case \"point\":\n lightNode = new PointLight(color);\n lightNode.distance = range;\n break;\n case \"spot\":\n lightNode = new SpotLight(color);\n lightNode.distance = range;\n lightDef.spot = lightDef.spot || {};\n lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== void 0 ? lightDef.spot.innerConeAngle : 0;\n lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== void 0 ? lightDef.spot.outerConeAngle : Math.PI / 4;\n lightNode.angle = lightDef.spot.outerConeAngle;\n lightNode.penumbra = 1 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n lightNode.target.position.set(0, 0, -1);\n lightNode.add(lightNode.target);\n break;\n default:\n throw new Error(\"THREE.GLTFLoader: Unexpected light type: \" + lightDef.type);\n }\n lightNode.position.set(0, 0, 0);\n lightNode.decay = 2;\n if (lightDef.intensity !== void 0)\n lightNode.intensity = lightDef.intensity;\n lightNode.name = parser.createUniqueName(lightDef.name || \"light_\" + lightIndex);\n dependency = Promise.resolve(lightNode);\n parser.cache.add(cacheKey, dependency);\n return dependency;\n }\n createNodeAttachment(nodeIndex) {\n const self2 = this;\n const parser = this.parser;\n const json = parser.json;\n const nodeDef = json.nodes[nodeIndex];\n const lightDef = nodeDef.extensions && nodeDef.extensions[this.name] || {};\n const lightIndex = lightDef.light;\n if (lightIndex === void 0)\n return null;\n return this._loadLight(lightIndex).then(function(light) {\n return parser._getNodeRef(self2.cache, lightIndex, light);\n });\n }\n}\nclass GLTFMaterialsUnlitExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n }\n getMaterialType() {\n return MeshBasicMaterial;\n }\n extendParams(materialParams, materialDef, parser) {\n const pending = [];\n materialParams.color = new Color(1, 1, 1);\n materialParams.opacity = 1;\n const metallicRoughness = materialDef.pbrMetallicRoughness;\n if (metallicRoughness) {\n if (Array.isArray(metallicRoughness.baseColorFactor)) {\n const array = metallicRoughness.baseColorFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n if (metallicRoughness.baseColorTexture !== void 0) {\n pending.push(parser.assignTexture(materialParams, \"map\", metallicRoughness.baseColorTexture));\n }\n }\n return Promise.all(pending);\n }\n}\nclass GLTFMaterialsClearcoatExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n const extension = materialDef.extensions[this.name];\n if (extension.clearcoatFactor !== void 0) {\n materialParams.clearcoat = extension.clearcoatFactor;\n }\n if (extension.clearcoatTexture !== void 0) {\n pending.push(parser.assignTexture(materialParams, \"clearcoatMap\", extension.clearcoatTexture));\n }\n if (extension.clearcoatRoughnessFactor !== void 0) {\n materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n }\n if (extension.clearcoatRoughnessTexture !== void 0) {\n pending.push(parser.assignTexture(materialParams, \"clearcoatRoughnessMap\", extension.clearcoatRoughnessTexture));\n }\n if (extension.clearcoatNormalTexture !== void 0) {\n pending.push(parser.assignTexture(materialParams, \"clearcoatNormalMap\", extension.clearcoatNormalTexture));\n if (extension.clearcoatNormalTexture.scale !== void 0) {\n const scale = extension.clearcoatNormalTexture.scale;\n materialParams.clearcoatNormalScale = new Vector2(scale, scale);\n }\n }\n return Promise.all(pending);\n }\n}\nclass GLTFMaterialsSheenExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_SHEEN;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n materialParams.sheenColor = new Color(0, 0, 0);\n materialParams.sheenRoughness = 0;\n materialParams.sheen = 1;\n const extension = materialDef.extensions[this.name];\n if (extension.sheenColorFactor !== void 0) {\n materialParams.sheenColor.fromArray(extension.sheenColorFactor);\n }\n if (extension.sheenRoughnessFactor !== void 0) {\n materialParams.sheenRoughness = extension.sheenRoughnessFactor;\n }\n if (extension.sheenColorTexture !== void 0) {\n pending.push(parser.assignTexture(materialParams, \"sheenColorMap\", extension.sheenColorTexture));\n }\n if (extension.sheenRoughnessTexture !== void 0) {\n pending.push(parser.assignTexture(materialParams, \"sheenRoughnessMap\", extension.sheenRoughnessTexture));\n }\n return Promise.all(pending);\n }\n}\nclass GLTFMaterialsTransmissionExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n const extension = materialDef.extensions[this.name];\n if (extension.transmissionFactor !== void 0) {\n materialParams.transmission = extension.transmissionFactor;\n }\n if (extension.transmissionTexture !== void 0) {\n pending.push(parser.assignTexture(materialParams, \"transmissionMap\", extension.transmissionTexture));\n }\n return Promise.all(pending);\n }\n}\nclass GLTFMaterialsVolumeExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_VOLUME;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n const extension = materialDef.extensions[this.name];\n materialParams.thickness = extension.thicknessFactor !== void 0 ? extension.thicknessFactor : 0;\n if (extension.thicknessTexture !== void 0) {\n pending.push(parser.assignTexture(materialParams, \"thicknessMap\", extension.thicknessTexture));\n }\n materialParams.attenuationDistance = extension.attenuationDistance || 0;\n const colorArray = extension.attenuationColor || [1, 1, 1];\n materialParams.attenuationColor = new Color(colorArray[0], colorArray[1], colorArray[2]);\n return Promise.all(pending);\n }\n}\nclass GLTFMaterialsIorExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_IOR;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const extension = materialDef.extensions[this.name];\n materialParams.ior = extension.ior !== void 0 ? extension.ior : 1.5;\n return Promise.resolve();\n }\n}\nclass GLTFMaterialsSpecularExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_SPECULAR;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n const extension = materialDef.extensions[this.name];\n materialParams.specularIntensity = extension.specularFactor !== void 0 ? extension.specularFactor : 1;\n if (extension.specularTexture !== void 0) {\n pending.push(parser.assignTexture(materialParams, \"specularIntensityMap\", extension.specularTexture));\n }\n const colorArray = extension.specularColorFactor || [1, 1, 1];\n materialParams.specularColor = new Color(colorArray[0], colorArray[1], colorArray[2]);\n if (extension.specularColorTexture !== void 0) {\n pending.push(parser.assignTexture(materialParams, \"specularColorMap\", extension.specularColorTexture).then(function(texture) {\n texture.encoding = sRGBEncoding;\n }));\n }\n return Promise.all(pending);\n }\n}\nclass GLTFTextureBasisUExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n }\n loadTexture(textureIndex) {\n const parser = this.parser;\n const json = parser.json;\n const textureDef = json.textures[textureIndex];\n if (!textureDef.extensions || !textureDef.extensions[this.name]) {\n return null;\n }\n const extension = textureDef.extensions[this.name];\n const source = json.images[extension.source];\n const loader = parser.options.ktx2Loader;\n if (!loader) {\n if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) {\n throw new Error(\"THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures\");\n } else {\n return null;\n }\n }\n return parser.loadTextureImage(textureIndex, source, loader);\n }\n}\nclass GLTFTextureWebPExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.EXT_TEXTURE_WEBP;\n this.isSupported = null;\n }\n loadTexture(textureIndex) {\n const name = this.name;\n const parser = this.parser;\n const json = parser.json;\n const textureDef = json.textures[textureIndex];\n if (!textureDef.extensions || !textureDef.extensions[name]) {\n return null;\n }\n const extension = textureDef.extensions[name];\n const source = json.images[extension.source];\n let loader = parser.textureLoader;\n if (source.uri) {\n const handler = parser.options.manager.getHandler(source.uri);\n if (handler !== null)\n loader = handler;\n }\n return this.detectSupport().then(function(isSupported) {\n if (isSupported)\n return parser.loadTextureImage(textureIndex, source, loader);\n if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) {\n throw new Error(\"THREE.GLTFLoader: WebP required by asset but unsupported.\");\n }\n return parser.loadTexture(textureIndex);\n });\n }\n detectSupport() {\n if (!this.isSupported) {\n this.isSupported = new Promise(function(resolve) {\n const image = new Image();\n image.src = \"data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA\";\n image.onload = image.onerror = function() {\n resolve(image.height === 1);\n };\n });\n }\n return this.isSupported;\n }\n}\nclass GLTFMeshoptCompression {\n constructor(parser) {\n this.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\n this.parser = parser;\n }\n loadBufferView(index) {\n const json = this.parser.json;\n const bufferView = json.bufferViews[index];\n if (bufferView.extensions && bufferView.extensions[this.name]) {\n const extensionDef = bufferView.extensions[this.name];\n const buffer = this.parser.getDependency(\"buffer\", extensionDef.buffer);\n const decoder = this.parser.options.meshoptDecoder;\n if (!decoder || !decoder.supported) {\n if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) {\n throw new Error(\"THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files\");\n } else {\n return null;\n }\n }\n return Promise.all([buffer, decoder.ready]).then(function(res) {\n const byteOffset = extensionDef.byteOffset || 0;\n const byteLength = extensionDef.byteLength || 0;\n const count = extensionDef.count;\n const stride = extensionDef.byteStride;\n const result = new ArrayBuffer(count * stride);\n const source = new Uint8Array(res[0], byteOffset, byteLength);\n decoder.decodeGltfBuffer(new Uint8Array(result), count, stride, source, extensionDef.mode, extensionDef.filter);\n return result;\n });\n } else {\n return null;\n }\n }\n}\nconst BINARY_EXTENSION_HEADER_MAGIC = \"glTF\";\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\nconst BINARY_EXTENSION_CHUNK_TYPES = {JSON: 1313821514, BIN: 5130562};\nclass GLTFBinaryExtension {\n constructor(data) {\n this.name = EXTENSIONS.KHR_BINARY_GLTF;\n this.content = null;\n this.body = null;\n const headerView = new DataView(data, 0, BINARY_EXTENSION_HEADER_LENGTH);\n this.header = {\n magic: LoaderUtils.decodeText(new Uint8Array(data.slice(0, 4))),\n version: headerView.getUint32(4, true),\n length: headerView.getUint32(8, true)\n };\n if (this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC) {\n throw new Error(\"THREE.GLTFLoader: Unsupported glTF-Binary header.\");\n } else if (this.header.version < 2) {\n throw new Error(\"THREE.GLTFLoader: Legacy binary file detected.\");\n }\n const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\n const chunkView = new DataView(data, BINARY_EXTENSION_HEADER_LENGTH);\n let chunkIndex = 0;\n while (chunkIndex < chunkContentsLength) {\n const chunkLength = chunkView.getUint32(chunkIndex, true);\n chunkIndex += 4;\n const chunkType = chunkView.getUint32(chunkIndex, true);\n chunkIndex += 4;\n if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON) {\n const contentArray = new Uint8Array(data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength);\n this.content = LoaderUtils.decodeText(contentArray);\n } else if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN) {\n const byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n this.body = data.slice(byteOffset, byteOffset + chunkLength);\n }\n chunkIndex += chunkLength;\n }\n if (this.content === null) {\n throw new Error(\"THREE.GLTFLoader: JSON content not found.\");\n }\n }\n}\nclass GLTFDracoMeshCompressionExtension {\n constructor(json, dracoLoader) {\n if (!dracoLoader) {\n throw new Error(\"THREE.GLTFLoader: No DRACOLoader instance provided.\");\n }\n this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n this.json = json;\n this.dracoLoader = dracoLoader;\n this.dracoLoader.preload();\n }\n decodePrimitive(primitive, parser) {\n const json = this.json;\n const dracoLoader = this.dracoLoader;\n const bufferViewIndex = primitive.extensions[this.name].bufferView;\n const gltfAttributeMap = primitive.extensions[this.name].attributes;\n const threeAttributeMap = {};\n const attributeNormalizedMap = {};\n const attributeTypeMap = {};\n for (const attributeName in gltfAttributeMap) {\n const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n threeAttributeMap[threeAttributeName] = gltfAttributeMap[attributeName];\n }\n for (const attributeName in primitive.attributes) {\n const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n if (gltfAttributeMap[attributeName] !== void 0) {\n const accessorDef = json.accessors[primitive.attributes[attributeName]];\n const componentType = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n attributeTypeMap[threeAttributeName] = componentType;\n attributeNormalizedMap[threeAttributeName] = accessorDef.normalized === true;\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 (const attributeName in geometry.attributes) {\n const attribute = geometry.attributes[attributeName];\n const normalized = attributeNormalizedMap[attributeName];\n if (normalized !== void 0)\n attribute.normalized = normalized;\n }\n resolve(geometry);\n }, threeAttributeMap, attributeTypeMap);\n });\n });\n }\n}\nclass GLTFTextureTransformExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n }\n extendTexture(texture, transform) {\n if (transform.texCoord !== void 0) {\n console.warn('THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.');\n }\n if (transform.offset === void 0 && transform.rotation === void 0 && transform.scale === void 0) {\n return texture;\n }\n texture = texture.clone();\n if (transform.offset !== void 0) {\n texture.offset.fromArray(transform.offset);\n }\n if (transform.rotation !== void 0) {\n texture.rotation = transform.rotation;\n }\n if (transform.scale !== void 0) {\n texture.repeat.fromArray(transform.scale);\n }\n texture.needsUpdate = true;\n return texture;\n }\n}\nclass GLTFMeshStandardSGMaterial extends MeshStandardMaterial {\n constructor(params) {\n super();\n this.isGLTFSpecularGlossinessMaterial = true;\n const specularMapParsFragmentChunk = [\n \"#ifdef USE_SPECULARMAP\",\n \"\tuniform sampler2D specularMap;\",\n \"#endif\"\n ].join(\"\\n\");\n const glossinessMapParsFragmentChunk = [\n \"#ifdef USE_GLOSSINESSMAP\",\n \"\tuniform sampler2D glossinessMap;\",\n \"#endif\"\n ].join(\"\\n\");\n const specularMapFragmentChunk = [\n \"vec3 specularFactor = specular;\",\n \"#ifdef USE_SPECULARMAP\",\n \"\tvec4 texelSpecular = texture2D( specularMap, vUv );\",\n \"\ttexelSpecular = sRGBToLinear( texelSpecular );\",\n \"\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture\",\n \"\tspecularFactor *= texelSpecular.rgb;\",\n \"#endif\"\n ].join(\"\\n\");\n const glossinessMapFragmentChunk = [\n \"float glossinessFactor = glossiness;\",\n \"#ifdef USE_GLOSSINESSMAP\",\n \"\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );\",\n \"\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture\",\n \"\tglossinessFactor *= texelGlossiness.a;\",\n \"#endif\"\n ].join(\"\\n\");\n const lightPhysicalFragmentChunk = [\n \"PhysicalMaterial material;\",\n \"material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );\",\n \"vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\",\n \"float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\",\n \"material.roughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.\",\n \"material.roughness += geometryRoughness;\",\n \"material.roughness = min( material.roughness, 1.0 );\",\n \"material.specularColor = specularFactor;\"\n ].join(\"\\n\");\n const uniforms = {\n specular: {value: new Color().setHex(16777215)},\n glossiness: {value: 1},\n specularMap: {value: null},\n glossinessMap: {value: null}\n };\n this._extraUniforms = uniforms;\n this.onBeforeCompile = function(shader) {\n for (const uniformName in uniforms) {\n shader.uniforms[uniformName] = uniforms[uniformName];\n }\n shader.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 };\n Object.defineProperties(this, {\n specular: {\n get: function() {\n return uniforms.specular.value;\n },\n set: function(v) {\n uniforms.specular.value = v;\n }\n },\n specularMap: {\n get: function() {\n return uniforms.specularMap.value;\n },\n set: function(v) {\n uniforms.specularMap.value = v;\n if (v) {\n this.defines.USE_SPECULARMAP = \"\";\n } else {\n delete this.defines.USE_SPECULARMAP;\n }\n }\n },\n glossiness: {\n get: function() {\n return uniforms.glossiness.value;\n },\n set: function(v) {\n uniforms.glossiness.value = v;\n }\n },\n glossinessMap: {\n get: function() {\n return uniforms.glossinessMap.value;\n },\n set: function(v) {\n uniforms.glossinessMap.value = v;\n if (v) {\n this.defines.USE_GLOSSINESSMAP = \"\";\n this.defines.USE_UV = \"\";\n } else {\n delete this.defines.USE_GLOSSINESSMAP;\n delete this.defines.USE_UV;\n }\n }\n }\n });\n delete this.metalness;\n delete this.roughness;\n delete this.metalnessMap;\n delete this.roughnessMap;\n this.setValues(params);\n }\n copy(source) {\n super.copy(source);\n this.specularMap = source.specularMap;\n this.specular.copy(source.specular);\n this.glossinessMap = source.glossinessMap;\n this.glossiness = source.glossiness;\n delete this.metalness;\n delete this.roughness;\n delete this.metalnessMap;\n delete this.roughnessMap;\n return this;\n }\n}\nclass GLTFMaterialsPbrSpecularGlossinessExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS;\n this.specularGlossinessParams = [\n \"color\",\n \"map\",\n \"lightMap\",\n \"lightMapIntensity\",\n \"aoMap\",\n \"aoMapIntensity\",\n \"emissive\",\n \"emissiveIntensity\",\n \"emissiveMap\",\n \"bumpMap\",\n \"bumpScale\",\n \"normalMap\",\n \"normalMapType\",\n \"displacementMap\",\n \"displacementScale\",\n \"displacementBias\",\n \"specularMap\",\n \"specular\",\n \"glossinessMap\",\n \"glossiness\",\n \"alphaMap\",\n \"envMap\",\n \"envMapIntensity\",\n \"refractionRatio\"\n ];\n }\n getMaterialType() {\n return GLTFMeshStandardSGMaterial;\n }\n extendParams(materialParams, materialDef, parser) {\n const pbrSpecularGlossiness = materialDef.extensions[this.name];\n materialParams.color = new Color(1, 1, 1);\n materialParams.opacity = 1;\n const pending = [];\n if (Array.isArray(pbrSpecularGlossiness.diffuseFactor)) {\n const array = pbrSpecularGlossiness.diffuseFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n if (pbrSpecularGlossiness.diffuseTexture !== void 0) {\n pending.push(parser.assignTexture(materialParams, \"map\", pbrSpecularGlossiness.diffuseTexture));\n }\n materialParams.emissive = new Color(0, 0, 0);\n materialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== void 0 ? pbrSpecularGlossiness.glossinessFactor : 1;\n materialParams.specular = new Color(1, 1, 1);\n if (Array.isArray(pbrSpecularGlossiness.specularFactor)) {\n materialParams.specular.fromArray(pbrSpecularGlossiness.specularFactor);\n }\n if (pbrSpecularGlossiness.specularGlossinessTexture !== void 0) {\n const specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n pending.push(parser.assignTexture(materialParams, \"glossinessMap\", specGlossMapDef));\n pending.push(parser.assignTexture(materialParams, \"specularMap\", specGlossMapDef));\n }\n return Promise.all(pending);\n }\n createMaterial(materialParams) {\n const material = new GLTFMeshStandardSGMaterial(materialParams);\n material.fog = true;\n material.color = materialParams.color;\n material.map = materialParams.map === void 0 ? null : materialParams.map;\n material.lightMap = null;\n material.lightMapIntensity = 1;\n material.aoMap = materialParams.aoMap === void 0 ? null : materialParams.aoMap;\n material.aoMapIntensity = 1;\n material.emissive = materialParams.emissive;\n material.emissiveIntensity = 1;\n material.emissiveMap = materialParams.emissiveMap === void 0 ? null : materialParams.emissiveMap;\n material.bumpMap = materialParams.bumpMap === void 0 ? null : materialParams.bumpMap;\n material.bumpScale = 1;\n material.normalMap = materialParams.normalMap === void 0 ? null : materialParams.normalMap;\n material.normalMapType = TangentSpaceNormalMap;\n if (materialParams.normalScale)\n material.normalScale = materialParams.normalScale;\n material.displacementMap = null;\n material.displacementScale = 1;\n material.displacementBias = 0;\n material.specularMap = materialParams.specularMap === void 0 ? null : materialParams.specularMap;\n material.specular = materialParams.specular;\n material.glossinessMap = materialParams.glossinessMap === void 0 ? null : materialParams.glossinessMap;\n material.glossiness = materialParams.glossiness;\n material.alphaMap = null;\n material.envMap = materialParams.envMap === void 0 ? null : materialParams.envMap;\n material.envMapIntensity = 1;\n material.refractionRatio = 0.98;\n return material;\n }\n}\nclass GLTFMeshQuantizationExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n }\n}\nclass GLTFCubicSplineInterpolant extends Interpolant {\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n }\n copySampleValue_(index) {\n const result = this.resultBuffer, values = this.sampleValues, valueSize = this.valueSize, offset = index * valueSize * 3 + valueSize;\n for (let i = 0; i !== valueSize; i++) {\n result[i] = values[offset + i];\n }\n return result;\n }\n}\nGLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\nGLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\nGLTFCubicSplineInterpolant.prototype.interpolate_ = function(i1, t0, t, t1) {\n const result = this.resultBuffer;\n const values = this.sampleValues;\n const stride = this.valueSize;\n const stride2 = stride * 2;\n const stride3 = stride * 3;\n const td = t1 - t0;\n const p = (t - t0) / td;\n const pp = p * p;\n const ppp = pp * p;\n const offset1 = i1 * stride3;\n const offset0 = offset1 - stride3;\n const s2 = -2 * ppp + 3 * pp;\n const s3 = ppp - pp;\n const s0 = 1 - s2;\n const s1 = s3 - pp + p;\n for (let i = 0; i !== stride; i++) {\n const p0 = values[offset0 + i + stride];\n const m0 = values[offset0 + i + stride2] * td;\n const p1 = values[offset1 + i + stride];\n const m1 = values[offset1 + i] * td;\n result[i] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n }\n return result;\n};\nconst _q = new Quaternion();\nclass GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {\n interpolate_(i1, t0, t, t1) {\n const result = super.interpolate_(i1, t0, t, t1);\n _q.fromArray(result).normalize().toArray(result);\n return result;\n }\n}\nconst WEBGL_CONSTANTS = {\n FLOAT: 5126,\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};\nconst WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n};\nconst WEBGL_FILTERS = {\n 9728: NearestFilter,\n 9729: LinearFilter,\n 9984: NearestMipmapNearestFilter,\n 9985: LinearMipmapNearestFilter,\n 9986: NearestMipmapLinearFilter,\n 9987: LinearMipmapLinearFilter\n};\nconst WEBGL_WRAPPINGS = {\n 33071: ClampToEdgeWrapping,\n 33648: MirroredRepeatWrapping,\n 10497: RepeatWrapping\n};\nconst 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};\nconst 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};\nconst PATH_PROPERTIES = {\n scale: \"scale\",\n translation: \"position\",\n rotation: \"quaternion\",\n weights: \"morphTargetInfluences\"\n};\nconst INTERPOLATION = {\n CUBICSPLINE: void 0,\n LINEAR: InterpolateLinear,\n STEP: InterpolateDiscrete\n};\nconst ALPHA_MODES = {\n OPAQUE: \"OPAQUE\",\n MASK: \"MASK\",\n BLEND: \"BLEND\"\n};\nfunction createDefaultMaterial(cache) {\n if (cache[\"DefaultMaterial\"] === void 0) {\n cache[\"DefaultMaterial\"] = new MeshStandardMaterial({\n color: 16777215,\n emissive: 0,\n metalness: 1,\n roughness: 1,\n transparent: false,\n depthTest: true,\n side: FrontSide\n });\n }\n return cache[\"DefaultMaterial\"];\n}\nfunction addUnknownExtensionsToUserData(knownExtensions, object, objectDef) {\n for (const name in objectDef.extensions) {\n if (knownExtensions[name] === void 0) {\n object.userData.gltfExtensions = object.userData.gltfExtensions || {};\n object.userData.gltfExtensions[name] = objectDef.extensions[name];\n }\n }\n}\nfunction assignExtrasToUserData(object, gltfDef) {\n if (gltfDef.extras !== void 0) {\n if (typeof gltfDef.extras === \"object\") {\n Object.assign(object.userData, gltfDef.extras);\n } else {\n console.warn(\"THREE.GLTFLoader: Ignoring primitive type .extras, \" + gltfDef.extras);\n }\n }\n}\nfunction addMorphTargets(geometry, targets, parser) {\n let hasMorphPosition = false;\n let hasMorphNormal = false;\n for (let i = 0, il = targets.length; i < il; i++) {\n const target = targets[i];\n if (target.POSITION !== void 0)\n hasMorphPosition = true;\n if (target.NORMAL !== void 0)\n hasMorphNormal = true;\n if (hasMorphPosition && hasMorphNormal)\n break;\n }\n if (!hasMorphPosition && !hasMorphNormal)\n return Promise.resolve(geometry);\n const pendingPositionAccessors = [];\n const pendingNormalAccessors = [];\n for (let i = 0, il = targets.length; i < il; i++) {\n const target = targets[i];\n if (hasMorphPosition) {\n const pendingAccessor = target.POSITION !== void 0 ? parser.getDependency(\"accessor\", target.POSITION) : geometry.attributes.position;\n pendingPositionAccessors.push(pendingAccessor);\n }\n if (hasMorphNormal) {\n const pendingAccessor = target.NORMAL !== void 0 ? parser.getDependency(\"accessor\", target.NORMAL) : geometry.attributes.normal;\n pendingNormalAccessors.push(pendingAccessor);\n }\n }\n return Promise.all([\n Promise.all(pendingPositionAccessors),\n Promise.all(pendingNormalAccessors)\n ]).then(function(accessors) {\n const morphPositions = accessors[0];\n const morphNormals = accessors[1];\n if (hasMorphPosition)\n geometry.morphAttributes.position = morphPositions;\n if (hasMorphNormal)\n geometry.morphAttributes.normal = morphNormals;\n geometry.morphTargetsRelative = true;\n return geometry;\n });\n}\nfunction updateMorphTargets(mesh, meshDef) {\n mesh.updateMorphTargets();\n if (meshDef.weights !== void 0) {\n for (let i = 0, il = meshDef.weights.length; i < il; i++) {\n mesh.morphTargetInfluences[i] = meshDef.weights[i];\n }\n }\n if (meshDef.extras && Array.isArray(meshDef.extras.targetNames)) {\n const targetNames = meshDef.extras.targetNames;\n if (mesh.morphTargetInfluences.length === targetNames.length) {\n mesh.morphTargetDictionary = {};\n for (let i = 0, il = targetNames.length; i < il; i++) {\n mesh.morphTargetDictionary[targetNames[i]] = i;\n }\n } else {\n console.warn(\"THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.\");\n }\n }\n}\nfunction createPrimitiveKey(primitiveDef) {\n const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION];\n let geometryKey;\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 return geometryKey;\n}\nfunction createAttributesKey(attributes) {\n let attributesKey = \"\";\n const keys = Object.keys(attributes).sort();\n for (let i = 0, il = keys.length; i < il; i++) {\n attributesKey += keys[i] + \":\" + attributes[keys[i]] + \";\";\n }\n return attributesKey;\n}\nfunction getNormalizedComponentScale(constructor) {\n switch (constructor) {\n case Int8Array:\n return 1 / 127;\n case Uint8Array:\n return 1 / 255;\n case Int16Array:\n return 1 / 32767;\n case Uint16Array:\n return 1 / 65535;\n default:\n throw new Error(\"THREE.GLTFLoader: Unsupported normalized accessor component type.\");\n }\n}\nclass GLTFParser {\n constructor(json = {}, options = {}) {\n this.json = json;\n this.extensions = {};\n this.plugins = {};\n this.options = options;\n this.cache = new GLTFRegistry();\n this.associations = new Map();\n this.primitiveCache = {};\n this.meshCache = {refs: {}, uses: {}};\n this.cameraCache = {refs: {}, uses: {}};\n this.lightCache = {refs: {}, uses: {}};\n this.textureCache = {};\n this.nodeNamesUsed = {};\n if (typeof createImageBitmap !== \"undefined\" && /Firefox|Safari/.test(navigator.userAgent) === false) {\n this.textureLoader = new ImageBitmapLoader(this.options.manager);\n } else {\n this.textureLoader = new TextureLoader(this.options.manager);\n }\n this.textureLoader.setCrossOrigin(this.options.crossOrigin);\n this.textureLoader.setRequestHeader(this.options.requestHeader);\n this.fileLoader = new FileLoader(this.options.manager);\n this.fileLoader.setResponseType(\"arraybuffer\");\n if (this.options.crossOrigin === \"use-credentials\") {\n this.fileLoader.setWithCredentials(true);\n }\n }\n setExtensions(extensions) {\n this.extensions = extensions;\n }\n setPlugins(plugins) {\n this.plugins = plugins;\n }\n parse(onLoad, onError) {\n const parser = this;\n const json = this.json;\n const extensions = this.extensions;\n this.cache.removeAll();\n this._invokeAll(function(ext) {\n return ext._markDefs && ext._markDefs();\n });\n Promise.all(this._invokeAll(function(ext) {\n return ext.beforeRoot && ext.beforeRoot();\n })).then(function() {\n return Promise.all([\n parser.getDependencies(\"scene\"),\n parser.getDependencies(\"animation\"),\n parser.getDependencies(\"camera\")\n ]);\n }).then(function(dependencies) {\n const 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,\n userData: {}\n };\n addUnknownExtensionsToUserData(extensions, result, json);\n assignExtrasToUserData(result, json);\n Promise.all(parser._invokeAll(function(ext) {\n return ext.afterRoot && ext.afterRoot(result);\n })).then(function() {\n onLoad(result);\n });\n }).catch(onError);\n }\n _markDefs() {\n const nodeDefs = this.json.nodes || [];\n const skinDefs = this.json.skins || [];\n const meshDefs = this.json.meshes || [];\n for (let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex++) {\n const joints = skinDefs[skinIndex].joints;\n for (let i = 0, il = joints.length; i < il; i++) {\n nodeDefs[joints[i]].isBone = true;\n }\n }\n for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n const nodeDef = nodeDefs[nodeIndex];\n if (nodeDef.mesh !== void 0) {\n this._addNodeRef(this.meshCache, nodeDef.mesh);\n if (nodeDef.skin !== void 0) {\n meshDefs[nodeDef.mesh].isSkinnedMesh = true;\n }\n }\n if (nodeDef.camera !== void 0) {\n this._addNodeRef(this.cameraCache, nodeDef.camera);\n }\n }\n }\n _addNodeRef(cache, index) {\n if (index === void 0)\n return;\n if (cache.refs[index] === void 0) {\n cache.refs[index] = cache.uses[index] = 0;\n }\n cache.refs[index]++;\n }\n _getNodeRef(cache, index, object) {\n if (cache.refs[index] <= 1)\n return object;\n const ref = object.clone();\n const updateMappings = (original, clone) => {\n const mappings = this.associations.get(original);\n if (mappings != null) {\n this.associations.set(clone, mappings);\n }\n for (const [i, child] of original.children.entries()) {\n updateMappings(child, clone.children[i]);\n }\n };\n updateMappings(object, ref);\n ref.name += \"_instance_\" + cache.uses[index]++;\n return ref;\n }\n _invokeOne(func) {\n const extensions = Object.values(this.plugins);\n extensions.push(this);\n for (let i = 0; i < extensions.length; i++) {\n const result = func(extensions[i]);\n if (result)\n return result;\n }\n return null;\n }\n _invokeAll(func) {\n const extensions = Object.values(this.plugins);\n extensions.unshift(this);\n const pending = [];\n for (let i = 0; i < extensions.length; i++) {\n const result = func(extensions[i]);\n if (result)\n pending.push(result);\n }\n return pending;\n }\n getDependency(type, index) {\n const cacheKey = type + \":\" + index;\n let dependency = this.cache.get(cacheKey);\n if (!dependency) {\n switch (type) {\n case \"scene\":\n dependency = this.loadScene(index);\n break;\n case \"node\":\n dependency = this.loadNode(index);\n break;\n case \"mesh\":\n dependency = this._invokeOne(function(ext) {\n return ext.loadMesh && ext.loadMesh(index);\n });\n break;\n case \"accessor\":\n dependency = this.loadAccessor(index);\n break;\n case \"bufferView\":\n dependency = this._invokeOne(function(ext) {\n return ext.loadBufferView && ext.loadBufferView(index);\n });\n break;\n case \"buffer\":\n dependency = this.loadBuffer(index);\n break;\n case \"material\":\n dependency = this._invokeOne(function(ext) {\n return ext.loadMaterial && ext.loadMaterial(index);\n });\n break;\n case \"texture\":\n dependency = this._invokeOne(function(ext) {\n return ext.loadTexture && ext.loadTexture(index);\n });\n break;\n case \"skin\":\n dependency = this.loadSkin(index);\n break;\n case \"animation\":\n dependency = this.loadAnimation(index);\n break;\n case \"camera\":\n dependency = this.loadCamera(index);\n break;\n default:\n throw new Error(\"Unknown type: \" + type);\n }\n this.cache.add(cacheKey, dependency);\n }\n return dependency;\n }\n getDependencies(type) {\n let dependencies = this.cache.get(type);\n if (!dependencies) {\n const parser = this;\n const 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 return dependencies;\n }\n loadBuffer(bufferIndex) {\n const bufferDef = this.json.buffers[bufferIndex];\n const loader = this.fileLoader;\n if (bufferDef.type && bufferDef.type !== \"arraybuffer\") {\n throw new Error(\"THREE.GLTFLoader: \" + bufferDef.type + \" buffer type is not supported.\");\n }\n if (bufferDef.uri === void 0 && bufferIndex === 0) {\n return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body);\n }\n const options = this.options;\n return new Promise(function(resolve, reject) {\n loader.load(LoaderUtils.resolveURL(bufferDef.uri, options.path), resolve, void 0, function() {\n reject(new Error('THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".'));\n });\n });\n }\n loadBufferView(bufferViewIndex) {\n const bufferViewDef = this.json.bufferViews[bufferViewIndex];\n return this.getDependency(\"buffer\", bufferViewDef.buffer).then(function(buffer) {\n const byteLength = bufferViewDef.byteLength || 0;\n const byteOffset = bufferViewDef.byteOffset || 0;\n return buffer.slice(byteOffset, byteOffset + byteLength);\n });\n }\n loadAccessor(accessorIndex) {\n const parser = this;\n const json = this.json;\n const accessorDef = this.json.accessors[accessorIndex];\n if (accessorDef.bufferView === void 0 && accessorDef.sparse === void 0) {\n return Promise.resolve(null);\n }\n const pendingBufferViews = [];\n if (accessorDef.bufferView !== void 0) {\n pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.bufferView));\n } else {\n pendingBufferViews.push(null);\n }\n if (accessorDef.sparse !== void 0) {\n pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.sparse.indices.bufferView));\n pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.sparse.values.bufferView));\n }\n return Promise.all(pendingBufferViews).then(function(bufferViews) {\n const bufferView = bufferViews[0];\n const itemSize = WEBGL_TYPE_SIZES[accessorDef.type];\n const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n const elementBytes = TypedArray.BYTES_PER_ELEMENT;\n const itemBytes = elementBytes * itemSize;\n const byteOffset = accessorDef.byteOffset || 0;\n const byteStride = accessorDef.bufferView !== void 0 ? json.bufferViews[accessorDef.bufferView].byteStride : void 0;\n const normalized = accessorDef.normalized === true;\n let array, bufferAttribute;\n if (byteStride && byteStride !== itemBytes) {\n const ibSlice = Math.floor(byteOffset / byteStride);\n const ibCacheKey = \"InterleavedBuffer:\" + accessorDef.bufferView + \":\" + accessorDef.componentType + \":\" + ibSlice + \":\" + accessorDef.count;\n let ib = parser.cache.get(ibCacheKey);\n if (!ib) {\n array = new TypedArray(bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes);\n ib = new InterleavedBuffer(array, byteStride / elementBytes);\n parser.cache.add(ibCacheKey, ib);\n }\n bufferAttribute = new InterleavedBufferAttribute(ib, itemSize, byteOffset % byteStride / 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 bufferAttribute = new BufferAttribute(array, itemSize, normalized);\n }\n if (accessorDef.sparse !== void 0) {\n const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n const TypedArrayIndices = WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType];\n const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n const sparseIndices = new TypedArrayIndices(bufferViews[1], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices);\n const sparseValues = new TypedArray(bufferViews[2], byteOffsetValues, accessorDef.sparse.count * itemSize);\n if (bufferView !== null) {\n bufferAttribute = new BufferAttribute(bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized);\n }\n for (let i = 0, il = sparseIndices.length; i < il; i++) {\n const index = sparseIndices[i];\n bufferAttribute.setX(index, sparseValues[i * itemSize]);\n if (itemSize >= 2)\n bufferAttribute.setY(index, sparseValues[i * itemSize + 1]);\n if (itemSize >= 3)\n bufferAttribute.setZ(index, sparseValues[i * itemSize + 2]);\n if (itemSize >= 4)\n bufferAttribute.setW(index, sparseValues[i * itemSize + 3]);\n if (itemSize >= 5)\n throw new Error(\"THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.\");\n }\n }\n return bufferAttribute;\n });\n }\n loadTexture(textureIndex) {\n const json = this.json;\n const options = this.options;\n const textureDef = json.textures[textureIndex];\n const source = json.images[textureDef.source];\n let loader = this.textureLoader;\n if (source.uri) {\n const handler = options.manager.getHandler(source.uri);\n if (handler !== null)\n loader = handler;\n }\n return this.loadTextureImage(textureIndex, source, loader);\n }\n loadTextureImage(textureIndex, source, loader) {\n const parser = this;\n const json = this.json;\n const options = this.options;\n const textureDef = json.textures[textureIndex];\n const cacheKey = (source.uri || source.bufferView) + \":\" + textureDef.sampler;\n if (this.textureCache[cacheKey]) {\n return this.textureCache[cacheKey];\n }\n const URL = self.URL || self.webkitURL;\n let sourceURI = source.uri || \"\";\n let isObjectURL = false;\n if (source.bufferView !== void 0) {\n sourceURI = parser.getDependency(\"bufferView\", source.bufferView).then(function(bufferView) {\n isObjectURL = true;\n const blob = new Blob([bufferView], {type: source.mimeType});\n sourceURI = URL.createObjectURL(blob);\n return sourceURI;\n });\n } else if (source.uri === void 0) {\n throw new Error(\"THREE.GLTFLoader: Image \" + textureIndex + \" is missing URI and bufferView\");\n }\n const promise = Promise.resolve(sourceURI).then(function(sourceURI2) {\n return new Promise(function(resolve, reject) {\n let onLoad = resolve;\n if (loader.isImageBitmapLoader === true) {\n onLoad = function(imageBitmap) {\n const texture = new Texture(imageBitmap);\n texture.needsUpdate = true;\n resolve(texture);\n };\n }\n loader.load(LoaderUtils.resolveURL(sourceURI2, options.path), onLoad, void 0, reject);\n });\n }).then(function(texture) {\n if (isObjectURL === true) {\n URL.revokeObjectURL(sourceURI);\n }\n texture.flipY = false;\n if (textureDef.name)\n texture.name = textureDef.name;\n const samplers = json.samplers || {};\n const sampler = samplers[textureDef.sampler] || {};\n texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || LinearFilter;\n texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || LinearMipmapLinearFilter;\n texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || RepeatWrapping;\n texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || RepeatWrapping;\n parser.associations.set(texture, {textures: textureIndex});\n return texture;\n }).catch(function() {\n console.error(\"THREE.GLTFLoader: Couldn't load texture\", sourceURI);\n return null;\n });\n this.textureCache[cacheKey] = promise;\n return promise;\n }\n assignTexture(materialParams, mapName, mapDef) {\n const parser = this;\n return this.getDependency(\"texture\", mapDef.index).then(function(texture) {\n if (mapDef.texCoord !== void 0 && mapDef.texCoord != 0 && !(mapName === \"aoMap\" && mapDef.texCoord == 1)) {\n console.warn(\"THREE.GLTFLoader: Custom UV set \" + mapDef.texCoord + \" for texture \" + mapName + \" not yet supported.\");\n }\n if (parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]) {\n const transform = mapDef.extensions !== void 0 ? mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM] : void 0;\n if (transform) {\n const gltfReference = parser.associations.get(texture);\n texture = parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture, transform);\n parser.associations.set(texture, gltfReference);\n }\n }\n materialParams[mapName] = texture;\n return texture;\n });\n }\n assignFinalMaterial(mesh) {\n const geometry = mesh.geometry;\n let material = mesh.material;\n const useDerivativeTangents = geometry.attributes.tangent === void 0;\n const useVertexColors = geometry.attributes.color !== void 0;\n const useFlatShading = geometry.attributes.normal === void 0;\n if (mesh.isPoints) {\n const cacheKey = \"PointsMaterial:\" + material.uuid;\n let pointsMaterial = this.cache.get(cacheKey);\n if (!pointsMaterial) {\n pointsMaterial = new PointsMaterial();\n Material.prototype.copy.call(pointsMaterial, material);\n pointsMaterial.color.copy(material.color);\n pointsMaterial.map = material.map;\n pointsMaterial.sizeAttenuation = false;\n this.cache.add(cacheKey, pointsMaterial);\n }\n material = pointsMaterial;\n } else if (mesh.isLine) {\n const cacheKey = \"LineBasicMaterial:\" + material.uuid;\n let lineMaterial = this.cache.get(cacheKey);\n if (!lineMaterial) {\n lineMaterial = new LineBasicMaterial();\n Material.prototype.copy.call(lineMaterial, material);\n lineMaterial.color.copy(material.color);\n this.cache.add(cacheKey, lineMaterial);\n }\n material = lineMaterial;\n }\n if (useDerivativeTangents || useVertexColors || useFlatShading) {\n let cacheKey = \"ClonedMaterial:\" + material.uuid + \":\";\n if (material.isGLTFSpecularGlossinessMaterial)\n cacheKey += \"specular-glossiness:\";\n if (useDerivativeTangents)\n cacheKey += \"derivative-tangents:\";\n if (useVertexColors)\n cacheKey += \"vertex-colors:\";\n if (useFlatShading)\n cacheKey += \"flat-shading:\";\n let cachedMaterial = this.cache.get(cacheKey);\n if (!cachedMaterial) {\n cachedMaterial = material.clone();\n if (useVertexColors)\n cachedMaterial.vertexColors = true;\n if (useFlatShading)\n cachedMaterial.flatShading = true;\n if (useDerivativeTangents) {\n if (cachedMaterial.normalScale)\n cachedMaterial.normalScale.y *= -1;\n if (cachedMaterial.clearcoatNormalScale)\n cachedMaterial.clearcoatNormalScale.y *= -1;\n }\n this.cache.add(cacheKey, cachedMaterial);\n this.associations.set(cachedMaterial, this.associations.get(material));\n }\n material = cachedMaterial;\n }\n if (material.aoMap && geometry.attributes.uv2 === void 0 && geometry.attributes.uv !== void 0) {\n geometry.setAttribute(\"uv2\", geometry.attributes.uv);\n }\n mesh.material = material;\n }\n getMaterialType() {\n return MeshStandardMaterial;\n }\n loadMaterial(materialIndex) {\n const parser = this;\n const json = this.json;\n const extensions = this.extensions;\n const materialDef = json.materials[materialIndex];\n let materialType;\n const materialParams = {};\n const materialExtensions = materialDef.extensions || {};\n const pending = [];\n if (materialExtensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]) {\n const 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 const kmuExtension = extensions[EXTENSIONS.KHR_MATERIALS_UNLIT];\n materialType = kmuExtension.getMaterialType();\n pending.push(kmuExtension.extendParams(materialParams, materialDef, parser));\n } else {\n const metallicRoughness = materialDef.pbrMetallicRoughness || {};\n materialParams.color = new Color(1, 1, 1);\n materialParams.opacity = 1;\n if (Array.isArray(metallicRoughness.baseColorFactor)) {\n const array = metallicRoughness.baseColorFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n if (metallicRoughness.baseColorTexture !== void 0) {\n pending.push(parser.assignTexture(materialParams, \"map\", metallicRoughness.baseColorTexture));\n }\n materialParams.metalness = metallicRoughness.metallicFactor !== void 0 ? metallicRoughness.metallicFactor : 1;\n materialParams.roughness = metallicRoughness.roughnessFactor !== void 0 ? metallicRoughness.roughnessFactor : 1;\n if (metallicRoughness.metallicRoughnessTexture !== void 0) {\n pending.push(parser.assignTexture(materialParams, \"metalnessMap\", metallicRoughness.metallicRoughnessTexture));\n pending.push(parser.assignTexture(materialParams, \"roughnessMap\", metallicRoughness.metallicRoughnessTexture));\n }\n materialType = this._invokeOne(function(ext) {\n return ext.getMaterialType && ext.getMaterialType(materialIndex);\n });\n pending.push(Promise.all(this._invokeAll(function(ext) {\n return ext.extendMaterialParams && ext.extendMaterialParams(materialIndex, materialParams);\n })));\n }\n if (materialDef.doubleSided === true) {\n materialParams.side = DoubleSide;\n }\n const alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n if (alphaMode === ALPHA_MODES.BLEND) {\n materialParams.transparent = true;\n materialParams.depthWrite = false;\n } else {\n materialParams.format = RGBFormat;\n materialParams.transparent = false;\n if (alphaMode === ALPHA_MODES.MASK) {\n materialParams.alphaTest = materialDef.alphaCutoff !== void 0 ? materialDef.alphaCutoff : 0.5;\n }\n }\n if (materialDef.normalTexture !== void 0 && materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, \"normalMap\", materialDef.normalTexture));\n materialParams.normalScale = new Vector2(1, 1);\n if (materialDef.normalTexture.scale !== void 0) {\n const scale = materialDef.normalTexture.scale;\n materialParams.normalScale.set(scale, scale);\n }\n }\n if (materialDef.occlusionTexture !== void 0 && materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, \"aoMap\", materialDef.occlusionTexture));\n if (materialDef.occlusionTexture.strength !== void 0) {\n materialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n }\n }\n if (materialDef.emissiveFactor !== void 0 && materialType !== MeshBasicMaterial) {\n materialParams.emissive = new Color().fromArray(materialDef.emissiveFactor);\n }\n if (materialDef.emissiveTexture !== void 0 && materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, \"emissiveMap\", materialDef.emissiveTexture));\n }\n return Promise.all(pending).then(function() {\n let material;\n if (materialType === GLTFMeshStandardSGMaterial) {\n material = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(materialParams);\n } else {\n material = new materialType(materialParams);\n }\n if (materialDef.name)\n material.name = materialDef.name;\n if (material.map)\n material.map.encoding = sRGBEncoding;\n if (material.emissiveMap)\n material.emissiveMap.encoding = sRGBEncoding;\n assignExtrasToUserData(material, materialDef);\n parser.associations.set(material, {materials: materialIndex});\n if (materialDef.extensions)\n addUnknownExtensionsToUserData(extensions, material, materialDef);\n return material;\n });\n }\n createUniqueName(originalName) {\n const sanitizedName = PropertyBinding.sanitizeNodeName(originalName || \"\");\n let name = sanitizedName;\n for (let i = 1; this.nodeNamesUsed[name]; ++i) {\n name = sanitizedName + \"_\" + i;\n }\n this.nodeNamesUsed[name] = true;\n return name;\n }\n loadGeometries(primitives) {\n const parser = this;\n const extensions = this.extensions;\n const cache = this.primitiveCache;\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 const pending = [];\n for (let i = 0, il = primitives.length; i < il; i++) {\n const primitive = primitives[i];\n const cacheKey = createPrimitiveKey(primitive);\n const cached = cache[cacheKey];\n if (cached) {\n pending.push(cached.promise);\n } else {\n let geometryPromise;\n if (primitive.extensions && primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]) {\n geometryPromise = createDracoPrimitive(primitive);\n } else {\n geometryPromise = addPrimitiveAttributes(new BufferGeometry(), primitive, parser);\n }\n cache[cacheKey] = {primitive, promise: geometryPromise};\n pending.push(geometryPromise);\n }\n }\n return Promise.all(pending);\n }\n loadMesh(meshIndex) {\n const parser = this;\n const json = this.json;\n const extensions = this.extensions;\n const meshDef = json.meshes[meshIndex];\n const primitives = meshDef.primitives;\n const pending = [];\n for (let i = 0, il = primitives.length; i < il; i++) {\n const material = primitives[i].material === void 0 ? createDefaultMaterial(this.cache) : this.getDependency(\"material\", primitives[i].material);\n pending.push(material);\n }\n pending.push(parser.loadGeometries(primitives));\n return Promise.all(pending).then(function(results) {\n const materials = results.slice(0, results.length - 1);\n const geometries = results[results.length - 1];\n const meshes = [];\n for (let i = 0, il = geometries.length; i < il; i++) {\n const geometry = geometries[i];\n const primitive = primitives[i];\n let mesh;\n const material = materials[i];\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLES || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || primitive.mode === void 0) {\n mesh = meshDef.isSkinnedMesh === true ? new SkinnedMesh(geometry, material) : new Mesh(geometry, material);\n if (mesh.isSkinnedMesh === true && !mesh.geometry.attributes.skinWeight.normalized) {\n mesh.normalizeSkinWeights();\n }\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP) {\n mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleStripDrawMode);\n } else if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN) {\n mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleFanDrawMode);\n }\n } else if (primitive.mode === WEBGL_CONSTANTS.LINES) {\n mesh = new LineSegments(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.LINE_STRIP) {\n mesh = new Line(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.LINE_LOOP) {\n mesh = new LineLoop(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.POINTS) {\n mesh = new Points(geometry, material);\n } else {\n throw new Error(\"THREE.GLTFLoader: Primitive mode unsupported: \" + primitive.mode);\n }\n if (Object.keys(mesh.geometry.morphAttributes).length > 0) {\n updateMorphTargets(mesh, meshDef);\n }\n mesh.name = parser.createUniqueName(meshDef.name || \"mesh_\" + meshIndex);\n assignExtrasToUserData(mesh, meshDef);\n if (primitive.extensions)\n addUnknownExtensionsToUserData(extensions, mesh, primitive);\n parser.assignFinalMaterial(mesh);\n meshes.push(mesh);\n }\n for (let i = 0, il = meshes.length; i < il; i++) {\n parser.associations.set(meshes[i], {\n meshes: meshIndex,\n primitives: i\n });\n }\n if (meshes.length === 1) {\n return meshes[0];\n }\n const group = new Group();\n parser.associations.set(group, {meshes: meshIndex});\n for (let i = 0, il = meshes.length; i < il; i++) {\n group.add(meshes[i]);\n }\n return group;\n });\n }\n loadCamera(cameraIndex) {\n let camera;\n const cameraDef = this.json.cameras[cameraIndex];\n const params = cameraDef[cameraDef.type];\n if (!params) {\n console.warn(\"THREE.GLTFLoader: Missing camera parameters.\");\n return;\n }\n if (cameraDef.type === \"perspective\") {\n camera = new PerspectiveCamera(MathUtils.radToDeg(params.yfov), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6);\n } else if (cameraDef.type === \"orthographic\") {\n camera = new OrthographicCamera(-params.xmag, params.xmag, params.ymag, -params.ymag, params.znear, params.zfar);\n }\n if (cameraDef.name)\n camera.name = this.createUniqueName(cameraDef.name);\n assignExtrasToUserData(camera, cameraDef);\n return Promise.resolve(camera);\n }\n loadSkin(skinIndex) {\n const skinDef = this.json.skins[skinIndex];\n const skinEntry = {joints: skinDef.joints};\n if (skinDef.inverseBindMatrices === void 0) {\n return Promise.resolve(skinEntry);\n }\n return this.getDependency(\"accessor\", skinDef.inverseBindMatrices).then(function(accessor) {\n skinEntry.inverseBindMatrices = accessor;\n return skinEntry;\n });\n }\n loadAnimation(animationIndex) {\n const json = this.json;\n const animationDef = json.animations[animationIndex];\n const pendingNodes = [];\n const pendingInputAccessors = [];\n const pendingOutputAccessors = [];\n const pendingSamplers = [];\n const pendingTargets = [];\n for (let i = 0, il = animationDef.channels.length; i < il; i++) {\n const channel = animationDef.channels[i];\n const sampler = animationDef.samplers[channel.sampler];\n const target = channel.target;\n const name = target.node !== void 0 ? target.node : target.id;\n const input = animationDef.parameters !== void 0 ? animationDef.parameters[sampler.input] : sampler.input;\n const output = animationDef.parameters !== void 0 ? 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 return Promise.all([\n Promise.all(pendingNodes),\n Promise.all(pendingInputAccessors),\n Promise.all(pendingOutputAccessors),\n Promise.all(pendingSamplers),\n Promise.all(pendingTargets)\n ]).then(function(dependencies) {\n const nodes = dependencies[0];\n const inputAccessors = dependencies[1];\n const outputAccessors = dependencies[2];\n const samplers = dependencies[3];\n const targets = dependencies[4];\n const tracks = [];\n for (let i = 0, il = nodes.length; i < il; i++) {\n const node = nodes[i];\n const inputAccessor = inputAccessors[i];\n const outputAccessor = outputAccessors[i];\n const sampler = samplers[i];\n const target = targets[i];\n if (node === void 0)\n continue;\n node.updateMatrix();\n node.matrixAutoUpdate = true;\n let TypedKeyframeTrack;\n switch (PATH_PROPERTIES[target.path]) {\n case PATH_PROPERTIES.weights:\n TypedKeyframeTrack = NumberKeyframeTrack;\n break;\n case PATH_PROPERTIES.rotation:\n TypedKeyframeTrack = QuaternionKeyframeTrack;\n break;\n case PATH_PROPERTIES.position:\n case PATH_PROPERTIES.scale:\n default:\n TypedKeyframeTrack = VectorKeyframeTrack;\n break;\n }\n const targetName = node.name ? node.name : node.uuid;\n const interpolation = sampler.interpolation !== void 0 ? INTERPOLATION[sampler.interpolation] : InterpolateLinear;\n const targetNames = [];\n if (PATH_PROPERTIES[target.path] === PATH_PROPERTIES.weights) {\n node.traverse(function(object) {\n if (object.morphTargetInfluences) {\n targetNames.push(object.name ? object.name : object.uuid);\n }\n });\n } else {\n targetNames.push(targetName);\n }\n let outputArray = outputAccessor.array;\n if (outputAccessor.normalized) {\n const scale = getNormalizedComponentScale(outputArray.constructor);\n const scaled = new Float32Array(outputArray.length);\n for (let j = 0, jl = outputArray.length; j < jl; j++) {\n scaled[j] = outputArray[j] * scale;\n }\n outputArray = scaled;\n }\n for (let j = 0, jl = targetNames.length; j < jl; j++) {\n const track = new TypedKeyframeTrack(targetNames[j] + \".\" + PATH_PROPERTIES[target.path], inputAccessor.array, outputArray, interpolation);\n if (sampler.interpolation === \"CUBICSPLINE\") {\n track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline(result) {\n const interpolantType = this instanceof QuaternionKeyframeTrack ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant;\n return new interpolantType(this.times, this.values, this.getValueSize() / 3, result);\n };\n track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n }\n tracks.push(track);\n }\n }\n const name = animationDef.name ? animationDef.name : \"animation_\" + animationIndex;\n return new AnimationClip(name, void 0, tracks);\n });\n }\n createNodeMesh(nodeIndex) {\n const json = this.json;\n const parser = this;\n const nodeDef = json.nodes[nodeIndex];\n if (nodeDef.mesh === void 0)\n return null;\n return parser.getDependency(\"mesh\", nodeDef.mesh).then(function(mesh) {\n const node = parser._getNodeRef(parser.meshCache, nodeDef.mesh, mesh);\n if (nodeDef.weights !== void 0) {\n node.traverse(function(o) {\n if (!o.isMesh)\n return;\n for (let i = 0, il = nodeDef.weights.length; i < il; i++) {\n o.morphTargetInfluences[i] = nodeDef.weights[i];\n }\n });\n }\n return node;\n });\n }\n loadNode(nodeIndex) {\n const json = this.json;\n const extensions = this.extensions;\n const parser = this;\n const nodeDef = json.nodes[nodeIndex];\n const nodeName = nodeDef.name ? parser.createUniqueName(nodeDef.name) : \"\";\n return function() {\n const pending = [];\n const meshPromise = parser._invokeOne(function(ext) {\n return ext.createNodeMesh && ext.createNodeMesh(nodeIndex);\n });\n if (meshPromise) {\n pending.push(meshPromise);\n }\n if (nodeDef.camera !== void 0) {\n pending.push(parser.getDependency(\"camera\", nodeDef.camera).then(function(camera) {\n return parser._getNodeRef(parser.cameraCache, nodeDef.camera, camera);\n }));\n }\n parser._invokeAll(function(ext) {\n return ext.createNodeAttachment && ext.createNodeAttachment(nodeIndex);\n }).forEach(function(promise) {\n pending.push(promise);\n });\n return Promise.all(pending);\n }().then(function(objects) {\n let node;\n if (nodeDef.isBone === true) {\n node = new Bone();\n } else if (objects.length > 1) {\n node = new Group();\n } else if (objects.length === 1) {\n node = objects[0];\n } else {\n node = new Object3D();\n }\n if (node !== objects[0]) {\n for (let i = 0, il = objects.length; i < il; i++) {\n node.add(objects[i]);\n }\n }\n if (nodeDef.name) {\n node.userData.name = nodeDef.name;\n node.name = nodeName;\n }\n assignExtrasToUserData(node, nodeDef);\n if (nodeDef.extensions)\n addUnknownExtensionsToUserData(extensions, node, nodeDef);\n if (nodeDef.matrix !== void 0) {\n const matrix = new Matrix4();\n matrix.fromArray(nodeDef.matrix);\n node.applyMatrix4(matrix);\n } else {\n if (nodeDef.translation !== void 0) {\n node.position.fromArray(nodeDef.translation);\n }\n if (nodeDef.rotation !== void 0) {\n node.quaternion.fromArray(nodeDef.rotation);\n }\n if (nodeDef.scale !== void 0) {\n node.scale.fromArray(nodeDef.scale);\n }\n }\n if (!parser.associations.has(node)) {\n parser.associations.set(node, {});\n }\n parser.associations.get(node).nodes = nodeIndex;\n return node;\n });\n }\n loadScene(sceneIndex) {\n const json = this.json;\n const extensions = this.extensions;\n const sceneDef = this.json.scenes[sceneIndex];\n const parser = this;\n const scene = new Group();\n if (sceneDef.name)\n scene.name = parser.createUniqueName(sceneDef.name);\n assignExtrasToUserData(scene, sceneDef);\n if (sceneDef.extensions)\n addUnknownExtensionsToUserData(extensions, scene, sceneDef);\n const nodeIds = sceneDef.nodes || [];\n const pending = [];\n for (let i = 0, il = nodeIds.length; i < il; i++) {\n pending.push(buildNodeHierarchy(nodeIds[i], scene, json, parser));\n }\n return Promise.all(pending).then(function() {\n const reduceAssociations = (node) => {\n const reducedAssociations = new Map();\n for (const [key, value] of parser.associations) {\n if (key instanceof Material || key instanceof Texture) {\n reducedAssociations.set(key, value);\n }\n }\n node.traverse((node2) => {\n const mappings = parser.associations.get(node2);\n if (mappings != null) {\n reducedAssociations.set(node2, mappings);\n }\n });\n return reducedAssociations;\n };\n parser.associations = reduceAssociations(scene);\n return scene;\n });\n }\n}\nfunction buildNodeHierarchy(nodeId, parentObject, json, parser) {\n const nodeDef = json.nodes[nodeId];\n return parser.getDependency(\"node\", nodeId).then(function(node) {\n if (nodeDef.skin === void 0)\n return node;\n let skinEntry;\n return parser.getDependency(\"skin\", nodeDef.skin).then(function(skin) {\n skinEntry = skin;\n const pendingJoints = [];\n for (let i = 0, il = skinEntry.joints.length; i < il; i++) {\n pendingJoints.push(parser.getDependency(\"node\", skinEntry.joints[i]));\n }\n return Promise.all(pendingJoints);\n }).then(function(jointNodes) {\n node.traverse(function(mesh) {\n if (!mesh.isMesh)\n return;\n const bones = [];\n const boneInverses = [];\n for (let j = 0, jl = jointNodes.length; j < jl; j++) {\n const jointNode = jointNodes[j];\n if (jointNode) {\n bones.push(jointNode);\n const mat = new Matrix4();\n if (skinEntry.inverseBindMatrices !== void 0) {\n mat.fromArray(skinEntry.inverseBindMatrices.array, j * 16);\n }\n boneInverses.push(mat);\n } else {\n console.warn('THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[j]);\n }\n }\n mesh.bind(new Skeleton(bones, boneInverses), mesh.matrixWorld);\n });\n return node;\n });\n }).then(function(node) {\n parentObject.add(node);\n const pending = [];\n if (nodeDef.children) {\n const children = nodeDef.children;\n for (let i = 0, il = children.length; i < il; i++) {\n const child = children[i];\n pending.push(buildNodeHierarchy(child, node, json, parser));\n }\n }\n return Promise.all(pending);\n });\n}\nfunction computeBounds(geometry, primitiveDef, parser) {\n const attributes = primitiveDef.attributes;\n const box = new Box3();\n if (attributes.POSITION !== void 0) {\n const accessor = parser.json.accessors[attributes.POSITION];\n const min = accessor.min;\n const max = accessor.max;\n if (min !== void 0 && max !== void 0) {\n box.set(new Vector3(min[0], min[1], min[2]), new Vector3(max[0], max[1], max[2]));\n if (accessor.normalized) {\n const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\n box.min.multiplyScalar(boxScale);\n box.max.multiplyScalar(boxScale);\n }\n } else {\n console.warn(\"THREE.GLTFLoader: Missing min/max properties for accessor POSITION.\");\n return;\n }\n } else {\n return;\n }\n const targets = primitiveDef.targets;\n if (targets !== void 0) {\n const maxDisplacement = new Vector3();\n const vector = new Vector3();\n for (let i = 0, il = targets.length; i < il; i++) {\n const target = targets[i];\n if (target.POSITION !== void 0) {\n const accessor = parser.json.accessors[target.POSITION];\n const min = accessor.min;\n const max = accessor.max;\n if (min !== void 0 && max !== void 0) {\n vector.setX(Math.max(Math.abs(min[0]), Math.abs(max[0])));\n vector.setY(Math.max(Math.abs(min[1]), Math.abs(max[1])));\n vector.setZ(Math.max(Math.abs(min[2]), Math.abs(max[2])));\n if (accessor.normalized) {\n const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\n vector.multiplyScalar(boxScale);\n }\n maxDisplacement.max(vector);\n } else {\n console.warn(\"THREE.GLTFLoader: Missing min/max properties for accessor POSITION.\");\n }\n }\n }\n box.expandByVector(maxDisplacement);\n }\n geometry.boundingBox = box;\n const sphere = new Sphere();\n box.getCenter(sphere.center);\n sphere.radius = box.min.distanceTo(box.max) / 2;\n geometry.boundingSphere = sphere;\n}\nfunction addPrimitiveAttributes(geometry, primitiveDef, parser) {\n const attributes = primitiveDef.attributes;\n const pending = [];\n function assignAttributeAccessor(accessorIndex, attributeName) {\n return parser.getDependency(\"accessor\", accessorIndex).then(function(accessor) {\n geometry.setAttribute(attributeName, accessor);\n });\n }\n for (const gltfAttributeName in attributes) {\n const threeAttributeName = ATTRIBUTES[gltfAttributeName] || gltfAttributeName.toLowerCase();\n if (threeAttributeName in geometry.attributes)\n continue;\n pending.push(assignAttributeAccessor(attributes[gltfAttributeName], threeAttributeName));\n }\n if (primitiveDef.indices !== void 0 && !geometry.index) {\n const accessor = parser.getDependency(\"accessor\", primitiveDef.indices).then(function(accessor2) {\n geometry.setIndex(accessor2);\n });\n pending.push(accessor);\n }\n assignExtrasToUserData(geometry, primitiveDef);\n computeBounds(geometry, primitiveDef, parser);\n return Promise.all(pending).then(function() {\n return primitiveDef.targets !== void 0 ? addMorphTargets(geometry, primitiveDef.targets, parser) : geometry;\n });\n}\nfunction toTrianglesDrawMode(geometry, drawMode) {\n let index = geometry.getIndex();\n if (index === null) {\n const indices = [];\n const position = geometry.getAttribute(\"position\");\n if (position !== void 0) {\n for (let i = 0; i < position.count; i++) {\n indices.push(i);\n }\n geometry.setIndex(indices);\n index = geometry.getIndex();\n } else {\n console.error(\"THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.\");\n return geometry;\n }\n }\n const numberOfTriangles = index.count - 2;\n const newIndices = [];\n if (drawMode === TriangleFanDrawMode) {\n for (let i = 1; i <= numberOfTriangles; i++) {\n newIndices.push(index.getX(0));\n newIndices.push(index.getX(i));\n newIndices.push(index.getX(i + 1));\n }\n } else {\n for (let i = 0; i < numberOfTriangles; i++) {\n if (i % 2 === 0) {\n newIndices.push(index.getX(i));\n newIndices.push(index.getX(i + 1));\n newIndices.push(index.getX(i + 2));\n } else {\n newIndices.push(index.getX(i + 2));\n newIndices.push(index.getX(i + 1));\n newIndices.push(index.getX(i));\n }\n }\n }\n if (newIndices.length / 3 !== numberOfTriangles) {\n console.error(\"THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.\");\n }\n const newGeometry = geometry.clone();\n newGeometry.setIndex(newIndices);\n return newGeometry;\n}\nexport {GLTFLoader};\nexport default null;\n", "import {\n CompressedTextureLoader,\n RGBAFormat,\n RGBA_S3TC_DXT3_Format,\n RGBA_S3TC_DXT5_Format,\n RGB_ETC1_Format,\n RGB_S3TC_DXT1_Format\n} from \"/-/three@v0.136.0-4Px7Kx1INqCFBN0tXUQc/dist=es2019,mode=imports/optimized/three.js\";\nclass DDSLoader extends CompressedTextureLoader {\n constructor(manager) {\n super(manager);\n }\n parse(buffer, loadMipmaps) {\n const dds = {mipmaps: [], width: 0, height: 0, format: null, mipmapCount: 1};\n const DDS_MAGIC = 542327876;\n const DDSD_MIPMAPCOUNT = 131072;\n const DDSCAPS2_CUBEMAP = 512;\n const DDSCAPS2_CUBEMAP_POSITIVEX = 1024;\n const DDSCAPS2_CUBEMAP_NEGATIVEX = 2048;\n const DDSCAPS2_CUBEMAP_POSITIVEY = 4096;\n const DDSCAPS2_CUBEMAP_NEGATIVEY = 8192;\n const DDSCAPS2_CUBEMAP_POSITIVEZ = 16384;\n const DDSCAPS2_CUBEMAP_NEGATIVEZ = 32768;\n const DDPF_FOURCC = 4;\n function fourCCToInt32(value) {\n return value.charCodeAt(0) + (value.charCodeAt(1) << 8) + (value.charCodeAt(2) << 16) + (value.charCodeAt(3) << 24);\n }\n function int32ToFourCC(value) {\n return String.fromCharCode(value & 255, value >> 8 & 255, value >> 16 & 255, value >> 24 & 255);\n }\n function loadARGBMip(buffer2, dataOffset2, width, height) {\n const dataLength = width * height * 4;\n const srcBuffer = new Uint8Array(buffer2, dataOffset2, dataLength);\n const byteArray = new Uint8Array(dataLength);\n let dst = 0;\n let src = 0;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const b = srcBuffer[src];\n src++;\n const g = srcBuffer[src];\n src++;\n const r = srcBuffer[src];\n src++;\n const a = srcBuffer[src];\n src++;\n byteArray[dst] = r;\n dst++;\n byteArray[dst] = g;\n dst++;\n byteArray[dst] = b;\n dst++;\n byteArray[dst] = a;\n dst++;\n }\n }\n return byteArray;\n }\n const FOURCC_DXT1 = fourCCToInt32(\"DXT1\");\n const FOURCC_DXT3 = fourCCToInt32(\"DXT3\");\n const FOURCC_DXT5 = fourCCToInt32(\"DXT5\");\n const FOURCC_ETC1 = fourCCToInt32(\"ETC1\");\n const headerLengthInt = 31;\n const off_magic = 0;\n const off_size = 1;\n const off_flags = 2;\n const off_height = 3;\n const off_width = 4;\n const off_mipmapCount = 7;\n const off_pfFlags = 20;\n const off_pfFourCC = 21;\n const off_RGBBitCount = 22;\n const off_RBitMask = 23;\n const off_GBitMask = 24;\n const off_BBitMask = 25;\n const off_ABitMask = 26;\n const off_caps2 = 28;\n const header = new Int32Array(buffer, 0, headerLengthInt);\n if (header[off_magic] !== DDS_MAGIC) {\n console.error(\"THREE.DDSLoader.parse: Invalid magic number in DDS header.\");\n return dds;\n }\n if (!header[off_pfFlags] & DDPF_FOURCC) {\n console.error(\"THREE.DDSLoader.parse: Unsupported format, must contain a FourCC code.\");\n return dds;\n }\n let blockBytes;\n const fourCC = header[off_pfFourCC];\n let isRGBAUncompressed = false;\n switch (fourCC) {\n case FOURCC_DXT1:\n blockBytes = 8;\n dds.format = RGB_S3TC_DXT1_Format;\n break;\n case FOURCC_DXT3:\n blockBytes = 16;\n dds.format = RGBA_S3TC_DXT3_Format;\n break;\n case FOURCC_DXT5:\n blockBytes = 16;\n dds.format = RGBA_S3TC_DXT5_Format;\n break;\n case FOURCC_ETC1:\n blockBytes = 8;\n dds.format = RGB_ETC1_Format;\n break;\n default:\n if (header[off_RGBBitCount] === 32 && header[off_RBitMask] & 16711680 && header[off_GBitMask] & 65280 && header[off_BBitMask] & 255 && header[off_ABitMask] & 4278190080) {\n isRGBAUncompressed = true;\n blockBytes = 64;\n dds.format = RGBAFormat;\n } else {\n console.error(\"THREE.DDSLoader.parse: Unsupported FourCC code \", int32ToFourCC(fourCC));\n return dds;\n }\n }\n dds.mipmapCount = 1;\n if (header[off_flags] & DDSD_MIPMAPCOUNT && loadMipmaps !== false) {\n dds.mipmapCount = Math.max(1, header[off_mipmapCount]);\n }\n const caps2 = header[off_caps2];\n dds.isCubemap = caps2 & DDSCAPS2_CUBEMAP ? true : false;\n if (dds.isCubemap && (!(caps2 & DDSCAPS2_CUBEMAP_POSITIVEX) || !(caps2 & DDSCAPS2_CUBEMAP_NEGATIVEX) || !(caps2 & DDSCAPS2_CUBEMAP_POSITIVEY) || !(caps2 & DDSCAPS2_CUBEMAP_NEGATIVEY) || !(caps2 & DDSCAPS2_CUBEMAP_POSITIVEZ) || !(caps2 & DDSCAPS2_CUBEMAP_NEGATIVEZ))) {\n console.error(\"THREE.DDSLoader.parse: Incomplete cubemap faces\");\n return dds;\n }\n dds.width = header[off_width];\n dds.height = header[off_height];\n let dataOffset = header[off_size] + 4;\n const faces = dds.isCubemap ? 6 : 1;\n for (let face = 0; face < faces; face++) {\n let width = dds.width;\n let height = dds.height;\n for (let i = 0; i < dds.mipmapCount; i++) {\n let byteArray, dataLength;\n if (isRGBAUncompressed) {\n byteArray = loadARGBMip(buffer, dataOffset, width, height);\n dataLength = byteArray.length;\n } else {\n dataLength = Math.max(4, width) / 4 * Math.max(4, height) / 4 * blockBytes;\n byteArray = new Uint8Array(buffer, dataOffset, dataLength);\n }\n const mipmap = {data: byteArray, width, height};\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 return dds;\n }\n}\nexport {DDSLoader};\nexport default null;\n", "import {\n EventDispatcher,\n MOUSE,\n Quaternion,\n Spherical,\n TOUCH,\n Vector2,\n Vector3\n} from \"/-/three@v0.136.0-4Px7Kx1INqCFBN0tXUQc/dist=es2019,mode=imports/optimized/three.js\";\nconst _changeEvent = {type: \"change\"};\nconst _startEvent = {type: \"start\"};\nconst _endEvent = {type: \"end\"};\nclass OrbitControls extends EventDispatcher {\n constructor(object, domElement) {\n super();\n if (domElement === void 0)\n console.warn('THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.');\n if (domElement === document)\n console.error('THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.');\n this.object = object;\n this.domElement = domElement;\n this.domElement.style.touchAction = \"none\";\n this.enabled = true;\n this.target = new Vector3();\n this.minDistance = 0;\n this.maxDistance = Infinity;\n this.minZoom = 0;\n this.maxZoom = Infinity;\n this.minPolarAngle = 0;\n this.maxPolarAngle = Math.PI;\n this.minAzimuthAngle = -Infinity;\n this.maxAzimuthAngle = Infinity;\n this.enableDamping = false;\n this.dampingFactor = 0.05;\n this.enableZoom = true;\n this.zoomSpeed = 1;\n this.enableRotate = true;\n this.rotateSpeed = 1;\n this.enablePan = true;\n this.panSpeed = 1;\n this.screenSpacePanning = true;\n this.keyPanSpeed = 7;\n this.autoRotate = false;\n this.autoRotateSpeed = 2;\n this.keys = {LEFT: \"ArrowLeft\", UP: \"ArrowUp\", RIGHT: \"ArrowRight\", BOTTOM: \"ArrowDown\"};\n this.mouseButtons = {LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN};\n this.touches = {ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN};\n this.target0 = this.target.clone();\n this.position0 = this.object.position.clone();\n this.zoom0 = this.object.zoom;\n this._domElementKeyEvents = null;\n this.getPolarAngle = function() {\n return spherical.phi;\n };\n this.getAzimuthalAngle = function() {\n return spherical.theta;\n };\n this.getDistance = function() {\n return this.object.position.distanceTo(this.target);\n };\n this.listenToKeyEvents = function(domElement2) {\n domElement2.addEventListener(\"keydown\", onKeyDown);\n this._domElementKeyEvents = domElement2;\n };\n this.saveState = function() {\n scope.target0.copy(scope.target);\n scope.position0.copy(scope.object.position);\n scope.zoom0 = scope.object.zoom;\n };\n this.reset = function() {\n scope.target.copy(scope.target0);\n scope.object.position.copy(scope.position0);\n scope.object.zoom = scope.zoom0;\n scope.object.updateProjectionMatrix();\n scope.dispatchEvent(_changeEvent);\n scope.update();\n state = STATE.NONE;\n };\n this.update = function() {\n const offset = new Vector3();\n const quat = new Quaternion().setFromUnitVectors(object.up, new Vector3(0, 1, 0));\n const quatInverse = quat.clone().invert();\n const lastPosition = new Vector3();\n const lastQuaternion = new Quaternion();\n const twoPI = 2 * Math.PI;\n return function update() {\n const position = scope.object.position;\n offset.copy(position).sub(scope.target);\n offset.applyQuaternion(quat);\n spherical.setFromVector3(offset);\n if (scope.autoRotate && state === STATE.NONE) {\n rotateLeft(getAutoRotationAngle());\n }\n if (scope.enableDamping) {\n spherical.theta += sphericalDelta.theta * scope.dampingFactor;\n spherical.phi += sphericalDelta.phi * scope.dampingFactor;\n } else {\n spherical.theta += sphericalDelta.theta;\n spherical.phi += sphericalDelta.phi;\n }\n let min = scope.minAzimuthAngle;\n let max = scope.maxAzimuthAngle;\n if (isFinite(min) && isFinite(max)) {\n if (min < -Math.PI)\n min += twoPI;\n else if (min > Math.PI)\n min -= twoPI;\n if (max < -Math.PI)\n max += twoPI;\n else if (max > Math.PI)\n max -= twoPI;\n if (min <= max) {\n spherical.theta = Math.max(min, Math.min(max, spherical.theta));\n } else {\n spherical.theta = spherical.theta > (min + max) / 2 ? Math.max(min, spherical.theta) : Math.min(max, spherical.theta);\n }\n }\n spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi));\n spherical.makeSafe();\n spherical.radius *= scale;\n spherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius));\n if (scope.enableDamping === true) {\n scope.target.addScaledVector(panOffset, scope.dampingFactor);\n } else {\n scope.target.add(panOffset);\n }\n offset.setFromSpherical(spherical);\n offset.applyQuaternion(quatInverse);\n position.copy(scope.target).add(offset);\n scope.object.lookAt(scope.target);\n if (scope.enableDamping === true) {\n sphericalDelta.theta *= 1 - scope.dampingFactor;\n sphericalDelta.phi *= 1 - scope.dampingFactor;\n panOffset.multiplyScalar(1 - scope.dampingFactor);\n } else {\n sphericalDelta.set(0, 0, 0);\n panOffset.set(0, 0, 0);\n }\n scale = 1;\n if (zoomChanged || lastPosition.distanceToSquared(scope.object.position) > EPS || 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS) {\n scope.dispatchEvent(_changeEvent);\n lastPosition.copy(scope.object.position);\n lastQuaternion.copy(scope.object.quaternion);\n zoomChanged = false;\n return true;\n }\n return false;\n };\n }();\n this.dispose = function() {\n scope.domElement.removeEventListener(\"contextmenu\", onContextMenu);\n scope.domElement.removeEventListener(\"pointerdown\", onPointerDown);\n scope.domElement.removeEventListener(\"pointercancel\", onPointerCancel);\n scope.domElement.removeEventListener(\"wheel\", onMouseWheel);\n scope.domElement.removeEventListener(\"pointermove\", onPointerMove);\n scope.domElement.removeEventListener(\"pointerup\", onPointerUp);\n if (scope._domElementKeyEvents !== null) {\n scope._domElementKeyEvents.removeEventListener(\"keydown\", onKeyDown);\n }\n };\n const scope = this;\n const STATE = {\n NONE: -1,\n ROTATE: 0,\n DOLLY: 1,\n PAN: 2,\n TOUCH_ROTATE: 3,\n TOUCH_PAN: 4,\n TOUCH_DOLLY_PAN: 5,\n TOUCH_DOLLY_ROTATE: 6\n };\n let state = STATE.NONE;\n const EPS = 1e-6;\n const spherical = new Spherical();\n const sphericalDelta = new Spherical();\n let scale = 1;\n const panOffset = new Vector3();\n let zoomChanged = false;\n const rotateStart = new Vector2();\n const rotateEnd = new Vector2();\n const rotateDelta = new Vector2();\n const panStart = new Vector2();\n const panEnd = new Vector2();\n const panDelta = new Vector2();\n const dollyStart = new Vector2();\n const dollyEnd = new Vector2();\n const dollyDelta = new Vector2();\n const pointers = [];\n const pointerPositions = {};\n function getAutoRotationAngle() {\n return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n }\n function getZoomScale() {\n return Math.pow(0.95, scope.zoomSpeed);\n }\n function rotateLeft(angle) {\n sphericalDelta.theta -= angle;\n }\n function rotateUp(angle) {\n sphericalDelta.phi -= angle;\n }\n const panLeft = function() {\n const v = new Vector3();\n return function panLeft2(distance, objectMatrix) {\n v.setFromMatrixColumn(objectMatrix, 0);\n v.multiplyScalar(-distance);\n panOffset.add(v);\n };\n }();\n const panUp = function() {\n const v = new Vector3();\n return function panUp2(distance, objectMatrix) {\n if (scope.screenSpacePanning === true) {\n v.setFromMatrixColumn(objectMatrix, 1);\n } else {\n v.setFromMatrixColumn(objectMatrix, 0);\n v.crossVectors(scope.object.up, v);\n }\n v.multiplyScalar(distance);\n panOffset.add(v);\n };\n }();\n const pan = function() {\n const offset = new Vector3();\n return function pan2(deltaX, deltaY) {\n const element = scope.domElement;\n if (scope.object.isPerspectiveCamera) {\n const position = scope.object.position;\n offset.copy(position).sub(scope.target);\n let targetDistance = offset.length();\n targetDistance *= Math.tan(scope.object.fov / 2 * Math.PI / 180);\n panLeft(2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix);\n panUp(2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix);\n } else if (scope.object.isOrthographicCamera) {\n panLeft(deltaX * (scope.object.right - scope.object.left) / scope.object.zoom / element.clientWidth, scope.object.matrix);\n panUp(deltaY * (scope.object.top - scope.object.bottom) / scope.object.zoom / element.clientHeight, scope.object.matrix);\n } else {\n console.warn(\"WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.\");\n scope.enablePan = false;\n }\n };\n }();\n function dollyOut(dollyScale) {\n if (scope.object.isPerspectiveCamera) {\n scale /= dollyScale;\n } else if (scope.object.isOrthographicCamera) {\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale));\n scope.object.updateProjectionMatrix();\n zoomChanged = true;\n } else {\n console.warn(\"WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.\");\n scope.enableZoom = false;\n }\n }\n function dollyIn(dollyScale) {\n if (scope.object.isPerspectiveCamera) {\n scale *= dollyScale;\n } else if (scope.object.isOrthographicCamera) {\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale));\n scope.object.updateProjectionMatrix();\n zoomChanged = true;\n } else {\n console.warn(\"WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.\");\n scope.enableZoom = false;\n }\n }\n function handleMouseDownRotate(event) {\n rotateStart.set(event.clientX, event.clientY);\n }\n function handleMouseDownDolly(event) {\n dollyStart.set(event.clientX, event.clientY);\n }\n function handleMouseDownPan(event) {\n panStart.set(event.clientX, event.clientY);\n }\n function handleMouseMoveRotate(event) {\n rotateEnd.set(event.clientX, event.clientY);\n rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);\n const element = scope.domElement;\n rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight);\n rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);\n rotateStart.copy(rotateEnd);\n scope.update();\n }\n function handleMouseMoveDolly(event) {\n dollyEnd.set(event.clientX, event.clientY);\n dollyDelta.subVectors(dollyEnd, dollyStart);\n if (dollyDelta.y > 0) {\n dollyOut(getZoomScale());\n } else if (dollyDelta.y < 0) {\n dollyIn(getZoomScale());\n }\n dollyStart.copy(dollyEnd);\n scope.update();\n }\n function handleMouseMovePan(event) {\n panEnd.set(event.clientX, event.clientY);\n panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);\n pan(panDelta.x, panDelta.y);\n panStart.copy(panEnd);\n scope.update();\n }\n function handleMouseWheel(event) {\n if (event.deltaY < 0) {\n dollyIn(getZoomScale());\n } else if (event.deltaY > 0) {\n dollyOut(getZoomScale());\n }\n scope.update();\n }\n function handleKeyDown(event) {\n let needsUpdate = false;\n switch (event.code) {\n case scope.keys.UP:\n pan(0, scope.keyPanSpeed);\n needsUpdate = true;\n break;\n case scope.keys.BOTTOM:\n pan(0, -scope.keyPanSpeed);\n needsUpdate = true;\n break;\n case scope.keys.LEFT:\n pan(scope.keyPanSpeed, 0);\n needsUpdate = true;\n break;\n case scope.keys.RIGHT:\n pan(-scope.keyPanSpeed, 0);\n needsUpdate = true;\n break;\n }\n if (needsUpdate) {\n event.preventDefault();\n scope.update();\n }\n }\n function handleTouchStartRotate() {\n if (pointers.length === 1) {\n rotateStart.set(pointers[0].pageX, pointers[0].pageY);\n } else {\n const x = 0.5 * (pointers[0].pageX + pointers[1].pageX);\n const y = 0.5 * (pointers[0].pageY + pointers[1].pageY);\n rotateStart.set(x, y);\n }\n }\n function handleTouchStartPan() {\n if (pointers.length === 1) {\n panStart.set(pointers[0].pageX, pointers[0].pageY);\n } else {\n const x = 0.5 * (pointers[0].pageX + pointers[1].pageX);\n const y = 0.5 * (pointers[0].pageY + pointers[1].pageY);\n panStart.set(x, y);\n }\n }\n function handleTouchStartDolly() {\n const dx = pointers[0].pageX - pointers[1].pageX;\n const dy = pointers[0].pageY - pointers[1].pageY;\n const distance = Math.sqrt(dx * dx + dy * dy);\n dollyStart.set(0, distance);\n }\n function handleTouchStartDollyPan() {\n if (scope.enableZoom)\n handleTouchStartDolly();\n if (scope.enablePan)\n handleTouchStartPan();\n }\n function handleTouchStartDollyRotate() {\n if (scope.enableZoom)\n handleTouchStartDolly();\n if (scope.enableRotate)\n handleTouchStartRotate();\n }\n function handleTouchMoveRotate(event) {\n if (pointers.length == 1) {\n rotateEnd.set(event.pageX, event.pageY);\n } else {\n const position = getSecondPointerPosition(event);\n const x = 0.5 * (event.pageX + position.x);\n const y = 0.5 * (event.pageY + position.y);\n rotateEnd.set(x, y);\n }\n rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);\n const element = scope.domElement;\n rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight);\n rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);\n rotateStart.copy(rotateEnd);\n }\n function handleTouchMovePan(event) {\n if (pointers.length === 1) {\n panEnd.set(event.pageX, event.pageY);\n } else {\n const position = getSecondPointerPosition(event);\n const x = 0.5 * (event.pageX + position.x);\n const y = 0.5 * (event.pageY + position.y);\n panEnd.set(x, y);\n }\n panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);\n pan(panDelta.x, panDelta.y);\n panStart.copy(panEnd);\n }\n function handleTouchMoveDolly(event) {\n const position = getSecondPointerPosition(event);\n const dx = event.pageX - position.x;\n const dy = event.pageY - position.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n dollyEnd.set(0, distance);\n dollyDelta.set(0, Math.pow(dollyEnd.y / dollyStart.y, scope.zoomSpeed));\n dollyOut(dollyDelta.y);\n dollyStart.copy(dollyEnd);\n }\n function handleTouchMoveDollyPan(event) {\n if (scope.enableZoom)\n handleTouchMoveDolly(event);\n if (scope.enablePan)\n handleTouchMovePan(event);\n }\n function handleTouchMoveDollyRotate(event) {\n if (scope.enableZoom)\n handleTouchMoveDolly(event);\n if (scope.enableRotate)\n handleTouchMoveRotate(event);\n }\n function onPointerDown(event) {\n if (scope.enabled === false)\n return;\n if (pointers.length === 0) {\n scope.domElement.setPointerCapture(event.pointerId);\n scope.domElement.addEventListener(\"pointermove\", onPointerMove);\n scope.domElement.addEventListener(\"pointerup\", onPointerUp);\n }\n addPointer(event);\n if (event.pointerType === \"touch\") {\n onTouchStart(event);\n } else {\n onMouseDown(event);\n }\n }\n function onPointerMove(event) {\n if (scope.enabled === false)\n return;\n if (event.pointerType === \"touch\") {\n onTouchMove(event);\n } else {\n onMouseMove(event);\n }\n }\n function onPointerUp(event) {\n removePointer(event);\n if (pointers.length === 0) {\n scope.domElement.releasePointerCapture(event.pointerId);\n scope.domElement.removeEventListener(\"pointermove\", onPointerMove);\n scope.domElement.removeEventListener(\"pointerup\", onPointerUp);\n }\n scope.dispatchEvent(_endEvent);\n state = STATE.NONE;\n }\n function onPointerCancel(event) {\n removePointer(event);\n }\n function onMouseDown(event) {\n let mouseAction;\n switch (event.button) {\n case 0:\n mouseAction = scope.mouseButtons.LEFT;\n break;\n case 1:\n mouseAction = scope.mouseButtons.MIDDLE;\n break;\n case 2:\n mouseAction = scope.mouseButtons.RIGHT;\n break;\n default:\n mouseAction = -1;\n }\n switch (mouseAction) {\n case MOUSE.DOLLY:\n if (scope.enableZoom === false)\n return;\n handleMouseDownDolly(event);\n state = STATE.DOLLY;\n break;\n case MOUSE.ROTATE:\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n if (scope.enablePan === false)\n return;\n handleMouseDownPan(event);\n state = STATE.PAN;\n } else {\n if (scope.enableRotate === false)\n return;\n handleMouseDownRotate(event);\n state = STATE.ROTATE;\n }\n break;\n case MOUSE.PAN:\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n if (scope.enableRotate === false)\n return;\n handleMouseDownRotate(event);\n state = STATE.ROTATE;\n } else {\n if (scope.enablePan === false)\n return;\n handleMouseDownPan(event);\n state = STATE.PAN;\n }\n break;\n default:\n state = STATE.NONE;\n }\n if (state !== STATE.NONE) {\n scope.dispatchEvent(_startEvent);\n }\n }\n function onMouseMove(event) {\n if (scope.enabled === false)\n return;\n switch (state) {\n case STATE.ROTATE:\n if (scope.enableRotate === false)\n return;\n handleMouseMoveRotate(event);\n break;\n case STATE.DOLLY:\n if (scope.enableZoom === false)\n return;\n handleMouseMoveDolly(event);\n break;\n case STATE.PAN:\n if (scope.enablePan === false)\n return;\n handleMouseMovePan(event);\n break;\n }\n }\n function onMouseWheel(event) {\n if (scope.enabled === false || scope.enableZoom === false || state !== STATE.NONE)\n return;\n event.preventDefault();\n scope.dispatchEvent(_startEvent);\n handleMouseWheel(event);\n scope.dispatchEvent(_endEvent);\n }\n function onKeyDown(event) {\n if (scope.enabled === false || scope.enablePan === false)\n return;\n handleKeyDown(event);\n }\n function onTouchStart(event) {\n trackPointer(event);\n switch (pointers.length) {\n case 1:\n switch (scope.touches.ONE) {\n case TOUCH.ROTATE:\n if (scope.enableRotate === false)\n return;\n handleTouchStartRotate();\n state = STATE.TOUCH_ROTATE;\n break;\n case TOUCH.PAN:\n if (scope.enablePan === false)\n return;\n handleTouchStartPan();\n state = STATE.TOUCH_PAN;\n break;\n default:\n state = STATE.NONE;\n }\n break;\n case 2:\n switch (scope.touches.TWO) {\n case TOUCH.DOLLY_PAN:\n if (scope.enableZoom === false && scope.enablePan === false)\n return;\n handleTouchStartDollyPan();\n state = STATE.TOUCH_DOLLY_PAN;\n break;\n case TOUCH.DOLLY_ROTATE:\n if (scope.enableZoom === false && scope.enableRotate === false)\n return;\n handleTouchStartDollyRotate();\n state = STATE.TOUCH_DOLLY_ROTATE;\n break;\n default:\n state = STATE.NONE;\n }\n break;\n default:\n state = STATE.NONE;\n }\n if (state !== STATE.NONE) {\n scope.dispatchEvent(_startEvent);\n }\n }\n function onTouchMove(event) {\n trackPointer(event);\n switch (state) {\n case STATE.TOUCH_ROTATE:\n if (scope.enableRotate === false)\n return;\n handleTouchMoveRotate(event);\n scope.update();\n break;\n case STATE.TOUCH_PAN:\n if (scope.enablePan === false)\n return;\n handleTouchMovePan(event);\n scope.update();\n break;\n case STATE.TOUCH_DOLLY_PAN:\n if (scope.enableZoom === false && scope.enablePan === false)\n return;\n handleTouchMoveDollyPan(event);\n scope.update();\n break;\n case STATE.TOUCH_DOLLY_ROTATE:\n if (scope.enableZoom === false && scope.enableRotate === false)\n return;\n handleTouchMoveDollyRotate(event);\n scope.update();\n break;\n default:\n state = STATE.NONE;\n }\n }\n function onContextMenu(event) {\n if (scope.enabled === false)\n return;\n event.preventDefault();\n }\n function addPointer(event) {\n pointers.push(event);\n }\n function removePointer(event) {\n delete pointerPositions[event.pointerId];\n for (let i = 0; i < pointers.length; i++) {\n if (pointers[i].pointerId == event.pointerId) {\n pointers.splice(i, 1);\n return;\n }\n }\n }\n function trackPointer(event) {\n let position = pointerPositions[event.pointerId];\n if (position === void 0) {\n position = new Vector2();\n pointerPositions[event.pointerId] = position;\n }\n position.set(event.pageX, event.pageY);\n }\n function getSecondPointerPosition(event) {\n const pointer = event.pointerId === pointers[0].pointerId ? pointers[1] : pointers[0];\n return pointerPositions[pointer.pointerId];\n }\n scope.domElement.addEventListener(\"contextmenu\", onContextMenu);\n scope.domElement.addEventListener(\"pointerdown\", onPointerDown);\n scope.domElement.addEventListener(\"pointercancel\", onPointerCancel);\n scope.domElement.addEventListener(\"wheel\", onMouseWheel, {passive: false});\n this.update();\n }\n}\nclass MapControls extends OrbitControls {\n constructor(object, domElement) {\n super(object, domElement);\n this.screenSpacePanning = false;\n this.mouseButtons.LEFT = MOUSE.PAN;\n this.mouseButtons.RIGHT = MOUSE.ROTATE;\n this.touches.ONE = TOUCH.PAN;\n this.touches.TWO = TOUCH.DOLLY_ROTATE;\n }\n}\nexport {OrbitControls, MapControls};\nexport default null;\n", "/* esm.sh - esbuild bundle(three@0.138.2) es2021 production */\nvar pa=\"138\",Ey={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},Ty={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},Mu=0,rl=1,bu=2,Ay=3,Cy=0,Qc=1,wu=2,sr=3,Di=0,lt=1,Fi=2,eh=1,Ry=2,_n=0,Ri=1,sl=2,ol=3,al=4,Su=5,wi=100,Eu=101,Tu=102,ll=103,cl=104,Au=200,Cu=201,Ru=202,Lu=203,th=204,nh=205,Pu=206,Iu=207,Du=208,Fu=209,Bu=210,Nu=0,zu=1,Uu=2,ia=3,Ou=4,Hu=5,Gu=6,Vu=7,ks=0,ku=1,Wu=2,vn=0,qu=1,Xu=2,Ju=3,Yu=4,Zu=5,ma=300,Jn=301,Yn=302,Fs=303,Bs=304,Dr=306,Ws=307,Ns=1e3,At=1001,zs=1002,ut=1003,ra=1004,Ly=1004,sa=1005,Py=1005,nt=1006,ih=1007,Iy=1007,Vi=1008,Dy=1008,Zn=1009,$u=1010,ju=1011,hr=1012,Ku=1013,Is=1014,yn=1015,Li=1016,Qu=1017,ed=1018,Pi=1020,td=1021,nd=1022,wt=1023,id=1024,rd=1025,Wn=1026,Bi=1027,sd=1028,od=1029,ad=1030,ld=1031,cd=1033,xo=33776,yo=33777,_o=33778,vo=33779,hl=35840,ul=35841,dl=35842,fl=35843,hd=36196,pl=37492,ml=37496,gl=37808,xl=37809,yl=37810,_l=37811,vl=37812,Ml=37813,bl=37814,wl=37815,Sl=37816,El=37817,Tl=37818,Al=37819,Cl=37820,Rl=37821,Ll=36492,ud=2200,dd=2201,fd=2202,Us=2300,Os=2301,Mo=2302,Si=2400,Ei=2401,Hs=2402,ga=2500,rh=2501,pd=0,Fy=1,By=2,bn=3e3,je=3001,md=3200,gd=3201,ki=0,xd=1,Ny=0,bo=7680,zy=7681,Uy=7682,Oy=7683,Hy=34055,Gy=34056,Vy=5386,ky=512,Wy=513,qy=514,Xy=515,Jy=516,Yy=517,Zy=518,yd=519,ur=35044,dr=35048,$y=35040,jy=35045,Ky=35049,Qy=35041,e0=35046,t0=35050,n0=35042,i0=\"100\",Pl=\"300 es\",oa=1035,Tn=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;let n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;let i=this._listeners[e];if(i!==void 0){let r=i.indexOf(t);r!==-1&&i.splice(r,1)}}dispatchEvent(e){if(this._listeners===void 0)return;let n=this._listeners[e.type];if(n!==void 0){e.target=this;let i=n.slice(0);for(let r=0,o=i.length;r>8&255]+gt[s>>16&255]+gt[s>>24&255]+\"-\"+gt[e&255]+gt[e>>8&255]+\"-\"+gt[e>>16&15|64]+gt[e>>24&255]+\"-\"+gt[t&63|128]+gt[t>>8&255]+\"-\"+gt[t>>16&255]+gt[t>>24&255]+gt[n&255]+gt[n>>8&255]+gt[n>>16&255]+gt[n>>24&255]).toUpperCase()}function xt(s,e,t){return Math.max(e,Math.min(t,s))}function xa(s,e){return(s%e+e)%e}function _d(s,e,t,n,i){return n+(s-e)*(i-n)/(t-e)}function vd(s,e,t){return s!==e?(t-s)/(e-s):0}function ar(s,e,t){return(1-t)*s+t*e}function Md(s,e,t,n){return ar(s,e,1-Math.exp(-t*n))}function bd(s,e=1){return e-Math.abs(xa(s,e*2)-e)}function wd(s,e,t){return s<=e?0:s>=t?1:(s=(s-e)/(t-e),s*s*(3-2*s))}function Sd(s,e,t){return s<=e?0:s>=t?1:(s=(s-e)/(t-e),s*s*s*(s*(s*6-15)+10))}function Ed(s,e){return s+Math.floor(Math.random()*(e-s+1))}function Td(s,e){return s+Math.random()*(e-s)}function Ad(s){return s*(.5-Math.random())}function Cd(s){return s!==void 0&&(qr=s%2147483647),qr=qr*16807%2147483647,(qr-1)/2147483646}function Rd(s){return s*qn}function Ld(s){return s*fr}function aa(s){return(s&s-1)===0&&s!==0}function sh(s){return Math.pow(2,Math.ceil(Math.log(s)/Math.LN2))}function Gs(s){return Math.pow(2,Math.floor(Math.log(s)/Math.LN2))}function Pd(s,e,t,n,i){let r=Math.cos,o=Math.sin,a=r(t/2),l=o(t/2),c=r((e+n)/2),h=o((e+n)/2),u=r((e-n)/2),d=o((e-n)/2),f=r((n-e)/2),m=o((n-e)/2);switch(i){case\"XYX\":s.set(a*h,l*u,l*d,a*c);break;case\"YZY\":s.set(l*d,a*h,l*u,a*c);break;case\"ZXZ\":s.set(l*u,l*d,a*h,a*c);break;case\"XZX\":s.set(a*h,l*m,l*f,a*c);break;case\"YXY\":s.set(l*f,a*h,l*m,a*c);break;case\"ZYZ\":s.set(l*m,l*f,a*h,a*c);break;default:console.warn(\"THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: \"+i)}}var r0=Object.freeze({__proto__:null,DEG2RAD:qn,RAD2DEG:fr,generateUUID:Pt,clamp:xt,euclideanModulo:xa,mapLinear:_d,inverseLerp:vd,lerp:ar,damp:Md,pingpong:bd,smoothstep:wd,smootherstep:Sd,randInt:Ed,randFloat:Td,randFloatSpread:Ad,seededRandom:Cd,degToRad:Rd,radToDeg:Ld,isPowerOfTwo:aa,ceilPowerOfTwo:sh,floorPowerOfTwo:Gs,setQuaternionFromProperEuler:Pd}),Z=class{constructor(e=0,t=0){this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error(\"index is out of range: \"+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error(\"index is out of range: \"+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e,t){return t!==void 0?(console.warn(\"THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.\"),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e,t){return t!==void 0?(console.warn(\"THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\"),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){let t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t,n){return n!==void 0&&console.warn(\"THREE.Vector2: offset has been removed from .fromBufferAttribute().\"),this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let n=Math.cos(t),i=Math.sin(t),r=this.x-e.x,o=this.y-e.y;return this.x=r*n-o*i+e.x,this.y=r*i+o*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}};Z.prototype.isVector2=!0;var dt=class{constructor(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error(\"THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.\")}set(e,t,n,i,r,o,a,l,c){let h=this.elements;return h[0]=e,h[1]=i,h[2]=a,h[3]=t,h[4]=r,h[5]=l,h[6]=n,h[7]=o,h[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,i=t.elements,r=this.elements,o=n[0],a=n[3],l=n[6],c=n[1],h=n[4],u=n[7],d=n[2],f=n[5],m=n[8],x=i[0],y=i[3],g=i[6],p=i[1],M=i[4],_=i[7],v=i[2],A=i[5],R=i[8];return r[0]=o*x+a*p+l*v,r[3]=o*y+a*M+l*A,r[6]=o*g+a*_+l*R,r[1]=c*x+h*p+u*v,r[4]=c*y+h*M+u*A,r[7]=c*g+h*_+u*R,r[2]=d*x+f*p+m*v,r[5]=d*y+f*M+m*A,r[8]=d*g+f*_+m*R,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],o=e[4],a=e[5],l=e[6],c=e[7],h=e[8];return t*o*h-t*a*c-n*r*h+n*a*l+i*r*c-i*o*l}invert(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],o=e[4],a=e[5],l=e[6],c=e[7],h=e[8],u=h*o-a*c,d=a*l-h*r,f=c*r-o*l,m=t*u+n*d+i*f;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);let x=1/m;return e[0]=u*x,e[1]=(i*c-h*n)*x,e[2]=(a*n-i*o)*x,e[3]=d*x,e[4]=(h*t-i*l)*x,e[5]=(i*r-a*t)*x,e[6]=f*x,e[7]=(n*l-c*t)*x,e[8]=(o*t-n*r)*x,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,r,o,a){let l=Math.cos(r),c=Math.sin(r);return this.set(n*l,n*c,-n*(l*o+c*a)+o+e,-i*c,i*l,-i*(-c*o+l*a)+a+t,0,0,1),this}scale(e,t){let n=this.elements;return n[0]*=e,n[3]*=e,n[6]*=e,n[1]*=t,n[4]*=t,n[7]*=t,this}rotate(e){let t=Math.cos(e),n=Math.sin(e),i=this.elements,r=i[0],o=i[3],a=i[6],l=i[1],c=i[4],h=i[7];return i[0]=t*r+n*l,i[3]=t*o+n*c,i[6]=t*a+n*h,i[1]=-n*r+t*l,i[4]=-n*o+t*c,i[7]=-n*a+t*h,this}translate(e,t){let n=this.elements;return n[0]+=e*n[2],n[3]+=e*n[5],n[6]+=e*n[8],n[1]+=t*n[2],n[4]+=t*n[5],n[7]+=t*n[8],this}equals(e){let t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}};dt.prototype.isMatrix3=!0;function oh(s){for(let e=s.length-1;e>=0;--e)if(s[e]>65535)return!0;return!1}var Id={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Ti(s,e){return new Id[s](e)}function pr(s){return document.createElementNS(\"http://www.w3.org/1999/xhtml\",s)}var ah={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},zt={h:0,s:0,l:0},Xr={h:0,s:0,l:0};function wo(s,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?s+(e-s)*6*t:t<1/2?e:t<2/3?s+(e-s)*6*(2/3-t):s}function Ii(s){return s<.04045?s*.0773993808:Math.pow(s*.9478672986+.0521327014,2.4)}function So(s){return s<.0031308?s*12.92:1.055*Math.pow(s,.41666)-.055}var se=class{constructor(e,t,n){return t===void 0&&n===void 0?this.set(e):this.setRGB(e,t,n)}set(e){return e&&e.isColor?this.copy(e):typeof e==\"number\"?this.setHex(e):typeof e==\"string\"&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,this}setRGB(e,t,n){return this.r=e,this.g=t,this.b=n,this}setHSL(e,t,n){if(e=xa(e,1),t=xt(t,0,1),n=xt(n,0,1),t===0)this.r=this.g=this.b=n;else{let i=n<=.5?n*(1+t):n+t-n*t,r=2*n-i;this.r=wo(r,i,e+1/3),this.g=wo(r,i,e),this.b=wo(r,i,e-1/3)}return this}setStyle(e){function t(i){i!==void 0&&parseFloat(i)<1&&console.warn(\"THREE.Color: Alpha component of \"+e+\" will be ignored.\")}let n;if(n=/^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec(e)){let i,r=n[1],o=n[2];switch(r){case\"rgb\":case\"rgba\":if(i=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(o))return this.r=Math.min(255,parseInt(i[1],10))/255,this.g=Math.min(255,parseInt(i[2],10))/255,this.b=Math.min(255,parseInt(i[3],10))/255,t(i[4]),this;if(i=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(o))return this.r=Math.min(100,parseInt(i[1],10))/100,this.g=Math.min(100,parseInt(i[2],10))/100,this.b=Math.min(100,parseInt(i[3],10))/100,t(i[4]),this;break;case\"hsl\":case\"hsla\":if(i=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(o)){let a=parseFloat(i[1])/360,l=parseInt(i[2],10)/100,c=parseInt(i[3],10)/100;return t(i[4]),this.setHSL(a,l,c)}break}}else if(n=/^\\#([A-Fa-f\\d]+)$/.exec(e)){let i=n[1],r=i.length;if(r===3)return this.r=parseInt(i.charAt(0)+i.charAt(0),16)/255,this.g=parseInt(i.charAt(1)+i.charAt(1),16)/255,this.b=parseInt(i.charAt(2)+i.charAt(2),16)/255,this;if(r===6)return this.r=parseInt(i.charAt(0)+i.charAt(1),16)/255,this.g=parseInt(i.charAt(2)+i.charAt(3),16)/255,this.b=parseInt(i.charAt(4)+i.charAt(5),16)/255,this}return e&&e.length>0?this.setColorName(e):this}setColorName(e){let t=ah[e.toLowerCase()];return t!==void 0?this.setHex(t):console.warn(\"THREE.Color: Unknown color \"+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Ii(e.r),this.g=Ii(e.g),this.b=Ii(e.b),this}copyLinearToSRGB(e){return this.r=So(e.r),this.g=So(e.g),this.b=So(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(){return this.r*255<<16^this.g*255<<8^this.b*255<<0}getHexString(){return(\"000000\"+this.getHex().toString(16)).slice(-6)}getHSL(e){let t=this.r,n=this.g,i=this.b,r=Math.max(t,n,i),o=Math.min(t,n,i),a,l,c=(o+r)/2;if(o===r)a=0,l=0;else{let h=r-o;switch(l=c<=.5?h/(r+o):h/(2-r-o),r){case t:a=(n-i)/h+(n\"u\")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{si===void 0&&(si=pr(\"canvas\")),si.width=e.width,si.height=e.height;let n=si.getContext(\"2d\");e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=si}return t.width>2048||t.height>2048?(console.warn(\"THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons\",e),t.toDataURL(\"image/jpeg\",.6)):t.toDataURL(\"image/png\")}static sRGBToLinear(e){if(typeof HTMLImageElement<\"u\"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<\"u\"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<\"u\"&&e instanceof ImageBitmap){let t=pr(\"canvas\");t.width=e.width,t.height=e.height;let n=t.getContext(\"2d\");n.drawImage(e,0,0,e.width,e.height);let i=n.getImageData(0,0,e.width,e.height),r=i.data;for(let o=0;o1)switch(this.wrapS){case Ns:e.x=e.x-Math.floor(e.x);break;case At:e.x=e.x<0?0:1;break;case zs:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Ns:e.y=e.y-Math.floor(e.y);break;case At:e.y=e.y<0?0:1;break;case zs:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}};ht.DEFAULT_IMAGE=null;ht.DEFAULT_MAPPING=ma;ht.prototype.isTexture=!0;var qe=class{constructor(e=0,t=0,n=0,i=1){this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error(\"index is out of range: \"+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error(\"index is out of range: \"+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e,t){return t!==void 0?(console.warn(\"THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.\"),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e,t){return t!==void 0?(console.warn(\"THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\"),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,n=this.y,i=this.z,r=this.w,o=e.elements;return this.x=o[0]*t+o[4]*n+o[8]*i+o[12]*r,this.y=o[1]*t+o[5]*n+o[9]*i+o[13]*r,this.z=o[2]*t+o[6]*n+o[10]*i+o[14]*r,this.w=o[3]*t+o[7]*n+o[11]*i+o[15]*r,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,r,l=e.elements,c=l[0],h=l[4],u=l[8],d=l[1],f=l[5],m=l[9],x=l[2],y=l[6],g=l[10];if(Math.abs(h-d)<.01&&Math.abs(u-x)<.01&&Math.abs(m-y)<.01){if(Math.abs(h+d)<.1&&Math.abs(u+x)<.1&&Math.abs(m+y)<.1&&Math.abs(c+f+g-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;let M=(c+1)/2,_=(f+1)/2,v=(g+1)/2,A=(h+d)/4,R=(u+x)/4,P=(m+y)/4;return M>_&&M>v?M<.01?(n=0,i=.707106781,r=.707106781):(n=Math.sqrt(M),i=A/n,r=R/n):_>v?_<.01?(n=.707106781,i=0,r=.707106781):(i=Math.sqrt(_),n=A/i,r=P/i):v<.01?(n=.707106781,i=.707106781,r=0):(r=Math.sqrt(v),n=R/r,i=P/r),this.set(n,i,r,t),this}let p=Math.sqrt((y-m)*(y-m)+(u-x)*(u-x)+(d-h)*(d-h));return Math.abs(p)<.001&&(p=1),this.x=(y-m)/p,this.y=(u-x)/p,this.z=(d-h)/p,this.w=Math.acos((c+f+g-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t,n){return n!==void 0&&console.warn(\"THREE.Vector4: offset has been removed from .fromBufferAttribute().\"),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}};qe.prototype.isVector4=!0;var St=class extends Tn{constructor(e,t,n={}){super();this.width=e,this.height=t,this.depth=1,this.scissor=new qe(0,0,e,t),this.scissorTest=!1,this.viewport=new qe(0,0,e,t);let i={width:e,height:t,depth:1};this.texture=new ht(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.internalFormat=n.internalFormat!==void 0?n.internalFormat:null,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:nt,this.depthBuffer=n.depthBuffer!==void 0?n.depthBuffer:!0,this.stencilBuffer=n.stencilBuffer!==void 0?n.stencilBuffer:!1,this.depthTexture=n.depthTexture!==void 0?n.depthTexture:null,this.samples=n.samples!==void 0?n.samples:0}setSize(e,t,n=1){(this.width!==e||this.height!==t||this.depth!==n)&&(this.width=e,this.height=t,this.depth=n,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=n,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.width=e.width,this.height=e.height,this.depth=e.depth,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.image=Object.assign({},e.texture.image),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:\"dispose\"})}};St.prototype.isWebGLRenderTarget=!0;var Wi=class extends ht{constructor(e=null,t=1,n=1,i=1){super(null);this.image={data:e,width:t,height:n,depth:i},this.magFilter=ut,this.minFilter=ut,this.wrapR=At,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}};Wi.prototype.isDataArrayTexture=!0;var lh=class extends St{constructor(e,t,n){super(e,t);this.depth=n,this.texture=new Wi(null,e,t,n),this.texture.isRenderTargetTexture=!0}};lh.prototype.isWebGLArrayRenderTarget=!0;var Fr=class extends ht{constructor(e=null,t=1,n=1,i=1){super(null);this.image={data:e,width:t,height:n,depth:i},this.magFilter=ut,this.minFilter=ut,this.wrapR=At,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}};Fr.prototype.isData3DTexture=!0;var ch=class extends St{constructor(e,t,n){super(e,t);this.depth=n,this.texture=new Fr(null,e,t,n),this.texture.isRenderTargetTexture=!0}};ch.prototype.isWebGL3DRenderTarget=!0;var hh=class extends St{constructor(e,t,n,i={}){super(e,t,i);let r=this.texture;this.texture=[];for(let o=0;o=0?1:-1,M=1-g*g;if(M>Number.EPSILON){let v=Math.sqrt(M),A=Math.atan2(v,g*p);y=Math.sin(y*A)/v,a=Math.sin(a*A)/v}let _=a*p;if(l=l*y+d*_,c=c*y+f*_,h=h*y+m*_,u=u*y+x*_,y===1-a){let v=1/Math.sqrt(l*l+c*c+h*h+u*u);l*=v,c*=v,h*=v,u*=v}}e[t]=l,e[t+1]=c,e[t+2]=h,e[t+3]=u}static multiplyQuaternionsFlat(e,t,n,i,r,o){let a=n[i],l=n[i+1],c=n[i+2],h=n[i+3],u=r[o],d=r[o+1],f=r[o+2],m=r[o+3];return e[t]=a*m+h*u+l*f-c*d,e[t+1]=l*m+h*d+c*u-a*f,e[t+2]=c*m+h*f+a*d-l*u,e[t+3]=h*m-a*u-l*d-c*f,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){if(!(e&&e.isEuler))throw new Error(\"THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.\");let n=e._x,i=e._y,r=e._z,o=e._order,a=Math.cos,l=Math.sin,c=a(n/2),h=a(i/2),u=a(r/2),d=l(n/2),f=l(i/2),m=l(r/2);switch(o){case\"XYZ\":this._x=d*h*u+c*f*m,this._y=c*f*u-d*h*m,this._z=c*h*m+d*f*u,this._w=c*h*u-d*f*m;break;case\"YXZ\":this._x=d*h*u+c*f*m,this._y=c*f*u-d*h*m,this._z=c*h*m-d*f*u,this._w=c*h*u+d*f*m;break;case\"ZXY\":this._x=d*h*u-c*f*m,this._y=c*f*u+d*h*m,this._z=c*h*m+d*f*u,this._w=c*h*u-d*f*m;break;case\"ZYX\":this._x=d*h*u-c*f*m,this._y=c*f*u+d*h*m,this._z=c*h*m-d*f*u,this._w=c*h*u+d*f*m;break;case\"YZX\":this._x=d*h*u+c*f*m,this._y=c*f*u+d*h*m,this._z=c*h*m-d*f*u,this._w=c*h*u-d*f*m;break;case\"XZY\":this._x=d*h*u-c*f*m,this._y=c*f*u-d*h*m,this._z=c*h*m+d*f*u,this._w=c*h*u+d*f*m;break;default:console.warn(\"THREE.Quaternion: .setFromEuler() encountered an unknown order: \"+o)}return t!==!1&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,n=t[0],i=t[4],r=t[8],o=t[1],a=t[5],l=t[9],c=t[2],h=t[6],u=t[10],d=n+a+u;if(d>0){let f=.5/Math.sqrt(d+1);this._w=.25/f,this._x=(h-l)*f,this._y=(r-c)*f,this._z=(o-i)*f}else if(n>a&&n>u){let f=2*Math.sqrt(1+n-a-u);this._w=(h-l)/f,this._x=.25*f,this._y=(i+o)/f,this._z=(r+c)/f}else if(a>u){let f=2*Math.sqrt(1+a-n-u);this._w=(r-c)/f,this._x=(i+o)/f,this._y=.25*f,this._z=(l+h)/f}else{let f=2*Math.sqrt(1+u-n-a);this._w=(o-i)/f,this._x=(r+c)/f,this._y=(l+h)/f,this._z=.25*f}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return nMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(xt(this.dot(e),-1,1)))}rotateTowards(e,t){let n=this.angleTo(e);if(n===0)return this;let i=Math.min(1,t/n);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e,t){return t!==void 0?(console.warn(\"THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.\"),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let n=e._x,i=e._y,r=e._z,o=e._w,a=t._x,l=t._y,c=t._z,h=t._w;return this._x=n*h+o*a+i*c-r*l,this._y=i*h+o*l+r*a-n*c,this._z=r*h+o*c+n*l-i*a,this._w=o*h-n*a-i*l-r*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);let n=this._x,i=this._y,r=this._z,o=this._w,a=o*e._w+n*e._x+i*e._y+r*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=n,this._y=i,this._z=r,this;let l=1-a*a;if(l<=Number.EPSILON){let f=1-t;return this._w=f*o+t*this._w,this._x=f*n+t*this._x,this._y=f*i+t*this._y,this._z=f*r+t*this._z,this.normalize(),this._onChangeCallback(),this}let c=Math.sqrt(l),h=Math.atan2(c,a),u=Math.sin((1-t)*h)/c,d=Math.sin(t*h)/c;return this._w=o*u+this._w*d,this._x=n*u+this._x*d,this._y=i*u+this._y*d,this._z=r*u+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=Math.random(),t=Math.sqrt(1-e),n=Math.sqrt(e),i=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(t*Math.cos(i),n*Math.sin(r),n*Math.cos(r),t*Math.sin(i))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}};yt.prototype.isQuaternion=!0;var S=class{constructor(e=0,t=0,n=0){this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error(\"index is out of range: \"+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error(\"index is out of range: \"+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e,t){return t!==void 0?(console.warn(\"THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.\"),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e,t){return t!==void 0?(console.warn(\"THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\"),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e,t){return t!==void 0?(console.warn(\"THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.\"),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return e&&e.isEuler||console.error(\"THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.\"),this.applyQuaternion(Il.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Il.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6]*i,this.y=r[1]*t+r[4]*n+r[7]*i,this.z=r[2]*t+r[5]*n+r[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,n=this.y,i=this.z,r=e.elements,o=1/(r[3]*t+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*t+r[4]*n+r[8]*i+r[12])*o,this.y=(r[1]*t+r[5]*n+r[9]*i+r[13])*o,this.z=(r[2]*t+r[6]*n+r[10]*i+r[14])*o,this}applyQuaternion(e){let t=this.x,n=this.y,i=this.z,r=e.x,o=e.y,a=e.z,l=e.w,c=l*t+o*i-a*n,h=l*n+a*t-r*i,u=l*i+r*n-o*t,d=-r*t-o*n-a*i;return this.x=c*l+d*-r+h*-a-u*-o,this.y=h*l+d*-o+u*-r-c*-a,this.z=u*l+d*-a+c*-o-h*-r,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[4]*n+r[8]*i,this.y=r[1]*t+r[5]*n+r[9]*i,this.z=r[2]*t+r[6]*n+r[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e,t){return t!==void 0?(console.warn(\"THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.\"),this.crossVectors(e,t)):this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,i=e.y,r=e.z,o=t.x,a=t.y,l=t.z;return this.x=i*l-r*a,this.y=r*o-n*l,this.z=n*a-i*o,this}projectOnVector(e){let t=e.lengthSq();if(t===0)return this.set(0,0,0);let n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return To.copy(this).projectOnVector(e),this.sub(To)}reflect(e){return this.sub(To.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(xt(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){let i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t,n){return n!==void 0&&console.warn(\"THREE.Vector3: offset has been removed from .fromBufferAttribute().\"),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=(Math.random()-.5)*2,t=Math.random()*Math.PI*2,n=Math.sqrt(1-e**2);return this.x=n*Math.cos(t),this.y=n*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};S.prototype.isVector3=!0;var To=new S,Il=new yt,Dt=class{constructor(e=new S(1/0,1/0,1/0),t=new S(-1/0,-1/0,-1/0)){this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){let t=1/0,n=1/0,i=1/0,r=-1/0,o=-1/0,a=-1/0;for(let l=0,c=e.length;lr&&(r=h),u>o&&(o=u),d>a&&(a=d)}return this.min.set(t,n,i),this.max.set(r,o,a),this}setFromBufferAttribute(e){let t=1/0,n=1/0,i=1/0,r=-1/0,o=-1/0,a=-1/0;for(let l=0,c=e.count;lr&&(r=h),u>o&&(o=u),d>a&&(a=d)}return this.min.set(t,n,i),this.max.set(r,o,a),this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,In),In.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(ji),Jr.subVectors(this.max,ji),oi.subVectors(e.a,ji),ai.subVectors(e.b,ji),li.subVectors(e.c,ji),hn.subVectors(ai,oi),un.subVectors(li,ai),Dn.subVectors(oi,li);let t=[0,-hn.z,hn.y,0,-un.z,un.y,0,-Dn.z,Dn.y,hn.z,0,-hn.x,un.z,0,-un.x,Dn.z,0,-Dn.x,-hn.y,hn.x,0,-un.y,un.x,0,-Dn.y,Dn.x,0];return!Co(t,oi,ai,li,Jr)||(t=[1,0,0,0,1,0,0,0,1],!Co(t,oi,ai,li,Jr))?!1:(Yr.crossVectors(hn,un),t=[Yr.x,Yr.y,Yr.z],Co(t,oi,ai,li,Jr))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return In.copy(e).clamp(this.min,this.max).sub(e).length()}getBoundingSphere(e){return this.getCenter(e.center),e.radius=this.getSize(In).length()*.5,e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(jt[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),jt[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),jt[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),jt[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),jt[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),jt[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),jt[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),jt[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(jt),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}};Dt.prototype.isBox3=!0;var jt=[new S,new S,new S,new S,new S,new S,new S,new S],In=new S,Ao=new Dt,oi=new S,ai=new S,li=new S,hn=new S,un=new S,Dn=new S,ji=new S,Jr=new S,Yr=new S,Fn=new S;function Co(s,e,t,n,i){for(let r=0,o=s.length-3;r<=o;r+=3){Fn.fromArray(s,r);let a=i.x*Math.abs(Fn.x)+i.y*Math.abs(Fn.y)+i.z*Math.abs(Fn.z),l=e.dot(Fn),c=t.dot(Fn),h=n.dot(Fn);if(Math.max(-Math.max(l,c,h),Math.min(l,c,h))>a)return!1}return!0}var Fd=new Dt,Dl=new S,Zr=new S,Ro=new S,Cn=class{constructor(e=new S,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let n=this.center;t!==void 0?n.copy(t):Fd.setFromPoints(e).getCenter(n);let i=0;for(let r=0,o=e.length;rthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){Ro.subVectors(e,this.center);let t=Ro.lengthSq();if(t>this.radius*this.radius){let n=Math.sqrt(t),i=(n-this.radius)*.5;this.center.add(Ro.multiplyScalar(i/n)),this.radius+=i}return this}union(e){return this.center.equals(e.center)===!0?Zr.set(0,0,1).multiplyScalar(e.radius):Zr.subVectors(e.center,this.center).normalize().multiplyScalar(e.radius),this.expandByPoint(Dl.copy(e.center).add(Zr)),this.expandByPoint(Dl.copy(e.center).sub(Zr)),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}},Kt=new S,Lo=new S,$r=new S,dn=new S,Po=new S,jr=new S,Io=new S,Rn=class{constructor(e=new S,t=new S(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.direction).multiplyScalar(e).add(this.origin)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Kt)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(n).add(this.origin)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=Kt.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Kt.copy(this.direction).multiplyScalar(t).add(this.origin),Kt.distanceToSquared(e))}distanceSqToSegment(e,t,n,i){Lo.copy(e).add(t).multiplyScalar(.5),$r.copy(t).sub(e).normalize(),dn.copy(this.origin).sub(Lo);let r=e.distanceTo(t)*.5,o=-this.direction.dot($r),a=dn.dot(this.direction),l=-dn.dot($r),c=dn.lengthSq(),h=Math.abs(1-o*o),u,d,f,m;if(h>0)if(u=o*l-a,d=o*a-l,m=r*h,u>=0)if(d>=-m)if(d<=m){let x=1/h;u*=x,d*=x,f=u*(u+o*d+2*a)+d*(o*u+d+2*l)+c}else d=r,u=Math.max(0,-(o*d+a)),f=-u*u+d*(d+2*l)+c;else d=-r,u=Math.max(0,-(o*d+a)),f=-u*u+d*(d+2*l)+c;else d<=-m?(u=Math.max(0,-(-o*r+a)),d=u>0?-r:Math.min(Math.max(-r,-l),r),f=-u*u+d*(d+2*l)+c):d<=m?(u=0,d=Math.min(Math.max(-r,-l),r),f=d*(d+2*l)+c):(u=Math.max(0,-(o*r+a)),d=u>0?r:Math.min(Math.max(-r,-l),r),f=-u*u+d*(d+2*l)+c);else d=o>0?-r:r,u=Math.max(0,-(o*d+a)),f=-u*u+d*(d+2*l)+c;return n&&n.copy(this.direction).multiplyScalar(u).add(this.origin),i&&i.copy($r).multiplyScalar(d).add(Lo),f}intersectSphere(e,t){Kt.subVectors(e.center,this.origin);let n=Kt.dot(this.direction),i=Kt.dot(Kt)-n*n,r=e.radius*e.radius;if(i>r)return null;let o=Math.sqrt(r-i),a=n-o,l=n+o;return a<0&&l<0?null:a<0?this.at(l,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;let n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){let n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,i,r,o,a,l,c=1/this.direction.x,h=1/this.direction.y,u=1/this.direction.z,d=this.origin;return c>=0?(n=(e.min.x-d.x)*c,i=(e.max.x-d.x)*c):(n=(e.max.x-d.x)*c,i=(e.min.x-d.x)*c),h>=0?(r=(e.min.y-d.y)*h,o=(e.max.y-d.y)*h):(r=(e.max.y-d.y)*h,o=(e.min.y-d.y)*h),n>o||r>i||((r>n||n!==n)&&(n=r),(o=0?(a=(e.min.z-d.z)*u,l=(e.max.z-d.z)*u):(a=(e.max.z-d.z)*u,l=(e.min.z-d.z)*u),n>l||a>i)||((a>n||n!==n)&&(n=a),(l=0?n:i,t)}intersectsBox(e){return this.intersectBox(e,Kt)!==null}intersectTriangle(e,t,n,i,r){Po.subVectors(t,e),jr.subVectors(n,e),Io.crossVectors(Po,jr);let o=this.direction.dot(Io),a;if(o>0){if(i)return null;a=1}else if(o<0)a=-1,o=-o;else return null;dn.subVectors(this.origin,e);let l=a*this.direction.dot(jr.crossVectors(dn,jr));if(l<0)return null;let c=a*this.direction.dot(Po.cross(dn));if(c<0||l+c>o)return null;let h=-a*dn.dot(Io);return h<0?null:this.at(h/o,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},de=class{constructor(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error(\"THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.\")}set(e,t,n,i,r,o,a,l,c,h,u,d,f,m,x,y){let g=this.elements;return g[0]=e,g[4]=t,g[8]=n,g[12]=i,g[1]=r,g[5]=o,g[9]=a,g[13]=l,g[2]=c,g[6]=h,g[10]=u,g[14]=d,g[3]=f,g[7]=m,g[11]=x,g[15]=y,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new de().fromArray(this.elements)}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){let t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,n=e.elements,i=1/ci.setFromMatrixColumn(e,0).length(),r=1/ci.setFromMatrixColumn(e,1).length(),o=1/ci.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*r,t[5]=n[5]*r,t[6]=n[6]*r,t[7]=0,t[8]=n[8]*o,t[9]=n[9]*o,t[10]=n[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){e&&e.isEuler||console.error(\"THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.\");let t=this.elements,n=e.x,i=e.y,r=e.z,o=Math.cos(n),a=Math.sin(n),l=Math.cos(i),c=Math.sin(i),h=Math.cos(r),u=Math.sin(r);if(e.order===\"XYZ\"){let d=o*h,f=o*u,m=a*h,x=a*u;t[0]=l*h,t[4]=-l*u,t[8]=c,t[1]=f+m*c,t[5]=d-x*c,t[9]=-a*l,t[2]=x-d*c,t[6]=m+f*c,t[10]=o*l}else if(e.order===\"YXZ\"){let d=l*h,f=l*u,m=c*h,x=c*u;t[0]=d+x*a,t[4]=m*a-f,t[8]=o*c,t[1]=o*u,t[5]=o*h,t[9]=-a,t[2]=f*a-m,t[6]=x+d*a,t[10]=o*l}else if(e.order===\"ZXY\"){let d=l*h,f=l*u,m=c*h,x=c*u;t[0]=d-x*a,t[4]=-o*u,t[8]=m+f*a,t[1]=f+m*a,t[5]=o*h,t[9]=x-d*a,t[2]=-o*c,t[6]=a,t[10]=o*l}else if(e.order===\"ZYX\"){let d=o*h,f=o*u,m=a*h,x=a*u;t[0]=l*h,t[4]=m*c-f,t[8]=d*c+x,t[1]=l*u,t[5]=x*c+d,t[9]=f*c-m,t[2]=-c,t[6]=a*l,t[10]=o*l}else if(e.order===\"YZX\"){let d=o*l,f=o*c,m=a*l,x=a*c;t[0]=l*h,t[4]=x-d*u,t[8]=m*u+f,t[1]=u,t[5]=o*h,t[9]=-a*h,t[2]=-c*h,t[6]=f*u+m,t[10]=d-x*u}else if(e.order===\"XZY\"){let d=o*l,f=o*c,m=a*l,x=a*c;t[0]=l*h,t[4]=-u,t[8]=c*h,t[1]=d*u+x,t[5]=o*h,t[9]=f*u-m,t[2]=m*u-f,t[6]=a*h,t[10]=x*u+d}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Bd,e,Nd)}lookAt(e,t,n){let i=this.elements;return Rt.subVectors(e,t),Rt.lengthSq()===0&&(Rt.z=1),Rt.normalize(),fn.crossVectors(n,Rt),fn.lengthSq()===0&&(Math.abs(n.z)===1?Rt.x+=1e-4:Rt.z+=1e-4,Rt.normalize(),fn.crossVectors(n,Rt)),fn.normalize(),Kr.crossVectors(Rt,fn),i[0]=fn.x,i[4]=Kr.x,i[8]=Rt.x,i[1]=fn.y,i[5]=Kr.y,i[9]=Rt.y,i[2]=fn.z,i[6]=Kr.z,i[10]=Rt.z,this}multiply(e,t){return t!==void 0?(console.warn(\"THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.\"),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,i=t.elements,r=this.elements,o=n[0],a=n[4],l=n[8],c=n[12],h=n[1],u=n[5],d=n[9],f=n[13],m=n[2],x=n[6],y=n[10],g=n[14],p=n[3],M=n[7],_=n[11],v=n[15],A=i[0],R=i[4],P=i[8],V=i[12],I=i[1],b=i[5],C=i[9],F=i[13],N=i[2],O=i[6],z=i[10],k=i[14],B=i[3],J=i[7],Q=i[11],K=i[15];return r[0]=o*A+a*I+l*N+c*B,r[4]=o*R+a*b+l*O+c*J,r[8]=o*P+a*C+l*z+c*Q,r[12]=o*V+a*F+l*k+c*K,r[1]=h*A+u*I+d*N+f*B,r[5]=h*R+u*b+d*O+f*J,r[9]=h*P+u*C+d*z+f*Q,r[13]=h*V+u*F+d*k+f*K,r[2]=m*A+x*I+y*N+g*B,r[6]=m*R+x*b+y*O+g*J,r[10]=m*P+x*C+y*z+g*Q,r[14]=m*V+x*F+y*k+g*K,r[3]=p*A+M*I+_*N+v*B,r[7]=p*R+M*b+_*O+v*J,r[11]=p*P+M*C+_*z+v*Q,r[15]=p*V+M*F+_*k+v*K,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[4],i=e[8],r=e[12],o=e[1],a=e[5],l=e[9],c=e[13],h=e[2],u=e[6],d=e[10],f=e[14],m=e[3],x=e[7],y=e[11],g=e[15];return m*(+r*l*u-i*c*u-r*a*d+n*c*d+i*a*f-n*l*f)+x*(+t*l*f-t*c*d+r*o*d-i*o*f+i*c*h-r*l*h)+y*(+t*c*u-t*a*f-r*o*u+n*o*f+r*a*h-n*c*h)+g*(-i*a*h-t*l*u+t*a*d+i*o*u-n*o*d+n*l*h)}transpose(){let e=this.elements,t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){let i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],o=e[4],a=e[5],l=e[6],c=e[7],h=e[8],u=e[9],d=e[10],f=e[11],m=e[12],x=e[13],y=e[14],g=e[15],p=u*y*c-x*d*c+x*l*f-a*y*f-u*l*g+a*d*g,M=m*d*c-h*y*c-m*l*f+o*y*f+h*l*g-o*d*g,_=h*x*c-m*u*c+m*a*f-o*x*f-h*a*g+o*u*g,v=m*u*l-h*x*l-m*a*d+o*x*d+h*a*y-o*u*y,A=t*p+n*M+i*_+r*v;if(A===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let R=1/A;return e[0]=p*R,e[1]=(x*d*r-u*y*r-x*i*f+n*y*f+u*i*g-n*d*g)*R,e[2]=(a*y*r-x*l*r+x*i*c-n*y*c-a*i*g+n*l*g)*R,e[3]=(u*l*r-a*d*r-u*i*c+n*d*c+a*i*f-n*l*f)*R,e[4]=M*R,e[5]=(h*y*r-m*d*r+m*i*f-t*y*f-h*i*g+t*d*g)*R,e[6]=(m*l*r-o*y*r-m*i*c+t*y*c+o*i*g-t*l*g)*R,e[7]=(o*d*r-h*l*r+h*i*c-t*d*c-o*i*f+t*l*f)*R,e[8]=_*R,e[9]=(m*u*r-h*x*r-m*n*f+t*x*f+h*n*g-t*u*g)*R,e[10]=(o*x*r-m*a*r+m*n*c-t*x*c-o*n*g+t*a*g)*R,e[11]=(h*a*r-o*u*r-h*n*c+t*u*c+o*n*f-t*a*f)*R,e[12]=v*R,e[13]=(h*x*i-m*u*i+m*n*d-t*x*d-h*n*y+t*u*y)*R,e[14]=(m*a*i-o*x*i-m*n*l+t*x*l+o*n*y-t*a*y)*R,e[15]=(o*u*i-h*a*i+h*n*l-t*u*l-o*n*d+t*a*d)*R,this}scale(e){let t=this.elements,n=e.x,i=e.y,r=e.z;return t[0]*=n,t[4]*=i,t[8]*=r,t[1]*=n,t[5]*=i,t[9]*=r,t[2]*=n,t[6]*=i,t[10]*=r,t[3]*=n,t[7]*=i,t[11]*=r,this}getMaxScaleOnAxis(){let e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(e,t,n){return this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){let t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let n=Math.cos(t),i=Math.sin(t),r=1-n,o=e.x,a=e.y,l=e.z,c=r*o,h=r*a;return this.set(c*o+n,c*a-i*l,c*l+i*a,0,c*a+i*l,h*a+n,h*l-i*o,0,c*l-i*a,h*l+i*o,r*l*l+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,r,o){return this.set(1,n,r,0,e,1,o,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){let i=this.elements,r=t._x,o=t._y,a=t._z,l=t._w,c=r+r,h=o+o,u=a+a,d=r*c,f=r*h,m=r*u,x=o*h,y=o*u,g=a*u,p=l*c,M=l*h,_=l*u,v=n.x,A=n.y,R=n.z;return i[0]=(1-(x+g))*v,i[1]=(f+_)*v,i[2]=(m-M)*v,i[3]=0,i[4]=(f-_)*A,i[5]=(1-(d+g))*A,i[6]=(y+p)*A,i[7]=0,i[8]=(m+M)*R,i[9]=(y-p)*R,i[10]=(1-(d+x))*R,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){let i=this.elements,r=ci.set(i[0],i[1],i[2]).length(),o=ci.set(i[4],i[5],i[6]).length(),a=ci.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),e.x=i[12],e.y=i[13],e.z=i[14],Ut.copy(this);let c=1/r,h=1/o,u=1/a;return Ut.elements[0]*=c,Ut.elements[1]*=c,Ut.elements[2]*=c,Ut.elements[4]*=h,Ut.elements[5]*=h,Ut.elements[6]*=h,Ut.elements[8]*=u,Ut.elements[9]*=u,Ut.elements[10]*=u,t.setFromRotationMatrix(Ut),n.x=r,n.y=o,n.z=a,this}makePerspective(e,t,n,i,r,o){o===void 0&&console.warn(\"THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.\");let a=this.elements,l=2*r/(t-e),c=2*r/(n-i),h=(t+e)/(t-e),u=(n+i)/(n-i),d=-(o+r)/(o-r),f=-2*o*r/(o-r);return a[0]=l,a[4]=0,a[8]=h,a[12]=0,a[1]=0,a[5]=c,a[9]=u,a[13]=0,a[2]=0,a[6]=0,a[10]=d,a[14]=f,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(e,t,n,i,r,o){let a=this.elements,l=1/(t-e),c=1/(n-i),h=1/(o-r),u=(t+e)*l,d=(n+i)*c,f=(o+r)*h;return a[0]=2*l,a[4]=0,a[8]=0,a[12]=-u,a[1]=0,a[5]=2*c,a[9]=0,a[13]=-d,a[2]=0,a[6]=0,a[10]=-2*h,a[14]=-f,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(e){let t=this.elements,n=e.elements;for(let i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}};de.prototype.isMatrix4=!0;var ci=new S,Ut=new de,Bd=new S(0,0,0),Nd=new S(1,1,1),fn=new S,Kr=new S,Rt=new S,Fl=new de,Bl=new yt,Ln=class{constructor(e=0,t=0,n=0,i=Ln.DefaultOrder){this._x=e,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){let i=e.elements,r=i[0],o=i[4],a=i[8],l=i[1],c=i[5],h=i[9],u=i[2],d=i[6],f=i[10];switch(t){case\"XYZ\":this._y=Math.asin(xt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-h,f),this._z=Math.atan2(-o,r)):(this._x=Math.atan2(d,c),this._z=0);break;case\"YXZ\":this._x=Math.asin(-xt(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(a,f),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-u,r),this._z=0);break;case\"ZXY\":this._x=Math.asin(xt(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-u,f),this._z=Math.atan2(-o,c)):(this._y=0,this._z=Math.atan2(l,r));break;case\"ZYX\":this._y=Math.asin(-xt(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(d,f),this._z=Math.atan2(l,r)):(this._x=0,this._z=Math.atan2(-o,c));break;case\"YZX\":this._z=Math.asin(xt(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-h,c),this._y=Math.atan2(-u,r)):(this._x=0,this._y=Math.atan2(a,f));break;case\"XZY\":this._z=Math.asin(-xt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(d,c),this._y=Math.atan2(a,r)):(this._x=Math.atan2(-h,f),this._y=0);break;default:console.warn(\"THREE.Euler: .setFromRotationMatrix() encountered an unknown order: \"+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Fl.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Fl,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Bl.setFromEuler(this),this.setFromQuaternion(Bl,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}};Ln.prototype.isEuler=!0;Ln.DefaultOrder=\"XYZ\";Ln.RotationOrders=[\"XYZ\",\"YZX\",\"ZXY\",\"XZY\",\"YXZ\",\"ZYX\"];var qs=class{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let n=0;n0){i.children=[];for(let a=0;a0){i.animations=[];for(let a=0;a0&&(n.geometries=a),l.length>0&&(n.materials=l),c.length>0&&(n.textures=c),h.length>0&&(n.images=h),u.length>0&&(n.shapes=u),d.length>0&&(n.skeletons=d),f.length>0&&(n.animations=f),m.length>0&&(n.nodes=m)}return n.object=i,n;function o(a){let l=[];for(let c in a){let h=a[c];delete h.metadata,l.push(h)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(e,t,n,i,r){Ot.subVectors(i,t),en.subVectors(n,t),Do.subVectors(e,t);let o=Ot.dot(Ot),a=Ot.dot(en),l=Ot.dot(Do),c=en.dot(en),h=en.dot(Do),u=o*c-a*a;if(u===0)return r.set(-2,-1,-1);let d=1/u,f=(c*l-a*h)*d,m=(o*h-a*l)*d;return r.set(1-f-m,m,f)}static containsPoint(e,t,n,i){return this.getBarycoord(e,t,n,i,tn),tn.x>=0&&tn.y>=0&&tn.x+tn.y<=1}static getUV(e,t,n,i,r,o,a,l){return this.getBarycoord(e,t,n,i,tn),l.set(0,0),l.addScaledVector(r,tn.x),l.addScaledVector(o,tn.y),l.addScaledVector(a,tn.z),l}static isFrontFacing(e,t,n,i){return Ot.subVectors(n,t),en.subVectors(e,t),Ot.cross(en).dot(i)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this}setFromAttributeAndIndices(e,t,n,i){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,i),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Ot.subVectors(this.c,this.b),en.subVectors(this.a,this.b),Ot.cross(en).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return st.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return st.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,n,i,r){return st.getUV(e,this.a,this.b,this.c,t,n,i,r)}containsPoint(e){return st.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return st.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let n=this.a,i=this.b,r=this.c,o,a;ui.subVectors(i,n),di.subVectors(r,n),Fo.subVectors(e,n);let l=ui.dot(Fo),c=di.dot(Fo);if(l<=0&&c<=0)return t.copy(n);Bo.subVectors(e,i);let h=ui.dot(Bo),u=di.dot(Bo);if(h>=0&&u<=h)return t.copy(i);let d=l*u-h*c;if(d<=0&&l>=0&&h<=0)return o=l/(l-h),t.copy(n).addScaledVector(ui,o);No.subVectors(e,r);let f=ui.dot(No),m=di.dot(No);if(m>=0&&f<=m)return t.copy(r);let x=f*c-l*m;if(x<=0&&c>=0&&m<=0)return a=c/(c-m),t.copy(n).addScaledVector(di,a);let y=h*m-f*u;if(y<=0&&u-h>=0&&f-m>=0)return Gl.subVectors(r,i),a=(u-h)/(u-h+(f-m)),t.copy(i).addScaledVector(Gl,a);let g=1/(y+x+d);return o=x*g,a=d*g,t.copy(n).addScaledVector(ui,o).addScaledVector(di,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},Gd=0,ot=class extends Tn{constructor(){super();Object.defineProperty(this,\"id\",{value:Gd++}),this.uuid=Pt(),this.name=\"\",this.type=\"Material\",this.fog=!0,this.blending=Ri,this.side=Di,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=th,this.blendDst=nh,this.blendEquation=wi,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=ia,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=yd,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=bo,this.stencilZFail=bo,this.stencilZPass=bo,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let n=e[t];if(n===void 0){console.warn(\"THREE.Material: '\"+t+\"' parameter is undefined.\");continue}if(t===\"shading\"){console.warn(\"THREE.\"+this.type+\": .shading has been removed. Use the boolean .flatShading instead.\"),this.flatShading=n===eh;continue}let i=this[t];if(i===void 0){console.warn(\"THREE.\"+this.type+\": '\"+t+\"' is not a property of this material.\");continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[t]=n}}toJSON(e){let t=e===void 0||typeof e==\"string\";t&&(e={textures:{},images:{}});let n={metadata:{version:4.5,type:\"Material\",generator:\"Material.toJSON\"}};n.uuid=this.uuid,n.type=this.type,this.name!==\"\"&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==Ri&&(n.blending=this.blending),this.side!==Di&&(n.side=this.side),this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=this.transparent),n.depthFunc=this.depthFunc,n.depthTest=this.depthTest,n.depthWrite=this.depthWrite,n.colorWrite=this.colorWrite,n.stencilWrite=this.stencilWrite,n.stencilWriteMask=this.stencilWriteMask,n.stencilFunc=this.stencilFunc,n.stencilRef=this.stencilRef,n.stencilFuncMask=this.stencilFuncMask,n.stencilFail=this.stencilFail,n.stencilZFail=this.stencilZFail,n.stencilZPass=this.stencilZPass,this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(n.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=this.premultipliedAlpha),this.wireframe===!0&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!==\"round\"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!==\"round\"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=this.flatShading),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),JSON.stringify(this.userData)!==\"{}\"&&(n.userData=this.userData);function i(r){let o=[];for(let a in r){let l=r[a];delete l.metadata,o.push(l)}return o}if(t){let r=i(e.textures),o=i(e.images);r.length>0&&(n.textures=r),o.length>0&&(n.images=o)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.fog=e.fog,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,n=null;if(t!==null){let i=t.length;n=new Array(i);for(let r=0;r!==i;++r)n[r]=t[r].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:\"dispose\"})}set needsUpdate(e){e===!0&&this.version++}};ot.prototype.isMaterial=!0;ot.fromType=function(){return null};var ln=class extends ot{constructor(e){super();this.type=\"MeshBasicMaterial\",this.color=new se(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=ks,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=\"round\",this.wireframeLinejoin=\"round\",this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this}};ln.prototype.isMeshBasicMaterial=!0;var Ze=new S,es=new Z,ze=class{constructor(e,t,n){if(Array.isArray(e))throw new TypeError(\"THREE.BufferAttribute: array should be a Typed Array.\");this.name=\"\",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n===!0,this.usage=ur,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let i=0,r=this.itemSize;i0&&(e.userData=this.userData),this.parameters!==void 0){let l=this.parameters;for(let c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};let t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let n=this.attributes;for(let l in n){let c=n[l];e.data.attributes[l]=c.toJSON(e.data)}let i={},r=!1;for(let l in this.morphAttributes){let c=this.morphAttributes[l],h=[];for(let u=0,d=c.length;u0&&(i[l]=h,r=!0)}r&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);let o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));let a=this.boundingSphere;return a!==null&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let n=e.index;n!==null&&this.setIndex(n.clone(t));let i=e.attributes;for(let c in i){let h=i[c];this.setAttribute(c,h.clone(t))}let r=e.morphAttributes;for(let c in r){let h=[],u=r[c];for(let d=0,f=u.length;d0){let i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=i.length;r0&&console.error(\"THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.\")}}raycast(e,t){let n=this.geometry,i=this.material,r=this.matrixWorld;if(i===void 0||(n.boundingSphere===null&&n.computeBoundingSphere(),Uo.copy(n.boundingSphere),Uo.applyMatrix4(r),e.ray.intersectsSphere(Uo)===!1)||(Vl.copy(r).invert(),pi.copy(e.ray).applyMatrix4(Vl),n.boundingBox!==null&&pi.intersectsBox(n.boundingBox)===!1))return;let o;if(n.isBufferGeometry){let a=n.index,l=n.attributes.position,c=n.morphAttributes.position,h=n.morphTargetsRelative,u=n.attributes.uv,d=n.attributes.uv2,f=n.groups,m=n.drawRange;if(a!==null)if(Array.isArray(i))for(let x=0,y=f.length;xt.far?null:{distance:c,point:as.clone(),object:s}}function ls(s,e,t,n,i,r,o,a,l,c,h,u){pn.fromBufferAttribute(i,c),mn.fromBufferAttribute(i,h),gn.fromBufferAttribute(i,u);let d=s.morphTargetInfluences;if(r&&d){ts.set(0,0,0),ns.set(0,0,0),is.set(0,0,0);for(let m=0,x=r.length;m0?1:-1,h.push(J.x,J.y,J.z),u.push(ee/R),u.push(1-Q/P),k+=1}}for(let Q=0;Q0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader;let n={};for(let i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}};Bt.prototype.isShaderMaterial=!0;var Br=class extends Be{constructor(){super();this.type=\"Camera\",this.matrixWorldInverse=new de,this.projectionMatrix=new de,this.projectionMatrixInverse=new de}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this}getWorldDirection(e){this.updateWorldMatrix(!0,!1);let t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}};Br.prototype.isCamera=!0;var pt=class extends Br{constructor(e=50,t=1,n=.1,i=2e3){super();this.type=\"PerspectiveCamera\",this.fov=e,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=fr*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(qn*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return fr*2*Math.atan(Math.tan(qn*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,n,i,r,o){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(qn*.5*this.fov)/this.zoom,n=2*t,i=this.aspect*n,r=-.5*i,o=this.view;if(this.view!==null&&this.view.enabled){let l=o.fullWidth,c=o.fullHeight;r+=o.offsetX*i/l,t-=o.offsetY*n/c,i*=o.width/l,n*=o.height/c}let a=this.filmOffset;a!==0&&(r+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,t,t-n,e,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}};pt.prototype.isPerspectiveCamera=!0;var mi=90,gi=1,Ys=class extends Be{constructor(e,t,n){super();if(this.type=\"CubeCamera\",n.isWebGLCubeRenderTarget!==!0){console.error(\"THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.\");return}this.renderTarget=n;let i=new pt(mi,gi,e,t);i.layers=this.layers,i.up.set(0,-1,0),i.lookAt(new S(1,0,0)),this.add(i);let r=new pt(mi,gi,e,t);r.layers=this.layers,r.up.set(0,-1,0),r.lookAt(new S(-1,0,0)),this.add(r);let o=new pt(mi,gi,e,t);o.layers=this.layers,o.up.set(0,0,1),o.lookAt(new S(0,1,0)),this.add(o);let a=new pt(mi,gi,e,t);a.layers=this.layers,a.up.set(0,0,-1),a.lookAt(new S(0,-1,0)),this.add(a);let l=new pt(mi,gi,e,t);l.layers=this.layers,l.up.set(0,-1,0),l.lookAt(new S(0,0,1)),this.add(l);let c=new pt(mi,gi,e,t);c.layers=this.layers,c.up.set(0,-1,0),c.lookAt(new S(0,0,-1)),this.add(c)}update(e,t){this.parent===null&&this.updateMatrixWorld();let n=this.renderTarget,[i,r,o,a,l,c]=this.children,h=e.xr.enabled,u=e.getRenderTarget();e.xr.enabled=!1;let d=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0),e.render(t,i),e.setRenderTarget(n,1),e.render(t,r),e.setRenderTarget(n,2),e.render(t,o),e.setRenderTarget(n,3),e.render(t,a),e.setRenderTarget(n,4),e.render(t,l),n.texture.generateMipmaps=d,e.setRenderTarget(n,5),e.render(t,c),e.setRenderTarget(u),e.xr.enabled=h,n.texture.needsPMREMUpdate=!0}},qi=class extends ht{constructor(e,t,n,i,r,o,a,l,c,h){e=e!==void 0?e:[],t=t!==void 0?t:Jn;super(e,t,n,i,r,o,a,l,c,h);this.flipY=!1}get images(){return this.image}set images(e){this.image=e}};qi.prototype.isCubeTexture=!0;var Zs=class extends St{constructor(e,t={}){super(e,e,t);let n={width:e,height:e,depth:1},i=[n,n,n,n,n,n];this.texture=new qi(i,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:nt}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.format=wt,this.texture.encoding=t.encoding,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let n={uniforms:{tEquirect:{value:null}},vertexShader:`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,fragmentShader:`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`},i=new wn(5,5,5),r=new Bt({name:\"CubemapFromEquirect\",uniforms:Ni(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:lt,blending:_n});r.uniforms.tEquirect.value=t;let o=new ct(i,r),a=t.minFilter;return t.minFilter===Vi&&(t.minFilter=nt),new Ys(1,10,this).update(e,o),t.minFilter=a,o.geometry.dispose(),o.material.dispose(),this}clear(e,t,n,i){let r=e.getRenderTarget();for(let o=0;o<6;o++)e.setRenderTarget(this,o),e.clear(t,n,i);e.setRenderTarget(r)}};Zs.prototype.isWebGLCubeRenderTarget=!0;var ko=new S,Jd=new S,Yd=new dt,Xt=class{constructor(e=new S(1,0,0),t=0){this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,n,i){return this.normal.set(e,t,n),this.constant=i,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){let i=ko.subVectors(n,t).cross(Jd.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(i,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){let e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)}intersectLine(e,t){let n=e.delta(ko),i=this.normal.dot(n);if(i===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;let r=-(e.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:t.copy(n).multiplyScalar(r).add(e.start)}intersectsLine(e){let t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let n=t||Yd.getNormalMatrix(e),i=this.coplanarPoint(ko).applyMatrix4(e),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}};Xt.prototype.isPlane=!0;var xi=new Cn,cs=new S,Nr=class{constructor(e=new Xt,t=new Xt,n=new Xt,i=new Xt,r=new Xt,o=new Xt){this.planes=[e,t,n,i,r,o]}set(e,t,n,i,r,o){let a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(n),a[3].copy(i),a[4].copy(r),a[5].copy(o),this}copy(e){let t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e){let t=this.planes,n=e.elements,i=n[0],r=n[1],o=n[2],a=n[3],l=n[4],c=n[5],h=n[6],u=n[7],d=n[8],f=n[9],m=n[10],x=n[11],y=n[12],g=n[13],p=n[14],M=n[15];return t[0].setComponents(a-i,u-l,x-d,M-y).normalize(),t[1].setComponents(a+i,u+l,x+d,M+y).normalize(),t[2].setComponents(a+r,u+c,x+f,M+g).normalize(),t[3].setComponents(a-r,u-c,x-f,M-g).normalize(),t[4].setComponents(a-o,u-h,x-m,M-p).normalize(),t[5].setComponents(a+o,u+h,x+m,M+p).normalize(),this}intersectsObject(e){let t=e.geometry;return t.boundingSphere===null&&t.computeBoundingSphere(),xi.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(xi)}intersectsSprite(e){return xi.center.set(0,0,0),xi.radius=.7071067811865476,xi.applyMatrix4(e.matrixWorld),this.intersectsSphere(xi)}intersectsSphere(e){let t=this.planes,n=e.center,i=-e.radius;for(let r=0;r<6;r++)if(t[r].distanceToPoint(n)0?e.max.x:e.min.x,cs.y=i.normal.y>0?e.max.y:e.min.y,cs.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(cs)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}};function yh(){let s=null,e=!1,t=null,n=null;function i(r,o){t(r,o),n=s.requestAnimationFrame(i)}return{start:function(){e!==!0&&t!==null&&(n=s.requestAnimationFrame(i),e=!0)},stop:function(){s.cancelAnimationFrame(n),e=!1},setAnimationLoop:function(r){t=r},setContext:function(r){s=r}}}function Zd(s,e){let t=e.isWebGL2,n=new WeakMap;function i(c,h){let u=c.array,d=c.usage,f=s.createBuffer();s.bindBuffer(h,f),s.bufferData(h,u,d),c.onUploadCallback();let m;if(u instanceof Float32Array)m=5126;else if(u instanceof Uint16Array)if(c.isFloat16BufferAttribute)if(t)m=5131;else throw new Error(\"THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.\");else m=5123;else if(u instanceof Int16Array)m=5122;else if(u instanceof Uint32Array)m=5125;else if(u instanceof Int32Array)m=5124;else if(u instanceof Int8Array)m=5120;else if(u instanceof Uint8Array)m=5121;else if(u instanceof Uint8ClampedArray)m=5121;else throw new Error(\"THREE.WebGLAttributes: Unsupported buffer data format: \"+u);return{buffer:f,type:m,bytesPerElement:u.BYTES_PER_ELEMENT,version:c.version}}function r(c,h,u){let d=h.array,f=h.updateRange;s.bindBuffer(u,c),f.count===-1?s.bufferSubData(u,0,d):(t?s.bufferSubData(u,f.offset*d.BYTES_PER_ELEMENT,d,f.offset,f.count):s.bufferSubData(u,f.offset*d.BYTES_PER_ELEMENT,d.subarray(f.offset,f.offset+f.count)),f.count=-1)}function o(c){return c.isInterleavedBufferAttribute&&(c=c.data),n.get(c)}function a(c){c.isInterleavedBufferAttribute&&(c=c.data);let h=n.get(c);h&&(s.deleteBuffer(h.buffer),n.delete(c))}function l(c,h){if(c.isGLBufferAttribute){let d=n.get(c);(!d||d.version 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}\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_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif`,of=`#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, float faceDirection ) {\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 ) * faceDirection;\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`,af=`#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif`,lf=`#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif`,cf=`#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif`,hf=`#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif`,uf=`#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif`,df=`#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif`,ff=`#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif`,pf=`#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif`,mf=`#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( 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 max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\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}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\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#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\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}\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}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}`,gf=`#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 ) + 0.5;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define r0 1.0\n\t#define v0 0.339\n\t#define m0 - 2.0\n\t#define r1 0.8\n\t#define v1 0.276\n\t#define m1 - 1.0\n\t#define r4 0.4\n\t#define v4 0.046\n\t#define m4 2.0\n\t#define r5 0.305\n\t#define v5 0.016\n\t#define m5 3.0\n\t#define r6 0.21\n\t#define v6 0.0038\n\t#define m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= r1 ) {\n\t\t\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\n\t\t} else if ( roughness >= r4 ) {\n\t\t\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\n\t\t} else if ( roughness >= r5 ) {\n\t\t\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\n\t\t} else if ( roughness >= r6 ) {\n\t\t\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif`,xf=`vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif`,yf=`#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif`,_f=`#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif`,vf=`#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif`,Mf=`#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif`,bf=\"gl_FragColor = linearToOutputTexel( gl_FragColor );\",wf=`vec4 LinearToLinear( in vec4 value ) {\n\treturn value;\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}`,Sf=`#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, 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_CUBE_UV )\n\t\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\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`,Ef=`#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif`,Tf=`#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif`,Af=`#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif`,Cf=`#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\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`,Rf=`#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif`,Lf=`#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif`,Pf=`#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif`,If=`#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\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`,Df=`#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\n\t#else\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t#endif\n}`,Ff=`#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tlightMapIrradiance *= PI;\n\t#endif\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif`,Bf=`#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif`,Nf=`vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : 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;\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );\n#ifdef DOUBLE_SIDED\n\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\n\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );\n#endif\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = 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\t#pragma unroll_loop_end\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = 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\t#pragma unroll_loop_end\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = 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\t#pragma unroll_loop_end\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif`,zf=`uniform bool receiveShadow;\nuniform 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 vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#else\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.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};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.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};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.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 vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif`,Uf=`#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 reflectVec;\n\t\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\t\treflectVec = reflect( - viewDir, normal );\n\t\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\t#else\n\t\t\t\treflectVec = refract( - viewDir, normal, refractionRatio );\n\t\t\t#endif\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n#endif`,Of=`ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;`,Hf=`varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\n#define Material_LightProbeLOD( material )\t(0)`,Gf=`BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;`,Vf=`varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, 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_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)`,kf=`PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\t#ifdef SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULARINTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\n\t\t#endif\n\t\t#ifdef USE_SPECULARCOLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\n\t#endif\n#endif`,Wf=`struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n};\nvec3 clearcoatSpecular = vec3( 0.0 );\nvec3 sheenSpecular = vec3( 0.0 );\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\tvec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.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}\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.roughness;\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#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\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#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\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\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}`,qf=`\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef USE_CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\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\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif`,Xf=`#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * 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( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometry.normal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif`,Jf=`#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif`,Yf=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif`,Zf=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif`,$f=`#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif`,jf=`#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif`,Kf=`#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\n#endif`,Qf=`#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif`,ep=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif`,tp=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif`,np=`float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif`,ip=`#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif`,rp=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\n\tvColor *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t#if defined( USE_COLOR_ALPHA )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n\t\t#elif defined( USE_COLOR )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]\n\t\t#endif\n\t}\n#endif`,sp=`#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n\t#endif\n#endif`,op=`#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t\tuniform sampler2DArray morphTargetsTexture;\n\t\tuniform vec2 morphTargetsTextureSize;\n\t\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n\t\t\tfloat texelIndex = float( vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset );\n\t\t\tfloat y = floor( texelIndex / morphTargetsTextureSize.x );\n\t\t\tfloat x = texelIndex - y * morphTargetsTextureSize.x;\n\t\t\tvec3 morphUV = vec3( ( x + 0.5 ) / morphTargetsTextureSize.x, y / morphTargetsTextureSize.y, morphTargetIndex );\n\t\t\treturn texture( morphTargetsTexture, morphUV );\n\t\t}\n\t#else\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\tuniform float morphTargetInfluences[ 8 ];\n\t\t#else\n\t\t\tuniform float morphTargetInfluences[ 4 ];\n\t\t#endif\n\t#endif\n#endif`,ap=`#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t\t#endif\n\t#endif\n#endif`,lp=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#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 * faceDirection;\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 * faceDirection;\n\t\t\tbitangent = bitangent * faceDirection;\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;`,cp=`#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif`,hp=`#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`,up=`#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`,dp=`#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`,fp=`#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\n\t}\n#endif`,pp=`#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif`,mp=`#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\n\t#endif\n#endif`,gp=`#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif`,xp=`#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= transmissionAlpha + 0.1;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );`,yp=`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}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\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}`,_p=`#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif`,vp=`vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;`,Mp=`#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif`,bp=`#ifdef 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`,wp=`float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif`,Sp=`#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif`,Ep=`#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\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\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\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( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), 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( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), 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 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\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 ) || defined( SHADOWMAP_TYPE_VSM )\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`,Tp=`#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif`,Ap=`#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\n\t\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\tvec4 shadowWorldPosition;\n\t#endif\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n#endif`,Cp=`float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}`,Rp=`#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`,Lp=`#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp 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`,Pp=`#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`,Ip=`#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`,Dp=`float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif`,Fp=`#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif`,Bp=`#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif`,Np=`#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\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}\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 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }`,zp=`#ifdef USE_TRANSMISSION\n\tfloat transmissionAlpha = 1.0;\n\tfloat transmissionFactor = transmission;\n\tfloat thicknessFactor = thickness;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmission = getIBLVolumeRefraction(\n\t\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\n\t\tattenuationColor, attenuationDistance );\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\n\ttransmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );\n#endif`,Up=`#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\t#ifdef texture2DLodEXT\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#else\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#endif\n\t}\n\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( attenuationDistance == 0.0 ) {\n\t\t\treturn radiance;\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\n\t}\n#endif`,Op=`#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif`,Hp=`#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif`,Gp=`#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif`,Vp=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif`,kp=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif`,Wp=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif`,qp=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif`,Xp=`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}`,Jp=`uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tgl_FragColor = texture2D( t2D, vUv );\n\t#include \n\t#include \n}`,Yp=`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}`,Zp=`#include \nuniform float opacity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 vReflect = vWorldDirection;\n\t#include \n\tgl_FragColor = envColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}`,$p=`#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\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\tvHighPrecisionZW = gl_Position.zw;\n}`,jp=`#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\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\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}`,Kp=`#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}`,Qp=`#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 \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}`,em=`varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}`,tm=`uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include \n\t#include \n}`,nm=`uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\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}`,im=`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\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,rm=`#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#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \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\t#include \n\t#include \n}`,sm=`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 \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\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * 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\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,om=`#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\t#include \n}`,am=`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 \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#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_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_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,lm=`#define MATCAP\nvarying vec3 vViewPosition;\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\tvViewPosition = - mvPosition.xyz;\n}`,cm=`#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\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\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#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,hm=`#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\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#include \n\t#include \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( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}`,um=`#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\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\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}`,dm=`#define PHONG\nvarying vec3 vViewPosition;\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\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}`,fm=`#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 \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\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,pm=`#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\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\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\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}`,mm=`#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULARINTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n\t#ifdef USE_SPECULARCOLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\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 \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\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,gm=`#define TOON\nvarying vec3 vViewPosition;\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\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}`,xm=`#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\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\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,ym=`uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\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}`,_m=`uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,vm=`#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}`,Mm=`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\t#include \n\t#include \n}`,bm=`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 = isPerspectiveMatrix( projectionMatrix );\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}`,wm=`uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}`,Fe={alphamap_fragment:$d,alphamap_pars_fragment:jd,alphatest_fragment:Kd,alphatest_pars_fragment:Qd,aomap_fragment:ef,aomap_pars_fragment:tf,begin_vertex:nf,beginnormal_vertex:rf,bsdfs:sf,bumpmap_pars_fragment:of,clipping_planes_fragment:af,clipping_planes_pars_fragment:lf,clipping_planes_pars_vertex:cf,clipping_planes_vertex:hf,color_fragment:uf,color_pars_fragment:df,color_pars_vertex:ff,color_vertex:pf,common:mf,cube_uv_reflection_fragment:gf,defaultnormal_vertex:xf,displacementmap_pars_vertex:yf,displacementmap_vertex:_f,emissivemap_fragment:vf,emissivemap_pars_fragment:Mf,encodings_fragment:bf,encodings_pars_fragment:wf,envmap_fragment:Sf,envmap_common_pars_fragment:Ef,envmap_pars_fragment:Tf,envmap_pars_vertex:Af,envmap_physical_pars_fragment:Uf,envmap_vertex:Cf,fog_vertex:Rf,fog_pars_vertex:Lf,fog_fragment:Pf,fog_pars_fragment:If,gradientmap_pars_fragment:Df,lightmap_fragment:Ff,lightmap_pars_fragment:Bf,lights_lambert_vertex:Nf,lights_pars_begin:zf,lights_toon_fragment:Of,lights_toon_pars_fragment:Hf,lights_phong_fragment:Gf,lights_phong_pars_fragment:Vf,lights_physical_fragment:kf,lights_physical_pars_fragment:Wf,lights_fragment_begin:qf,lights_fragment_maps:Xf,lights_fragment_end:Jf,logdepthbuf_fragment:Yf,logdepthbuf_pars_fragment:Zf,logdepthbuf_pars_vertex:$f,logdepthbuf_vertex:jf,map_fragment:Kf,map_pars_fragment:Qf,map_particle_fragment:ep,map_particle_pars_fragment:tp,metalnessmap_fragment:np,metalnessmap_pars_fragment:ip,morphcolor_vertex:rp,morphnormal_vertex:sp,morphtarget_pars_vertex:op,morphtarget_vertex:ap,normal_fragment_begin:lp,normal_fragment_maps:cp,normal_pars_fragment:hp,normal_pars_vertex:up,normal_vertex:dp,normalmap_pars_fragment:fp,clearcoat_normal_fragment_begin:pp,clearcoat_normal_fragment_maps:mp,clearcoat_pars_fragment:gp,output_fragment:xp,packing:yp,premultiplied_alpha_fragment:_p,project_vertex:vp,dithering_fragment:Mp,dithering_pars_fragment:bp,roughnessmap_fragment:wp,roughnessmap_pars_fragment:Sp,shadowmap_pars_fragment:Ep,shadowmap_pars_vertex:Tp,shadowmap_vertex:Ap,shadowmask_pars_fragment:Cp,skinbase_vertex:Rp,skinning_pars_vertex:Lp,skinning_vertex:Pp,skinnormal_vertex:Ip,specularmap_fragment:Dp,specularmap_pars_fragment:Fp,tonemapping_fragment:Bp,tonemapping_pars_fragment:Np,transmission_fragment:zp,transmission_pars_fragment:Up,uv_pars_fragment:Op,uv_pars_vertex:Hp,uv_vertex:Gp,uv2_pars_fragment:Vp,uv2_pars_vertex:kp,uv2_vertex:Wp,worldpos_vertex:qp,background_vert:Xp,background_frag:Jp,cube_vert:Yp,cube_frag:Zp,depth_vert:$p,depth_frag:jp,distanceRGBA_vert:Kp,distanceRGBA_frag:Qp,equirect_vert:em,equirect_frag:tm,linedashed_vert:nm,linedashed_frag:im,meshbasic_vert:rm,meshbasic_frag:sm,meshlambert_vert:om,meshlambert_frag:am,meshmatcap_vert:lm,meshmatcap_frag:cm,meshnormal_vert:hm,meshnormal_frag:um,meshphong_vert:dm,meshphong_frag:fm,meshphysical_vert:pm,meshphysical_frag:mm,meshtoon_vert:gm,meshtoon_frag:xm,points_vert:ym,points_frag:_m,shadow_vert:vm,shadow_frag:Mm,sprite_vert:bm,sprite_frag:wm},re={common:{diffuse:{value:new se(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new dt},uv2Transform:{value:new dt},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Z(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new se(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new se(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new dt}},sprite:{diffuse:{value:new se(16777215)},opacity:{value:1},center:{value:new Z(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new dt}}},Jt={basic:{uniforms:vt([re.common,re.specularmap,re.envmap,re.aomap,re.lightmap,re.fog]),vertexShader:Fe.meshbasic_vert,fragmentShader:Fe.meshbasic_frag},lambert:{uniforms:vt([re.common,re.specularmap,re.envmap,re.aomap,re.lightmap,re.emissivemap,re.fog,re.lights,{emissive:{value:new se(0)}}]),vertexShader:Fe.meshlambert_vert,fragmentShader:Fe.meshlambert_frag},phong:{uniforms:vt([re.common,re.specularmap,re.envmap,re.aomap,re.lightmap,re.emissivemap,re.bumpmap,re.normalmap,re.displacementmap,re.fog,re.lights,{emissive:{value:new se(0)},specular:{value:new se(1118481)},shininess:{value:30}}]),vertexShader:Fe.meshphong_vert,fragmentShader:Fe.meshphong_frag},standard:{uniforms:vt([re.common,re.envmap,re.aomap,re.lightmap,re.emissivemap,re.bumpmap,re.normalmap,re.displacementmap,re.roughnessmap,re.metalnessmap,re.fog,re.lights,{emissive:{value:new se(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Fe.meshphysical_vert,fragmentShader:Fe.meshphysical_frag},toon:{uniforms:vt([re.common,re.aomap,re.lightmap,re.emissivemap,re.bumpmap,re.normalmap,re.displacementmap,re.gradientmap,re.fog,re.lights,{emissive:{value:new se(0)}}]),vertexShader:Fe.meshtoon_vert,fragmentShader:Fe.meshtoon_frag},matcap:{uniforms:vt([re.common,re.bumpmap,re.normalmap,re.displacementmap,re.fog,{matcap:{value:null}}]),vertexShader:Fe.meshmatcap_vert,fragmentShader:Fe.meshmatcap_frag},points:{uniforms:vt([re.points,re.fog]),vertexShader:Fe.points_vert,fragmentShader:Fe.points_frag},dashed:{uniforms:vt([re.common,re.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Fe.linedashed_vert,fragmentShader:Fe.linedashed_frag},depth:{uniforms:vt([re.common,re.displacementmap]),vertexShader:Fe.depth_vert,fragmentShader:Fe.depth_frag},normal:{uniforms:vt([re.common,re.bumpmap,re.normalmap,re.displacementmap,{opacity:{value:1}}]),vertexShader:Fe.meshnormal_vert,fragmentShader:Fe.meshnormal_frag},sprite:{uniforms:vt([re.sprite,re.fog]),vertexShader:Fe.sprite_vert,fragmentShader:Fe.sprite_frag},background:{uniforms:{uvTransform:{value:new dt},t2D:{value:null}},vertexShader:Fe.background_vert,fragmentShader:Fe.background_frag},cube:{uniforms:vt([re.envmap,{opacity:{value:1}}]),vertexShader:Fe.cube_vert,fragmentShader:Fe.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Fe.equirect_vert,fragmentShader:Fe.equirect_frag},distanceRGBA:{uniforms:vt([re.common,re.displacementmap,{referencePosition:{value:new S},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Fe.distanceRGBA_vert,fragmentShader:Fe.distanceRGBA_frag},shadow:{uniforms:vt([re.lights,re.fog,{color:{value:new se(0)},opacity:{value:1}}]),vertexShader:Fe.shadow_vert,fragmentShader:Fe.shadow_frag}};Jt.physical={uniforms:vt([Jt.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new Z(1,1)},clearcoatNormalMap:{value:null},sheen:{value:0},sheenColor:{value:new se(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new Z},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new se(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new se(1,1,1)},specularColorMap:{value:null}}]),vertexShader:Fe.meshphysical_vert,fragmentShader:Fe.meshphysical_frag};function Sm(s,e,t,n,i,r){let o=new se(0),a=i===!0?0:1,l,c,h=null,u=0,d=null;function f(x,y){let g=!1,p=y.isScene===!0?y.background:null;p&&p.isTexture&&(p=e.get(p));let M=s.xr,_=M.getSession&&M.getSession();_&&_.environmentBlendMode===\"additive\"&&(p=null),p===null?m(o,a):p&&p.isColor&&(m(p,1),g=!0),(s.autoClear||g)&&s.clear(s.autoClearColor,s.autoClearDepth,s.autoClearStencil),p&&(p.isCubeTexture||p.mapping===Dr)?(c===void 0&&(c=new ct(new wn(1,1,1),new Bt({name:\"BackgroundCubeMaterial\",uniforms:Ni(Jt.cube.uniforms),vertexShader:Jt.cube.vertexShader,fragmentShader:Jt.cube.fragmentShader,side:lt,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute(\"normal\"),c.geometry.deleteAttribute(\"uv\"),c.onBeforeRender=function(v,A,R){this.matrixWorld.copyPosition(R.matrixWorld)},Object.defineProperty(c.material,\"envMap\",{get:function(){return this.uniforms.envMap.value}}),n.update(c)),c.material.uniforms.envMap.value=p,c.material.uniforms.flipEnvMap.value=p.isCubeTexture&&p.isRenderTargetTexture===!1?-1:1,(h!==p||u!==p.version||d!==s.toneMapping)&&(c.material.needsUpdate=!0,h=p,u=p.version,d=s.toneMapping),x.unshift(c,c.geometry,c.material,0,0,null)):p&&p.isTexture&&(l===void 0&&(l=new ct(new zi(2,2),new Bt({name:\"BackgroundMaterial\",uniforms:Ni(Jt.background.uniforms),vertexShader:Jt.background.vertexShader,fragmentShader:Jt.background.fragmentShader,side:Di,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute(\"normal\"),Object.defineProperty(l.material,\"map\",{get:function(){return this.uniforms.t2D.value}}),n.update(l)),l.material.uniforms.t2D.value=p,p.matrixAutoUpdate===!0&&p.updateMatrix(),l.material.uniforms.uvTransform.value.copy(p.matrix),(h!==p||u!==p.version||d!==s.toneMapping)&&(l.material.needsUpdate=!0,h=p,u=p.version,d=s.toneMapping),x.unshift(l,l.geometry,l.material,0,0,null))}function m(x,y){t.buffers.color.setClear(x.r,x.g,x.b,y,r)}return{getClearColor:function(){return o},setClearColor:function(x,y=1){o.set(x),a=y,m(o,a)},getClearAlpha:function(){return a},setClearAlpha:function(x){a=x,m(o,a)},render:f}}function Em(s,e,t,n){let i=s.getParameter(34921),r=n.isWebGL2?null:e.get(\"OES_vertex_array_object\"),o=n.isWebGL2||r!==null,a={},l=x(null),c=l;function h(F,N,O,z,k){let B=!1;if(o){let J=m(z,O,N);c!==J&&(c=J,d(c.object)),B=y(z,k),B&&g(z,k)}else{let J=N.wireframe===!0;(c.geometry!==z.id||c.program!==O.id||c.wireframe!==J)&&(c.geometry=z.id,c.program=O.id,c.wireframe=J,B=!0)}F.isInstancedMesh===!0&&(B=!0),k!==null&&t.update(k,34963),B&&(R(F,N,O,z),k!==null&&s.bindBuffer(34963,t.get(k).buffer))}function u(){return n.isWebGL2?s.createVertexArray():r.createVertexArrayOES()}function d(F){return n.isWebGL2?s.bindVertexArray(F):r.bindVertexArrayOES(F)}function f(F){return n.isWebGL2?s.deleteVertexArray(F):r.deleteVertexArrayOES(F)}function m(F,N,O){let z=O.wireframe===!0,k=a[F.id];k===void 0&&(k={},a[F.id]=k);let B=k[N.id];B===void 0&&(B={},k[N.id]=B);let J=B[z];return J===void 0&&(J=x(u()),B[z]=J),J}function x(F){let N=[],O=[],z=[];for(let k=0;k=0){let ee=k[Q];if(ee===void 0&&(Q===\"instanceMatrix\"&&F.instanceMatrix&&(ee=F.instanceMatrix),Q===\"instanceColor\"&&F.instanceColor&&(ee=F.instanceColor)),ee!==void 0){let _e=ee.normalized,Ve=ee.itemSize,be=t.get(ee);if(be===void 0)continue;let Y=be.buffer,ke=be.type,Le=be.bytesPerElement;if(ee.isInterleavedBufferAttribute){let pe=ee.data,me=pe.stride,Ne=ee.offset;if(pe.isInstancedInterleavedBuffer){for(let H=0;H0&&s.getShaderPrecisionFormat(35632,36338).precision>0)return\"highp\";R=\"mediump\"}return R===\"mediump\"&&s.getShaderPrecisionFormat(35633,36337).precision>0&&s.getShaderPrecisionFormat(35632,36337).precision>0?\"mediump\":\"lowp\"}let o=typeof WebGL2RenderingContext<\"u\"&&s instanceof WebGL2RenderingContext||typeof WebGL2ComputeRenderingContext<\"u\"&&s instanceof WebGL2ComputeRenderingContext,a=t.precision!==void 0?t.precision:\"highp\",l=r(a);l!==a&&(console.warn(\"THREE.WebGLRenderer:\",a,\"not supported, using\",l,\"instead.\"),a=l);let c=o||e.has(\"WEBGL_draw_buffers\"),h=t.logarithmicDepthBuffer===!0,u=s.getParameter(34930),d=s.getParameter(35660),f=s.getParameter(3379),m=s.getParameter(34076),x=s.getParameter(34921),y=s.getParameter(36347),g=s.getParameter(36348),p=s.getParameter(36349),M=d>0,_=o||e.has(\"OES_texture_float\"),v=M&&_,A=o?s.getParameter(36183):0;return{isWebGL2:o,drawBuffers:c,getMaxAnisotropy:i,getMaxPrecision:r,precision:a,logarithmicDepthBuffer:h,maxTextures:u,maxVertexTextures:d,maxTextureSize:f,maxCubemapSize:m,maxAttributes:x,maxVertexUniforms:y,maxVaryings:g,maxFragmentUniforms:p,vertexTextures:M,floatFragmentTextures:_,floatVertexTextures:v,maxSamples:A}}function Cm(s){let e=this,t=null,n=0,i=!1,r=!1,o=new Xt,a=new dt,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(u,d,f){let m=u.length!==0||d||n!==0||i;return i=d,t=h(u,f,0),n=u.length,m},this.beginShadows=function(){r=!0,h(null)},this.endShadows=function(){r=!1,c()},this.setState=function(u,d,f){let m=u.clippingPlanes,x=u.clipIntersection,y=u.clipShadows,g=s.get(u);if(!i||m===null||m.length===0||r&&!y)r?h(null):c();else{let p=r?0:n,M=p*4,_=g.clippingState||null;l.value=_,_=h(m,d,M,f);for(let v=0;v!==M;++v)_[v]=t[v];g.clippingState=_,this.numIntersection=x?this.numPlanes:0,this.numPlanes+=p}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function h(u,d,f,m){let x=u!==null?u.length:0,y=null;if(x!==0){if(y=l.value,m!==!0||y===null){let g=f+x*4,p=d.matrixWorldInverse;a.getNormalMatrix(p),(y===null||y.length0){let c=new Zs(l.height/2);return c.fromEquirectangularTexture(s,o),e.set(o,c),o.addEventListener(\"dispose\",i),t(c.texture,o.mapping)}else return null}}return o}function i(o){let a=o.target;a.removeEventListener(\"dispose\",i);let l=e.get(a);l!==void 0&&(e.delete(a),l.dispose())}function r(){e=new WeakMap}return{get:n,dispose:r}}var zr=class extends Br{constructor(e=-1,t=1,n=1,i=-1,r=.1,o=2e3){super();this.type=\"OrthographicCamera\",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=i,this.near=r,this.far=o,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,n,i,r,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2,r=n-e,o=n+e,a=i+t,l=i-t;if(this.view!==null&&this.view.enabled){let c=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=c*this.view.offsetX,o=r+c*this.view.width,a-=h*this.view.offsetY,l=a-h*this.view.height}this.projectionMatrix.makeOrthographic(r,o,a,l,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}};zr.prototype.isOrthographicCamera=!0;var Ai=4,kl=[.125,.215,.35,.446,.526,.582],Gn=20,Wo=new zr,Wl=new se,qo=null,Hn=(1+Math.sqrt(5))/2,yi=1/Hn,ql=[new S(1,1,1),new S(-1,1,1),new S(1,1,-1),new S(-1,1,-1),new S(0,Hn,yi),new S(0,Hn,-yi),new S(yi,0,Hn),new S(-yi,0,Hn),new S(Hn,yi,0),new S(-Hn,yi,0)],la=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,i=100){qo=this._renderer.getRenderTarget(),this._setSize(256);let r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(e,n,i,r),t>0&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Yl(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Jl(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?M:0,M,M),h.setRenderTarget(i),x&&h.render(m,a),h.render(e,a)}m.geometry.dispose(),m.material.dispose(),h.toneMapping=d,h.autoClear=u,e.background=y}_textureToCubeUV(e,t){let n=this._renderer,i=e.mapping===Jn||e.mapping===Yn;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=Yl()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Jl());let r=i?this._cubemapMaterial:this._equirectMaterial,o=new ct(this._lodPlanes[0],r),a=r.uniforms;a.envMap.value=e;let l=this._cubeSize;hs(t,0,0,3*l,2*l),n.setRenderTarget(t),n.render(o,Wo)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;for(let i=1;iGn&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${y} samples when the maximum is set to ${Gn}`);let g=[],p=0;for(let R=0;RM-Ai?i-M+Ai:0),A=4*(this._cubeSize-_);hs(t,v,A,3*_,2*_),l.setRenderTarget(t),l.render(u,Wo)}};function Lm(s){let e=[],t=[],n=[],i=s,r=s-Ai+1+kl.length;for(let o=0;os-Ai?l=kl[o-s+Ai-1]:o===0&&(l=0),n.push(l);let c=1/(a-1),h=-c/2,u=1+c/2,d=[h,h,u,h,u,u,h,h,u,u,h,u],f=6,m=6,x=3,y=2,g=1,p=new Float32Array(x*m*f),M=new Float32Array(y*m*f),_=new Float32Array(g*m*f);for(let A=0;A2?0:-1,V=[R,P,0,R+2/3,P,0,R+2/3,P+1,0,R,P,0,R+2/3,P+1,0,R,P+1,0];p.set(V,x*m*A),M.set(d,y*m*A);let I=[A,A,A,A,A,A];_.set(I,g*m*A)}let v=new ve;v.setAttribute(\"position\",new ze(p,x)),v.setAttribute(\"uv\",new ze(M,y)),v.setAttribute(\"faceIndex\",new ze(_,g)),e.push(v),i>Ai&&i--}return{lodPlanes:e,sizeLods:t,sigmas:n}}function Xl(s,e,t){let n=new St(s,e,t);return n.texture.mapping=Dr,n.texture.name=\"PMREM.cubeUv\",n.scissorTest=!0,n}function hs(s,e,t,n,i){s.viewport.set(e,t,n,i),s.scissor.set(e,t,n,i)}function Pm(s,e,t){let n=new Float32Array(Gn),i=new S(0,1,0);return new Bt({name:\"SphericalGaussianBlur\",defines:{n:Gn,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${s}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:ya(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,blending:_n,depthTest:!1,depthWrite:!1})}function Jl(){return new Bt({name:\"EquirectangularToCubeUV\",uniforms:{envMap:{value:null}},vertexShader:ya(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,blending:_n,depthTest:!1,depthWrite:!1})}function Yl(){return new Bt({name:\"CubemapToCubeUV\",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:ya(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,blending:_n,depthTest:!1,depthWrite:!1})}function ya(){return`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`}function Im(s){let e=new WeakMap,t=null;function n(a){if(a&&a.isTexture){let l=a.mapping,c=l===Fs||l===Bs,h=l===Jn||l===Yn;if(c||h)if(a.isRenderTargetTexture&&a.needsPMREMUpdate===!0){a.needsPMREMUpdate=!1;let u=e.get(a);return t===null&&(t=new la(s)),u=c?t.fromEquirectangular(a,u):t.fromCubemap(a,u),e.set(a,u),u.texture}else{if(e.has(a))return e.get(a).texture;{let u=a.image;if(c&&u&&u.height>0||h&&u&&i(u)){t===null&&(t=new la(s));let d=c?t.fromEquirectangular(a):t.fromCubemap(a);return e.set(a,d),a.addEventListener(\"dispose\",r),d.texture}else return null}}}return a}function i(a){let l=0,c=6;for(let h=0;he.maxTextureSize&&(b=Math.ceil(I/e.maxTextureSize),I=e.maxTextureSize);let C=new Float32Array(I*b*4*x),F=new Wi(C,I,b,x);F.format=wt,F.type=yn,F.needsUpdate=!0;let N=V*4;for(let z=0;z0)return s;let i=e*t,r=Zl[i];if(r===void 0&&(r=new Float32Array(i),Zl[i]=r),e!==0){n.toArray(r,0);for(let o=1,a=0;o!==e;++o)a+=t,s[o].toArray(r,a)}return r}function Et(s,e){if(s.length!==e.length)return!1;for(let t=0,n=s.length;t/gm;function ca(s){return s.replace(zg,Ug)}function Ug(s,e){let t=Fe[e];if(t===void 0)throw new Error(\"Can not resolve #include <\"+e+\">\");return ca(t)}var Og=/#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g,Hg=/#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;function sc(s){return s.replace(Hg,Eh).replace(Og,Gg)}function Gg(s,e,t,n){return console.warn(\"WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.\"),Eh(s,e,t,n)}function Eh(s,e,t,n){let i=\"\";for(let r=parseInt(e);r0&&(y+=`\n`),g=[f,m].filter(or).join(`\n`),g.length>0&&(g+=`\n`)):(y=[oc(t),\"#define SHADER_NAME \"+t.shaderName,m,t.instancing?\"#define USE_INSTANCING\":\"\",t.instancingColor?\"#define USE_INSTANCING_COLOR\":\"\",t.supportsVertexTextures?\"#define VERTEX_TEXTURES\":\"\",\"#define MAX_BONES \"+t.maxBones,t.useFog&&t.fog?\"#define USE_FOG\":\"\",t.useFog&&t.fogExp2?\"#define FOG_EXP2\":\"\",t.map?\"#define USE_MAP\":\"\",t.envMap?\"#define USE_ENVMAP\":\"\",t.envMap?\"#define \"+h:\"\",t.lightMap?\"#define USE_LIGHTMAP\":\"\",t.aoMap?\"#define USE_AOMAP\":\"\",t.emissiveMap?\"#define USE_EMISSIVEMAP\":\"\",t.bumpMap?\"#define USE_BUMPMAP\":\"\",t.normalMap?\"#define USE_NORMALMAP\":\"\",t.normalMap&&t.objectSpaceNormalMap?\"#define OBJECTSPACE_NORMALMAP\":\"\",t.normalMap&&t.tangentSpaceNormalMap?\"#define TANGENTSPACE_NORMALMAP\":\"\",t.clearcoatMap?\"#define USE_CLEARCOATMAP\":\"\",t.clearcoatRoughnessMap?\"#define USE_CLEARCOAT_ROUGHNESSMAP\":\"\",t.clearcoatNormalMap?\"#define USE_CLEARCOAT_NORMALMAP\":\"\",t.displacementMap&&t.supportsVertexTextures?\"#define USE_DISPLACEMENTMAP\":\"\",t.specularMap?\"#define USE_SPECULARMAP\":\"\",t.specularIntensityMap?\"#define USE_SPECULARINTENSITYMAP\":\"\",t.specularColorMap?\"#define USE_SPECULARCOLORMAP\":\"\",t.roughnessMap?\"#define USE_ROUGHNESSMAP\":\"\",t.metalnessMap?\"#define USE_METALNESSMAP\":\"\",t.alphaMap?\"#define USE_ALPHAMAP\":\"\",t.transmission?\"#define USE_TRANSMISSION\":\"\",t.transmissionMap?\"#define USE_TRANSMISSIONMAP\":\"\",t.thicknessMap?\"#define USE_THICKNESSMAP\":\"\",t.sheenColorMap?\"#define USE_SHEENCOLORMAP\":\"\",t.sheenRoughnessMap?\"#define USE_SHEENROUGHNESSMAP\":\"\",t.vertexTangents?\"#define USE_TANGENT\":\"\",t.vertexColors?\"#define USE_COLOR\":\"\",t.vertexAlphas?\"#define USE_COLOR_ALPHA\":\"\",t.vertexUvs?\"#define USE_UV\":\"\",t.uvsVertexOnly?\"#define UVS_VERTEX_ONLY\":\"\",t.flatShading?\"#define FLAT_SHADED\":\"\",t.skinning?\"#define USE_SKINNING\":\"\",t.useVertexTexture?\"#define BONE_TEXTURE\":\"\",t.morphTargets?\"#define USE_MORPHTARGETS\":\"\",t.morphNormals&&t.flatShading===!1?\"#define USE_MORPHNORMALS\":\"\",t.morphColors&&t.isWebGL2?\"#define USE_MORPHCOLORS\":\"\",t.morphTargetsCount>0&&t.isWebGL2?\"#define MORPHTARGETS_TEXTURE\":\"\",t.morphTargetsCount>0&&t.isWebGL2?\"#define MORPHTARGETS_TEXTURE_STRIDE \"+t.morphTextureStride:\"\",t.morphTargetsCount>0&&t.isWebGL2?\"#define MORPHTARGETS_COUNT \"+t.morphTargetsCount:\"\",t.doubleSided?\"#define DOUBLE_SIDED\":\"\",t.flipSided?\"#define FLIP_SIDED\":\"\",t.shadowMapEnabled?\"#define USE_SHADOWMAP\":\"\",t.shadowMapEnabled?\"#define \"+l:\"\",t.sizeAttenuation?\"#define USE_SIZEATTENUATION\":\"\",t.logarithmicDepthBuffer?\"#define USE_LOGDEPTHBUF\":\"\",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?\"#define USE_LOGDEPTHBUF_EXT\":\"\",\"uniform mat4 modelMatrix;\",\"uniform mat4 modelViewMatrix;\",\"uniform mat4 projectionMatrix;\",\"uniform mat4 viewMatrix;\",\"uniform mat3 normalMatrix;\",\"uniform vec3 cameraPosition;\",\"uniform bool isOrthographic;\",\"#ifdef USE_INSTANCING\",\"\tattribute mat4 instanceMatrix;\",\"#endif\",\"#ifdef USE_INSTANCING_COLOR\",\"\tattribute vec3 instanceColor;\",\"#endif\",\"attribute vec3 position;\",\"attribute vec3 normal;\",\"attribute vec2 uv;\",\"#ifdef USE_TANGENT\",\"\tattribute vec4 tangent;\",\"#endif\",\"#if defined( USE_COLOR_ALPHA )\",\"\tattribute vec4 color;\",\"#elif defined( USE_COLOR )\",\"\tattribute vec3 color;\",\"#endif\",\"#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )\",\"\tattribute vec3 morphTarget0;\",\"\tattribute vec3 morphTarget1;\",\"\tattribute vec3 morphTarget2;\",\"\tattribute vec3 morphTarget3;\",\"\t#ifdef USE_MORPHNORMALS\",\"\t\tattribute vec3 morphNormal0;\",\"\t\tattribute vec3 morphNormal1;\",\"\t\tattribute vec3 morphNormal2;\",\"\t\tattribute vec3 morphNormal3;\",\"\t#else\",\"\t\tattribute vec3 morphTarget4;\",\"\t\tattribute vec3 morphTarget5;\",\"\t\tattribute vec3 morphTarget6;\",\"\t\tattribute vec3 morphTarget7;\",\"\t#endif\",\"#endif\",\"#ifdef USE_SKINNING\",\"\tattribute vec4 skinIndex;\",\"\tattribute vec4 skinWeight;\",\"#endif\",`\n`].filter(or).join(`\n`),g=[f,oc(t),\"#define SHADER_NAME \"+t.shaderName,m,t.useFog&&t.fog?\"#define USE_FOG\":\"\",t.useFog&&t.fogExp2?\"#define FOG_EXP2\":\"\",t.map?\"#define USE_MAP\":\"\",t.matcap?\"#define USE_MATCAP\":\"\",t.envMap?\"#define USE_ENVMAP\":\"\",t.envMap?\"#define \"+c:\"\",t.envMap?\"#define \"+h:\"\",t.envMap?\"#define \"+u:\"\",d?\"#define CUBEUV_TEXEL_WIDTH \"+d.texelWidth:\"\",d?\"#define CUBEUV_TEXEL_HEIGHT \"+d.texelHeight:\"\",d?\"#define CUBEUV_MAX_MIP \"+d.maxMip+\".0\":\"\",t.lightMap?\"#define USE_LIGHTMAP\":\"\",t.aoMap?\"#define USE_AOMAP\":\"\",t.emissiveMap?\"#define USE_EMISSIVEMAP\":\"\",t.bumpMap?\"#define USE_BUMPMAP\":\"\",t.normalMap?\"#define USE_NORMALMAP\":\"\",t.normalMap&&t.objectSpaceNormalMap?\"#define OBJECTSPACE_NORMALMAP\":\"\",t.normalMap&&t.tangentSpaceNormalMap?\"#define TANGENTSPACE_NORMALMAP\":\"\",t.clearcoat?\"#define USE_CLEARCOAT\":\"\",t.clearcoatMap?\"#define USE_CLEARCOATMAP\":\"\",t.clearcoatRoughnessMap?\"#define USE_CLEARCOAT_ROUGHNESSMAP\":\"\",t.clearcoatNormalMap?\"#define USE_CLEARCOAT_NORMALMAP\":\"\",t.specularMap?\"#define USE_SPECULARMAP\":\"\",t.specularIntensityMap?\"#define USE_SPECULARINTENSITYMAP\":\"\",t.specularColorMap?\"#define USE_SPECULARCOLORMAP\":\"\",t.roughnessMap?\"#define USE_ROUGHNESSMAP\":\"\",t.metalnessMap?\"#define USE_METALNESSMAP\":\"\",t.alphaMap?\"#define USE_ALPHAMAP\":\"\",t.alphaTest?\"#define USE_ALPHATEST\":\"\",t.sheen?\"#define USE_SHEEN\":\"\",t.sheenColorMap?\"#define USE_SHEENCOLORMAP\":\"\",t.sheenRoughnessMap?\"#define USE_SHEENROUGHNESSMAP\":\"\",t.transmission?\"#define USE_TRANSMISSION\":\"\",t.transmissionMap?\"#define USE_TRANSMISSIONMAP\":\"\",t.thicknessMap?\"#define USE_THICKNESSMAP\":\"\",t.decodeVideoTexture?\"#define DECODE_VIDEO_TEXTURE\":\"\",t.vertexTangents?\"#define USE_TANGENT\":\"\",t.vertexColors||t.instancingColor?\"#define USE_COLOR\":\"\",t.vertexAlphas?\"#define USE_COLOR_ALPHA\":\"\",t.vertexUvs?\"#define USE_UV\":\"\",t.uvsVertexOnly?\"#define UVS_VERTEX_ONLY\":\"\",t.gradientMap?\"#define USE_GRADIENTMAP\":\"\",t.flatShading?\"#define FLAT_SHADED\":\"\",t.doubleSided?\"#define DOUBLE_SIDED\":\"\",t.flipSided?\"#define FLIP_SIDED\":\"\",t.shadowMapEnabled?\"#define USE_SHADOWMAP\":\"\",t.shadowMapEnabled?\"#define \"+l:\"\",t.premultipliedAlpha?\"#define PREMULTIPLIED_ALPHA\":\"\",t.physicallyCorrectLights?\"#define PHYSICALLY_CORRECT_LIGHTS\":\"\",t.logarithmicDepthBuffer?\"#define USE_LOGDEPTHBUF\":\"\",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?\"#define USE_LOGDEPTHBUF_EXT\":\"\",\"uniform mat4 viewMatrix;\",\"uniform vec3 cameraPosition;\",\"uniform bool isOrthographic;\",t.toneMapping!==vn?\"#define TONE_MAPPING\":\"\",t.toneMapping!==vn?Fe.tonemapping_pars_fragment:\"\",t.toneMapping!==vn?Dg(\"toneMapping\",t.toneMapping):\"\",t.dithering?\"#define DITHERING\":\"\",t.opaque?\"#define OPAQUE\":\"\",Fe.encodings_pars_fragment,Ig(\"linearToOutputTexel\",t.outputEncoding),t.depthPacking?\"#define DEPTH_PACKING \"+t.depthPacking:\"\",`\n`].filter(or).join(`\n`)),o=ca(o),o=ic(o,t),o=rc(o,t),a=ca(a),a=ic(a,t),a=rc(a,t),o=sc(o),a=sc(a),t.isWebGL2&&t.isRawShaderMaterial!==!0&&(p=`#version 300 es\n`,y=[\"precision mediump sampler2DArray;\",\"#define attribute in\",\"#define varying out\",\"#define texture2D texture\"].join(`\n`)+`\n`+y,g=[\"#define varying in\",t.glslVersion===Pl?\"\":\"layout(location = 0) out highp vec4 pc_fragColor;\",t.glslVersion===Pl?\"\":\"#define gl_FragColor pc_fragColor\",\"#define gl_FragDepthEXT gl_FragDepth\",\"#define texture2D texture\",\"#define textureCube texture\",\"#define texture2DProj textureProj\",\"#define texture2DLodEXT textureLod\",\"#define texture2DProjLodEXT textureProjLod\",\"#define textureCubeLodEXT textureLod\",\"#define texture2DGradEXT textureGrad\",\"#define texture2DProjGradEXT textureProjGrad\",\"#define textureCubeGradEXT textureGrad\"].join(`\n`)+`\n`+g);let M=p+y+o,_=p+g+a,v=tc(i,35633,M),A=tc(i,35632,_);if(i.attachShader(x,v),i.attachShader(x,A),t.index0AttributeName!==void 0?i.bindAttribLocation(x,0,t.index0AttributeName):t.morphTargets===!0&&i.bindAttribLocation(x,0,\"position\"),i.linkProgram(x),s.debug.checkShaderErrors){let V=i.getProgramInfoLog(x).trim(),I=i.getShaderInfoLog(v).trim(),b=i.getShaderInfoLog(A).trim(),C=!0,F=!0;if(i.getProgramParameter(x,35714)===!1){C=!1;let N=nc(i,v,\"vertex\"),O=nc(i,A,\"fragment\");console.error(\"THREE.WebGLProgram: Shader Error \"+i.getError()+\" - VALIDATE_STATUS \"+i.getProgramParameter(x,35715)+`\n\nProgram Info Log: `+V+`\n`+N+`\n`+O)}else V!==\"\"?console.warn(\"THREE.WebGLProgram: Program Info Log:\",V):(I===\"\"||b===\"\")&&(F=!1);F&&(this.diagnostics={runnable:C,programLog:V,vertexShader:{log:I,prefix:y},fragmentShader:{log:b,prefix:g}})}i.deleteShader(v),i.deleteShader(A);let R;this.getUniforms=function(){return R===void 0&&(R=new Mn(i,x)),R};let P;return this.getAttributes=function(){return P===void 0&&(P=Ng(i,x)),P},this.destroy=function(){n.releaseStatesOfProgram(this),i.deleteProgram(x),this.program=void 0},this.name=t.shaderName,this.id=Rg++,this.cacheKey=e,this.usedTimes=1,this.program=x,this.vertexShader=v,this.fragmentShader=A,this}var Yg=0,Th=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,n=e.fragmentShader,i=this._getShaderStage(t),r=this._getShaderStage(n),o=this._getShaderCacheForMaterial(e);return o.has(i)===!1&&(o.add(i),i.usedTimes++),o.has(r)===!1&&(o.add(r),r.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache;return t.has(e)===!1&&t.set(e,new Set),t.get(e)}_getShaderStage(e){let t=this.shaderCache;if(t.has(e)===!1){let n=new Ah;t.set(e,n)}return t.get(e)}},Ah=class{constructor(){this.id=Yg++,this.usedTimes=0}};function Zg(s,e,t,n,i,r,o){let a=new qs,l=new Th,c=[],h=i.isWebGL2,u=i.logarithmicDepthBuffer,d=i.floatVertexTextures,f=i.maxVertexUniforms,m=i.vertexTextures,x=i.precision,y={MeshDepthMaterial:\"depth\",MeshDistanceMaterial:\"distanceRGBA\",MeshNormalMaterial:\"normal\",MeshBasicMaterial:\"basic\",MeshLambertMaterial:\"lambert\",MeshPhongMaterial:\"phong\",MeshToonMaterial:\"toon\",MeshStandardMaterial:\"physical\",MeshPhysicalMaterial:\"physical\",MeshMatcapMaterial:\"matcap\",LineBasicMaterial:\"basic\",LineDashedMaterial:\"dashed\",PointsMaterial:\"points\",ShadowMaterial:\"shadow\",SpriteMaterial:\"sprite\"};function g(b){let F=b.skeleton.bones;if(d)return 1024;{let O=Math.floor((f-20)/4),z=Math.min(O,F.length);return z0,H=b.clearcoat>0;return{isWebGL2:h,shaderID:K,shaderName:b.type,vertexShader:Y,fragmentShader:ke,defines:b.defines,customVertexShaderID:Le,customFragmentShaderID:pe,isRawShaderMaterial:b.isRawShaderMaterial===!0,glslVersion:b.glslVersion,precision:x,instancing:O.isInstancedMesh===!0,instancingColor:O.isInstancedMesh===!0&&O.instanceColor!==null,supportsVertexTextures:m,outputEncoding:me===null?s.outputEncoding:me.isXRRenderTarget===!0?me.texture.encoding:bn,map:!!b.map,matcap:!!b.matcap,envMap:!!J,envMapMode:J&&J.mapping,envMapCubeUVHeight:Q,lightMap:!!b.lightMap,aoMap:!!b.aoMap,emissiveMap:!!b.emissiveMap,bumpMap:!!b.bumpMap,normalMap:!!b.normalMap,objectSpaceNormalMap:b.normalMapType===xd,tangentSpaceNormalMap:b.normalMapType===ki,decodeVideoTexture:!!b.map&&b.map.isVideoTexture===!0&&b.map.encoding===je,clearcoat:H,clearcoatMap:H&&!!b.clearcoatMap,clearcoatRoughnessMap:H&&!!b.clearcoatRoughnessMap,clearcoatNormalMap:H&&!!b.clearcoatNormalMap,displacementMap:!!b.displacementMap,roughnessMap:!!b.roughnessMap,metalnessMap:!!b.metalnessMap,specularMap:!!b.specularMap,specularIntensityMap:!!b.specularIntensityMap,specularColorMap:!!b.specularColorMap,opaque:b.transparent===!1&&b.blending===Ri,alphaMap:!!b.alphaMap,alphaTest:Ne,gradientMap:!!b.gradientMap,sheen:b.sheen>0,sheenColorMap:!!b.sheenColorMap,sheenRoughnessMap:!!b.sheenRoughnessMap,transmission:b.transmission>0,transmissionMap:!!b.transmissionMap,thicknessMap:!!b.thicknessMap,combine:b.combine,vertexTangents:!!b.normalMap&&!!k.attributes.tangent,vertexColors:b.vertexColors,vertexAlphas:b.vertexColors===!0&&!!k.attributes.color&&k.attributes.color.itemSize===4,vertexUvs:!!b.map||!!b.bumpMap||!!b.normalMap||!!b.specularMap||!!b.alphaMap||!!b.emissiveMap||!!b.roughnessMap||!!b.metalnessMap||!!b.clearcoatMap||!!b.clearcoatRoughnessMap||!!b.clearcoatNormalMap||!!b.displacementMap||!!b.transmissionMap||!!b.thicknessMap||!!b.specularIntensityMap||!!b.specularColorMap||!!b.sheenColorMap||!!b.sheenRoughnessMap,uvsVertexOnly:!(!!b.map||!!b.bumpMap||!!b.normalMap||!!b.specularMap||!!b.alphaMap||!!b.emissiveMap||!!b.roughnessMap||!!b.metalnessMap||!!b.clearcoatNormalMap||b.transmission>0||!!b.transmissionMap||!!b.thicknessMap||!!b.specularIntensityMap||!!b.specularColorMap||b.sheen>0||!!b.sheenColorMap||!!b.sheenRoughnessMap)&&!!b.displacementMap,fog:!!z,useFog:b.fog,fogExp2:z&&z.isFogExp2,flatShading:!!b.flatShading,sizeAttenuation:b.sizeAttenuation,logarithmicDepthBuffer:u,skinning:O.isSkinnedMesh===!0&&ee>0,maxBones:ee,useVertexTexture:d,morphTargets:k.morphAttributes.position!==void 0,morphNormals:k.morphAttributes.normal!==void 0,morphColors:k.morphAttributes.color!==void 0,morphTargetsCount:Ve,morphTextureStride:be,numDirLights:C.directional.length,numPointLights:C.point.length,numSpotLights:C.spot.length,numRectAreaLights:C.rectArea.length,numHemiLights:C.hemi.length,numDirLightShadows:C.directionalShadowMap.length,numPointLightShadows:C.pointShadowMap.length,numSpotLightShadows:C.spotShadowMap.length,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:b.dithering,shadowMapEnabled:s.shadowMap.enabled&&F.length>0,shadowMapType:s.shadowMap.type,toneMapping:b.toneMapped?s.toneMapping:vn,physicallyCorrectLights:s.physicallyCorrectLights,premultipliedAlpha:b.premultipliedAlpha,doubleSided:b.side===Fi,flipSided:b.side===lt,depthPacking:b.depthPacking!==void 0?b.depthPacking:!1,index0AttributeName:b.index0AttributeName,extensionDerivatives:b.extensions&&b.extensions.derivatives,extensionFragDepth:b.extensions&&b.extensions.fragDepth,extensionDrawBuffers:b.extensions&&b.extensions.drawBuffers,extensionShaderTextureLOD:b.extensions&&b.extensions.shaderTextureLOD,rendererExtensionFragDepth:h||n.has(\"EXT_frag_depth\"),rendererExtensionDrawBuffers:h||n.has(\"WEBGL_draw_buffers\"),rendererExtensionShaderTextureLod:h||n.has(\"EXT_shader_texture_lod\"),customProgramCacheKey:b.customProgramCacheKey()}}function M(b){let C=[];if(b.shaderID?C.push(b.shaderID):(C.push(b.customVertexShaderID),C.push(b.customFragmentShaderID)),b.defines!==void 0)for(let F in b.defines)C.push(F),C.push(b.defines[F]);return b.isRawShaderMaterial===!1&&(_(C,b),v(C,b),C.push(s.outputEncoding)),C.push(b.customProgramCacheKey),C.join()}function _(b,C){b.push(C.precision),b.push(C.outputEncoding),b.push(C.envMapMode),b.push(C.envMapCubeUVHeight),b.push(C.combine),b.push(C.vertexUvs),b.push(C.fogExp2),b.push(C.sizeAttenuation),b.push(C.maxBones),b.push(C.morphTargetsCount),b.push(C.morphAttributeCount),b.push(C.numDirLights),b.push(C.numPointLights),b.push(C.numSpotLights),b.push(C.numHemiLights),b.push(C.numRectAreaLights),b.push(C.numDirLightShadows),b.push(C.numPointLightShadows),b.push(C.numSpotLightShadows),b.push(C.shadowMapType),b.push(C.toneMapping),b.push(C.numClippingPlanes),b.push(C.numClipIntersection)}function v(b,C){a.disableAll(),C.isWebGL2&&a.enable(0),C.supportsVertexTextures&&a.enable(1),C.instancing&&a.enable(2),C.instancingColor&&a.enable(3),C.map&&a.enable(4),C.matcap&&a.enable(5),C.envMap&&a.enable(6),C.lightMap&&a.enable(7),C.aoMap&&a.enable(8),C.emissiveMap&&a.enable(9),C.bumpMap&&a.enable(10),C.normalMap&&a.enable(11),C.objectSpaceNormalMap&&a.enable(12),C.tangentSpaceNormalMap&&a.enable(13),C.clearcoat&&a.enable(14),C.clearcoatMap&&a.enable(15),C.clearcoatRoughnessMap&&a.enable(16),C.clearcoatNormalMap&&a.enable(17),C.displacementMap&&a.enable(18),C.specularMap&&a.enable(19),C.roughnessMap&&a.enable(20),C.metalnessMap&&a.enable(21),C.gradientMap&&a.enable(22),C.alphaMap&&a.enable(23),C.alphaTest&&a.enable(24),C.vertexColors&&a.enable(25),C.vertexAlphas&&a.enable(26),C.vertexUvs&&a.enable(27),C.vertexTangents&&a.enable(28),C.uvsVertexOnly&&a.enable(29),C.fog&&a.enable(30),b.push(a.mask),a.disableAll(),C.useFog&&a.enable(0),C.flatShading&&a.enable(1),C.logarithmicDepthBuffer&&a.enable(2),C.skinning&&a.enable(3),C.useVertexTexture&&a.enable(4),C.morphTargets&&a.enable(5),C.morphNormals&&a.enable(6),C.morphColors&&a.enable(7),C.premultipliedAlpha&&a.enable(8),C.shadowMapEnabled&&a.enable(9),C.physicallyCorrectLights&&a.enable(10),C.doubleSided&&a.enable(11),C.flipSided&&a.enable(12),C.depthPacking&&a.enable(13),C.dithering&&a.enable(14),C.specularIntensityMap&&a.enable(15),C.specularColorMap&&a.enable(16),C.transmission&&a.enable(17),C.transmissionMap&&a.enable(18),C.thicknessMap&&a.enable(19),C.sheen&&a.enable(20),C.sheenColorMap&&a.enable(21),C.sheenRoughnessMap&&a.enable(22),C.decodeVideoTexture&&a.enable(23),C.opaque&&a.enable(24),b.push(a.mask)}function A(b){let C=y[b.type],F;if(C){let N=Jt[C];F=Wd.clone(N.uniforms)}else F=b.uniforms;return F}function R(b,C){let F;for(let N=0,O=c.length;N0?n.push(g):f.transparent===!0?i.push(g):t.push(g)}function l(u,d,f,m,x,y){let g=o(u,d,f,m,x,y);f.transmission>0?n.unshift(g):f.transparent===!0?i.unshift(g):t.unshift(g)}function c(u,d){t.length>1&&t.sort(u||jg),n.length>1&&n.sort(d||ac),i.length>1&&i.sort(d||ac)}function h(){for(let u=e,d=s.length;u=s.get(n).length?(r=new lc,s.get(n).push(r)):r=s.get(n)[i],r}function t(){s=new WeakMap}return{get:e,dispose:t}}function Qg(){let s={};return{get:function(e){if(s[e.id]!==void 0)return s[e.id];let t;switch(e.type){case\"DirectionalLight\":t={direction:new S,color:new se};break;case\"SpotLight\":t={position:new S,direction:new S,color:new se,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case\"PointLight\":t={position:new S,color:new se,distance:0,decay:0};break;case\"HemisphereLight\":t={direction:new S,skyColor:new se,groundColor:new se};break;case\"RectAreaLight\":t={color:new se,position:new S,halfWidth:new S,halfHeight:new S};break}return s[e.id]=t,t}}}function ex(){let s={};return{get:function(e){if(s[e.id]!==void 0)return s[e.id];let t;switch(e.type){case\"DirectionalLight\":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Z};break;case\"SpotLight\":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Z};break;case\"PointLight\":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Z,shadowCameraNear:1,shadowCameraFar:1e3};break}return s[e.id]=t,t}}}var tx=0;function nx(s,e){return(e.castShadow?1:0)-(s.castShadow?1:0)}function ix(s,e){let t=new Qg,n=ex(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]};for(let h=0;h<9;h++)i.probe.push(new S);let r=new S,o=new de,a=new de;function l(h,u){let d=0,f=0,m=0;for(let V=0;V<9;V++)i.probe[V].set(0,0,0);let x=0,y=0,g=0,p=0,M=0,_=0,v=0,A=0;h.sort(nx);let R=u!==!0?Math.PI:1;for(let V=0,I=h.length;V0&&(e.isWebGL2||s.has(\"OES_texture_float_linear\")===!0?(i.rectAreaLTC1=re.LTC_FLOAT_1,i.rectAreaLTC2=re.LTC_FLOAT_2):s.has(\"OES_texture_half_float_linear\")===!0?(i.rectAreaLTC1=re.LTC_HALF_1,i.rectAreaLTC2=re.LTC_HALF_2):console.error(\"THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.\")),i.ambient[0]=d,i.ambient[1]=f,i.ambient[2]=m;let P=i.hash;(P.directionalLength!==x||P.pointLength!==y||P.spotLength!==g||P.rectAreaLength!==p||P.hemiLength!==M||P.numDirectionalShadows!==_||P.numPointShadows!==v||P.numSpotShadows!==A)&&(i.directional.length=x,i.spot.length=g,i.rectArea.length=p,i.point.length=y,i.hemi.length=M,i.directionalShadow.length=_,i.directionalShadowMap.length=_,i.pointShadow.length=v,i.pointShadowMap.length=v,i.spotShadow.length=A,i.spotShadowMap.length=A,i.directionalShadowMatrix.length=_,i.pointShadowMatrix.length=v,i.spotShadowMatrix.length=A,P.directionalLength=x,P.pointLength=y,P.spotLength=g,P.rectAreaLength=p,P.hemiLength=M,P.numDirectionalShadows=_,P.numPointShadows=v,P.numSpotShadows=A,i.version=tx++)}function c(h,u){let d=0,f=0,m=0,x=0,y=0,g=u.matrixWorldInverse;for(let p=0,M=h.length;p=t.get(r).length?(a=new cc(s,e),t.get(r).push(a)):a=t.get(r)[o],a}function i(){t=new WeakMap}return{get:n,dispose:i}}var js=class extends ot{constructor(e){super();this.type=\"MeshDepthMaterial\",this.depthPacking=md,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}};js.prototype.isMeshDepthMaterial=!0;var Ks=class extends ot{constructor(e){super();this.type=\"MeshDistanceMaterial\",this.referencePosition=new S,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.fog=!1,this.setValues(e)}copy(e){return super.copy(e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}};Ks.prototype.isMeshDistanceMaterial=!0;var sx=`void main() {\n\tgl_Position = vec4( position, 1.0 );\n}`,ox=`uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}`;function Ch(s,e,t){let n=new Nr,i=new Z,r=new Z,o=new qe,a=new js({depthPacking:gd}),l=new Ks,c={},h=t.maxTextureSize,u={0:lt,1:Di,2:Fi},d=new Bt({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Z},radius:{value:4}},vertexShader:sx,fragmentShader:ox}),f=d.clone();f.defines.HORIZONTAL_PASS=1;let m=new ve;m.setAttribute(\"position\",new ze(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let x=new ct(m,d),y=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Qc,this.render=function(_,v,A){if(y.enabled===!1||y.autoUpdate===!1&&y.needsUpdate===!1||_.length===0)return;let R=s.getRenderTarget(),P=s.getActiveCubeFace(),V=s.getActiveMipmapLevel(),I=s.state;I.setBlending(_n),I.buffers.color.setClear(1,1,1,1),I.buffers.depth.setTest(!0),I.setScissorTest(!1);for(let b=0,C=_.length;bh||i.y>h)&&(i.x>h&&(r.x=Math.floor(h/O.x),i.x=r.x*O.x,N.mapSize.x=r.x),i.y>h&&(r.y=Math.floor(h/O.y),i.y=r.y*O.y,N.mapSize.y=r.y)),N.map===null&&!N.isPointLightShadow&&this.type===sr){let k={minFilter:nt,magFilter:nt,format:wt};N.map=new St(i.x,i.y,k),N.map.texture.name=F.name+\".shadowMap\",N.mapPass=new St(i.x,i.y,k),N.camera.updateProjectionMatrix()}if(N.map===null){let k={minFilter:ut,magFilter:ut,format:wt};N.map=new St(i.x,i.y,k),N.map.texture.name=F.name+\".shadowMap\",N.camera.updateProjectionMatrix()}s.setRenderTarget(N.map),s.clear();let z=N.getViewportCount();for(let k=0;k0){let C=I.uuid,F=v.uuid,N=c[C];N===void 0&&(N={},c[C]=N);let O=N[F];O===void 0&&(O=I.clone(),N[F]=O),I=O}return I.visible=v.visible,I.wireframe=v.wireframe,V===sr?I.side=v.shadowSide!==null?v.shadowSide:v.side:I.side=v.shadowSide!==null?v.shadowSide:u[v.side],I.alphaMap=v.alphaMap,I.alphaTest=v.alphaTest,I.clipShadows=v.clipShadows,I.clippingPlanes=v.clippingPlanes,I.clipIntersection=v.clipIntersection,I.displacementMap=v.displacementMap,I.displacementScale=v.displacementScale,I.displacementBias=v.displacementBias,I.wireframeLinewidth=v.wireframeLinewidth,I.linewidth=v.linewidth,A.isPointLight===!0&&I.isMeshDistanceMaterial===!0&&(I.referencePosition.setFromMatrixPosition(A.matrixWorld),I.nearDistance=R,I.farDistance=P),I}function M(_,v,A,R,P){if(_.visible===!1)return;if(_.layers.test(v.layers)&&(_.isMesh||_.isLine||_.isPoints)&&(_.castShadow||_.receiveShadow&&P===sr)&&(!_.frustumCulled||n.intersectsObject(_))){_.modelViewMatrix.multiplyMatrices(A.matrixWorldInverse,_.matrixWorld);let b=e.update(_),C=_.material;if(Array.isArray(C)){let F=b.groups;for(let N=0,O=F.length;N=1):z.indexOf(\"OpenGL ES\")!==-1&&(O=parseFloat(/^OpenGL ES (\\d)/.exec(z)[1]),N=O>=2);let k=null,B={},J=s.getParameter(3088),Q=s.getParameter(2978),K=new qe().fromArray(J),ee=new qe().fromArray(Q);function _e(L,he,ae){let Ce=new Uint8Array(4),le=s.createTexture();s.bindTexture(L,le),s.texParameteri(L,10241,9728),s.texParameteri(L,10240,9728);for(let te=0;te$||T.height>$)&&(ie=$/Math.max(T.width,T.height)),ie<1||w===!0)if(typeof HTMLImageElement<\"u\"&&T instanceof HTMLImageElement||typeof HTMLCanvasElement<\"u\"&&T instanceof HTMLCanvasElement||typeof ImageBitmap<\"u\"&&T instanceof ImageBitmap){let ce=w?Gs:Math.floor,Me=ce(ie*T.width),q=ce(ie*T.height);m===void 0&&(m=g(Me,q));let Ee=W?g(Me,q):m;return Ee.width=Me,Ee.height=q,Ee.getContext(\"2d\").drawImage(T,0,0,Me,q),console.warn(\"THREE.WebGLRenderer: Texture has been resized from (\"+T.width+\"x\"+T.height+\") to (\"+Me+\"x\"+q+\").\"),Ee}else return\"data\"in T&&console.warn(\"THREE.WebGLRenderer: Image in DataTexture is too big (\"+T.width+\"x\"+T.height+\").\"),T;return T}function M(T){return aa(T.width)&&aa(T.height)}function _(T){return a?!1:T.wrapS!==At||T.wrapT!==At||T.minFilter!==ut&&T.minFilter!==nt}function v(T,w){return T.generateMipmaps&&w&&T.minFilter!==ut&&T.minFilter!==nt}function A(T){s.generateMipmap(T)}function R(T,w,W,$,ie=!1){if(a===!1)return w;if(T!==null){if(s[T]!==void 0)return s[T];console.warn(\"THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '\"+T+\"'\")}let ce=w;return w===6403&&(W===5126&&(ce=33326),W===5131&&(ce=33325),W===5121&&(ce=33321)),w===33319&&(W===5126&&(ce=33328),W===5131&&(ce=33327),W===5121&&(ce=33323)),w===6408&&(W===5126&&(ce=34836),W===5131&&(ce=34842),W===5121&&(ce=$===je&&ie===!1?35907:32856),W===32819&&(ce=32854),W===32820&&(ce=32855)),(ce===33325||ce===33326||ce===33327||ce===33328||ce===34842||ce===34836)&&e.get(\"EXT_color_buffer_float\"),ce}function P(T,w,W){return v(T,W)===!0||T.isFramebufferTexture&&T.minFilter!==ut&&T.minFilter!==nt?Math.log2(Math.max(w.width,w.height))+1:T.mipmaps!==void 0&&T.mipmaps.length>0?T.mipmaps.length:T.isCompressedTexture&&Array.isArray(T.image)?w.mipmaps.length:1}function V(T){return T===ut||T===ra||T===sa?9728:9729}function I(T){let w=T.target;w.removeEventListener(\"dispose\",I),C(w),w.isVideoTexture&&f.delete(w)}function b(T){let w=T.target;w.removeEventListener(\"dispose\",b),N(w)}function C(T){let w=n.get(T);if(w.__webglInit===void 0)return;let W=T.source,$=x.get(W);if($){let ie=$[w.__cacheKey];ie.usedTimes--,ie.usedTimes===0&&F(T),Object.keys($).length===0&&x.delete(W)}n.remove(T)}function F(T){let w=n.get(T);s.deleteTexture(w.__webglTexture);let W=T.source,$=x.get(W);delete $[w.__cacheKey],o.memory.textures--}function N(T){let w=T.texture,W=n.get(T),$=n.get(w);if($.__webglTexture!==void 0&&(s.deleteTexture($.__webglTexture),o.memory.textures--),T.depthTexture&&T.depthTexture.dispose(),T.isWebGLCubeRenderTarget)for(let ie=0;ie<6;ie++)s.deleteFramebuffer(W.__webglFramebuffer[ie]),W.__webglDepthbuffer&&s.deleteRenderbuffer(W.__webglDepthbuffer[ie]);else s.deleteFramebuffer(W.__webglFramebuffer),W.__webglDepthbuffer&&s.deleteRenderbuffer(W.__webglDepthbuffer),W.__webglMultisampledFramebuffer&&s.deleteFramebuffer(W.__webglMultisampledFramebuffer),W.__webglColorRenderbuffer&&s.deleteRenderbuffer(W.__webglColorRenderbuffer),W.__webglDepthRenderbuffer&&s.deleteRenderbuffer(W.__webglDepthRenderbuffer);if(T.isWebGLMultipleRenderTargets)for(let ie=0,ce=w.length;ie=l&&console.warn(\"THREE.WebGLTextures: Trying to use \"+T+\" texture units while this GPU supports only \"+l),O+=1,T}function B(T){let w=[];return w.push(T.wrapS),w.push(T.wrapT),w.push(T.magFilter),w.push(T.minFilter),w.push(T.anisotropy),w.push(T.internalFormat),w.push(T.format),w.push(T.type),w.push(T.generateMipmaps),w.push(T.premultiplyAlpha),w.push(T.flipY),w.push(T.unpackAlignment),w.push(T.encoding),w.join()}function J(T,w){let W=n.get(T);if(T.isVideoTexture&&Pe(T),T.version>0&&W.__version!==T.version){let $=T.image;if($===null)console.warn(\"THREE.WebGLRenderer: Texture marked for update but no image data found.\");else if($.complete===!1)console.warn(\"THREE.WebGLRenderer: Texture marked for update but image is incomplete\");else{ke(W,T,w);return}}t.activeTexture(33984+w),t.bindTexture(3553,W.__webglTexture)}function Q(T,w){let W=n.get(T);if(T.version>0&&W.__version!==T.version){ke(W,T,w);return}t.activeTexture(33984+w),t.bindTexture(35866,W.__webglTexture)}function K(T,w){let W=n.get(T);if(T.version>0&&W.__version!==T.version){ke(W,T,w);return}t.activeTexture(33984+w),t.bindTexture(32879,W.__webglTexture)}function ee(T,w){let W=n.get(T);if(T.version>0&&W.__version!==T.version){Le(W,T,w);return}t.activeTexture(33984+w),t.bindTexture(34067,W.__webglTexture)}let _e={[Ns]:10497,[At]:33071,[zs]:33648},Ve={[ut]:9728,[ra]:9984,[sa]:9986,[nt]:9729,[ih]:9985,[Vi]:9987};function be(T,w,W){if(W?(s.texParameteri(T,10242,_e[w.wrapS]),s.texParameteri(T,10243,_e[w.wrapT]),(T===32879||T===35866)&&s.texParameteri(T,32882,_e[w.wrapR]),s.texParameteri(T,10240,Ve[w.magFilter]),s.texParameteri(T,10241,Ve[w.minFilter])):(s.texParameteri(T,10242,33071),s.texParameteri(T,10243,33071),(T===32879||T===35866)&&s.texParameteri(T,32882,33071),(w.wrapS!==At||w.wrapT!==At)&&console.warn(\"THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.\"),s.texParameteri(T,10240,V(w.magFilter)),s.texParameteri(T,10241,V(w.minFilter)),w.minFilter!==ut&&w.minFilter!==nt&&console.warn(\"THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.\")),e.has(\"EXT_texture_filter_anisotropic\")===!0){let $=e.get(\"EXT_texture_filter_anisotropic\");if(w.type===yn&&e.has(\"OES_texture_float_linear\")===!1||a===!1&&w.type===Li&&e.has(\"OES_texture_half_float_linear\")===!1)return;(w.anisotropy>1||n.get(w).__currentAnisotropy)&&(s.texParameterf(T,$.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(w.anisotropy,i.getMaxAnisotropy())),n.get(w).__currentAnisotropy=w.anisotropy)}}function Y(T,w){let W=!1;T.__webglInit===void 0&&(T.__webglInit=!0,w.addEventListener(\"dispose\",I));let $=w.source,ie=x.get($);ie===void 0&&(ie={},x.set($,ie));let ce=B(w);if(ce!==T.__cacheKey){ie[ce]===void 0&&(ie[ce]={texture:s.createTexture(),usedTimes:0},o.memory.textures++,W=!0),ie[ce].usedTimes++;let Me=ie[T.__cacheKey];Me!==void 0&&(ie[T.__cacheKey].usedTimes--,Me.usedTimes===0&&F(w)),T.__cacheKey=ce,T.__webglTexture=ie[ce].texture}return W}function ke(T,w,W){let $=3553;w.isDataArrayTexture&&($=35866),w.isData3DTexture&&($=32879);let ie=Y(T,w),ce=w.source;if(t.activeTexture(33984+W),t.bindTexture($,T.__webglTexture),ce.version!==ce.__currentVersion||ie===!0){s.pixelStorei(37440,w.flipY),s.pixelStorei(37441,w.premultiplyAlpha),s.pixelStorei(3317,w.unpackAlignment),s.pixelStorei(37443,0);let Me=_(w)&&M(w.image)===!1,q=p(w.image,Me,!1,h);q=$e(w,q);let Ee=M(q)||a,Te=r.convert(w.format,w.encoding),ye=r.convert(w.type),ge=R(w.internalFormat,Te,ye,w.encoding,w.isVideoTexture);be($,w,Ee);let L,he=w.mipmaps,ae=a&&w.isVideoTexture!==!0,Ce=T.__version===void 0,le=P(w,q,Ee);if(w.isDepthTexture)ge=6402,a?w.type===yn?ge=36012:w.type===Is?ge=33190:w.type===Pi?ge=35056:ge=33189:w.type===yn&&console.error(\"WebGLRenderer: Floating point depth texture requires WebGL2.\"),w.format===Wn&&ge===6402&&w.type!==hr&&w.type!==Is&&(console.warn(\"THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.\"),w.type=hr,ye=r.convert(w.type)),w.format===Bi&&ge===6402&&(ge=34041,w.type!==Pi&&(console.warn(\"THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.\"),w.type=Pi,ye=r.convert(w.type))),ae&&Ce?t.texStorage2D(3553,1,ge,q.width,q.height):t.texImage2D(3553,0,ge,q.width,q.height,0,Te,ye,null);else if(w.isDataTexture)if(he.length>0&&Ee){ae&&Ce&&t.texStorage2D(3553,le,ge,he[0].width,he[0].height);for(let te=0,Ae=he.length;te0&&Ee){ae&&Ce&&t.texStorage2D(3553,le,ge,he[0].width,he[0].height);for(let te=0,Ae=he.length;te0&&Ce++,t.texStorage2D(34067,Ce,L,q[0].width,q[0].height));for(let te=0;te<6;te++)if(Me){he?t.texSubImage2D(34069+te,0,0,0,q[te].width,q[te].height,ye,ge,q[te].data):t.texImage2D(34069+te,0,L,q[te].width,q[te].height,0,ye,ge,q[te].data);for(let Ae=0;Ae0&&xe(T)===!1){W.__webglMultisampledFramebuffer=s.createFramebuffer(),W.__webglColorRenderbuffer=s.createRenderbuffer(),s.bindRenderbuffer(36161,W.__webglColorRenderbuffer);let q=r.convert(w.format,w.encoding),Ee=r.convert(w.type),Te=R(w.internalFormat,q,Ee,w.encoding),ye=we(T);s.renderbufferStorageMultisample(36161,ye,Te,T.width,T.height),t.bindFramebuffer(36160,W.__webglMultisampledFramebuffer),s.framebufferRenderbuffer(36160,36064,36161,W.__webglColorRenderbuffer),s.bindRenderbuffer(36161,null),T.depthBuffer&&(W.__webglDepthRenderbuffer=s.createRenderbuffer(),me(W.__webglDepthRenderbuffer,T,!0)),t.bindFramebuffer(36160,null)}if(ie){t.bindTexture(34067,$.__webglTexture),be(34067,w,Me);for(let q=0;q<6;q++)pe(W.__webglFramebuffer[q],T,w,36064,34069+q);v(w,Me)&&A(34067),t.unbindTexture()}else if(ce){let q=T.texture;for(let Ee=0,Te=q.length;Ee0&&xe(T)===!1){let w=T.width,W=T.height,$=16384,ie=[36064],ce=T.stencilBuffer?33306:36096;T.depthBuffer&&ie.push(ce);let Me=n.get(T),q=Me.__ignoreDepthValues!==void 0?Me.__ignoreDepthValues:!1;q===!1&&(T.depthBuffer&&($|=256),T.stencilBuffer&&($|=1024)),t.bindFramebuffer(36008,Me.__webglMultisampledFramebuffer),t.bindFramebuffer(36009,Me.__webglFramebuffer),q===!0&&(s.invalidateFramebuffer(36008,[ce]),s.invalidateFramebuffer(36009,[ce])),s.blitFramebuffer(0,0,w,W,0,0,w,W,$,9728),s.invalidateFramebuffer(36008,ie),t.bindFramebuffer(36008,null),t.bindFramebuffer(36009,Me.__webglMultisampledFramebuffer)}}function we(T){return Math.min(u,T.samples)}function xe(T){let w=n.get(T);return a&&T.samples>0&&e.has(\"WEBGL_multisampled_render_to_texture\")===!0&&w.__useRenderToTexture!==!1}function Pe(T){let w=o.render.frame;f.get(T)!==w&&(f.set(T,w),T.update())}function $e(T,w){let W=T.encoding,$=T.format,ie=T.type;return T.isCompressedTexture===!0||T.isVideoTexture===!0||T.format===oa||W!==bn&&(W===je?a===!1?e.has(\"EXT_sRGB\")===!0&&$===wt?(T.format=oa,T.minFilter=nt,T.generateMipmaps=!1):w=An.sRGBToLinear(w):($!==wt||ie!==Zn)&&console.warn(\"THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.\"):console.error(\"THREE.WebGLTextures: Unsupported texture encoding:\",W)),w}this.allocateTextureUnit=k,this.resetTextureUnits=z,this.setTexture2D=J,this.setTexture2DArray=Q,this.setTexture3D=K,this.setTextureCube=ee,this.rebindTextures=j,this.setupRenderTarget=ne,this.updateRenderTargetMipmap=fe,this.updateMultisampleRenderTarget=oe,this.setupDepthRenderbuffer=H,this.setupFrameBufferTexture=pe,this.useMultisampledRTT=xe}function cx(s,e,t){let n=t.isWebGL2;function i(r,o=null){let a;if(r===Zn)return 5121;if(r===Qu)return 32819;if(r===ed)return 32820;if(r===$u)return 5120;if(r===ju)return 5122;if(r===hr)return 5123;if(r===Ku)return 5124;if(r===Is)return 5125;if(r===yn)return 5126;if(r===Li)return n?5131:(a=e.get(\"OES_texture_half_float\"),a!==null?a.HALF_FLOAT_OES:null);if(r===td)return 6406;if(r===wt)return 6408;if(r===id)return 6409;if(r===rd)return 6410;if(r===Wn)return 6402;if(r===Bi)return 34041;if(r===sd)return 6403;if(r===nd)return console.warn(\"THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228\"),6408;if(r===oa)return a=e.get(\"EXT_sRGB\"),a!==null?a.SRGB_ALPHA_EXT:null;if(r===od)return 36244;if(r===ad)return 33319;if(r===ld)return 33320;if(r===cd)return 36249;if(r===xo||r===yo||r===_o||r===vo)if(o===je)if(a=e.get(\"WEBGL_compressed_texture_s3tc_srgb\"),a!==null){if(r===xo)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(r===yo)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(r===_o)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(r===vo)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get(\"WEBGL_compressed_texture_s3tc\"),a!==null){if(r===xo)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(r===yo)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(r===_o)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(r===vo)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(r===hl||r===ul||r===dl||r===fl)if(a=e.get(\"WEBGL_compressed_texture_pvrtc\"),a!==null){if(r===hl)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(r===ul)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(r===dl)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(r===fl)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(r===hd)return a=e.get(\"WEBGL_compressed_texture_etc1\"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(r===pl||r===ml)if(a=e.get(\"WEBGL_compressed_texture_etc\"),a!==null){if(r===pl)return o===je?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(r===ml)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(r===gl||r===xl||r===yl||r===_l||r===vl||r===Ml||r===bl||r===wl||r===Sl||r===El||r===Tl||r===Al||r===Cl||r===Rl)if(a=e.get(\"WEBGL_compressed_texture_astc\"),a!==null){if(r===gl)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(r===xl)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(r===yl)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(r===_l)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(r===vl)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(r===Ml)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(r===bl)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(r===wl)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(r===Sl)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(r===El)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(r===Tl)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(r===Al)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(r===Cl)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(r===Rl)return o===je?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(r===Ll)if(a=e.get(\"EXT_texture_compression_bptc\"),a!==null){if(r===Ll)return o===je?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;if(r===Pi)return n?34042:(a=e.get(\"WEBGL_depth_texture\"),a!==null?a.UNSIGNED_INT_24_8_WEBGL:null)}return{convert:i}}var _a=class extends pt{constructor(e=[]){super();this.cameras=e}};_a.prototype.isArrayCamera=!0;var kn=class extends Be{constructor(){super();this.type=\"Group\"}};kn.prototype.isGroup=!0;var hx={type:\"move\"},Ds=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new kn,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new kn,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new S,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new S),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new kn,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new S,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new S),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}disconnect(e){return this.dispatchEvent({type:\"disconnected\",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let i=null,r=null,o=null,a=this._targetRay,l=this._grip,c=this._hand;if(e&&t.session.visibilityState!==\"visible-blurred\")if(a!==null&&(i=t.getPose(e.targetRaySpace,n),i!==null&&(a.matrix.fromArray(i.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),i.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(i.linearVelocity)):a.hasLinearVelocity=!1,i.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(i.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(hx))),c&&e.hand){o=!0;for(let x of e.hand.values()){let y=t.getJointPose(x,n);if(c.joints[x.jointName]===void 0){let p=new kn;p.matrixAutoUpdate=!1,p.visible=!1,c.joints[x.jointName]=p,c.add(p)}let g=c.joints[x.jointName];y!==null&&(g.matrix.fromArray(y.transform.matrix),g.matrix.decompose(g.position,g.rotation,g.scale),g.jointRadius=y.radius),g.visible=y!==null}let h=c.joints[\"index-finger-tip\"],u=c.joints[\"thumb-tip\"],d=h.position.distanceTo(u.position),f=.02,m=.005;c.inputState.pinching&&d>f+m?(c.inputState.pinching=!1,this.dispatchEvent({type:\"pinchend\",handedness:e.handedness,target:this})):!c.inputState.pinching&&d<=f-m&&(c.inputState.pinching=!0,this.dispatchEvent({type:\"pinchstart\",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(r=t.getPose(e.gripSpace,n),r!==null&&(l.matrix.fromArray(r.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),r.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(r.linearVelocity)):l.hasLinearVelocity=!1,r.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(r.angularVelocity)):l.hasAngularVelocity=!1));return a!==null&&(a.visible=i!==null),l!==null&&(l.visible=r!==null),c!==null&&(c.visible=o!==null),this}},va=class extends ht{constructor(e,t,n,i,r,o,a,l,c,h){if(h=h!==void 0?h:Wn,h!==Wn&&h!==Bi)throw new Error(\"DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat\");n===void 0&&h===Wn&&(n=hr),n===void 0&&h===Bi&&(n=Pi);super(null,i,r,o,a,l,h,n,c);this.image={width:e,height:t},this.magFilter=a!==void 0?a:ut,this.minFilter=l!==void 0?l:ut,this.flipY=!1,this.generateMipmaps=!1}};va.prototype.isDepthTexture=!0;var Rh=class extends Tn{constructor(e,t){super();let n=this,i=null,r=1,o=null,a=\"local-floor\",l=null,c=null,h=null,u=null,d=null,f=t.getContextAttributes(),m=null,x=null,y=[],g=new Map,p=new pt;p.layers.enable(1),p.viewport=new qe;let M=new pt;M.layers.enable(2),M.viewport=new qe;let _=[p,M],v=new _a;v.layers.enable(1),v.layers.enable(2);let A=null,R=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(B){let J=y[B];return J===void 0&&(J=new Ds,y[B]=J),J.getTargetRaySpace()},this.getControllerGrip=function(B){let J=y[B];return J===void 0&&(J=new Ds,y[B]=J),J.getGripSpace()},this.getHand=function(B){let J=y[B];return J===void 0&&(J=new Ds,y[B]=J),J.getHandSpace()};function P(B){let J=g.get(B.inputSource);J&&J.dispatchEvent({type:B.type,data:B.inputSource})}function V(){g.forEach(function(B,J){B.disconnect(J)}),g.clear(),A=null,R=null,e.setRenderTarget(m),u=null,h=null,c=null,i=null,x=null,k.stop(),n.isPresenting=!1,n.dispatchEvent({type:\"sessionend\"})}this.setFramebufferScaleFactor=function(B){r=B,n.isPresenting===!0&&console.warn(\"THREE.WebXRManager: Cannot change framebuffer scale while presenting.\")},this.setReferenceSpaceType=function(B){a=B,n.isPresenting===!0&&console.warn(\"THREE.WebXRManager: Cannot change reference space type while presenting.\")},this.getReferenceSpace=function(){return o},this.getBaseLayer=function(){return h!==null?h:u},this.getBinding=function(){return c},this.getFrame=function(){return d},this.getSession=function(){return i},this.setSession=async function(B){if(i=B,i!==null){if(m=e.getRenderTarget(),i.addEventListener(\"select\",P),i.addEventListener(\"selectstart\",P),i.addEventListener(\"selectend\",P),i.addEventListener(\"squeeze\",P),i.addEventListener(\"squeezestart\",P),i.addEventListener(\"squeezeend\",P),i.addEventListener(\"end\",V),i.addEventListener(\"inputsourceschange\",I),f.xrCompatible!==!0&&await t.makeXRCompatible(),i.renderState.layers===void 0||e.capabilities.isWebGL2===!1){let J={antialias:i.renderState.layers===void 0?f.antialias:!0,alpha:f.alpha,depth:f.depth,stencil:f.stencil,framebufferScaleFactor:r};u=new XRWebGLLayer(i,t,J),i.updateRenderState({baseLayer:u}),x=new St(u.framebufferWidth,u.framebufferHeight,{format:wt,type:Zn,encoding:e.outputEncoding})}else{let J=null,Q=null,K=null;f.depth&&(K=f.stencil?35056:33190,J=f.stencil?Bi:Wn,Q=f.stencil?Pi:hr);let ee={colorFormat:e.outputEncoding===je?35907:32856,depthFormat:K,scaleFactor:r};c=new XRWebGLBinding(i,t),h=c.createProjectionLayer(ee),i.updateRenderState({layers:[h]}),x=new St(h.textureWidth,h.textureHeight,{format:wt,type:Zn,depthTexture:new va(h.textureWidth,h.textureHeight,Q,void 0,void 0,void 0,void 0,void 0,void 0,J),stencilBuffer:f.stencil,encoding:e.outputEncoding,samples:f.antialias?4:0});let _e=e.properties.get(x);_e.__ignoreDepthValues=h.ignoreDepthValues}x.isXRRenderTarget=!0,this.setFoveation(1),o=await i.requestReferenceSpace(a),k.setContext(i),k.start(),n.isPresenting=!0,n.dispatchEvent({type:\"sessionstart\"})}};function I(B){let J=i.inputSources;for(let Q=0;Q0&&(g.alphaTest.value=p.alphaTest);let M=s.get(p).envMap;M&&(g.envMap.value=M,g.flipEnvMap.value=M.isCubeTexture&&M.isRenderTargetTexture===!1?-1:1,g.reflectivity.value=p.reflectivity,g.ior.value=p.ior,g.refractionRatio.value=p.refractionRatio),p.lightMap&&(g.lightMap.value=p.lightMap,g.lightMapIntensity.value=p.lightMapIntensity),p.aoMap&&(g.aoMap.value=p.aoMap,g.aoMapIntensity.value=p.aoMapIntensity);let _;p.map?_=p.map:p.specularMap?_=p.specularMap:p.displacementMap?_=p.displacementMap:p.normalMap?_=p.normalMap:p.bumpMap?_=p.bumpMap:p.roughnessMap?_=p.roughnessMap:p.metalnessMap?_=p.metalnessMap:p.alphaMap?_=p.alphaMap:p.emissiveMap?_=p.emissiveMap:p.clearcoatMap?_=p.clearcoatMap:p.clearcoatNormalMap?_=p.clearcoatNormalMap:p.clearcoatRoughnessMap?_=p.clearcoatRoughnessMap:p.specularIntensityMap?_=p.specularIntensityMap:p.specularColorMap?_=p.specularColorMap:p.transmissionMap?_=p.transmissionMap:p.thicknessMap?_=p.thicknessMap:p.sheenColorMap?_=p.sheenColorMap:p.sheenRoughnessMap&&(_=p.sheenRoughnessMap),_!==void 0&&(_.isWebGLRenderTarget&&(_=_.texture),_.matrixAutoUpdate===!0&&_.updateMatrix(),g.uvTransform.value.copy(_.matrix));let v;p.aoMap?v=p.aoMap:p.lightMap&&(v=p.lightMap),v!==void 0&&(v.isWebGLRenderTarget&&(v=v.texture),v.matrixAutoUpdate===!0&&v.updateMatrix(),g.uv2Transform.value.copy(v.matrix))}function i(g,p){g.diffuse.value.copy(p.color),g.opacity.value=p.opacity}function r(g,p){g.dashSize.value=p.dashSize,g.totalSize.value=p.dashSize+p.gapSize,g.scale.value=p.scale}function o(g,p,M,_){g.diffuse.value.copy(p.color),g.opacity.value=p.opacity,g.size.value=p.size*M,g.scale.value=_*.5,p.map&&(g.map.value=p.map),p.alphaMap&&(g.alphaMap.value=p.alphaMap),p.alphaTest>0&&(g.alphaTest.value=p.alphaTest);let v;p.map?v=p.map:p.alphaMap&&(v=p.alphaMap),v!==void 0&&(v.matrixAutoUpdate===!0&&v.updateMatrix(),g.uvTransform.value.copy(v.matrix))}function a(g,p){g.diffuse.value.copy(p.color),g.opacity.value=p.opacity,g.rotation.value=p.rotation,p.map&&(g.map.value=p.map),p.alphaMap&&(g.alphaMap.value=p.alphaMap),p.alphaTest>0&&(g.alphaTest.value=p.alphaTest);let M;p.map?M=p.map:p.alphaMap&&(M=p.alphaMap),M!==void 0&&(M.matrixAutoUpdate===!0&&M.updateMatrix(),g.uvTransform.value.copy(M.matrix))}function l(g,p){p.emissiveMap&&(g.emissiveMap.value=p.emissiveMap)}function c(g,p){g.specular.value.copy(p.specular),g.shininess.value=Math.max(p.shininess,1e-4),p.emissiveMap&&(g.emissiveMap.value=p.emissiveMap),p.bumpMap&&(g.bumpMap.value=p.bumpMap,g.bumpScale.value=p.bumpScale,p.side===lt&&(g.bumpScale.value*=-1)),p.normalMap&&(g.normalMap.value=p.normalMap,g.normalScale.value.copy(p.normalScale),p.side===lt&&g.normalScale.value.negate()),p.displacementMap&&(g.displacementMap.value=p.displacementMap,g.displacementScale.value=p.displacementScale,g.displacementBias.value=p.displacementBias)}function h(g,p){p.gradientMap&&(g.gradientMap.value=p.gradientMap),p.emissiveMap&&(g.emissiveMap.value=p.emissiveMap),p.bumpMap&&(g.bumpMap.value=p.bumpMap,g.bumpScale.value=p.bumpScale,p.side===lt&&(g.bumpScale.value*=-1)),p.normalMap&&(g.normalMap.value=p.normalMap,g.normalScale.value.copy(p.normalScale),p.side===lt&&g.normalScale.value.negate()),p.displacementMap&&(g.displacementMap.value=p.displacementMap,g.displacementScale.value=p.displacementScale,g.displacementBias.value=p.displacementBias)}function u(g,p){g.roughness.value=p.roughness,g.metalness.value=p.metalness,p.roughnessMap&&(g.roughnessMap.value=p.roughnessMap),p.metalnessMap&&(g.metalnessMap.value=p.metalnessMap),p.emissiveMap&&(g.emissiveMap.value=p.emissiveMap),p.bumpMap&&(g.bumpMap.value=p.bumpMap,g.bumpScale.value=p.bumpScale,p.side===lt&&(g.bumpScale.value*=-1)),p.normalMap&&(g.normalMap.value=p.normalMap,g.normalScale.value.copy(p.normalScale),p.side===lt&&g.normalScale.value.negate()),p.displacementMap&&(g.displacementMap.value=p.displacementMap,g.displacementScale.value=p.displacementScale,g.displacementBias.value=p.displacementBias),s.get(p).envMap&&(g.envMapIntensity.value=p.envMapIntensity)}function d(g,p,M){u(g,p),g.ior.value=p.ior,p.sheen>0&&(g.sheenColor.value.copy(p.sheenColor).multiplyScalar(p.sheen),g.sheenRoughness.value=p.sheenRoughness,p.sheenColorMap&&(g.sheenColorMap.value=p.sheenColorMap),p.sheenRoughnessMap&&(g.sheenRoughnessMap.value=p.sheenRoughnessMap)),p.clearcoat>0&&(g.clearcoat.value=p.clearcoat,g.clearcoatRoughness.value=p.clearcoatRoughness,p.clearcoatMap&&(g.clearcoatMap.value=p.clearcoatMap),p.clearcoatRoughnessMap&&(g.clearcoatRoughnessMap.value=p.clearcoatRoughnessMap),p.clearcoatNormalMap&&(g.clearcoatNormalScale.value.copy(p.clearcoatNormalScale),g.clearcoatNormalMap.value=p.clearcoatNormalMap,p.side===lt&&g.clearcoatNormalScale.value.negate())),p.transmission>0&&(g.transmission.value=p.transmission,g.transmissionSamplerMap.value=M.texture,g.transmissionSamplerSize.value.set(M.width,M.height),p.transmissionMap&&(g.transmissionMap.value=p.transmissionMap),g.thickness.value=p.thickness,p.thicknessMap&&(g.thicknessMap.value=p.thicknessMap),g.attenuationDistance.value=p.attenuationDistance,g.attenuationColor.value.copy(p.attenuationColor)),g.specularIntensity.value=p.specularIntensity,g.specularColor.value.copy(p.specularColor),p.specularIntensityMap&&(g.specularIntensityMap.value=p.specularIntensityMap),p.specularColorMap&&(g.specularColorMap.value=p.specularColorMap)}function f(g,p){p.matcap&&(g.matcap.value=p.matcap),p.bumpMap&&(g.bumpMap.value=p.bumpMap,g.bumpScale.value=p.bumpScale,p.side===lt&&(g.bumpScale.value*=-1)),p.normalMap&&(g.normalMap.value=p.normalMap,g.normalScale.value.copy(p.normalScale),p.side===lt&&g.normalScale.value.negate()),p.displacementMap&&(g.displacementMap.value=p.displacementMap,g.displacementScale.value=p.displacementScale,g.displacementBias.value=p.displacementBias)}function m(g,p){p.displacementMap&&(g.displacementMap.value=p.displacementMap,g.displacementScale.value=p.displacementScale,g.displacementBias.value=p.displacementBias)}function x(g,p){p.displacementMap&&(g.displacementMap.value=p.displacementMap,g.displacementScale.value=p.displacementScale,g.displacementBias.value=p.displacementBias),g.referencePosition.value.copy(p.referencePosition),g.nearDistance.value=p.nearDistance,g.farDistance.value=p.farDistance}function y(g,p){p.bumpMap&&(g.bumpMap.value=p.bumpMap,g.bumpScale.value=p.bumpScale,p.side===lt&&(g.bumpScale.value*=-1)),p.normalMap&&(g.normalMap.value=p.normalMap,g.normalScale.value.copy(p.normalScale),p.side===lt&&g.normalScale.value.negate()),p.displacementMap&&(g.displacementMap.value=p.displacementMap,g.displacementScale.value=p.displacementScale,g.displacementBias.value=p.displacementBias)}return{refreshFogUniforms:e,refreshMaterialUniforms:t}}function dx(){let s=pr(\"canvas\");return s.style.display=\"block\",s}function Je(s={}){let e=s.canvas!==void 0?s.canvas:dx(),t=s.context!==void 0?s.context:null,n=s.depth!==void 0?s.depth:!0,i=s.stencil!==void 0?s.stencil:!0,r=s.antialias!==void 0?s.antialias:!1,o=s.premultipliedAlpha!==void 0?s.premultipliedAlpha:!0,a=s.preserveDrawingBuffer!==void 0?s.preserveDrawingBuffer:!1,l=s.powerPreference!==void 0?s.powerPreference:\"default\",c=s.failIfMajorPerformanceCaveat!==void 0?s.failIfMajorPerformanceCaveat:!1,h;s.context!==void 0?h=t.getContextAttributes().alpha:h=s.alpha!==void 0?s.alpha:!1;let u=null,d=null,f=[],m=[];this.domElement=e,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=bn,this.physicallyCorrectLights=!1,this.toneMapping=vn,this.toneMappingExposure=1;let x=this,y=!1,g=0,p=0,M=null,_=-1,v=null,A=new qe,R=new qe,P=null,V=e.width,I=e.height,b=1,C=null,F=null,N=new qe(0,0,V,I),O=new qe(0,0,V,I),z=!1,k=new Nr,B=!1,J=!1,Q=null,K=new de,ee=new Z,_e=new S,Ve={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function be(){return M===null?b:1}let Y=t;function ke(E,D){for(let G=0;G0?d=m[m.length-1]:d=null,f.pop(),f.length>0?u=f[f.length-1]:u=null};function Vt(E,D,G,U){if(E.visible===!1)return;if(E.layers.test(D.layers)){if(E.isGroup)G=E.renderOrder;else if(E.isLOD)E.autoUpdate===!0&&E.update(D);else if(E.isLight)d.pushLight(E),E.castShadow&&d.pushShadow(E);else if(E.isSprite){if(!E.frustumCulled||k.intersectsSprite(E)){U&&_e.setFromMatrixPosition(E.matrixWorld).applyMatrix4(K);let Re=xe.update(E),De=E.material;De.visible&&u.push(E,Re,De,G,_e.z,null)}}else if((E.isMesh||E.isLine||E.isPoints)&&(E.isSkinnedMesh&&E.skeleton.frame!==Ne.render.frame&&(E.skeleton.update(),E.skeleton.frame=Ne.render.frame),!E.frustumCulled||k.intersectsObject(E))){U&&_e.setFromMatrixPosition(E.matrixWorld).applyMatrix4(K);let Re=xe.update(E),De=E.material;if(Array.isArray(De)){let Ie=Re.groups;for(let Xe=0,Oe=Ie.length;Xe0&&gu(X,D,G),U&&me.viewport(A.copy(U)),X.length>0&&Wr(X,D,G),Se.length>0&&Wr(Se,D,G),Re.length>0&&Wr(Re,D,G),me.buffers.depth.setTest(!0),me.buffers.depth.setMask(!0),me.buffers.color.setMask(!0),me.setPolygonOffset(!1)}function gu(E,D,G){let U=pe.isWebGL2;Q===null&&(Q=new St(1,1,{generateMipmaps:!0,type:Ee.convert(Li)!==null?Li:Zn,minFilter:Vi,samples:U&&r===!0?4:0})),x.getDrawingBufferSize(ee),U?Q.setSize(ee.x,ee.y):Q.setSize(Gs(ee.x),Gs(ee.y));let X=x.getRenderTarget();x.setRenderTarget(Q),x.clear();let Se=x.toneMapping;x.toneMapping=vn,Wr(E,D,G),x.toneMapping=Se,j.updateMultisampleRenderTarget(Q),j.updateRenderTargetMipmap(Q),x.setRenderTarget(X)}function Wr(E,D,G){let U=D.isScene===!0?D.overrideMaterial:null;for(let X=0,Se=E.length;X0&&j.useMultisampledRTT(E)===!1?X=H.get(E).__webglMultisampledFramebuffer:X=Xe,A.copy(E.viewport),R.copy(E.scissor),P=E.scissorTest}else A.copy(N).multiplyScalar(b).floor(),R.copy(O).multiplyScalar(b).floor(),P=z;if(me.bindFramebuffer(36160,X)&&pe.drawBuffers&&U&&me.drawBuffers(E,X),me.viewport(A),me.scissor(R),me.setScissorTest(P),Se){let Ie=H.get(E.texture);Y.framebufferTexture2D(36160,36064,34069+D,Ie.__webglTexture,G)}else if(Re){let Ie=H.get(E.texture),Xe=D||0;Y.framebufferTextureLayer(36160,36064,Ie.__webglTexture,G||0,Xe)}_=-1},this.readRenderTargetPixels=function(E,D,G,U,X,Se,Re){if(!(E&&E.isWebGLRenderTarget)){console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.\");return}let De=H.get(E).__webglFramebuffer;if(E.isWebGLCubeRenderTarget&&Re!==void 0&&(De=De[Re]),De){me.bindFramebuffer(36160,De);try{let Ie=E.texture,Xe=Ie.format,Oe=Ie.type;if(Xe!==wt&&Ee.convert(Xe)!==Y.getParameter(35739)){console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.\");return}let Ge=Oe===Li&&(Le.has(\"EXT_color_buffer_half_float\")||pe.isWebGL2&&Le.has(\"EXT_color_buffer_float\"));if(Oe!==Zn&&Ee.convert(Oe)!==Y.getParameter(35738)&&!(Oe===yn&&(pe.isWebGL2||Le.has(\"OES_texture_float\")||Le.has(\"WEBGL_color_buffer_float\")))&&!Ge){console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.\");return}Y.checkFramebufferStatus(36160)===36053?D>=0&&D<=E.width-U&&G>=0&&G<=E.height-X&&Y.readPixels(D,G,U,X,Ee.convert(Xe),Ee.convert(Oe),Se):console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.\")}finally{let Ie=M!==null?H.get(M).__webglFramebuffer:null;me.bindFramebuffer(36160,Ie)}}},this.copyFramebufferToTexture=function(E,D,G=0){if(D.isFramebufferTexture!==!0){console.error(\"THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.\");return}let U=Math.pow(2,-G),X=Math.floor(D.image.width*U),Se=Math.floor(D.image.height*U);j.setTexture2D(D,0),Y.copyTexSubImage2D(3553,G,0,0,E.x,E.y,X,Se),me.unbindTexture()},this.copyTextureToTexture=function(E,D,G,U=0){let X=D.image.width,Se=D.image.height,Re=Ee.convert(G.format),De=Ee.convert(G.type);j.setTexture2D(G,0),Y.pixelStorei(37440,G.flipY),Y.pixelStorei(37441,G.premultiplyAlpha),Y.pixelStorei(3317,G.unpackAlignment),D.isDataTexture?Y.texSubImage2D(3553,U,E.x,E.y,X,Se,Re,De,D.image.data):D.isCompressedTexture?Y.compressedTexSubImage2D(3553,U,E.x,E.y,D.mipmaps[0].width,D.mipmaps[0].height,Re,D.mipmaps[0].data):Y.texSubImage2D(3553,U,E.x,E.y,Re,De,D.image),U===0&&G.generateMipmaps&&Y.generateMipmap(3553),me.unbindTexture()},this.copyTextureToTexture3D=function(E,D,G,U,X=0){if(x.isWebGL1Renderer){console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.\");return}let Se=E.max.x-E.min.x+1,Re=E.max.y-E.min.y+1,De=E.max.z-E.min.z+1,Ie=Ee.convert(U.format),Xe=Ee.convert(U.type),Oe;if(U.isData3DTexture)j.setTexture3D(U,0),Oe=32879;else if(U.isDataArrayTexture)j.setTexture2DArray(U,0),Oe=35866;else{console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.\");return}Y.pixelStorei(37440,U.flipY),Y.pixelStorei(37441,U.premultiplyAlpha),Y.pixelStorei(3317,U.unpackAlignment);let Ge=Y.getParameter(3314),et=Y.getParameter(32878),Pn=Y.getParameter(3316),ni=Y.getParameter(3315),ii=Y.getParameter(32877),Wt=G.isCompressedTexture?G.mipmaps[0]:G.image;Y.pixelStorei(3314,Wt.width),Y.pixelStorei(32878,Wt.height),Y.pixelStorei(3316,E.min.x),Y.pixelStorei(3315,E.min.y),Y.pixelStorei(32877,E.min.z),G.isDataTexture||G.isData3DTexture?Y.texSubImage3D(Oe,X,D.x,D.y,D.z,Se,Re,De,Ie,Xe,Wt.data):G.isCompressedTexture?(console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.\"),Y.compressedTexSubImage3D(Oe,X,D.x,D.y,D.z,Se,Re,De,Ie,Wt.data)):Y.texSubImage3D(Oe,X,D.x,D.y,D.z,Se,Re,De,Ie,Xe,Wt),Y.pixelStorei(3314,Ge),Y.pixelStorei(32878,et),Y.pixelStorei(3316,Pn),Y.pixelStorei(3315,ni),Y.pixelStorei(32877,ii),X===0&&U.generateMipmaps&&Y.generateMipmap(Oe),me.unbindTexture()},this.initTexture=function(E){j.setTexture2D(E,0),me.unbindTexture()},this.resetState=function(){g=0,p=0,M=null,me.reset(),Te.reset()},typeof __THREE_DEVTOOLS__<\"u\"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\",{detail:this}))}Je.prototype.isWebGLRenderer=!0;var Lh=class extends Je{};Lh.prototype.isWebGL1Renderer=!0;var Ur=class{constructor(e,t=25e-5){this.name=\"\",this.color=new se(e),this.density=t}clone(){return new Ur(this.color,this.density)}toJSON(){return{type:\"FogExp2\",color:this.color.getHex(),density:this.density}}};Ur.prototype.isFogExp2=!0;var Or=class{constructor(e,t=1,n=1e3){this.name=\"\",this.color=new se(e),this.near=t,this.far=n}clone(){return new Or(this.color,this.near,this.far)}toJSON(){return{type:\"Fog\",color:this.color.getHex(),near:this.near,far:this.far}}};Or.prototype.isFog=!0;var Qs=class extends Be{constructor(){super();this.type=\"Scene\",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,typeof __THREE_DEVTOOLS__<\"u\"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.autoUpdate=e.autoUpdate,this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),t}};Qs.prototype.isScene=!0;var Kn=class{constructor(e,t){this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=ur,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=Pt()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let i=0,r=this.stride;ie.far||t.push({distance:l,point:er.clone(),uv:st.getUV(er,us,nr,ds,hc,Yo,uc,new Z),face:null,object:this})}copy(e){return super.copy(e),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}};to.prototype.isSprite=!0;function fs(s,e,t,n,i,r){bi.subVectors(s,t).addScalar(.5).multiply(n),i!==void 0?(tr.x=r*bi.x-i*bi.y,tr.y=i*bi.x+r*bi.y):tr.copy(bi),s.copy(e),s.x+=tr.x,s.y+=tr.y,s.applyMatrix4(Ph)}var ps=new S,dc=new S,Ih=class extends Be{constructor(){super();this._currentLevel=0,this.type=\"LOD\",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);let t=e.levels;for(let n=0,i=t.length;n0){let n,i;for(n=1,i=t.length;n0){ps.setFromMatrixPosition(this.matrixWorld);let i=e.ray.origin.distanceTo(ps);this.getObjectForDistance(i).raycast(e,t)}}update(e){let t=this.levels;if(t.length>1){ps.setFromMatrixPosition(e.matrixWorld),dc.setFromMatrixPosition(this.matrixWorld);let n=ps.distanceTo(dc)/e.zoom;t[0].object.visible=!0;let i,r;for(i=1,r=t.length;i=t[i].distance;i++)t[i-1].object.visible=!1,t[i].object.visible=!0;for(this._currentLevel=i-1;il)continue;d.applyMatrix4(this.matrixWorld);let P=e.ray.origin.distanceTo(d);Pe.far||t.push({distance:P,point:u.clone().applyMatrix4(this.matrixWorld),index:M,face:null,faceIndex:null,object:this})}}else{let g=Math.max(0,o.start),p=Math.min(y.count,o.start+o.count);for(let M=g,_=p-1;M<_;M+=f){if(c.fromBufferAttribute(y,M),h.fromBufferAttribute(y,M+1),Zo.distanceSqToSegment(c,h,d,u)>l)continue;d.applyMatrix4(this.matrixWorld);let A=e.ray.origin.distanceTo(d);Ae.far||t.push({distance:A,point:u.clone().applyMatrix4(this.matrixWorld),index:M,face:null,faceIndex:null,object:this})}}}else n.isGeometry&&console.error(\"THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.\")}updateMorphTargets(){let e=this.geometry;if(e.isBufferGeometry){let t=e.morphAttributes,n=Object.keys(t);if(n.length>0){let i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=i.length;r0&&console.error(\"THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.\")}}};rn.prototype.isLine=!0;var wc=new S,Sc=new S,Ct=class extends rn{constructor(e,t){super(e,t);this.type=\"LineSegments\"}computeLineDistances(){let e=this.geometry;if(e.isBufferGeometry)if(e.index===null){let t=e.attributes.position,n=[];for(let i=0,r=t.count;i0){let i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=i.length;r0&&console.error(\"THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.\")}}};Hr.prototype.isPoints=!0;function Tc(s,e,t,n,i,r,o){let a=ha.distanceSqToPoint(s);if(ai.far)return;r.push({distance:c,distanceToRay:Math.sqrt(a),point:l,index:e,face:null,object:o})}}var Dh=class extends ht{constructor(e,t,n,i,r,o,a,l,c){super(e,t,n,i,r,o,a,l,c);this.minFilter=o!==void 0?o:nt,this.magFilter=r!==void 0?r:nt,this.generateMipmaps=!1;let h=this;function u(){h.needsUpdate=!0,e.requestVideoFrameCallback(u)}\"requestVideoFrameCallback\"in e&&e.requestVideoFrameCallback(u)}clone(){return new this.constructor(this.image).copy(this)}update(){let e=this.image;\"requestVideoFrameCallback\"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}};Dh.prototype.isVideoTexture=!0;var Fh=class extends ht{constructor(e,t,n){super({width:e,height:t});this.format=n,this.magFilter=ut,this.minFilter=ut,this.generateMipmaps=!1,this.needsUpdate=!0}};Fh.prototype.isFramebufferTexture=!0;var wa=class extends ht{constructor(e,t,n,i,r,o,a,l,c,h,u,d){super(null,o,a,l,c,h,i,r,u,d);this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}};wa.prototype.isCompressedTexture=!0;var Bh=class extends ht{constructor(e,t,n,i,r,o,a,l,c){super(e,t,n,i,r,o,a,l,c);this.needsUpdate=!0}};Bh.prototype.isCanvasTexture=!0;var mr=class extends ve{constructor(e=1,t=8,n=0,i=Math.PI*2){super();this.type=\"CircleGeometry\",this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:i},t=Math.max(3,t);let r=[],o=[],a=[],l=[],c=new S,h=new Z;o.push(0,0,0),a.push(0,0,1),l.push(.5,.5);for(let u=0,d=3;u<=t;u++,d+=3){let f=n+u/t*i;c.x=e*Math.cos(f),c.y=e*Math.sin(f),o.push(c.x,c.y,c.z),a.push(0,0,1),h.x=(o[d]/e+1)/2,h.y=(o[d+1]/e+1)/2,l.push(h.x,h.y)}for(let u=1;u<=t;u++)r.push(u,u+1,0);this.setIndex(r),this.setAttribute(\"position\",new ue(o,3)),this.setAttribute(\"normal\",new ue(a,3)),this.setAttribute(\"uv\",new ue(l,2))}static fromJSON(e){return new mr(e.radius,e.segments,e.thetaStart,e.thetaLength)}},jn=class extends ve{constructor(e=1,t=1,n=1,i=8,r=1,o=!1,a=0,l=Math.PI*2){super();this.type=\"CylinderGeometry\",this.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:i,heightSegments:r,openEnded:o,thetaStart:a,thetaLength:l};let c=this;i=Math.floor(i),r=Math.floor(r);let h=[],u=[],d=[],f=[],m=0,x=[],y=n/2,g=0;p(),o===!1&&(e>0&&M(!0),t>0&&M(!1)),this.setIndex(h),this.setAttribute(\"position\",new ue(u,3)),this.setAttribute(\"normal\",new ue(d,3)),this.setAttribute(\"uv\",new ue(f,2));function p(){let _=new S,v=new S,A=0,R=(t-e)/n;for(let P=0;P<=r;P++){let V=[],I=P/r,b=I*(t-e)+e;for(let C=0;C<=i;C++){let F=C/i,N=F*l+a,O=Math.sin(N),z=Math.cos(N);v.x=b*O,v.y=-I*n+y,v.z=b*z,u.push(v.x,v.y,v.z),_.set(O,R,z).normalize(),d.push(_.x,_.y,_.z),f.push(F,1-I),V.push(m++)}x.push(V)}for(let P=0;P.9&&R<.1&&(M<.2&&(o[p+0]+=1),_<.2&&(o[p+2]+=1),v<.2&&(o[p+4]+=1))}}function d(p){r.push(p.x,p.y,p.z)}function f(p,M){let _=p*3;M.x=e[_+0],M.y=e[_+1],M.z=e[_+2]}function m(){let p=new S,M=new S,_=new S,v=new S,A=new Z,R=new Z,P=new Z;for(let V=0,I=0;V0)l=i-1;else{l=i;break}if(i=l,n[i]===o)return i/(r-1);let h=n[i],d=n[i+1]-h,f=(o-h)/d;return(i+f)/(r-1)}getTangent(e,t){let i=e-1e-4,r=e+1e-4;i<0&&(i=0),r>1&&(r=1);let o=this.getPoint(i),a=this.getPoint(r),l=t||(o.isVector2?new Z:new S);return l.copy(a).sub(o).normalize(),l}getTangentAt(e,t){let n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t){let n=new S,i=[],r=[],o=[],a=new S,l=new de;for(let f=0;f<=e;f++){let m=f/e;i[f]=this.getTangentAt(m,new S)}r[0]=new S,o[0]=new S;let c=Number.MAX_VALUE,h=Math.abs(i[0].x),u=Math.abs(i[0].y),d=Math.abs(i[0].z);h<=c&&(c=h,n.set(1,0,0)),u<=c&&(c=u,n.set(0,1,0)),d<=c&&n.set(0,0,1),a.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],a),o[0].crossVectors(i[0],r[0]);for(let f=1;f<=e;f++){if(r[f]=r[f-1].clone(),o[f]=o[f-1].clone(),a.crossVectors(i[f-1],i[f]),a.length()>Number.EPSILON){a.normalize();let m=Math.acos(xt(i[f-1].dot(i[f]),-1,1));r[f].applyMatrix4(l.makeRotationAxis(a,m))}o[f].crossVectors(i[f],r[f])}if(t===!0){let f=Math.acos(xt(r[0].dot(r[e]),-1,1));f/=e,i[0].dot(a.crossVectors(r[0],r[e]))>0&&(f=-f);for(let m=1;m<=e;m++)r[m].applyMatrix4(l.makeRotationAxis(i[m],f*m)),o[m].crossVectors(i[m],r[m])}return{tangents:i,normals:r,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.5,type:\"Curve\",generator:\"Curve.toJSON\"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},Gr=class extends It{constructor(e=0,t=0,n=1,i=1,r=0,o=Math.PI*2,a=!1,l=0){super();this.type=\"EllipseCurve\",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=i,this.aStartAngle=r,this.aEndAngle=o,this.aClockwise=a,this.aRotation=l}getPoint(e,t){let n=t||new Z,i=Math.PI*2,r=this.aEndAngle-this.aStartAngle,o=Math.abs(r)i;)r-=i;r0?0:(Math.floor(Math.abs(a)/r)+1)*r:l===0&&a===r-1&&(a=r-2,l=1);let c,h;this.closed||a>0?c=i[(a-1)%r]:(bs.subVectors(i[0],i[1]).add(i[0]),c=bs);let u=i[a%r],d=i[(a+1)%r];if(this.closed||a+2i.length-2?i.length-1:o+1],u=i[o>i.length-3?i.length-1:o+2];return n.set(Ac(a,l.x,c.x,h.x,u.x),Ac(a,l.y,c.y,h.y,u.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t=n){let o=i[r]-n,a=this.curves[r],l=a.getLength(),c=l===0?0:1-o/l;return a.getPointAt(c,t)}r++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let n=0,i=this.curves.length;n1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t0){let u=c.getPoint(0);u.equals(this.currentPoint)||this.lineTo(u.x,u.y)}this.curves.push(c);let h=c.getPoint(1);return this.currentPoint.copy(h),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}},Yt=class extends yr{constructor(e){super(e);this.uuid=Pt(),this.type=\"Shape\",this.holes=[]}getPointsHoles(e){let t=[];for(let n=0,i=this.holes.length;n80*t){a=c=s[0],l=h=s[1];for(let m=t;mc&&(c=u),d>h&&(h=d);f=Math.max(c-a,h-l),f=f!==0?1/f:0}return _r(r,o,t,a,l,f),o}};function Uh(s,e,t,n,i){let r,o;if(i===Ux(s,e,t,n)>0)for(r=e;r=e;r-=n)o=Cc(r,s[r],s[r+1],o);return o&&co(o,o.next)&&(Mr(o),o=o.next),o}function En(s,e){if(!s)return s;e||(e=s);let t=s,n;do if(n=!1,!t.steiner&&(co(t,t.next)||Qe(t.prev,t,t.next)===0)){if(Mr(t),t=e=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==e);return e}function _r(s,e,t,n,i,r,o){if(!s)return;!o&&r&&Ix(s,n,i,r);let a=s,l,c;for(;s.prev!==s.next;){if(l=s.prev,c=s.next,r?Sx(s,n,i,r):wx(s)){e.push(l.i/t),e.push(s.i/t),e.push(c.i/t),Mr(s),s=c.next,a=c.next;continue}if(s=c,s===a){o?o===1?(s=Ex(En(s),e,t),_r(s,e,t,n,i,r,2)):o===2&&Tx(s,e,t,n,i,r):_r(En(s),e,t,n,i,r,1);break}}}function wx(s){let e=s.prev,t=s,n=s.next;if(Qe(e,t,n)>=0)return!1;let i=s.next.next;for(;i!==s.prev;){if(Ci(e.x,e.y,t.x,t.y,n.x,n.y,i.x,i.y)&&Qe(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function Sx(s,e,t,n){let i=s.prev,r=s,o=s.next;if(Qe(i,r,o)>=0)return!1;let a=i.xr.x?i.x>o.x?i.x:o.x:r.x>o.x?r.x:o.x,h=i.y>r.y?i.y>o.y?i.y:o.y:r.y>o.y?r.y:o.y,u=ua(a,l,e,t,n),d=ua(c,h,e,t,n),f=s.prevZ,m=s.nextZ;for(;f&&f.z>=u&&m&&m.z<=d;){if(f!==s.prev&&f!==s.next&&Ci(i.x,i.y,r.x,r.y,o.x,o.y,f.x,f.y)&&Qe(f.prev,f,f.next)>=0||(f=f.prevZ,m!==s.prev&&m!==s.next&&Ci(i.x,i.y,r.x,r.y,o.x,o.y,m.x,m.y)&&Qe(m.prev,m,m.next)>=0))return!1;m=m.nextZ}for(;f&&f.z>=u;){if(f!==s.prev&&f!==s.next&&Ci(i.x,i.y,r.x,r.y,o.x,o.y,f.x,f.y)&&Qe(f.prev,f,f.next)>=0)return!1;f=f.prevZ}for(;m&&m.z<=d;){if(m!==s.prev&&m!==s.next&&Ci(i.x,i.y,r.x,r.y,o.x,o.y,m.x,m.y)&&Qe(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function Ex(s,e,t){let n=s;do{let i=n.prev,r=n.next.next;!co(i,r)&&Oh(i,n,n.next,r)&&vr(i,r)&&vr(r,i)&&(e.push(i.i/t),e.push(n.i/t),e.push(r.i/t),Mr(n),Mr(n.next),n=s=r),n=n.next}while(n!==s);return En(n)}function Tx(s,e,t,n,i,r){let o=s;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&Bx(o,a)){let l=Hh(o,a);o=En(o,o.next),l=En(l,l.next),_r(o,e,t,n,i,r),_r(l,e,t,n,i,r);return}a=a.next}o=o.next}while(o!==s)}function Ax(s,e,t,n){let i=[],r,o,a,l,c;for(r=0,o=e.length;r=t.next.y&&t.next.y!==t.y){let d=t.x+(i-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(d<=n&&d>r){if(r=d,d===n){if(i===t.y)return t;if(i===t.next.y)return t.next}o=t.x=t.x&&t.x>=l&&n!==t.x&&Ci(io.x||t.x===o.x&&Px(o,t)))&&(o=t,h=u)),t=t.next;while(t!==a);return o}function Px(s,e){return Qe(s.prev,s,e.prev)<0&&Qe(e.next,s,s.next)<0}function Ix(s,e,t,n){let i=s;do i.z===null&&(i.z=ua(i.x,i.y,e,t,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==s);i.prevZ.nextZ=null,i.prevZ=null,Dx(i)}function Dx(s){let e,t,n,i,r,o,a,l,c=1;do{for(t=s,s=null,r=null,o=0;t;){for(o++,n=t,a=0,e=0;e0||l>0&&n;)a!==0&&(l===0||!n||t.z<=n.z)?(i=t,t=t.nextZ,a--):(i=n,n=n.nextZ,l--),r?r.nextZ=i:s=i,i.prevZ=r,r=i;t=n}r.nextZ=null,c*=2}while(o>1);return s}function ua(s,e,t,n,i){return s=32767*(s-t)*i,e=32767*(e-n)*i,s=(s|s<<8)&16711935,s=(s|s<<4)&252645135,s=(s|s<<2)&858993459,s=(s|s<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,s|e<<1}function Fx(s){let e=s,t=s;do(e.x=0&&(s-o)*(n-a)-(t-o)*(e-a)>=0&&(t-o)*(r-a)-(i-o)*(n-a)>=0}function Bx(s,e){return s.next.i!==e.i&&s.prev.i!==e.i&&!Nx(s,e)&&(vr(s,e)&&vr(e,s)&&zx(s,e)&&(Qe(s.prev,s,e.prev)||Qe(s,e.prev,e))||co(s,e)&&Qe(s.prev,s,s.next)>0&&Qe(e.prev,e,e.next)>0)}function Qe(s,e,t){return(e.y-s.y)*(t.x-e.x)-(e.x-s.x)*(t.y-e.y)}function co(s,e){return s.x===e.x&&s.y===e.y}function Oh(s,e,t,n){let i=Ss(Qe(s,e,t)),r=Ss(Qe(s,e,n)),o=Ss(Qe(t,n,s)),a=Ss(Qe(t,n,e));return!!(i!==r&&o!==a||i===0&&ws(s,t,e)||r===0&&ws(s,n,e)||o===0&&ws(t,s,n)||a===0&&ws(t,e,n))}function ws(s,e,t){return e.x<=Math.max(s.x,t.x)&&e.x>=Math.min(s.x,t.x)&&e.y<=Math.max(s.y,t.y)&&e.y>=Math.min(s.y,t.y)}function Ss(s){return s>0?1:s<0?-1:0}function Nx(s,e){let t=s;do{if(t.i!==s.i&&t.next.i!==s.i&&t.i!==e.i&&t.next.i!==e.i&&Oh(t,t.next,s,e))return!0;t=t.next}while(t!==s);return!1}function vr(s,e){return Qe(s.prev,s,s.next)<0?Qe(s,e,s.next)>=0&&Qe(s,s.prev,e)>=0:Qe(s,e,s.prev)<0||Qe(s,s.next,e)<0}function zx(s,e){let t=s,n=!1,i=(s.x+e.x)/2,r=(s.y+e.y)/2;do t.y>r!=t.next.y>r&&t.next.y!==t.y&&i<(t.next.x-t.x)*(r-t.y)/(t.next.y-t.y)+t.x&&(n=!n),t=t.next;while(t!==s);return n}function Hh(s,e){let t=new da(s.i,s.x,s.y),n=new da(e.i,e.x,e.y),i=s.next,r=e.prev;return s.next=e,e.prev=s,t.next=i,i.prev=t,n.next=t,t.prev=n,r.next=n,n.prev=r,n}function Cc(s,e,t,n){let i=new da(s,e,t);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function Mr(s){s.next.prev=s.prev,s.prev.next=s.next,s.prevZ&&(s.prevZ.nextZ=s.nextZ),s.nextZ&&(s.nextZ.prevZ=s.prevZ)}function da(s,e,t){this.i=s,this.x=e,this.y=t,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Ux(s,e,t,n){let i=0;for(let r=e,o=t-n;r2&&s[e-1].equals(s[0])&&s.pop()}function Lc(s,e){for(let t=0;tNumber.EPSILON){let $=Math.sqrt(w),ie=Math.sqrt($e*$e+T*T),ce=j.x-Pe/$,Me=j.y+xe/$,q=ne.x-T/ie,Ee=ne.y+$e/ie,Te=((q-ce)*T-(Ee-Me)*$e)/(xe*T-Pe*$e);fe=ce+xe*Te-H.x,oe=Me+Pe*Te-H.y;let ye=fe*fe+oe*oe;if(ye<=2)return new Z(fe,oe);we=Math.sqrt(ye/2)}else{let $=!1;xe>Number.EPSILON?$e>Number.EPSILON&&($=!0):xe<-Number.EPSILON?$e<-Number.EPSILON&&($=!0):Math.sign(Pe)===Math.sign(T)&&($=!0),$?(fe=-Pe,oe=xe,we=Math.sqrt(w)):(fe=xe,oe=Pe,we=Math.sqrt(w/2))}return new Z(fe/we,oe/we)}let J=[];for(let H=0,j=N.length,ne=j-1,fe=H+1;H=0;H--){let j=H/y,ne=f*Math.cos(j*Math.PI/2),fe=m*Math.sin(j*Math.PI/2)+x;for(let oe=0,we=N.length;oe=0;){let fe=ne,oe=ne-1;oe<0&&(oe=H.length-1);for(let we=0,xe=h+y*2;we0)&&f.push(M,_,A),(g!==n-1||l0!=e>0&&this.version++,this._sheen=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:\"\",PHYSICAL:\"\"},this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.ior=e.ior,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}};Da.prototype.isMeshPhysicalMaterial=!0;var Fa=class extends ot{constructor(e){super();this.type=\"MeshPhongMaterial\",this.color=new se(16777215),this.specular=new se(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new se(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ki,this.normalScale=new Z(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=ks,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=\"round\",this.wireframeLinejoin=\"round\",this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this}};Fa.prototype.isMeshPhongMaterial=!0;var Ba=class extends ot{constructor(e){super();this.defines={TOON:\"\"},this.type=\"MeshToonMaterial\",this.color=new se(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new se(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ki,this.normalScale=new Z(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=\"round\",this.wireframeLinejoin=\"round\",this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this}};Ba.prototype.isMeshToonMaterial=!0;var Na=class extends ot{constructor(e){super();this.type=\"MeshNormalMaterial\",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ki,this.normalScale=new Z(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}};Na.prototype.isMeshNormalMaterial=!0;var za=class extends ot{constructor(e){super();this.type=\"MeshLambertMaterial\",this.color=new se(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new se(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=ks,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=\"round\",this.wireframeLinejoin=\"round\",this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this}};za.prototype.isMeshLambertMaterial=!0;var Ua=class extends ot{constructor(e){super();this.defines={MATCAP:\"\"},this.type=\"MeshMatcapMaterial\",this.color=new se(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ki,this.normalScale=new Z(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:\"\"},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this}};Ua.prototype.isMeshMatcapMaterial=!0;var Oa=class extends mt{constructor(e){super();this.type=\"LineDashedMaterial\",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}};Oa.prototype.isLineDashedMaterial=!0;var Vx={ShadowMaterial:Pa,SpriteMaterial:eo,RawShaderMaterial:Ia,ShaderMaterial:Bt,PointsMaterial:Qn,MeshPhysicalMaterial:Da,MeshStandardMaterial:ho,MeshPhongMaterial:Fa,MeshToonMaterial:Ba,MeshNormalMaterial:Na,MeshLambertMaterial:za,MeshDepthMaterial:js,MeshDistanceMaterial:Ks,MeshBasicMaterial:ln,MeshMatcapMaterial:Ua,LineDashedMaterial:Oa,LineBasicMaterial:mt,Material:ot};ot.fromType=function(s){return new Vx[s]};var Ke={arraySlice:function(s,e,t){return Ke.isTypedArray(s)?new s.constructor(s.subarray(e,t!==void 0?t:s.length)):s.slice(e,t)},convertArray:function(s,e,t){return!s||!t&&s.constructor===e?s:typeof e.BYTES_PER_ELEMENT==\"number\"?new e(s):Array.prototype.slice.call(s)},isTypedArray:function(s){return ArrayBuffer.isView(s)&&!(s instanceof DataView)},getKeyframeOrder:function(s){function e(i,r){return s[i]-s[r]}let t=s.length,n=new Array(t);for(let i=0;i!==t;++i)n[i]=i;return n.sort(e),n},sortedArray:function(s,e,t){let n=s.length,i=new s.constructor(n);for(let r=0,o=0;o!==n;++r){let a=t[r]*e;for(let l=0;l!==e;++l)i[o++]=s[a+l]}return i},flattenJSON:function(s,e,t,n){let i=1,r=s[0];for(;r!==void 0&&r[n]===void 0;)r=s[i++];if(r===void 0)return;let o=r[n];if(o!==void 0)if(Array.isArray(o))do o=r[n],o!==void 0&&(e.push(r.time),t.push.apply(t,o)),r=s[i++];while(r!==void 0);else if(o.toArray!==void 0)do o=r[n],o!==void 0&&(e.push(r.time),o.toArray(t,t.length)),r=s[i++];while(r!==void 0);else do o=r[n],o!==void 0&&(e.push(r.time),t.push(o)),r=s[i++];while(r!==void 0)},subclip:function(s,e,t,n,i=30){let r=s.clone();r.name=e;let o=[];for(let l=0;l=n)){u.push(c.times[f]);for(let x=0;xr.tracks[l].times[0]&&(a=r.tracks[l].times[0]);for(let l=0;l=a.times[m]){let g=m*u+h,p=g+u-h;x=Ke.arraySlice(a.values,g,p)}else{let g=a.createInterpolant(),p=h,M=u-h;g.evaluate(r),x=Ke.arraySlice(g.resultBuffer,p,M)}l===\"quaternion\"&&new yt().fromArray(x).normalize().conjugate().toArray(x);let y=c.times.length;for(let g=0;g=r)){let a=t[1];e=r)break t}o=n,n=0;break n}break e}for(;n>>1;et;)--o;if(++o,r!==0||o!==i){r>=o&&(o=Math.max(o,1),r=o-1);let a=this.getValueSize();this.times=Ke.arraySlice(n,r,o),this.values=Ke.arraySlice(this.values,r*a,o*a)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error(\"THREE.KeyframeTrack: Invalid value size in track.\",this),e=!1);let n=this.times,i=this.values,r=n.length;r===0&&(console.error(\"THREE.KeyframeTrack: Track is empty.\",this),e=!1);let o=null;for(let a=0;a!==r;a++){let l=n[a];if(typeof l==\"number\"&&isNaN(l)){console.error(\"THREE.KeyframeTrack: Time is not a valid number.\",this,a,l),e=!1;break}if(o!==null&&o>l){console.error(\"THREE.KeyframeTrack: Out of order keys.\",this,a,l,o),e=!1;break}o=l}if(i!==void 0&&Ke.isTypedArray(i))for(let a=0,l=i.length;a!==l;++a){let c=i[a];if(isNaN(c)){console.error(\"THREE.KeyframeTrack: Value is not a valid number.\",this,a,c),e=!1;break}}return e}optimize(){let e=Ke.arraySlice(this.times),t=Ke.arraySlice(this.values),n=this.getValueSize(),i=this.getInterpolation()===Mo,r=e.length-1,o=1;for(let a=1;a0){e[o]=e[r];for(let a=r*n,l=o*n,c=0;c!==n;++c)t[l+c]=t[a+c];++o}return o!==e.length?(this.times=Ke.arraySlice(e,0,o),this.values=Ke.arraySlice(t,0,o*n)):(this.times=e,this.values=t),this}clone(){let e=Ke.arraySlice(this.times,0),t=Ke.arraySlice(this.values,0),n=this.constructor,i=new n(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}};Gt.prototype.TimeBufferType=Float32Array;Gt.prototype.ValueBufferType=Float32Array;Gt.prototype.DefaultInterpolation=Os;var ei=class extends Gt{};ei.prototype.ValueTypeName=\"bool\";ei.prototype.ValueBufferType=Array;ei.prototype.DefaultInterpolation=Us;ei.prototype.InterpolantFactoryMethodLinear=void 0;ei.prototype.InterpolantFactoryMethodSmooth=void 0;var Ga=class extends Gt{};Ga.prototype.ValueTypeName=\"color\";var Rr=class extends Gt{};Rr.prototype.ValueTypeName=\"number\";var kh=class extends an{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){let r=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=(n-t)/(i-t),c=e*a;for(let h=c+a;c!==h;c+=4)yt.slerpFlat(r,0,o,c-a,o,c,l);return r}},Ji=class extends Gt{InterpolantFactoryMethodLinear(e){return new kh(this.times,this.values,this.getValueSize(),e)}};Ji.prototype.ValueTypeName=\"quaternion\";Ji.prototype.DefaultInterpolation=Os;Ji.prototype.InterpolantFactoryMethodSmooth=void 0;var ti=class extends Gt{};ti.prototype.ValueTypeName=\"string\";ti.prototype.ValueBufferType=Array;ti.prototype.DefaultInterpolation=Us;ti.prototype.InterpolantFactoryMethodLinear=void 0;ti.prototype.InterpolantFactoryMethodSmooth=void 0;var Lr=class extends Gt{};Lr.prototype.ValueTypeName=\"vector\";var Pr=class{constructor(e,t=-1,n,i=ga){this.name=e,this.tracks=n,this.duration=t,this.blendMode=i,this.uuid=Pt(),this.duration<0&&this.resetDuration()}static parse(e){let t=[],n=e.tracks,i=1/(e.fps||1);for(let o=0,a=n.length;o!==a;++o)t.push(Wx(n[o]).scale(i));let r=new this(e.name,e.duration,t,e.blendMode);return r.uuid=e.uuid,r}static toJSON(e){let t=[],n=e.tracks,i={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let r=0,o=n.length;r!==o;++r)t.push(Gt.toJSON(n[r]));return i}static CreateFromMorphTargetSequence(e,t,n,i){let r=t.length,o=[];for(let a=0;a1){let u=h[1],d=i[u];d||(i[u]=d=[]),d.push(c)}}let o=[];for(let a in i)o.push(this.CreateFromMorphTargetSequence(a,i[a],t,n));return o}static parseAnimation(e,t){if(!e)return console.error(\"THREE.AnimationClip: No animation in JSONLoader data.\"),null;let n=function(u,d,f,m,x){if(f.length!==0){let y=[],g=[];Ke.flattenJSON(f,y,g,m),y.length!==0&&x.push(new u(d,y,g))}},i=[],r=e.name||\"default\",o=e.fps||30,a=e.blendMode,l=e.length||-1,c=e.hierarchy||[];for(let u=0;u{t&&t(r),this.manager.itemEnd(e)},0),r;if(nn[e]!==void 0){nn[e].push({onLoad:t,onProgress:n,onError:i});return}nn[e]=[],nn[e].push({onLoad:t,onProgress:n,onError:i});let o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?\"include\":\"same-origin\"}),a=this.mimeType,l=this.responseType;fetch(o).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn(\"THREE.FileLoader: HTTP Status 0 received.\"),typeof ReadableStream>\"u\"||c.body===void 0||c.body.getReader===void 0)return c;let h=nn[e],u=c.body.getReader(),d=c.headers.get(\"Content-Length\"),f=d?parseInt(d):0,m=f!==0,x=0,y=new ReadableStream({start(g){p();function p(){u.read().then(({done:M,value:_})=>{if(M)g.close();else{x+=_.byteLength;let v=new ProgressEvent(\"progress\",{lengthComputable:m,loaded:x,total:f});for(let A=0,R=h.length;A{switch(l){case\"arraybuffer\":return c.arrayBuffer();case\"blob\":return c.blob();case\"document\":return c.text().then(h=>new DOMParser().parseFromString(h,a));case\"json\":return c.json();default:if(a===void 0)return c.text();{let u=/charset=\"?([^;\"\\s]*)\"?/i.exec(a),d=u&&u[1]?u[1].toLowerCase():void 0,f=new TextDecoder(d);return c.arrayBuffer().then(m=>f.decode(m))}}}).then(c=>{Gi.add(e,c);let h=nn[e];delete nn[e];for(let u=0,d=h.length;u{let h=nn[e];if(h===void 0)throw this.manager.itemError(e),c;delete nn[e];for(let u=0,d=h.length;u{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}},Xx=class extends Tt{constructor(e){super(e)}load(e,t,n,i){let r=this,o=new $t(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(a){try{t(r.parse(JSON.parse(a)))}catch(l){i?i(l):console.error(l),r.manager.itemError(e)}},n,i)}parse(e){let t=[];for(let n=0;n0:i.vertexColors=e.vertexColors),e.uniforms!==void 0)for(let r in e.uniforms){let o=e.uniforms[r];switch(i.uniforms[r]={},o.type){case\"t\":i.uniforms[r].value=n(o.value);break;case\"c\":i.uniforms[r].value=new se().setHex(o.value);break;case\"v2\":i.uniforms[r].value=new Z().fromArray(o.value);break;case\"v3\":i.uniforms[r].value=new S().fromArray(o.value);break;case\"v4\":i.uniforms[r].value=new qe().fromArray(o.value);break;case\"m3\":i.uniforms[r].value=new dt().fromArray(o.value);break;case\"m4\":i.uniforms[r].value=new de().fromArray(o.value);break;default:i.uniforms[r].value=o.value}}if(e.defines!==void 0&&(i.defines=e.defines),e.vertexShader!==void 0&&(i.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(i.fragmentShader=e.fragmentShader),e.extensions!==void 0)for(let r in e.extensions)i.extensions[r]=e.extensions[r];if(e.shading!==void 0&&(i.flatShading=e.shading===1),e.size!==void 0&&(i.size=e.size),e.sizeAttenuation!==void 0&&(i.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(i.map=n(e.map)),e.matcap!==void 0&&(i.matcap=n(e.matcap)),e.alphaMap!==void 0&&(i.alphaMap=n(e.alphaMap)),e.bumpMap!==void 0&&(i.bumpMap=n(e.bumpMap)),e.bumpScale!==void 0&&(i.bumpScale=e.bumpScale),e.normalMap!==void 0&&(i.normalMap=n(e.normalMap)),e.normalMapType!==void 0&&(i.normalMapType=e.normalMapType),e.normalScale!==void 0){let r=e.normalScale;Array.isArray(r)===!1&&(r=[r,r]),i.normalScale=new Z().fromArray(r)}return e.displacementMap!==void 0&&(i.displacementMap=n(e.displacementMap)),e.displacementScale!==void 0&&(i.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(i.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(i.roughnessMap=n(e.roughnessMap)),e.metalnessMap!==void 0&&(i.metalnessMap=n(e.metalnessMap)),e.emissiveMap!==void 0&&(i.emissiveMap=n(e.emissiveMap)),e.emissiveIntensity!==void 0&&(i.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(i.specularMap=n(e.specularMap)),e.specularIntensityMap!==void 0&&(i.specularIntensityMap=n(e.specularIntensityMap)),e.specularColorMap!==void 0&&(i.specularColorMap=n(e.specularColorMap)),e.envMap!==void 0&&(i.envMap=n(e.envMap)),e.envMapIntensity!==void 0&&(i.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(i.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(i.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(i.lightMap=n(e.lightMap)),e.lightMapIntensity!==void 0&&(i.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(i.aoMap=n(e.aoMap)),e.aoMapIntensity!==void 0&&(i.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(i.gradientMap=n(e.gradientMap)),e.clearcoatMap!==void 0&&(i.clearcoatMap=n(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(i.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(i.clearcoatNormalMap=n(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(i.clearcoatNormalScale=new Z().fromArray(e.clearcoatNormalScale)),e.transmissionMap!==void 0&&(i.transmissionMap=n(e.transmissionMap)),e.thicknessMap!==void 0&&(i.thicknessMap=n(e.thicknessMap)),e.sheenColorMap!==void 0&&(i.sheenColorMap=n(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(i.sheenRoughnessMap=n(e.sheenRoughnessMap)),i}setTextures(e){return this.textures=e,this}},Vs=class{static decodeText(e){if(typeof TextDecoder<\"u\")return new TextDecoder().decode(e);let t=\"\";for(let n=0,i=e.length;n0){let l=new Va(t);r=new Ir(l),r.setCrossOrigin(this.crossOrigin);for(let c=0,h=e.length;c0){i=new Ir(this.manager),i.setCrossOrigin(this.crossOrigin);for(let o=0,a=e.length;o\"u\"&&console.warn(\"THREE.ImageBitmapLoader: createImageBitmap() not supported.\"),typeof fetch>\"u\"&&console.warn(\"THREE.ImageBitmapLoader: fetch() not supported.\"),this.options={premultiplyAlpha:\"none\"}}setOptions(e){return this.options=e,this}load(e,t,n,i){e===void 0&&(e=\"\"),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let r=this,o=Gi.get(e);if(o!==void 0)return r.manager.itemStart(e),setTimeout(function(){t&&t(o),r.manager.itemEnd(e)},0),o;let a={};a.credentials=this.crossOrigin===\"anonymous\"?\"same-origin\":\"include\",a.headers=this.requestHeader,fetch(e,a).then(function(l){return l.blob()}).then(function(l){return createImageBitmap(l,Object.assign(r.options,{colorSpaceConversion:\"none\"}))}).then(function(l){Gi.add(e,l),t&&t(l),r.manager.itemEnd(e)}).catch(function(l){i&&i(l),r.manager.itemError(e),r.manager.itemEnd(e)}),r.manager.itemStart(e)}};Zh.prototype.isImageBitmapLoader=!0;var Es,$h={getContext:function(){return Es===void 0&&(Es=new(window.AudioContext||window.webkitAudioContext)),Es},setContext:function(s){Es=s}},jh=class extends Tt{constructor(e){super(e)}load(e,t,n,i){let r=this,o=new $t(this.manager);o.setResponseType(\"arraybuffer\"),o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(a){try{let l=a.slice(0);$h.getContext().decodeAudioData(l,function(h){t(h)})}catch(l){i?i(l):console.error(l),r.manager.itemError(e)}},n,i)}},Kh=class extends kr{constructor(e,t,n=1){super(void 0,n);let i=new se().set(e),r=new se().set(t),o=new S(i.r,i.g,i.b),a=new S(r.r,r.g,r.b),l=Math.sqrt(Math.PI),c=l*Math.sqrt(.75);this.sh.coefficients[0].copy(o).add(a).multiplyScalar(l),this.sh.coefficients[1].copy(o).sub(a).multiplyScalar(c)}};Kh.prototype.isHemisphereLightProbe=!0;var Qh=class extends kr{constructor(e,t=1){super(void 0,t);let n=new se().set(e);this.sh.coefficients[0].set(n.r,n.g,n.b).multiplyScalar(2*Math.sqrt(Math.PI))}};Qh.prototype.isAmbientLightProbe=!0;var Oc=new de,Hc=new de,Bn=new de,$x=class{constructor(){this.type=\"StereoCamera\",this.aspect=1,this.eyeSep=.064,this.cameraL=new pt,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new pt,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){let t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,Bn.copy(e.projectionMatrix);let i=t.eyeSep/2,r=i*t.near/t.focus,o=t.near*Math.tan(qn*t.fov*.5)/t.zoom,a,l;Hc.elements[12]=-i,Oc.elements[12]=i,a=-o*t.aspect+r,l=o*t.aspect+r,Bn.elements[0]=2*t.near/(l-a),Bn.elements[8]=(l+a)/(l-a),this.cameraL.projectionMatrix.copy(Bn),a=-o*t.aspect-r,l=o*t.aspect-r,Bn.elements[0]=2*t.near/(l-a),Bn.elements[8]=(l+a)/(l-a),this.cameraR.projectionMatrix.copy(Bn)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(Hc),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(Oc)}},eu=class{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=Gc(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){let t=Gc();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}};function Gc(){return(typeof performance>\"u\"?Date:performance).now()}var Nn=new S,Vc=new yt,jx=new S,zn=new S,Kx=class extends Be{constructor(){super();this.type=\"AudioListener\",this.context=$h.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new eu}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);let t=this.context.listener,n=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(Nn,Vc,jx),zn.set(0,0,-1).applyQuaternion(Vc),t.positionX){let i=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(Nn.x,i),t.positionY.linearRampToValueAtTime(Nn.y,i),t.positionZ.linearRampToValueAtTime(Nn.z,i),t.forwardX.linearRampToValueAtTime(zn.x,i),t.forwardY.linearRampToValueAtTime(zn.y,i),t.forwardZ.linearRampToValueAtTime(zn.z,i),t.upX.linearRampToValueAtTime(n.x,i),t.upY.linearRampToValueAtTime(n.y,i),t.upZ.linearRampToValueAtTime(n.z,i)}else t.setPosition(Nn.x,Nn.y,Nn.z),t.setOrientation(zn.x,zn.y,zn.z,n.x,n.y,n.z)}},el=class extends Be{constructor(e){super();this.type=\"Audio\",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType=\"empty\",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType=\"audioNode\",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType=\"mediaNode\",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType=\"mediaStreamNode\",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType=\"buffer\",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){console.warn(\"THREE.Audio: Audio is already playing.\");return}if(this.hasPlaybackControl===!1){console.warn(\"THREE.Audio: this Audio has no playback control.\");return}this._startedAt=this.context.currentTime+e;let t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){console.warn(\"THREE.Audio: this Audio has no playback control.\");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(){if(this.hasPlaybackControl===!1){console.warn(\"THREE.Audio: this Audio has no playback control.\");return}return this._progress=0,this.source.stop(),this.source.onended=null,this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(n,i,this._addIndex*t,1,t);for(let l=t,c=t+t;l!==c;++l)if(n[l]!==n[l+t]){a.setValue(n,i);break}}saveOriginalState(){let e=this.binding,t=this.buffer,n=this.valueSize,i=n*this._origIndex;e.getValue(t,i);for(let r=n,o=i;r!==o;++r)t[r]=t[i+r%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n=.5)for(let o=0;o!==r;++o)e[t+o]=e[n+o]}_slerp(e,t,n,i){yt.slerpFlat(e,t,e,t,e,n,i)}_slerpAdditive(e,t,n,i,r){let o=this._workIndex*r;yt.multiplyQuaternionsFlat(e,o,e,t,e,n),yt.slerpFlat(e,t,e,t,e,o,i)}_lerp(e,t,n,i,r){let o=1-i;for(let a=0;a!==r;++a){let l=t+a;e[l]=e[l]*o+e[n+a]*i}}_lerpAdditive(e,t,n,i,r){for(let o=0;o!==r;++o){let a=t+o;e[a]=e[a]+e[n+o]*i}}},tl=\"\\\\[\\\\]\\\\.:\\\\/\",ty=new RegExp(\"[\"+tl+\"]\",\"g\"),nl=\"[^\"+tl+\"]\",ny=\"[^\"+tl.replace(\"\\\\.\",\"\")+\"]\",iy=/((?:WC+[\\/:])*)/.source.replace(\"WC\",nl),ry=/(WCOD+)?/.source.replace(\"WCOD\",ny),sy=/(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace(\"WC\",nl),oy=/\\.(WC+)(?:\\[(.+)\\])?/.source.replace(\"WC\",nl),ay=new RegExp(\"^\"+iy+ry+sy+oy+\"$\"),ly=[\"material\",\"materials\",\"bones\"],iu=class{constructor(e,t,n){let i=n||He.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,i)}getValue(e,t){this.bind();let n=this._targetGroup.nCachedObjects_,i=this._bindings[n];i!==void 0&&i.getValue(e,t)}setValue(e,t){let n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,r=n.length;i!==r;++i)n[i].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}},He=class{constructor(e,t,n){this.path=t,this.parsedPath=n||He.parseTrackName(t),this.node=He.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new He.Composite(e,t,n):new He(e,t,n)}static sanitizeNodeName(e){return e.replace(/\\s/g,\"_\").replace(ty,\"\")}static parseTrackName(e){let t=ay.exec(e);if(t===null)throw new Error(\"PropertyBinding: Cannot parse trackName: \"+e);let n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},i=n.nodeName&&n.nodeName.lastIndexOf(\".\");if(i!==void 0&&i!==-1){let r=n.nodeName.substring(i+1);ly.indexOf(r)!==-1&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=r)}if(n.propertyName===null||n.propertyName.length===0)throw new Error(\"PropertyBinding: can not parse propertyName from trackName: \"+e);return n}static findNode(e,t){if(t===void 0||t===\"\"||t===\".\"||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){let n=function(r){for(let o=0;o=r){let u=r++,d=e[u];t[d.uuid]=h,e[h]=d,t[c]=u,e[u]=l;for(let f=0,m=i;f!==m;++f){let x=n[f],y=x[u],g=x[h];x[h]=y,x[u]=g}}}this.nCachedObjects_=r}uncache(){let e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length,r=this.nCachedObjects_,o=e.length;for(let a=0,l=arguments.length;a!==l;++a){let c=arguments[a],h=c.uuid,u=t[h];if(u!==void 0)if(delete t[h],u0&&(t[f.uuid]=u),e[u]=f,e.pop();for(let m=0,x=i;m!==x;++m){let y=n[m];y[u]=y[d],y.pop()}}}this.nCachedObjects_=r}subscribe_(e,t){let n=this._bindingsIndicesByPath,i=n[e],r=this._bindings;if(i!==void 0)return r[i];let o=this._paths,a=this._parsedPaths,l=this._objects,c=l.length,h=this.nCachedObjects_,u=new Array(c);i=r.length,n[e]=i,o.push(e),a.push(t),r.push(u);for(let d=h,f=l.length;d!==f;++d){let m=l[d];u[d]=new He(m,e,t)}return u}unsubscribe_(e){let t=this._bindingsIndicesByPath,n=t[e];if(n!==void 0){let i=this._paths,r=this._parsedPaths,o=this._bindings,a=o.length-1,l=o[a],c=e[a];t[c]=n,o[n]=l,o.pop(),r[n]=r[a],r.pop(),i[n]=i[a],i.pop()}}};ru.prototype.isAnimationObjectGroup=!0;var su=class{constructor(e,t,n=null,i=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=i;let r=t.tracks,o=r.length,a=new Array(o),l={endingStart:Si,endingEnd:Si};for(let c=0;c!==o;++c){let h=r[c].createInterpolant(null);a[c]=h,h.settings=l}this._interpolantSettings=l,this._interpolants=a,this._propertyBindings=new Array(o),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=dd,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,n){if(e.fadeOut(t),this.fadeIn(t),n){let i=this._clip.duration,r=e._clip.duration,o=r/i,a=i/r;e.warp(1,o,t),this.warp(a,1,t)}return this}crossFadeTo(e,t,n){return e.crossFadeFrom(this,t,n)}stopFading(){let e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,n){let i=this._mixer,r=i.time,o=this.timeScale,a=this._timeScaleInterpolant;a===null&&(a=i._lendControlInterpolant(),this._timeScaleInterpolant=a);let l=a.parameterPositions,c=a.sampleValues;return l[0]=r,l[1]=r+n,c[0]=e/o,c[1]=t/o,this}stopWarping(){let e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,n,i){if(!this.enabled){this._updateWeight(e);return}let r=this._startTime;if(r!==null){let l=(e-r)*n;if(l<0||n===0)return;this._startTime=null,t=n*l}t*=this._updateTimeScale(e);let o=this._updateTime(t),a=this._updateWeight(e);if(a>0){let l=this._interpolants,c=this._propertyBindings;switch(this.blendMode){case rh:for(let h=0,u=l.length;h!==u;++h)l[h].evaluate(o),c[h].accumulateAdditive(a);break;case ga:default:for(let h=0,u=l.length;h!==u;++h)l[h].evaluate(o),c[h].accumulate(i,a)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let n=this._weightInterpolant;if(n!==null){let i=n.evaluate(e)[0];t*=i,e>n.parameterPositions[1]&&(this.stopFading(),i===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let n=this._timeScaleInterpolant;n!==null&&(t*=n.evaluate(e)[0],e>n.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t))}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,n=this.loop,i=this.time+e,r=this._loopCount,o=n===fd;if(e===0)return r===-1?i:o&&(r&1)===1?t-i:i;if(n===ud){r===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(i>=t)i=t;else if(i<0)i=0;else{this.time=i;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=i,this._mixer.dispatchEvent({type:\"finished\",action:this,direction:e<0?-1:1})}}else{if(r===-1&&(e>=0?(r=0,this._setEndings(!0,this.repetitions===0,o)):this._setEndings(this.repetitions===0,!0,o)),i>=t||i<0){let a=Math.floor(i/t);i-=t*a,r+=Math.abs(a);let l=this.repetitions-r;if(l<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,i=e>0?t:0,this.time=i,this._mixer.dispatchEvent({type:\"finished\",action:this,direction:e>0?1:-1});else{if(l===1){let c=e<0;this._setEndings(c,!c,o)}else this._setEndings(!1,!1,o);this._loopCount=r,this.time=i,this._mixer.dispatchEvent({type:\"loop\",action:this,loopDelta:a})}}else this.time=i;if(o&&(r&1)===1)return t-i}return i}_setEndings(e,t,n){let i=this._interpolantSettings;n?(i.endingStart=Ei,i.endingEnd=Ei):(e?i.endingStart=this.zeroSlopeAtStart?Ei:Si:i.endingStart=Hs,t?i.endingEnd=this.zeroSlopeAtEnd?Ei:Si:i.endingEnd=Hs)}_scheduleFading(e,t,n){let i=this._mixer,r=i.time,o=this._weightInterpolant;o===null&&(o=i._lendControlInterpolant(),this._weightInterpolant=o);let a=o.parameterPositions,l=o.sampleValues;return a[0]=r,l[0]=t,a[1]=r+e,l[1]=n,this}},ou=class extends Tn{constructor(e){super();this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){let n=e._localRoot||this._root,i=e._clip.tracks,r=i.length,o=e._propertyBindings,a=e._interpolants,l=n.uuid,c=this._bindingsByRootAndName,h=c[l];h===void 0&&(h={},c[l]=h);for(let u=0;u!==r;++u){let d=i[u],f=d.name,m=h[f];if(m!==void 0)++m.referenceCount,o[u]=m;else{if(m=o[u],m!==void 0){m._cacheIndex===null&&(++m.referenceCount,this._addInactiveBinding(m,l,f));continue}let x=t&&t._propertyBindings[u].binding.parsedPath;m=new nu(He.create(n,f,x),d.ValueTypeName,d.getValueSize()),++m.referenceCount,this._addInactiveBinding(m,l,f),o[u]=m}a[u].resultBuffer=m.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){let n=(e._localRoot||this._root).uuid,i=e._clip.uuid,r=this._actionsByClip[i];this._bindAction(e,r&&r.knownActions[0]),this._addInactiveAction(e,i,n)}let t=e._propertyBindings;for(let n=0,i=t.length;n!==i;++n){let r=t[n];r.useCount++===0&&(this._lendBinding(r),r.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let n=0,i=t.length;n!==i;++n){let r=t[n];--r.useCount===0&&(r.restoreOriginalState(),this._takeBackBinding(r))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){let t=e._cacheIndex;return t!==null&&t=0;--n)e[n].stop();return this}update(e){e*=this.timeScale;let t=this._actions,n=this._nActiveActions,i=this.time+=e,r=Math.sign(e),o=this._accuIndex^=1;for(let c=0;c!==n;++c)t[c]._update(i,e,r,o);let a=this._bindings,l=this._nActiveBindings;for(let c=0;c!==l;++c)a[c].apply(o);return this}setTime(e){this.time=0;for(let t=0;tthis.max.x||e.ythis.max.y)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return qc.copy(e).clamp(this.min,this.max).sub(e).length()}intersect(e){return this.min.max(e.min),this.max.min(e.max),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}};Yi.prototype.isBox2=!0;var Xc=new S,Ts=new S,cu=class{constructor(e=new S,t=new S){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){Xc.subVectors(e,this.start),Ts.subVectors(this.end,this.start);let n=Ts.dot(Ts),r=Ts.dot(Xc)/n;return t&&(r=xt(r,0,1)),r}closestPointToPoint(e,t,n){let i=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(i).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}},Jc=new S,dy=class extends Be{constructor(e,t){super();this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t;let n=new ve,i=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let o=0,a=1,l=32;o.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{Kc.set(e.z,0,-e.x).normalize();let t=Math.acos(e.y);this.quaternion.setFromAxisAngle(Kc,t)}}setLength(e,t=e*.2,n=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}},pu=class extends Ct{constructor(e=1){let t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],n=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],i=new ve;i.setAttribute(\"position\",new ue(t,3)),i.setAttribute(\"color\",new ue(n,3));let r=new mt({vertexColors:!0,toneMapped:!1});super(i,r);this.type=\"AxesHelper\"}setColors(e,t,n){let i=new se,r=this.geometry.attributes.color.array;return i.set(e),i.toArray(r,0),i.toArray(r,3),i.set(t),i.toArray(r,6),i.toArray(r,9),i.set(n),i.toArray(r,12),i.toArray(r,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},by=class{constructor(){this.type=\"ShapePath\",this.color=new se,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new yr,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,i){return this.currentPath.quadraticCurveTo(e,t,n,i),this}bezierCurveTo(e,t,n,i,r,o){return this.currentPath.bezierCurveTo(e,t,n,i,r,o),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e,t){function n(p){let M=[];for(let _=0,v=p.length;_Number.EPSILON){if(b<0&&(P=M[R],I=-I,V=M[A],b=-b),p.yV.y)continue;if(p.y===P.y){if(p.x===P.x)return!0}else{let C=b*(p.x-P.x)-I*(p.y-P.y);if(C===0)return!0;if(C<0)continue;v=!v}}else{if(p.y!==P.y)continue;if(V.x<=p.x&&p.x<=P.x||P.x<=p.x&&p.x<=V.x)return!0}}return v}let r=Zt.isClockWise,o=this.subPaths;if(o.length===0)return[];if(t===!0)return n(o);let a,l,c,h=[];if(o.length===1)return l=o[0],c=new Yt,c.curves=l.curves,h.push(c),h;let u=!r(o[0].getPoints());u=e?!u:u;let d=[],f=[],m=[],x=0,y;f[x]=void 0,m[x]=[];for(let p=0,M=o.length;p1){let p=!1,M=0;for(let _=0,v=f.length;_0&&p===!1&&(m=d)}let g;for(let p=0,M=f.length;p65504&&(console.warn(\"THREE.DataUtils.toHalfFloat(): value exceeds 65504.\"),e=65504),mu[0]=e;let t=wy[0],n=t>>16&32768,i=t>>12&2047,r=t>>23&255;return r<103?n:r>142?(n|=31744,n|=(r==255?0:1)&&t&8388607,n):r<113?(i|=2048,n|=(i>>114-r)+(i>>113-r&1),n):(n|=r-112<<10|i>>1,n+=i&1,n)}},s0=0,o0=1,a0=0,l0=1,c0=2;function h0(s){return console.warn(\"THREE.MeshFaceMaterial has been removed. Use an Array instead.\"),s}function u0(s=[]){return console.warn(\"THREE.MultiMaterial has been removed. Use an Array instead.\"),s.isMultiMaterial=!0,s.materials=s,s.clone=function(){return s.slice()},s}function d0(s,e){return console.warn(\"THREE.PointCloud has been renamed to THREE.Points.\"),new Hr(s,e)}function f0(s){return console.warn(\"THREE.Particle has been renamed to THREE.Sprite.\"),new to(s)}function p0(s,e){return console.warn(\"THREE.ParticleSystem has been renamed to THREE.Points.\"),new Hr(s,e)}function m0(s){return console.warn(\"THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.\"),new Qn(s)}function g0(s){return console.warn(\"THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.\"),new Qn(s)}function x0(s){return console.warn(\"THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.\"),new Qn(s)}function y0(s,e,t){return console.warn(\"THREE.Vertex has been removed. Use THREE.Vector3 instead.\"),new S(s,e,t)}function _0(s,e){return console.warn(\"THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.\"),new ze(s,e).setUsage(dr)}function v0(s,e){return console.warn(\"THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.\"),new uh(s,e)}function M0(s,e){return console.warn(\"THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.\"),new dh(s,e)}function b0(s,e){return console.warn(\"THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.\"),new fh(s,e)}function w0(s,e){return console.warn(\"THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.\"),new ph(s,e)}function S0(s,e){return console.warn(\"THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.\"),new Xs(s,e)}function E0(s,e){return console.warn(\"THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.\"),new mh(s,e)}function T0(s,e){return console.warn(\"THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.\"),new Js(s,e)}function A0(s,e){return console.warn(\"THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.\"),new ue(s,e)}function C0(s,e){return console.warn(\"THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.\"),new xh(s,e)}It.create=function(s,e){return console.log(\"THREE.Curve.create() has been deprecated\"),s.prototype=Object.create(It.prototype),s.prototype.constructor=s,s.prototype.getPoint=e,s};yr.prototype.fromPoints=function(s){return console.warn(\"THREE.Path: .fromPoints() has been renamed to .setFromPoints().\"),this.setFromPoints(s)};function R0(s){return console.warn(\"THREE.AxisHelper has been renamed to THREE.AxesHelper.\"),new pu(s)}function L0(s,e){return console.warn(\"THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.\"),new fu(s,e)}function P0(s,e){return console.warn(\"THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.\"),new Ct(new Sa(s.geometry),new mt({color:e!==void 0?e:16777215}))}du.prototype.setColors=function(){console.error(\"THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.\")};hu.prototype.update=function(){console.error(\"THREE.SkeletonHelper: update() no longer needs to be called.\")};function I0(s,e){return console.warn(\"THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.\"),new Ct(new La(s.geometry),new mt({color:e!==void 0?e:16777215}))}Tt.prototype.extractUrlBase=function(s){return console.warn(\"THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.\"),Vs.extractUrlBase(s)};Tt.Handlers={add:function(){console.error(\"THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.\")},get:function(){console.error(\"THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.\")}};function D0(s){return console.warn(\"THREE.XHRLoader has been renamed to THREE.FileLoader.\"),new $t(s)}function F0(s){return console.warn(\"THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.\"),new qh(s)}Yi.prototype.center=function(s){return console.warn(\"THREE.Box2: .center() has been renamed to .getCenter().\"),this.getCenter(s)};Yi.prototype.empty=function(){return console.warn(\"THREE.Box2: .empty() has been renamed to .isEmpty().\"),this.isEmpty()};Yi.prototype.isIntersectionBox=function(s){return console.warn(\"THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().\"),this.intersectsBox(s)};Yi.prototype.size=function(s){return console.warn(\"THREE.Box2: .size() has been renamed to .getSize().\"),this.getSize(s)};Dt.prototype.center=function(s){return console.warn(\"THREE.Box3: .center() has been renamed to .getCenter().\"),this.getCenter(s)};Dt.prototype.empty=function(){return console.warn(\"THREE.Box3: .empty() has been renamed to .isEmpty().\"),this.isEmpty()};Dt.prototype.isIntersectionBox=function(s){return console.warn(\"THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().\"),this.intersectsBox(s)};Dt.prototype.isIntersectionSphere=function(s){return console.warn(\"THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().\"),this.intersectsSphere(s)};Dt.prototype.size=function(s){return console.warn(\"THREE.Box3: .size() has been renamed to .getSize().\"),this.getSize(s)};Ln.prototype.toVector3=function(){console.error(\"THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead\")};Cn.prototype.empty=function(){return console.warn(\"THREE.Sphere: .empty() has been renamed to .isEmpty().\"),this.isEmpty()};Nr.prototype.setFromMatrix=function(s){return console.warn(\"THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().\"),this.setFromProjectionMatrix(s)};cu.prototype.center=function(s){return console.warn(\"THREE.Line3: .center() has been renamed to .getCenter().\"),this.getCenter(s)};dt.prototype.flattenToArrayOffset=function(s,e){return console.warn(\"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\"),this.toArray(s,e)};dt.prototype.multiplyVector3=function(s){return console.warn(\"THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.\"),s.applyMatrix3(this)};dt.prototype.multiplyVector3Array=function(){console.error(\"THREE.Matrix3: .multiplyVector3Array() has been removed.\")};dt.prototype.applyToBufferAttribute=function(s){return console.warn(\"THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.\"),s.applyMatrix3(this)};dt.prototype.applyToVector3Array=function(){console.error(\"THREE.Matrix3: .applyToVector3Array() has been removed.\")};dt.prototype.getInverse=function(s){return console.warn(\"THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.\"),this.copy(s).invert()};de.prototype.extractPosition=function(s){return console.warn(\"THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().\"),this.copyPosition(s)};de.prototype.flattenToArrayOffset=function(s,e){return console.warn(\"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\"),this.toArray(s,e)};de.prototype.getPosition=function(){return console.warn(\"THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.\"),new S().setFromMatrixColumn(this,3)};de.prototype.setRotationFromQuaternion=function(s){return console.warn(\"THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().\"),this.makeRotationFromQuaternion(s)};de.prototype.multiplyToArray=function(){console.warn(\"THREE.Matrix4: .multiplyToArray() has been removed.\")};de.prototype.multiplyVector3=function(s){return console.warn(\"THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.\"),s.applyMatrix4(this)};de.prototype.multiplyVector4=function(s){return console.warn(\"THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.\"),s.applyMatrix4(this)};de.prototype.multiplyVector3Array=function(){console.error(\"THREE.Matrix4: .multiplyVector3Array() has been removed.\")};de.prototype.rotateAxis=function(s){console.warn(\"THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.\"),s.transformDirection(this)};de.prototype.crossVector=function(s){return console.warn(\"THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.\"),s.applyMatrix4(this)};de.prototype.translate=function(){console.error(\"THREE.Matrix4: .translate() has been removed.\")};de.prototype.rotateX=function(){console.error(\"THREE.Matrix4: .rotateX() has been removed.\")};de.prototype.rotateY=function(){console.error(\"THREE.Matrix4: .rotateY() has been removed.\")};de.prototype.rotateZ=function(){console.error(\"THREE.Matrix4: .rotateZ() has been removed.\")};de.prototype.rotateByAxis=function(){console.error(\"THREE.Matrix4: .rotateByAxis() has been removed.\")};de.prototype.applyToBufferAttribute=function(s){return console.warn(\"THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.\"),s.applyMatrix4(this)};de.prototype.applyToVector3Array=function(){console.error(\"THREE.Matrix4: .applyToVector3Array() has been removed.\")};de.prototype.makeFrustum=function(s,e,t,n,i,r){return console.warn(\"THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.\"),this.makePerspective(s,e,n,t,i,r)};de.prototype.getInverse=function(s){return console.warn(\"THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.\"),this.copy(s).invert()};Xt.prototype.isIntersectionLine=function(s){return console.warn(\"THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().\"),this.intersectsLine(s)};yt.prototype.multiplyVector3=function(s){return console.warn(\"THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.\"),s.applyQuaternion(this)};yt.prototype.inverse=function(){return console.warn(\"THREE.Quaternion: .inverse() has been renamed to invert().\"),this.invert()};Rn.prototype.isIntersectionBox=function(s){return console.warn(\"THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().\"),this.intersectsBox(s)};Rn.prototype.isIntersectionPlane=function(s){return console.warn(\"THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().\"),this.intersectsPlane(s)};Rn.prototype.isIntersectionSphere=function(s){return console.warn(\"THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().\"),this.intersectsSphere(s)};st.prototype.area=function(){return console.warn(\"THREE.Triangle: .area() has been renamed to .getArea().\"),this.getArea()};st.prototype.barycoordFromPoint=function(s,e){return console.warn(\"THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().\"),this.getBarycoord(s,e)};st.prototype.midpoint=function(s){return console.warn(\"THREE.Triangle: .midpoint() has been renamed to .getMidpoint().\"),this.getMidpoint(s)};st.prototypenormal=function(s){return console.warn(\"THREE.Triangle: .normal() has been renamed to .getNormal().\"),this.getNormal(s)};st.prototype.plane=function(s){return console.warn(\"THREE.Triangle: .plane() has been renamed to .getPlane().\"),this.getPlane(s)};st.barycoordFromPoint=function(s,e,t,n,i){return console.warn(\"THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().\"),st.getBarycoord(s,e,t,n,i)};st.normal=function(s,e,t,n){return console.warn(\"THREE.Triangle: .normal() has been renamed to .getNormal().\"),st.getNormal(s,e,t,n)};Yt.prototype.extractAllPoints=function(s){return console.warn(\"THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.\"),this.extractPoints(s)};Yt.prototype.extrude=function(s){return console.warn(\"THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.\"),new on(this,s)};Yt.prototype.makeGeometry=function(s){return console.warn(\"THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.\"),new Oi(this,s)};Z.prototype.fromAttribute=function(s,e,t){return console.warn(\"THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().\"),this.fromBufferAttribute(s,e,t)};Z.prototype.distanceToManhattan=function(s){return console.warn(\"THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().\"),this.manhattanDistanceTo(s)};Z.prototype.lengthManhattan=function(){return console.warn(\"THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().\"),this.manhattanLength()};S.prototype.setEulerFromRotationMatrix=function(){console.error(\"THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.\")};S.prototype.setEulerFromQuaternion=function(){console.error(\"THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.\")};S.prototype.getPositionFromMatrix=function(s){return console.warn(\"THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().\"),this.setFromMatrixPosition(s)};S.prototype.getScaleFromMatrix=function(s){return console.warn(\"THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().\"),this.setFromMatrixScale(s)};S.prototype.getColumnFromMatrix=function(s,e){return console.warn(\"THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().\"),this.setFromMatrixColumn(e,s)};S.prototype.applyProjection=function(s){return console.warn(\"THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.\"),this.applyMatrix4(s)};S.prototype.fromAttribute=function(s,e,t){return console.warn(\"THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().\"),this.fromBufferAttribute(s,e,t)};S.prototype.distanceToManhattan=function(s){return console.warn(\"THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().\"),this.manhattanDistanceTo(s)};S.prototype.lengthManhattan=function(){return console.warn(\"THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().\"),this.manhattanLength()};qe.prototype.fromAttribute=function(s,e,t){return console.warn(\"THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().\"),this.fromBufferAttribute(s,e,t)};qe.prototype.lengthManhattan=function(){return console.warn(\"THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().\"),this.manhattanLength()};Be.prototype.getChildByName=function(s){return console.warn(\"THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().\"),this.getObjectByName(s)};Be.prototype.renderDepth=function(){console.warn(\"THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.\")};Be.prototype.translate=function(s,e){return console.warn(\"THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.\"),this.translateOnAxis(e,s)};Be.prototype.getWorldRotation=function(){console.error(\"THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.\")};Be.prototype.applyMatrix=function(s){return console.warn(\"THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().\"),this.applyMatrix4(s)};Object.defineProperties(Be.prototype,{eulerOrder:{get:function(){return console.warn(\"THREE.Object3D: .eulerOrder is now .rotation.order.\"),this.rotation.order},set:function(s){console.warn(\"THREE.Object3D: .eulerOrder is now .rotation.order.\"),this.rotation.order=s}},useQuaternion:{get:function(){console.warn(\"THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.\")},set:function(){console.warn(\"THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.\")}}});ct.prototype.setDrawMode=function(){console.error(\"THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.\")};Object.defineProperties(ct.prototype,{drawMode:{get:function(){return console.error(\"THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.\"),pd},set:function(){console.error(\"THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.\")}}});no.prototype.initBones=function(){console.error(\"THREE.SkinnedMesh: initBones() has been removed.\")};pt.prototype.setLens=function(s,e){console.warn(\"THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup.\"),e!==void 0&&(this.filmGauge=e),this.setFocalLength(s)};Object.defineProperties(Ht.prototype,{onlyShadow:{set:function(){console.warn(\"THREE.Light: .onlyShadow has been removed.\")}},shadowCameraFov:{set:function(s){console.warn(\"THREE.Light: .shadowCameraFov is now .shadow.camera.fov.\"),this.shadow.camera.fov=s}},shadowCameraLeft:{set:function(s){console.warn(\"THREE.Light: .shadowCameraLeft is now .shadow.camera.left.\"),this.shadow.camera.left=s}},shadowCameraRight:{set:function(s){console.warn(\"THREE.Light: .shadowCameraRight is now .shadow.camera.right.\"),this.shadow.camera.right=s}},shadowCameraTop:{set:function(s){console.warn(\"THREE.Light: .shadowCameraTop is now .shadow.camera.top.\"),this.shadow.camera.top=s}},shadowCameraBottom:{set:function(s){console.warn(\"THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.\"),this.shadow.camera.bottom=s}},shadowCameraNear:{set:function(s){console.warn(\"THREE.Light: .shadowCameraNear is now .shadow.camera.near.\"),this.shadow.camera.near=s}},shadowCameraFar:{set:function(s){console.warn(\"THREE.Light: .shadowCameraFar is now .shadow.camera.far.\"),this.shadow.camera.far=s}},shadowCameraVisible:{set:function(){console.warn(\"THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.\")}},shadowBias:{set:function(s){console.warn(\"THREE.Light: .shadowBias is now .shadow.bias.\"),this.shadow.bias=s}},shadowDarkness:{set:function(){console.warn(\"THREE.Light: .shadowDarkness has been removed.\")}},shadowMapWidth:{set:function(s){console.warn(\"THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.\"),this.shadow.mapSize.width=s}},shadowMapHeight:{set:function(s){console.warn(\"THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.\"),this.shadow.mapSize.height=s}}});Object.defineProperties(ze.prototype,{length:{get:function(){return console.warn(\"THREE.BufferAttribute: .length has been deprecated. Use .count instead.\"),this.array.length}},dynamic:{get:function(){return console.warn(\"THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.\"),this.usage===dr},set:function(){console.warn(\"THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.\"),this.setUsage(dr)}}});ze.prototype.setDynamic=function(s){return console.warn(\"THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.\"),this.setUsage(s===!0?dr:ur),this};ze.prototype.copyIndicesArray=function(){console.error(\"THREE.BufferAttribute: .copyIndicesArray() has been removed.\")},ze.prototype.setArray=function(){console.error(\"THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers\")};ve.prototype.addIndex=function(s){console.warn(\"THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().\"),this.setIndex(s)};ve.prototype.addAttribute=function(s,e){return console.warn(\"THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().\"),!(e&&e.isBufferAttribute)&&!(e&&e.isInterleavedBufferAttribute)?(console.warn(\"THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).\"),this.setAttribute(s,new ze(arguments[1],arguments[2]))):s===\"index\"?(console.warn(\"THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.\"),this.setIndex(e),this):this.setAttribute(s,e)};ve.prototype.addDrawCall=function(s,e,t){t!==void 0&&console.warn(\"THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.\"),console.warn(\"THREE.BufferGeometry: .addDrawCall() is now .addGroup().\"),this.addGroup(s,e)};ve.prototype.clearDrawCalls=function(){console.warn(\"THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().\"),this.clearGroups()};ve.prototype.computeOffsets=function(){console.warn(\"THREE.BufferGeometry: .computeOffsets() has been removed.\")};ve.prototype.removeAttribute=function(s){return console.warn(\"THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().\"),this.deleteAttribute(s)};ve.prototype.applyMatrix=function(s){return console.warn(\"THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().\"),this.applyMatrix4(s)};Object.defineProperties(ve.prototype,{drawcalls:{get:function(){return console.error(\"THREE.BufferGeometry: .drawcalls has been renamed to .groups.\"),this.groups}},offsets:{get:function(){return console.warn(\"THREE.BufferGeometry: .offsets has been renamed to .groups.\"),this.groups}}});Kn.prototype.setDynamic=function(s){return console.warn(\"THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.\"),this.setUsage(s===!0?dr:ur),this};Kn.prototype.setArray=function(){console.error(\"THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers\")};on.prototype.getArrays=function(){console.error(\"THREE.ExtrudeGeometry: .getArrays() has been removed.\")};on.prototype.addShapeList=function(){console.error(\"THREE.ExtrudeGeometry: .addShapeList() has been removed.\")};on.prototype.addShape=function(){console.error(\"THREE.ExtrudeGeometry: .addShape() has been removed.\")};Qs.prototype.dispose=function(){console.error(\"THREE.Scene: .dispose() has been removed.\")};fo.prototype.onUpdate=function(){return console.warn(\"THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.\"),this};Object.defineProperties(ot.prototype,{wrapAround:{get:function(){console.warn(\"THREE.Material: .wrapAround has been removed.\")},set:function(){console.warn(\"THREE.Material: .wrapAround has been removed.\")}},overdraw:{get:function(){console.warn(\"THREE.Material: .overdraw has been removed.\")},set:function(){console.warn(\"THREE.Material: .overdraw has been removed.\")}},wrapRGB:{get:function(){return console.warn(\"THREE.Material: .wrapRGB has been removed.\"),new se}},shading:{get:function(){console.error(\"THREE.\"+this.type+\": .shading has been removed. Use the boolean .flatShading instead.\")},set:function(s){console.warn(\"THREE.\"+this.type+\": .shading has been removed. Use the boolean .flatShading instead.\"),this.flatShading=s===eh}},stencilMask:{get:function(){return console.warn(\"THREE.\"+this.type+\": .stencilMask has been removed. Use .stencilFuncMask instead.\"),this.stencilFuncMask},set:function(s){console.warn(\"THREE.\"+this.type+\": .stencilMask has been removed. Use .stencilFuncMask instead.\"),this.stencilFuncMask=s}},vertexTangents:{get:function(){console.warn(\"THREE.\"+this.type+\": .vertexTangents has been removed.\")},set:function(){console.warn(\"THREE.\"+this.type+\": .vertexTangents has been removed.\")}}});Object.defineProperties(Bt.prototype,{derivatives:{get:function(){return console.warn(\"THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.\"),this.extensions.derivatives},set:function(s){console.warn(\"THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.\"),this.extensions.derivatives=s}}});Je.prototype.clearTarget=function(s,e,t,n){console.warn(\"THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.\"),this.setRenderTarget(s),this.clear(e,t,n)};Je.prototype.animate=function(s){console.warn(\"THREE.WebGLRenderer: .animate() is now .setAnimationLoop().\"),this.setAnimationLoop(s)};Je.prototype.getCurrentRenderTarget=function(){return console.warn(\"THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().\"),this.getRenderTarget()};Je.prototype.getMaxAnisotropy=function(){return console.warn(\"THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().\"),this.capabilities.getMaxAnisotropy()};Je.prototype.getPrecision=function(){return console.warn(\"THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.\"),this.capabilities.precision};Je.prototype.resetGLState=function(){return console.warn(\"THREE.WebGLRenderer: .resetGLState() is now .state.reset().\"),this.state.reset()};Je.prototype.supportsFloatTextures=function(){return console.warn(\"THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' ).\"),this.extensions.get(\"OES_texture_float\")};Je.prototype.supportsHalfFloatTextures=function(){return console.warn(\"THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' ).\"),this.extensions.get(\"OES_texture_half_float\")};Je.prototype.supportsStandardDerivatives=function(){return console.warn(\"THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' ).\"),this.extensions.get(\"OES_standard_derivatives\")};Je.prototype.supportsCompressedTextureS3TC=function(){return console.warn(\"THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' ).\"),this.extensions.get(\"WEBGL_compressed_texture_s3tc\")};Je.prototype.supportsCompressedTexturePVRTC=function(){return console.warn(\"THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' ).\"),this.extensions.get(\"WEBGL_compressed_texture_pvrtc\")};Je.prototype.supportsBlendMinMax=function(){return console.warn(\"THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' ).\"),this.extensions.get(\"EXT_blend_minmax\")};Je.prototype.supportsVertexTextures=function(){return console.warn(\"THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.\"),this.capabilities.vertexTextures};Je.prototype.supportsInstancedArrays=function(){return console.warn(\"THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' ).\"),this.extensions.get(\"ANGLE_instanced_arrays\")};Je.prototype.enableScissorTest=function(s){console.warn(\"THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().\"),this.setScissorTest(s)};Je.prototype.initMaterial=function(){console.warn(\"THREE.WebGLRenderer: .initMaterial() has been removed.\")};Je.prototype.addPrePlugin=function(){console.warn(\"THREE.WebGLRenderer: .addPrePlugin() has been removed.\")};Je.prototype.addPostPlugin=function(){console.warn(\"THREE.WebGLRenderer: .addPostPlugin() has been removed.\")};Je.prototype.updateShadowMap=function(){console.warn(\"THREE.WebGLRenderer: .updateShadowMap() has been removed.\")};Je.prototype.setFaceCulling=function(){console.warn(\"THREE.WebGLRenderer: .setFaceCulling() has been removed.\")};Je.prototype.allocTextureUnit=function(){console.warn(\"THREE.WebGLRenderer: .allocTextureUnit() has been removed.\")};Je.prototype.setTexture=function(){console.warn(\"THREE.WebGLRenderer: .setTexture() has been removed.\")};Je.prototype.setTexture2D=function(){console.warn(\"THREE.WebGLRenderer: .setTexture2D() has been removed.\")};Je.prototype.setTextureCube=function(){console.warn(\"THREE.WebGLRenderer: .setTextureCube() has been removed.\")};Je.prototype.getActiveMipMapLevel=function(){return console.warn(\"THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().\"),this.getActiveMipmapLevel()};Object.defineProperties(Je.prototype,{shadowMapEnabled:{get:function(){return this.shadowMap.enabled},set:function(s){console.warn(\"THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.\"),this.shadowMap.enabled=s}},shadowMapType:{get:function(){return this.shadowMap.type},set:function(s){console.warn(\"THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.\"),this.shadowMap.type=s}},shadowMapCullFace:{get:function(){console.warn(\"THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.\")},set:function(){console.warn(\"THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.\")}},context:{get:function(){return console.warn(\"THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.\"),this.getContext()}},vr:{get:function(){return console.warn(\"THREE.WebGLRenderer: .vr has been renamed to .xr\"),this.xr}},gammaInput:{get:function(){return console.warn(\"THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.\"),!1},set:function(){console.warn(\"THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.\")}},gammaOutput:{get:function(){return console.warn(\"THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.\"),!1},set:function(s){console.warn(\"THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.\"),this.outputEncoding=s===!0?je:bn}},toneMappingWhitePoint:{get:function(){return console.warn(\"THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.\"),1},set:function(){console.warn(\"THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.\")}},gammaFactor:{get:function(){return console.warn(\"THREE.WebGLRenderer: .gammaFactor has been removed.\"),2},set:function(){console.warn(\"THREE.WebGLRenderer: .gammaFactor has been removed.\")}}});Object.defineProperties(Ch.prototype,{cullFace:{get:function(){console.warn(\"THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.\")},set:function(){console.warn(\"THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.\")}},renderReverseSided:{get:function(){console.warn(\"THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.\")},set:function(){console.warn(\"THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.\")}},renderSingleSided:{get:function(){console.warn(\"THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.\")},set:function(){console.warn(\"THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.\")}}});function B0(s,e,t){return console.warn(\"THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).\"),new Zs(s,t)}Object.defineProperties(St.prototype,{wrapS:{get:function(){return console.warn(\"THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.\"),this.texture.wrapS},set:function(s){console.warn(\"THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.\"),this.texture.wrapS=s}},wrapT:{get:function(){return console.warn(\"THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.\"),this.texture.wrapT},set:function(s){console.warn(\"THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.\"),this.texture.wrapT=s}},magFilter:{get:function(){return console.warn(\"THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.\"),this.texture.magFilter},set:function(s){console.warn(\"THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.\"),this.texture.magFilter=s}},minFilter:{get:function(){return console.warn(\"THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.\"),this.texture.minFilter},set:function(s){console.warn(\"THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.\"),this.texture.minFilter=s}},anisotropy:{get:function(){return console.warn(\"THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.\"),this.texture.anisotropy},set:function(s){console.warn(\"THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.\"),this.texture.anisotropy=s}},offset:{get:function(){return console.warn(\"THREE.WebGLRenderTarget: .offset is now .texture.offset.\"),this.texture.offset},set:function(s){console.warn(\"THREE.WebGLRenderTarget: .offset is now .texture.offset.\"),this.texture.offset=s}},repeat:{get:function(){return console.warn(\"THREE.WebGLRenderTarget: .repeat is now .texture.repeat.\"),this.texture.repeat},set:function(s){console.warn(\"THREE.WebGLRenderTarget: .repeat is now .texture.repeat.\"),this.texture.repeat=s}},format:{get:function(){return console.warn(\"THREE.WebGLRenderTarget: .format is now .texture.format.\"),this.texture.format},set:function(s){console.warn(\"THREE.WebGLRenderTarget: .format is now .texture.format.\"),this.texture.format=s}},type:{get:function(){return console.warn(\"THREE.WebGLRenderTarget: .type is now .texture.type.\"),this.texture.type},set:function(s){console.warn(\"THREE.WebGLRenderTarget: .type is now .texture.type.\"),this.texture.type=s}},generateMipmaps:{get:function(){return console.warn(\"THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.\"),this.texture.generateMipmaps},set:function(s){console.warn(\"THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.\"),this.texture.generateMipmaps=s}}});el.prototype.load=function(s){console.warn(\"THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.\");let e=this;return new jh().load(s,function(n){e.setBuffer(n)}),this};tu.prototype.getData=function(){return console.warn(\"THREE.AudioAnalyser: .getData() is now .getFrequencyData().\"),this.getFrequencyData()};Ys.prototype.updateCubeMap=function(s,e){return console.warn(\"THREE.CubeCamera: .updateCubeMap() is now .update().\"),this.update(s,e)};Ys.prototype.clear=function(s,e,t,n){return console.warn(\"THREE.CubeCamera: .clear() is now .renderTarget.clear().\"),this.renderTarget.clear(s,e,t,n)};An.crossOrigin=void 0;An.loadTexture=function(s,e,t,n){console.warn(\"THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.\");let i=new Xh;i.setCrossOrigin(this.crossOrigin);let r=i.load(s,t,void 0,n);return e&&(r.mapping=e),r};An.loadTextureCube=function(s,e,t,n){console.warn(\"THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.\");let i=new Wh;i.setCrossOrigin(this.crossOrigin);let r=i.load(s,t,void 0,n);return e&&(r.mapping=e),r};An.loadCompressedTexture=function(){console.error(\"THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.\")};An.loadCompressedTextureCube=function(){console.error(\"THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.\")};function N0(){console.error(\"THREE.CanvasRenderer has been removed\")}function z0(){console.error(\"THREE.JSONLoader has been removed.\")}var U0={createMultiMaterialObject:function(){console.error(\"THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js\")},detach:function(){console.error(\"THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js\")},attach:function(){console.error(\"THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js\")}};function O0(){console.error(\"THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js\")}function H0(){return console.error(\"THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js\"),new ve}function G0(){return console.error(\"THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js\"),new ve}function V0(){console.error(\"THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js\")}function k0(){console.error(\"THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js\")}function W0(){console.error(\"THREE.ImmediateRenderObject has been removed.\")}function q0(s,e,t){console.error('THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the \"samples\" property to greater 0 to enable multisampling.');let n=new St(s,e,t);return n.samples=4,n}function X0(s,e,t,n){return console.warn(\"THREE.DataTexture2DArray has been renamed to DataArrayTexture.\"),new Wi(s,e,t,n)}function J0(s,e,t,n){return console.warn(\"THREE.DataTexture3D has been renamed to Data3DTexture.\"),new Fr(s,e,t,n)}typeof __THREE_DEVTOOLS__<\"u\"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"register\",{detail:{revision:pa}}));typeof window<\"u\"&&(window.__THREE__?console.warn(\"WARNING: Multiple instances of Three.js being imported.\"):window.__THREE__=pa);export{Yu as ACESFilmicToneMapping,wi as AddEquation,Wu as AddOperation,rh as AdditiveAnimationBlendMode,sl as AdditiveBlending,td as AlphaFormat,zu as AlwaysDepth,yd as AlwaysStencilFunc,$a as AmbientLight,Qh as AmbientLightProbe,Pr as AnimationClip,Xx as AnimationLoader,ou as AnimationMixer,ru as AnimationObjectGroup,Ke as AnimationUtils,Ea as ArcCurve,_a as ArrayCamera,My as ArrowHelper,el as Audio,tu as AudioAnalyser,$h as AudioContext,Kx as AudioListener,jh as AudioLoader,pu as AxesHelper,R0 as AxisHelper,lt as BackSide,md as BasicDepthPacking,Cy as BasicShadowMap,F0 as BinaryTextureLoader,io as Bone,ei as BooleanKeyframeTrack,L0 as BoundingBoxHelper,Yi as Box2,Dt as Box3,_y as Box3Helper,wn as BoxBufferGeometry,wn as BoxGeometry,fu as BoxHelper,ze as BufferAttribute,ve as BufferGeometry,Yh as BufferGeometryLoader,$u as ByteType,Gi as Cache,Br as Camera,yy as CameraHelper,N0 as CanvasRenderer,Bh as CanvasTexture,Aa as CatmullRomCurve3,Ju as CineonToneMapping,mr as CircleBufferGeometry,mr as CircleGeometry,At as ClampToEdgeWrapping,eu as Clock,se as Color,Ga as ColorKeyframeTrack,wa as CompressedTexture,Jx as CompressedTextureLoader,gr as ConeBufferGeometry,gr as ConeGeometry,Ys as CubeCamera,Jn as CubeReflectionMapping,Yn as CubeRefractionMapping,qi as CubeTexture,Wh as CubeTextureLoader,Dr as CubeUVReflectionMapping,Ws as CubeUVRefractionMapping,so as CubicBezierCurve,Ca as CubicBezierCurve3,Gh as CubicInterpolant,rl as CullFaceBack,bu as CullFaceFront,Ay as CullFaceFrontBack,Mu as CullFaceNone,It as Curve,zh as CurvePath,Su as CustomBlending,Zu as CustomToneMapping,jn as CylinderBufferGeometry,jn as CylinderGeometry,uy as Cylindrical,Fr as Data3DTexture,Wi as DataArrayTexture,Xn as DataTexture,X0 as DataTexture2DArray,J0 as DataTexture3D,qh as DataTextureLoader,Sy as DataUtils,Oy as DecrementStencilOp,Gy as DecrementWrapStencilOp,qx as DefaultLoadingManager,Wn as DepthFormat,Bi as DepthStencilFormat,va as DepthTexture,Za as DirectionalLight,xy as DirectionalLightHelper,Vh as DiscreteInterpolant,xr as DodecahedronBufferGeometry,xr as DodecahedronGeometry,Fi as DoubleSide,Pu as DstAlphaFactor,Du as DstColorFactor,_0 as DynamicBufferAttribute,t0 as DynamicCopyUsage,dr as DynamicDrawUsage,Ky as DynamicReadUsage,Sa as EdgesGeometry,P0 as EdgesHelper,Gr as EllipseCurve,Ou as EqualDepth,qy as EqualStencilFunc,Fs as EquirectangularReflectionMapping,Bs as EquirectangularRefractionMapping,Ln as Euler,Tn as EventDispatcher,on as ExtrudeBufferGeometry,on as ExtrudeGeometry,l0 as FaceColors,$t as FileLoader,eh as FlatShading,gh as Float16BufferAttribute,A0 as Float32Attribute,ue as Float32BufferAttribute,C0 as Float64Attribute,xh as Float64BufferAttribute,yn as FloatType,Or as Fog,Ur as FogExp2,k0 as Font,V0 as FontLoader,Fh as FramebufferTexture,Di as FrontSide,Nr as Frustum,lu as GLBufferAttribute,i0 as GLSL1,Pl as GLSL3,Gu as GreaterDepth,Hu as GreaterEqualDepth,Zy as GreaterEqualStencilFunc,Jy as GreaterStencilFunc,du as GridHelper,kn as Group,Li as HalfFloatType,ka as HemisphereLight,my as HemisphereLightHelper,Kh as HemisphereLightProbe,br as IcosahedronBufferGeometry,br as IcosahedronGeometry,Zh as ImageBitmapLoader,Ir as ImageLoader,An as ImageUtils,W0 as ImmediateRenderObject,Uy as IncrementStencilOp,Hy as IncrementWrapStencilOp,$n as InstancedBufferAttribute,Qa as InstancedBufferGeometry,au as InstancedInterleavedBuffer,Ma as InstancedMesh,w0 as Int16Attribute,ph as Int16BufferAttribute,E0 as Int32Attribute,mh as Int32BufferAttribute,v0 as Int8Attribute,uh as Int8BufferAttribute,Ku as IntType,Kn as InterleavedBuffer,Sn as InterleavedBufferAttribute,an as Interpolant,Us as InterpolateDiscrete,Os as InterpolateLinear,Mo as InterpolateSmooth,Vy as InvertStencilOp,z0 as JSONLoader,bo as KeepStencilOp,Gt as KeyframeTrack,Ih as LOD,wr as LatheBufferGeometry,wr as LatheGeometry,qs as Layers,O0 as LensFlare,Uu as LessDepth,ia as LessEqualDepth,Xy as LessEqualStencilFunc,Wy as LessStencilFunc,Ht as Light,kr as LightProbe,rn as Line,cu as Line3,mt as LineBasicMaterial,Vr as LineCurve,Nh as LineCurve3,Oa as LineDashedMaterial,ba as LineLoop,o0 as LinePieces,Ct as LineSegments,s0 as LineStrip,bn as LinearEncoding,nt as LinearFilter,Ha as LinearInterpolant,Dy as LinearMipMapLinearFilter,Iy as LinearMipMapNearestFilter,Vi as LinearMipmapLinearFilter,ih as LinearMipmapNearestFilter,qu as LinearToneMapping,Tt as Loader,Vs as LoaderUtils,Va as LoadingManager,ud as LoopOnce,fd as LoopPingPong,dd as LoopRepeat,rd as LuminanceAlphaFormat,id as LuminanceFormat,Ey as MOUSE,ot as Material,Jh as MaterialLoader,r0 as Math,r0 as MathUtils,dt as Matrix3,de as Matrix4,cl as MaxEquation,ct as Mesh,ln as MeshBasicMaterial,js as MeshDepthMaterial,Ks as MeshDistanceMaterial,h0 as MeshFaceMaterial,za as MeshLambertMaterial,Ua as MeshMatcapMaterial,Na as MeshNormalMaterial,Fa as MeshPhongMaterial,Da as MeshPhysicalMaterial,ho as MeshStandardMaterial,Ba as MeshToonMaterial,ll as MinEquation,zs as MirroredRepeatWrapping,ku as MixOperation,u0 as MultiMaterial,al as MultiplyBlending,ks as MultiplyOperation,ut as NearestFilter,Py as NearestMipMapLinearFilter,Ly as NearestMipMapNearestFilter,sa as NearestMipmapLinearFilter,ra as NearestMipmapNearestFilter,Nu as NeverDepth,ky as NeverStencilFunc,_n as NoBlending,a0 as NoColors,vn as NoToneMapping,ga as NormalAnimationBlendMode,Ri as NormalBlending,Vu as NotEqualDepth,Yy as NotEqualStencilFunc,Rr as NumberKeyframeTrack,Be as Object3D,Yx as ObjectLoader,xd as ObjectSpaceNormalMap,Ui as OctahedronBufferGeometry,Ui as OctahedronGeometry,Cu as OneFactor,Iu as OneMinusDstAlphaFactor,Fu as OneMinusDstColorFactor,nh as OneMinusSrcAlphaFactor,Lu as OneMinusSrcColorFactor,zr as OrthographicCamera,Qc as PCFShadowMap,wu as PCFSoftShadowMap,la as PMREMGenerator,H0 as ParametricGeometry,f0 as Particle,g0 as ParticleBasicMaterial,p0 as ParticleSystem,x0 as ParticleSystemMaterial,yr as Path,pt as PerspectiveCamera,Xt as Plane,zi as PlaneBufferGeometry,zi as PlaneGeometry,vy as PlaneHelper,d0 as PointCloud,m0 as PointCloudMaterial,Ja as PointLight,fy as PointLightHelper,Hr as Points,Qn as PointsMaterial,gy as PolarGridHelper,sn as PolyhedronBufferGeometry,sn as PolyhedronGeometry,ey as PositionalAudio,He as PropertyBinding,nu as PropertyMixer,oo as QuadraticBezierCurve,ao as QuadraticBezierCurve3,yt as Quaternion,Ji as QuaternionKeyframeTrack,kh as QuaternionLinearInterpolant,pa as REVISION,gd as RGBADepthPacking,wt as RGBAFormat,cd as RGBAIntegerFormat,Al as RGBA_ASTC_10x10_Format,Sl as RGBA_ASTC_10x5_Format,El as RGBA_ASTC_10x6_Format,Tl as RGBA_ASTC_10x8_Format,Cl as RGBA_ASTC_12x10_Format,Rl as RGBA_ASTC_12x12_Format,gl as RGBA_ASTC_4x4_Format,xl as RGBA_ASTC_5x4_Format,yl as RGBA_ASTC_5x5_Format,_l as RGBA_ASTC_6x5_Format,vl as RGBA_ASTC_6x6_Format,Ml as RGBA_ASTC_8x5_Format,bl as RGBA_ASTC_8x6_Format,wl as RGBA_ASTC_8x8_Format,Ll as RGBA_BPTC_Format,ml as RGBA_ETC2_EAC_Format,fl as RGBA_PVRTC_2BPPV1_Format,dl as RGBA_PVRTC_4BPPV1_Format,yo as RGBA_S3TC_DXT1_Format,_o as RGBA_S3TC_DXT3_Format,vo as RGBA_S3TC_DXT5_Format,nd as RGBFormat,hd as RGB_ETC1_Format,pl as RGB_ETC2_Format,ul as RGB_PVRTC_2BPPV1_Format,hl as RGB_PVRTC_4BPPV1_Format,xo as RGB_S3TC_DXT1_Format,ad as RGFormat,ld as RGIntegerFormat,Ia as RawShaderMaterial,Rn as Ray,cy as Raycaster,ja as RectAreaLight,sd as RedFormat,od as RedIntegerFormat,Xu as ReinhardToneMapping,Ns as RepeatWrapping,zy as ReplaceStencilOp,Tu as ReverseSubtractEquation,Sr as RingBufferGeometry,Sr as RingGeometry,Qs as Scene,U0 as SceneUtils,Fe as ShaderChunk,Jt as ShaderLib,Bt as ShaderMaterial,Pa as ShadowMaterial,Yt as Shape,Oi as ShapeBufferGeometry,Oi as ShapeGeometry,by as ShapePath,Zt as ShapeUtils,ju as ShortType,ro as Skeleton,hu as SkeletonHelper,no as SkinnedMesh,Ry as SmoothShading,Cn as Sphere,Hi as SphereBufferGeometry,Hi as SphereGeometry,hy as Spherical,Ka as SphericalHarmonics3,lo as SplineCurve,qa as SpotLight,dy as SpotLightHelper,to as Sprite,eo as SpriteMaterial,th as SrcAlphaFactor,Bu as SrcAlphaSaturateFactor,Ru as SrcColorFactor,e0 as StaticCopyUsage,ur as StaticDrawUsage,jy as StaticReadUsage,$x as StereoCamera,n0 as StreamCopyUsage,$y as StreamDrawUsage,Qy as StreamReadUsage,ti as StringKeyframeTrack,Eu as SubtractEquation,ol as SubtractiveBlending,Ty as TOUCH,ki as TangentSpaceNormalMap,Er as TetrahedronBufferGeometry,Er as TetrahedronGeometry,G0 as TextGeometry,ht as Texture,Xh as TextureLoader,Tr as TorusBufferGeometry,Tr as TorusGeometry,Ar as TorusKnotBufferGeometry,Ar as TorusKnotGeometry,st as Triangle,By as TriangleFanDrawMode,Fy as TriangleStripDrawMode,pd as TrianglesDrawMode,Cr as TubeBufferGeometry,Cr as TubeGeometry,ma as UVMapping,S0 as Uint16Attribute,Xs as Uint16BufferAttribute,T0 as Uint32Attribute,Js as Uint32BufferAttribute,M0 as Uint8Attribute,dh as Uint8BufferAttribute,b0 as Uint8ClampedAttribute,fh as Uint8ClampedBufferAttribute,fo as Uniform,re as UniformsLib,Wd as UniformsUtils,Zn as UnsignedByteType,Pi as UnsignedInt248Type,Is as UnsignedIntType,Qu as UnsignedShort4444Type,ed as UnsignedShort5551Type,hr as UnsignedShortType,sr as VSMShadowMap,Z as Vector2,S as Vector3,qe as Vector4,Lr as VectorKeyframeTrack,y0 as Vertex,c0 as VertexColors,Dh as VideoTexture,Lh as WebGL1Renderer,ch as WebGL3DRenderTarget,lh as WebGLArrayRenderTarget,Zs as WebGLCubeRenderTarget,hh as WebGLMultipleRenderTargets,q0 as WebGLMultisampleRenderTarget,St as WebGLRenderTarget,B0 as WebGLRenderTargetCube,Je as WebGLRenderer,cx as WebGLUtils,La as WireframeGeometry,I0 as WireframeHelper,Hs as WrapAroundEnding,D0 as XHRLoader,Si as ZeroCurvatureEnding,Au as ZeroFactor,Ei as ZeroSlopeEnding,Ny as ZeroStencilOp,oa as _SRGBAFormat,je as sRGBEncoding};\n/**\n * @license\n * Copyright 2010-2022 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\n", "/* esm.sh - esbuild bundle(three@0.138.2/examples/jsm/interactive/HTMLMesh) es2021 production */\nimport{CanvasTexture as L,LinearFilter as E,Mesh as T,MeshBasicMaterial as B,PlaneGeometry as R,sRGBEncoding as y}from\"/v66/three@0.138.2/es2021/three.js\";var I=class extends T{constructor(a){let p=new M(a),f=new R(p.image.width*.001,p.image.height*.001),u=new B({map:p,toneMapped:!1});super(f,u);function d(g){u.map.dispatchDOMEvent(g)}this.addEventListener(\"mousedown\",d),this.addEventListener(\"mousemove\",d),this.addEventListener(\"mouseup\",d),this.addEventListener(\"click\",d),this.dispose=function(){f.dispose(),u.dispose(),u.map.dispose(),this.removeEventListener(\"mousedown\",d),this.removeEventListener(\"mousemove\",d),this.removeEventListener(\"mouseup\",d),this.removeEventListener(\"click\",d)}}},M=class extends L{constructor(a){super(x(a));this.dom=a,this.anisotropy=16,this.encoding=y,this.minFilter=E,this.magFilter=E;let p=new MutationObserver(()=>{this.scheduleUpdate||(this.scheduleUpdate=setTimeout(()=>this.update(),16))}),f={attributes:!0,childList:!0,subtree:!0,characterData:!0};p.observe(a,f),this.observer=p}dispatchDOMEvent(a){a.data&&k(this.dom,a.type,a.data.x,a.data.y)}update(){this.image=x(this.dom),this.needsUpdate=!0,this.scheduleUpdate=null}dispose(){this.observer&&this.observer.disconnect(),this.scheduleUpdate=clearTimeout(this.scheduleUpdate),super.dispose()}},C=new WeakMap;function x(h){let a=document.createRange();function p(t){let e=[],s=!1;function i(){if(s&&(s=!1,t.restore()),e.length===0)return;let r=-1/0,c=-1/0,m=1/0,o=1/0;for(let v=0;vn.left&&pn.top&&f= prevTime + 1000 ) {\n\n\t\t\t\tfpsPanel.update( ( frames * 1000 ) / ( time - prevTime ), 100 );\n\n\t\t\t\tprevTime = time;\n\t\t\t\tframes = 0;\n\n\t\t\t\tif ( memPanel ) {\n\n\t\t\t\t\tvar memory = performance.memory;\n\t\t\t\t\tmemPanel.update( memory.usedJSHeapSize / 1048576, memory.jsHeapSizeLimit / 1048576 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn time;\n\n\t\t},\n\n\t\tupdate: function () {\n\n\t\t\tbeginTime = this.end();\n\n\t\t},\n\n\t\t// Backwards Compatibility\n\n\t\tdomElement: container,\n\t\tsetMode: showPanel\n\n\t};\n\n};\n\nStats.Panel = function ( name, fg, bg ) {\n\n\tvar min = Infinity, max = 0, round = Math.round;\n\tvar PR = round( window.devicePixelRatio || 1 );\n\n\tvar WIDTH = 80 * PR, HEIGHT = 48 * PR,\n\t\tTEXT_X = 3 * PR, TEXT_Y = 2 * PR,\n\t\tGRAPH_X = 3 * PR, GRAPH_Y = 15 * PR,\n\t\tGRAPH_WIDTH = 74 * PR, GRAPH_HEIGHT = 30 * PR;\n\n\tvar canvas = document.createElement( 'canvas' );\n\tcanvas.width = WIDTH;\n\tcanvas.height = HEIGHT;\n\tcanvas.style.cssText = 'width:80px;height:48px';\n\n\tvar context = canvas.getContext( '2d' );\n\tcontext.font = 'bold ' + ( 9 * PR ) + 'px Helvetica,Arial,sans-serif';\n\tcontext.textBaseline = 'top';\n\n\tcontext.fillStyle = bg;\n\tcontext.fillRect( 0, 0, WIDTH, HEIGHT );\n\n\tcontext.fillStyle = fg;\n\tcontext.fillText( name, TEXT_X, TEXT_Y );\n\tcontext.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT );\n\n\tcontext.fillStyle = bg;\n\tcontext.globalAlpha = 0.9;\n\tcontext.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT );\n\n\treturn {\n\n\t\tdom: canvas,\n\n\t\tupdate: function ( value, maxValue ) {\n\n\t\t\tmin = Math.min( min, value );\n\t\t\tmax = Math.max( max, value );\n\n\t\t\tcontext.fillStyle = bg;\n\t\t\tcontext.globalAlpha = 1;\n\t\t\tcontext.fillRect( 0, 0, WIDTH, GRAPH_Y );\n\t\t\tcontext.fillStyle = fg;\n\t\t\tcontext.fillText( round( value ) + ' ' + name + ' (' + round( min ) + '-' + round( max ) + ')', TEXT_X, TEXT_Y );\n\n\t\t\tcontext.drawImage( canvas, GRAPH_X + PR, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT, GRAPH_X, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT );\n\n\t\t\tcontext.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT );\n\n\t\t\tcontext.fillStyle = bg;\n\t\t\tcontext.globalAlpha = 0.9;\n\t\t\tcontext.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, round( ( 1 - ( value / maxValue ) ) * GRAPH_HEIGHT ) );\n\n\t\t}\n\n\t};\n\n};\n\nexport default Stats;\n", "import {\n GLTFLoader,\n} from \"../../Deps/ThreeJSM.ts\";\nimport { Three } from \"../../Deps/Three.ts\";\nimport { IThreeJSObject3D } from \"../API.ts\";\nimport { ThreeJSComponent } from \"./ThreeJSComponent.ts\";\n\nexport type GLTFMeshData = {\n url: string;\n shadowsEnabled?: boolean;\n hide?: boolean,\n};\n\nexport class GLTFMesh extends ThreeJSComponent\n implements IThreeJSObject3D {\n createThreeObject = async (): Promise => {\n const loader = new GLTFLoader();\n const gltf = await loader.loadAsync(this.data!.url);\n const mesh = gltf.scene as Three.Object3D\n\n mesh.castShadow = this.data!.shadowsEnabled ?? true;\n mesh.receiveShadow = this.data!.shadowsEnabled ?? true;\n\n return mesh;\n };\n\n getDefaultData = (): GLTFMeshData => ({\n url: \"./assets/fox_flask.glb\",\n });\n}\n", "import { Three } from '../../Deps/Three.ts';\nimport { IThreeJSObject3D } from '../API.ts';\nimport { ThreeJSComponent } from './ThreeJSComponent.ts';\n\ntype EmptyProps = {};\n\nexport class Empty extends ThreeJSComponent implements IThreeJSObject3D {\n\t_threeObject: Three.Object3D | null = null;\n\n\tcreateThreeObject = (): Promise => {\n\t\treturn Promise.resolve(new Three.Group());\n\t};\n}\n", "import { GLTFLoader, HTMLMesh, ThreeStats } from '../../Deps/ThreeJSM.ts';\nimport { Three } from '../../Deps/Three.ts';\nimport { ThreeJSComponent } from './ThreeJSComponent.ts';\nexport type StatsData = {};\n\nconst Stats = function () {\n\tlet mode = 0;\n\tconst container = document.createElement('div');\n\tcontainer.style.cssText =\n\t\t'position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000';\n\tcontainer.addEventListener('click', function (event) {\n\t\tevent.preventDefault();\n\t\tshowPanel(++mode % container.children.length);\n\t}, false);\n\n\t//\n\n\tfunction addPanel(panel) {\n\t\tcontainer.appendChild(panel.dom);\n\t\treturn panel;\n\t}\n\n\tfunction showPanel(id) {\n\t\tfor (var i = 0; i < container.children.length; i++) {\n\t\t\t(container.children[i] as HTMLElement).style.display = i === id\n\t\t\t\t? 'block'\n\t\t\t\t: 'none';\n\t\t}\n\n\t\tmode = id;\n\t}\n\n\t//\n\n\tlet beginTime = (performance || Date).now(),\n\t\tprevTime = beginTime,\n\t\tframes = 0;\n\n\tconst fpsPanel = addPanel(Stats.Panel('FPS', '#0ff', '#002'));\n\tconst msPanel = addPanel(Stats.Panel('MS', '#0f0', '#020'));\n\n let memPanel\n\tif (self.performance && (self.performance as any).memory) {\n memPanel = addPanel(Stats.Panel('MB', '#f08', '#201'));\n\t}\n\n\tshowPanel(0);\n\n\treturn {\n\t\tREVISION: 16,\n\n\t\tdom: container,\n\n\t\taddPanel: addPanel,\n\t\tshowPanel: showPanel,\n\n\t\tbegin: function () {\n\t\t\tbeginTime = (performance || Date).now();\n\t\t},\n\n\t\tend: function () {\n\t\t\tframes++;\n\n\t\t\tconst time = (performance || Date).now();\n\n\t\t\tif (time >= prevTime + 1000) {\n msPanel.update(time - beginTime, 200);\n\t\t\t\tfpsPanel.update((frames * 1000) / (time - prevTime), 100);\n\n\t\t\t\tprevTime = time;\n\t\t\t\tframes = 0;\n\n\t\t\t\tif (memPanel) {\n\t\t\t\t\tconst memory = (performance as any).memory;\n\t\t\t\t\tmemPanel.update(\n\t\t\t\t\t\tmemory.usedJSHeapSize / 1048576,\n\t\t\t\t\t\tmemory.jsHeapSizeLimit / 1048576,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn time;\n\t\t},\n\n\t\tupdate: function () {\n\t\t\tbeginTime = this.end();\n\t\t},\n\n\t\t// Backwards Compatibility\n\n\t\tdomElement: container,\n\t\tsetMode: showPanel,\n\t};\n};\n\nStats.Panel = function (name, fg, bg) {\n\tlet min = Infinity, max = 0;\n\tconst round = Math.round;\n\tconst PR = round(window.devicePixelRatio || 1);\n\n\tconst WIDTH = 80 * PR,\n\t\tHEIGHT = 48 * PR,\n\t\tTEXT_X = 3 * PR,\n\t\tTEXT_Y = 2 * PR,\n\t\tGRAPH_X = 3 * PR,\n\t\tGRAPH_Y = 15 * PR,\n\t\tGRAPH_WIDTH = 74 * PR,\n\t\tGRAPH_HEIGHT = 30 * PR;\n\n\tconst canvas = document.createElement('canvas');\n\tcanvas.width = WIDTH;\n\tcanvas.height = HEIGHT;\n\tcanvas.style.cssText = 'width:80px;height:48px';\n\n\tconst context = canvas.getContext('2d')!;\n\tcontext.font = 'bold ' + (9 * PR) + 'px Helvetica,Arial,sans-serif';\n\tcontext.textBaseline = 'top';\n\n\tcontext.fillStyle = bg;\n\tcontext.fillRect(0, 0, WIDTH, HEIGHT);\n\n\tcontext.fillStyle = fg;\n\tcontext.fillText(name, TEXT_X, TEXT_Y);\n\tcontext.fillRect(GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT);\n\n\tcontext.fillStyle = bg;\n\tcontext.globalAlpha = 0.9;\n\tcontext.fillRect(GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT);\n\n\treturn {\n\t\tdom: canvas,\n\n\t\tupdate: function (value, maxValue) {\n\t\t\tmin = Math.min(min, value);\n\t\t\tmax = Math.max(max, value);\n\n\t\t\tcontext.fillStyle = bg;\n\t\t\tcontext.globalAlpha = 1;\n\t\t\tcontext.fillRect(0, 0, WIDTH, GRAPH_Y);\n\t\t\tcontext.fillStyle = fg;\n\t\t\tcontext.fillText(\n\t\t\t\tround(value) + ' ' + name + ' (' + round(min) + '-' +\n\t\t\t\t\tround(max) + ')',\n\t\t\t\tTEXT_X,\n\t\t\t\tTEXT_Y,\n\t\t\t);\n\n\t\t\tcontext.drawImage(\n\t\t\t\tcanvas,\n\t\t\t\tGRAPH_X + PR,\n\t\t\t\tGRAPH_Y,\n\t\t\t\tGRAPH_WIDTH - PR,\n\t\t\t\tGRAPH_HEIGHT,\n\t\t\t\tGRAPH_X,\n\t\t\t\tGRAPH_Y,\n\t\t\t\tGRAPH_WIDTH - PR,\n\t\t\t\tGRAPH_HEIGHT,\n\t\t\t);\n\n\t\t\tcontext.fillRect(\n\t\t\t\tGRAPH_X + GRAPH_WIDTH - PR,\n\t\t\t\tGRAPH_Y,\n\t\t\t\tPR,\n\t\t\t\tGRAPH_HEIGHT,\n\t\t\t);\n\n\t\t\tcontext.fillStyle = bg;\n\t\t\tcontext.globalAlpha = 0.9;\n\t\t\tcontext.fillRect(\n\t\t\t\tGRAPH_X + GRAPH_WIDTH - PR,\n\t\t\t\tGRAPH_Y,\n\t\t\t\tPR,\n\t\t\t\tround((1 - (value / maxValue)) * GRAPH_HEIGHT),\n\t\t\t);\n\t\t},\n\t};\n};\n\nexport class Stats3D extends ThreeJSComponent {\n\tthreeStats: ReturnType | null = null;\n\tthreeMesh: Three.Mesh | null = null;\n\tcounter: number = 0;\n\n\tcreateThreeObject = () => {\n\t\tthis.threeStats = Stats();\n\t\tdocument.body.appendChild(this.threeStats.dom);\n\t\tthis.threeStats.dom.style.position = 'absolute';\n\t\tthis.threeStats.dom.style.left = '160px';\n\t\tthis.threeStats.dom.style.top = '30px';\n\t\tthis.threeStats.dom.style.width = '80px';\n\t\tthis.threeStats.dom.style.height = '48px';\n\n\t\t// @ts-ignore\n\t\tthis.threeMesh = new HTMLMesh(this.threeStats.dom);\n\t\t// this.threeMesh!.position.x = - 0.75;\n\t\t// this.threeMesh!.position.y = 2;\n\t\t// this.threeMesh!.position.z = - 0.6;\n\t\t// this.threeMesh!.rotation.y = Math.PI / 4;\n\t\tthis.threeMesh!.scale.setScalar(2.5);\n\n\t\treturn Promise.resolve(this.threeMesh!);\n\t};\n\n\tupdate = () => {\n\t\t// if (++this.counter % 30 === 0) {\n\t\tthis.threeStats!.update();\n\t\t//@ts-ignore\n\t\tthis.threeMesh!.material.map.update();\n\t\t// }\n\t};\n}\n", "import { XR } from './XR.ts';\n\nexport enum Key {\n\tforward,\n\tleft,\n\tright,\n\tback,\n\tsprint,\n\tgrab,\n}\n\nexport enum Button {\n\tgrabL,\n\tgrabR,\n\tshootL,\n\tshootR,\n}\n\nexport enum ButtonState {\n\tidle,\n\tdown,\n\tpressed,\n\tup,\n}\n\nexport enum Axis {\n\tmoveX,\n\tmoveZ,\n\tlookX,\n\tlookY,\n}\n\n// internally:\n// keydown, keyup\n// frame1: keydown\n// frame2: keyup\n\nexport class Input {\n\t// idle -> down -> pressed -> pressed -> up -> idle\n\tprivate static keyMapKeys: string[] = [];\n\tprivate static keyMap: Map = new Map();\n\tprivate static buttons: Map = new Map();\n\tprivate static buttonsNext: Map = new Map();\n\n\tprivate static clicking = false;\n\tprivate static dragging = false;\n\tprivate static lastPointerXY: [number, number] = [0, 0];\n\tprivate static deltaXY: [number, number] = [0, 0];\n\n\tstatic _initialize() {\n\t\tdocument.addEventListener('pointerdown', (event) => {\n\t\t\tthis.lastPointerXY = [event.clientX, event.clientY];\n\t\t\tthis.deltaXY[0] = 0;\n\t\t\tthis.deltaXY[1] = 0;\n\t\t\tthis.clicking = true;\n\t\t});\n\t\tdocument.addEventListener('pointermove', (event) => {\n\t\t\tif (this.clicking) {\n\t\t\t\tthis.dragging = true;\n\t\t\t} else {\n\t\t\t\tthis.dragging = false;\n\t\t\t}\n\t\t\tconst deltaX = event.clientX - this.lastPointerXY[0];\n\t\t\tconst deltaY = event.clientY - this.lastPointerXY[1];\n\t\t\tthis.lastPointerXY[0] = event.clientX;\n\t\t\tthis.lastPointerXY[1] = event.clientY;\n\t\t\tthis.deltaXY[0] = deltaX;\n\t\t\tthis.deltaXY[1] = deltaY;\n\t\t\t// Input.keysNext.set(Key.lookX, [ButtonState.pressed, ButtonState.down]);\n\t\t\t// Input.keysNext.set(Key.lookY, [ButtonState.pressed, ButtonState.down]);\n\t\t});\n\n\t\tdocument.addEventListener('pointerup', (event) => {\n\t\t\tthis.clicking = false;\n\t\t\tthis.dragging = false;\n\t\t\tthis.deltaXY[0] = 0;\n\t\t\tthis.deltaXY[1] = 0;\n\t\t});\n\n\t\tdocument.addEventListener('pointercancel', (event) => {\n\t\t\tthis.clicking = false;\n\t\t\tthis.dragging = false;\n\t\t\tthis.deltaXY[0] = 0;\n\t\t\tthis.deltaXY[1] = 0;\n\t\t});\n\n\t\tdocument.addEventListener('keydown', (event: KeyboardEvent) => {\n\t\t\tconst key = Input.keyMap.get(event.code);\n\t\t\t// qnote('keydown', event.code, key);\n\t\t\tif (key != null) {\n\t\t\t\tthis.addEvent(Input.buttonsNext.get(key)!, ButtonState.down);\n\t\t\t}\n\t\t});\n\n\t\t// keep key down until one full frame has passed\n\t\tdocument.addEventListener('keyup', (event: KeyboardEvent) => {\n\t\t\tconst key = Input.keyMap.get(event.code);\n\t\t\t// qnote('keyup', event.code, key);\n\t\t\tif (key != null) {\n\t\t\t\tthis.addEvent(Input.buttonsNext.get(key)!, ButtonState.up);\n\t\t\t}\n\t\t});\n\n\t\tthis.keyMap.set('KeyW', Key.forward);\n\t\tthis.keyMap.set('KeyA', Key.left);\n\t\tthis.keyMap.set('KeyS', Key.back);\n\t\tthis.keyMap.set('KeyD', Key.right);\n\t\tthis.keyMap.set('ShiftLeft', Key.sprint);\n\n\t\tfor (const [_, key] of Input.keyMap) {\n\t\t\tthis.buttons.set(key, ButtonState.idle);\n\t\t\tthis.buttonsNext.set(key, []);\n\t\t}\n\n\t\tthis.keyMapKeys = [...this.keyMap.keys()]\n\t}\n\n\t// store: [down, up], [down], [up]\n\t// collapse: [up, down] -> [down], [up, down, up] -> [down, up], [down, up, down] -> [down]\n\t// possibilities:\n\t// down, +down x skip\n\t// down, +up --> add\n\t// up, +down xx --> collapse:down\n\t// up, +up x skip\n\tstatic addEvent = (current: ButtonState[], next: ButtonState) => {\n\t\tconst prev = current[current.length - 1];\n\t\tif (current.length == 0) {\n\t\t\t// [] -> [x]\n\t\t\tcurrent.push(next);\n\t\t} else if (\n\t\t\tprev == next ||\n\t\t\t(prev == ButtonState.pressed &&\n\t\t\t\tnext == ButtonState.down)\n\t\t) {\n\t\t\t// skip duplicate\n\t\t\t// [x] -> [x]\n\t\t} else if (\n\t\t\tprev == ButtonState.up &&\n\t\t\tnext == ButtonState.down\n\t\t) {\n\t\t\t// collapse\n\t\t\t// [up, down] -> [down]\n\t\t\tcurrent.pop();\n\t\t\tcurrent.push(next);\n\t\t} else {\n\t\t\t// add\n\t\t\t// [down] -> [down, up]\n\t\t\t// [] -> [x]\n\t\t\tcurrent.push(next);\n\t\t}\n\n\t\t// [down, down] --> [down]\n\t\tif (\n\t\t\tcurrent.length > 2 &&\n\t\t\tprev == current[current.length - 2]\n\t\t) {\n\t\t\tcurrent.pop();\n\t\t}\n\t};\n\n\tstatic _update = () => {\n\t\t// if (this.clicking) {\n\t\t// \tconst [x, y] = this.lastPointerXY;\n\t\t// \tthis.lastPointerXY[0] = x\n\t\t// \tthis.lastPointerXY[1] = y\n\t\t// }\n\t\tif (this.dragging) {\n\t\t\tthis.dragging = false;\n\t\t} else {\n\t\t\tthis.deltaXY[0] = 0;\n\t\t\tthis.deltaXY[1] = 0;\n\t\t}\n\n\t\tfor (let i = 0; i < this.keyMapKeys.length; i++) {\n\t\t\tconst key = this.keyMap.get(this.keyMapKeys[i])!;\n\t\t\t// pop latest key off keysNext (get next frame)\n\t\t\t// and update keys (progress)\n\t\t\tconst cur = Input.buttons.get(key)!;\n\t\t\tconst next = Input.buttonsNext.get(key)!.pop();\n\t\t\tif (\n\t\t\t\tnext && next != cur &&\n\t\t\t\t!(cur == ButtonState.pressed && next == ButtonState.down)\n\t\t\t) {\n\t\t\t\t// Button changed, and is not pressed -> down\n\t\t\t\t// e.g. up -> down, or down -> up\n\t\t\t\tInput.buttons.set(key, next);\n\t\t\t} else if (\n\t\t\t\tcur === ButtonState.down &&\n\t\t\t\t(next === ButtonState.down || next === ButtonState.pressed)\n\t\t\t) {\n\t\t\t\t// Button was already down, and is still down (down -> pressed)\n\t\t\t\tInput.buttons.set(key, ButtonState.pressed);\n\t\t\t} else if (\n\t\t\t\tcur === ButtonState.up &&\n\t\t\t\t(next == null || next === ButtonState.up ||\n\t\t\t\t\tnext === ButtonState.idle)\n\t\t\t) {\n\t\t\t\t// Button was previously released (up -> idle)\n\t\t\t\tInput.buttons.set(key, ButtonState.idle);\n\t\t\t}\n\t\t\t// else if (!next) {\n\t\t\t// \tInput.keys.set(key, ButtonState.idle);\n\t\t\t// }\n\t\t}\n\t};\n\n\tstatic get mousePosition(): [number, number] {\n\t\treturn this.lastPointerXY;\n\t}\n\n\tstatic getKey(key: Key): boolean {\n\t\tconst state = Input.buttons.get(key);\n\t\treturn state == ButtonState.down || state == ButtonState.pressed;\n\t}\n\n\tstatic getKeyDown(key: Key): boolean {\n\t\treturn Input.buttons.get(key) == ButtonState.down;\n\t}\n\n\tstatic getKeyUp(key: Key): boolean {\n\t\treturn Input.buttons.get(key) == ButtonState.up;\n\t}\n\n\tstatic getButton(btn: Button): boolean {\n\t\tif (!XR.isActive()) {\n\t\t\treturn this.clicking;\n\t\t}\n\t\tif (btn === Button.grabL) {\n\t\t\treturn XR.getController('left')?.gamepad?.buttons[1]?.pressed ??\n\t\t\t\tfalse;\n\t\t}\n\t\tif (btn === Button.grabR) {\n\t\t\treturn XR.getController('right')?.gamepad?.buttons[1]?.pressed ??\n\t\t\t\tfalse;\n\t\t}\n\t\tif (btn === Button.shootL) {\n\t\t\treturn XR.getController('left')?.gamepad?.buttons[0]?.pressed ??\n\t\t\t\tfalse;\n\t\t}\n\t\tif (btn === Button.shootR) {\n\t\t\treturn XR.getController('right')?.gamepad?.buttons[0]?.pressed ??\n\t\t\t\tfalse;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tstatic getAxis(axis: Axis): number {\n\t\tif (axis == Axis.lookX) {\n\t\t\tif (XR.isActive()) {\n\t\t\t\treturn XR.getController('right')?.gamepad?.axes[2] ?? 0;\n\t\t\t}\n\t\t\treturn this.deltaXY[0];\n\t\t} else if (axis === Axis.lookY) {\n\t\t\tif (XR.isActive()) {\n\t\t\t\treturn XR.getController('right')?.gamepad?.axes[3] ?? 0;\n\t\t\t}\n\t\t\treturn this.deltaXY[1];\n\t\t} else if (axis == Axis.moveZ) {\n\t\t\tif (XR.isActive()) {\n\t\t\t\treturn -(XR.getController('left')?.gamepad?.axes[3] ?? 0);\n\t\t\t}\n\t\t\treturn this.getKey(Key.forward)\n\t\t\t\t? 1\n\t\t\t\t: this.getKey(Key.back)\n\t\t\t\t? -1\n\t\t\t\t: 0;\n\t\t} else if (axis === Axis.moveX) {\n\t\t\tif (XR.isActive()) {\n\t\t\t\treturn XR.getController('left')?.gamepad?.axes[2] ?? 0;\n\t\t\t}\n\t\t\treturn this.getKey(Key.left) ? -1 : this.getKey(Key.right) ? 1 : 0;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tstatic snapToCenter = (value: boolean) => {\n\t\t// Input.scene.input.setdra\n\t};\n}\n\n// for (const [code, key] of Input.keyMap) {\n// const pressed = pKey.isDown;\n// const state = Input.keys.get(key);\n// if (\n// pressed &&\n// (state === ButtonState.idle || state === ButtonState.up)\n// ) {\n// Input.keys.set(key, ButtonState.down);\n// } else if (pressed && state === ButtonState.down) {\n// Input.keys.set(key, ButtonState.pressed);\n// } else if (\n// !pressed &&\n// (state === ButtonState.down || state === ButtonState.pressed)\n// ) {\n// Input.keys.set(key, ButtonState.up);\n// } else if (!pressed && state === ButtonState.up) {\n// Input.keys.set(key, ButtonState.idle);\n// }\n// }\n\n// for (const [btn, state] of Input.buttons) {\n// const pressed =\n// btn === Button.primary\n// ? Input.scene.input.activePointer.primaryDown\n// : false;\n\n// if (\n// pressed &&\n// (state === ButtonState.idle || state === ButtonState.up)\n// ) {\n// Input.buttons.set(btn, ButtonState.down);\n// } else if (pressed && state === ButtonState.down) {\n// Input.buttons.set(btn, ButtonState.pressed);\n// } else if (\n// !pressed &&\n// (state === ButtonState.down || state === ButtonState.pressed)\n// ) {\n// Input.buttons.set(btn, ButtonState.up);\n// } else if (!pressed && state === ButtonState.up) {\n// Input.buttons.set(btn, ButtonState.idle);\n// }\n// }\n", "import { Component } from '../../Ontology/Entity/Component.ts';\nimport { Time } from '../../Helpers/Time.ts';\nimport { GLTFMesh } from './GLTFMesh.ts';\nimport { Button, Input } from '../../Helpers/Input.ts';\n\ntype PlayerHandData = {\n\thand: 'left' | 'right';\n};\n\nexport class PlayerHand extends Component {\n\t_mesh: GLTFMesh | null = null;\n\n\tcreate = () => {\n\t\tthis._mesh = this.entity!.getComponent(GLTFMesh);\n\t};\n\n\tupdate = () => {\n\t\tif (\n\t\t\tInput.getButton(\n\t\t\t\tthis.data!.hand === 'left' ? Button.grabL : Button.grabR,\n\t\t\t)\n\t\t) {\n\t\t\t// console.log('fire ', this.data?.hand);\n\t\t}\n\t};\n}\n", "import { Entity, UpdatingEntity } from '../../Ontology/Entity.ts';\nimport { AudioListener } from '../Components/AudioListener.ts';\nimport { XRFollower } from '../Components/XRFollower.ts';\nimport { CubeRenderer } from '../Components/CubeRenderer.ts';\nimport { GLTFMesh } from '../Components/GLTFMesh.ts';\nimport { Component } from '../../Ontology/Entity/Component.ts';\nimport { XR } from '../../Helpers/XR.ts';\nimport { Vector3, Vector3Like } from '../../Helpers/Vector3.ts';\nimport { Quaternion, QuaternionLike } from '../../Helpers/Quaternion.ts';\nimport { qnote } from '../../Helpers/Note.ts';\nimport { Spinner } from '../Components/Spinner.ts';\nimport { Empty } from '../Components/Empty.ts';\nimport { ThreeJSComponent } from '../Components/ThreeJSComponent.ts';\nimport { ThreeJSTransform } from '../Components/ThreeJSTransform.ts';\nimport { Follower } from '../Components/Follower.ts';\nimport { Stats3D } from '../Components/Stats3D.ts';\nimport { Debug } from '../../Helpers/Debug.ts';\nimport { PlayerHand } from \"../Components/PlayerHand.ts\";\n\ntype PlayerXRData = {\n\tisInXR: boolean | null;\n};\n\nexport class PlayerXRComponent extends Component {}\n\nexport class Player extends Entity {\n\tstatic Local: Player | undefined;\n\tstatic Remote: Player | undefined;\n\n\tcreateOverridable = () => {\n\t\tif (this === Player.Local) {\n\t\t\t// Hide face\n\t\t\tthis.asyncLocalInit();\n\t\t} else {\n\t\t\tPlayer.Remote = this;\n\t\t}\n\t};\n\n\tasyncLocalInit = async () => {\n\t\tconst head = this.getChildByName('player-head')!;\n\t\thead.getComponent(ThreeJSComponent)!.visible = false;\n\t\t// head.addComponent(AudioListener, { privacy: 'private' });\n\n\t\t// const torso = this.getChildByName('player-torso')!;\n\t\t// torso.getComponent(Follower)?.setTarget(head.transform!);\n\n\t\tconst isXRPlayer = await XR.isEnabled();\n\n\t\tthis.getComponent(PlayerXRComponent)!.mutate_ALLOC(() => ({\n\t\t\tisInXR: isXRPlayer,\n\t\t}));\n\n\t\tif (!isXRPlayer && this == Player.Local) {\n\t\t\t// qnote('destroying local hands...');\n\t\t\t// this.getChildByName('player-left-hand')!.destroy(null);\n\t\t\t// this.getChildByName('player-right-hand')!.destroy(null);\n\t\t}\n\n\t\t// this.getComponent\t\n\t};\n\n\tgetDefaultBlueprint = () => {\n\t\treturn {\n\t\t\tname: 'player',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tname: 'player-head',\n\t\t\t\t\tentity: new Entity(),\n\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponent: new ThreeJSTransform(),\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tposition: new Vector3(0, 1, 0),\n\t\t\t\t\t\t\t\trotation: Quaternion.identity,\n\t\t\t\t\t\t\t\tscale: Vector3.one,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponent: new XRFollower(),\n\t\t\t\t\t\t\tprivacy: 'private' as const,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponent: new GLTFMesh(),\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\turl: './assets/player-head.glb',\n\t\t\t\t\t\t\t\tflipZ: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t// {\n\t\t\t\t// \tname: 'player-torso',\n\t\t\t\t// \tentity: new Entity(),\n\t\t\t\t// \tcomponents: [\n\t\t\t\t// \t\t{\n\t\t\t\t// \t\t\tcomponent: new ThreeJSTransform(),\n\t\t\t\t// \t\t\tdata: {\n\t\t\t\t// \t\t\t\tposition: new Vector3(0, 1, 0),\n\t\t\t\t// \t\t\t\trotation: Quaternion.identity,\n\t\t\t\t// \t\t\t\tscale: Vector3.one,\n\t\t\t\t// \t\t\t},\n\t\t\t\t// \t\t},\n\t\t\t\t// \t\t{\n\t\t\t\t// \t\t\tcomponent: new GLTFMesh(),\n\t\t\t\t// \t\t\tdata: {\n\t\t\t\t// \t\t\t\turl: './assets/player-torso.glb',\n\t\t\t\t// \t\t\t\tflipZ: true,\n\t\t\t\t// \t\t\t},\n\t\t\t\t// \t\t},\n\t\t\t\t// \t\t// {\n\t\t\t\t// \t\t// \tcomponent: new Follower(),\n\t\t\t\t// \t\t// \tdata: {\n\t\t\t\t// \t\t// \t\toffsetPosition: new Vector3(0, -0.05, 0),\n\t\t\t\t// \t\t// \t\toffsetRotation: new Vector3(0, Math.PI, 0),\n\t\t\t\t// \t\t// \t\tfollowRotation: 'y',\n\t\t\t\t// \t\t// \t}\n\t\t\t\t// \t\t// }\n\t\t\t\t// \t],\n\t\t\t\t// },\n\t\t\t\t{\n\t\t\t\t\tname: 'player-left-hand',\n\t\t\t\t\tentity: new Entity(),\n\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponent: new ThreeJSTransform(),\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\t\t\tx: -0.25,\n\t\t\t\t\t\t\t\t\t// y: 0,\n\t\t\t\t\t\t\t\t\ty: 0.5,\n\t\t\t\t\t\t\t\t\tz: -0.1,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\trotation: Quaternion.identity,\n\t\t\t\t\t\t\t\tscale: Vector3.one.multiply(0.82),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponent: new XRFollower(),\n\t\t\t\t\t\t\tprivacy: 'private' as const,\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tfollow: 'left-hand',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponent: new GLTFMesh(),\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\turl: './assets/player-left-hand.glb',\n\t\t\t\t\t\t\t\toffsetRotateEuler: {\n\t\t\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\t\t\ty: Math.PI * 1.5,\n\t\t\t\t\t\t\t\t\tz: -Math.PI * 0.25,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tflipZ: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponent: new PlayerHand(),\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\thand: 'left'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'player-right-hand',\n\t\t\t\t\tentity: new Entity(),\n\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponent: new ThreeJSTransform(),\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\t\t\tx: 0.25,\n\t\t\t\t\t\t\t\t\t// y: 0,\n\t\t\t\t\t\t\t\t\ty: 0.5,\n\t\t\t\t\t\t\t\t\tz: -0.1,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\trotation: Quaternion.identity,\n\t\t\t\t\t\t\t\tscale: Vector3.one.multiply(0.82),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponent: new XRFollower(),\n\t\t\t\t\t\t\tprivacy: 'private' as const,\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tfollow: 'right-hand',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponent: new GLTFMesh(),\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\turl: './assets/player-right-hand.glb',\n\t\t\t\t\t\t\t\toffsetRotateEuler: {\n\t\t\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\t\t\ty: -Math.PI / 2,\n\t\t\t\t\t\t\t\t\tz: -Math.PI / 4,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tflipZ: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponent: new PlayerHand(),\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\thand: 'right'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'player-ui',\n\t\t\t\t\tprivacy: 'private' as const,\n\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponent: new ThreeJSTransform(),\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tposition: new Vector3(0, 0.5, -1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...(Debug.enabled\n\t\t\t\t\t\t\t? [{\n\t\t\t\t\t\t\t\tcomponent: new Stats3D(),\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t: []),\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t\tcomponents: [\n\t\t\t\t{\n\t\t\t\t\tcomponent: new ThreeJSTransform(),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tposition: Vector3.zero,\n\t\t\t\t\t\trotation: Quaternion.identity,\n\t\t\t\t\t\tscale: Vector3.one,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcomponent: new PlayerXRComponent(),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tisInXR: null,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// dolly target for VR camera\n\t\t\t\t\tcomponent: new Empty(),\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t};\n}\n", "import { Three } from '../../Deps/Three.ts';\nimport { Vector3, Vector3Like } from '../../Helpers/Vector3.ts';\nimport { Quaternion, QuaternionLike } from '../../Helpers/Quaternion.ts';\nimport { ThreeJSComponent } from './ThreeJSComponent.ts';\nimport { IThreeJSObject3D } from \"../API.ts\";\nimport { qnote } from \"../../Helpers/Note.ts\";\nimport { ThreeJSHelper } from \"../../Helpers/ThreeJSHelper.ts\";\n\nexport type CameraData = {\n\tfollow?: boolean;\n};\n\nexport class Camera extends ThreeJSComponent {\n\tstatic main: Camera | null = null;\n\t_threeCamera: Three.PerspectiveCamera | null = null;\n\t_dolly: Three.Object3D | null = null;\n\n\tcreate = async () => {\n\t\tCamera.main = this;\n\t\tthis.super.create();\n\t\tawait null\n\t};\n\t\n\tsetDolly = (dolly: IThreeJSObject3D) => {\n\t\tsetTimeout(() => {\n\t\t\tif (this._threeCamera) {\n\t\t\t\t// dolly.getThreeObject()!.attach(this._threeCamera!);\n\t\t\t\tthis._threeCamera.parent = dolly.getThreeObject()!;\n\t\t\t\tqnote('setDolly1', dolly.getThreeObject());\n\t\t\t}\n\t\t\tthis._dolly = dolly.getThreeObject()!;\n\t\t}, 1000)\n\t\t// this._threeCamera!.parent?.attach();\n\t};\n\t\n\tupdate = () => {\n\t\tif (this._threeCamera == null || !this.data?.follow) {\n\t\t\treturn;\n\t\t}\n\t\tconst pos = this.entity!.transform!.position;\n\t\tconst rot = this.entity!.transform!.rotation;\n\t\tthis._threeCamera.position.copy(ThreeJSHelper.toVec(pos));\n\t\tthis._threeCamera.quaternion.copy(ThreeJSHelper.toQuat(rot));\n\t};\n\n\tcreateThreeObject = (): Promise => {\n\t\tthis._threeCamera = new Three.PerspectiveCamera(\n\t\t\t75,\n\t\t\twindow.innerWidth / window.innerHeight,\n\t\t\t0.01,\n\t\t\t1000,\n\t\t);\n\t\t// this._threeCamera.position.set(0, 0, 0);\n\t\t// this._threeCamera.po\n\n\t\tif (this._dolly != null) {\n\t\t\t// this._dolly.attach(this._threeCamera);\n\t\t\tthis._threeCamera.parent = this._dolly;\n\t\t\tqnote('setDolly2', this._dolly, this._threeCamera);\n\t\t}\n\n\t\treturn Promise.resolve(this._threeCamera);\n\t};\n}\n", "import { IThreeJSObject3D } from \"../API.ts\";\nimport { Three } from \"../../Deps/Three.ts\";\nimport { ThreeJSComponent } from \"./ThreeJSComponent.ts\";\n\nexport type LightData = {\n type?: \"ambient\" | \"directional\" | \"point\" | \"spot\";\n color?: Three.ColorRepresentation;\n intensity?: number;\n};\n\nexport class Light extends ThreeJSComponent implements IThreeJSObject3D {\n createThreeObject = (): Promise => {\n const { color, type, intensity } = this.data!;\n let light;\n if (type == \"point\") {\n light = new Three.PointLight(color, intensity ?? 1, 100);\n } else if (type == \"spot\") {\n light = new Three.SpotLight(color, intensity ?? 1, 100);\n } else if (type == \"ambient\") {\n light = new Three.AmbientLight(color, intensity ?? 1);\n } else {\n light = new Three.DirectionalLight(color, intensity ?? 1);\n }\n const pos = this.transform.data!.position;\n light.position.set(pos.x, pos.y, pos.x);\n return Promise.resolve(light);\n };\n\n getDefaultData = (): LightData => {\n return {\n type: \"point\",\n color: 0xffffff,\n intensity: 0.9,\n };\n };\n}\n", "import { Three } from '../../Deps/Three.ts';\nimport { IThreeJSObject3D } from '../API.ts';\nimport { ThreeJSComponent } from './ThreeJSComponent.ts';\n\ntype CubeRendererProps = {\n\tcolor: number;\n};\n\nexport class CubeRenderer extends ThreeJSComponent implements IThreeJSObject3D {\n\t_threeObject: Three.Object3D | null = null;\n\n\tcreateThreeObject = (): Promise => {\n\t\tconst geometry = new Three.BoxGeometry(\n\t\t\t0.5,\n\t\t\t0.5,\n\t\t\t0.5,\n\t\t);\n\n\t\t// random hex color\n\t\tconst material = new Three.MeshLambertMaterial({\n\t\t\tcolor: this.data?.color ?? this.getRandomColor(),\n\t\t});\n\t\tconst cube = new Three.Mesh(geometry, material);\n\t\tcube.name = 'cube';\n\t\treturn Promise.resolve(cube);\n\t};\n\n\tgetRandomColor = (): number => {\n\t\treturn 0xffffff * Math.random() * 2;\n\t};\n\n\tgetDefaultData = (): CubeRendererProps => {\n\t\treturn {\n\t\t\tcolor: this.getRandomColor(),\n\t\t};\n\t};\n}\n", "import { Three } from \"../../Deps/Three.ts\";\nimport { IThreeJSObject3D } from \"../API.ts\";\nimport { ThreeJSComponent } from \"./ThreeJSComponent.ts\";\n\nexport class CubeRenderer1k extends ThreeJSComponent<{}> implements IThreeJSObject3D {\n _threeObject: Three.InstancedMesh | null = null;\n _positions: Three.Object3D[] = [];\n\n createThreeObject = (): Promise => {\n const geometry = new Three.BoxGeometry(0.1, 0.1, 0.1);\n const material = new Three.MeshLambertMaterial({\n color: 0xffffff * Math.random() * 2,\n });\n const mesh = new Three.InstancedMesh(geometry, material, 1000);\n for (let i = 0; i < 1000; i++) {\n const dummy = new Three.Object3D();\n dummy.position.set(\n Math.random() * 10 - 5,\n Math.random() * 10 - 5,\n Math.random() * 10 - 5,\n );\n dummy.updateMatrix();\n mesh.setMatrixAt(i, dummy.matrix);\n this._positions.push(dummy);\n }\n return Promise.resolve(mesh as unknown as Three.Object3D);\n };\n\n myScale = Math.random();\n\n update = () => {\n for (let i = 0; i < 1000; i++) {\n const dummy = this._positions[i];\n dummy.rotateX(0.1 * Math.random());\n dummy.rotateY(0.1 * Math.random());\n dummy.updateMatrix();\n this._threeObject!.setMatrixAt(i, dummy.matrix);\n }\n this._threeObject!.instanceMatrix.needsUpdate = true;\n };\n}\n", "import { Component } from \"../../Ontology/Entity/Component.ts\";\n\ntype AudioSourceData = {\n sound: string,\n volume: number,\n loop: boolean,\n}\n\nexport class AudioSource extends Component {\n getDefaultData = () => {\n return {\n sound: \"\",\n volume: 1,\n loop: false,\n };\n }\n}", "import { Three } from \"../../Deps/Three.ts\";\nimport { Note } from \"../../Helpers/Note.ts\";\nimport { Empty } from \"../../Helpers/Types.ts\";\nimport { ThreeJSComponent } from \"./ThreeJSComponent.ts\";\n\nexport class AudioListener extends ThreeJSComponent {\n static Instance: AudioListener | undefined;\n\n constructor() {\n super();\n if (AudioListener.Instance) {\n Note.error(\n \"_\",\n \"AudioListener is a singleton and can only be instantiated once.\",\n );\n }\n AudioListener.Instance = this;\n }\n\n createThreeObject = () => {\n return Promise.resolve(new Three.AudioListener());\n };\n}\n", "import { DDSLoader, MTLLoader, OBJLoader } from \"../../Deps/ThreeJSM.ts\";\nimport { Three } from \"../../Deps/Three.ts\";\nimport { Empty } from \"../../Helpers/Types.ts\";\nimport { Component } from \"../../Ontology/Entity/Component.ts\";\nimport { IThreeJSObject3D } from \"../API.ts\";\nimport { ThreeJSComponent } from \"./ThreeJSComponent.ts\";\nimport { Transform } from \"./Transform.ts\";\n\nconst path = \"assets/\";\nconst objName = \"fox2.obj?text\";\nconst mtlName = \"fox2.mtl?text\";\n\nexport class Fox extends ThreeJSComponent implements IThreeJSObject3D {\n createThreeObject = async (): Promise => {\n const manager = new Three.LoadingManager();\n manager.addHandler(/\\.dds$/i, new DDSLoader());\n const materials = await new MTLLoader(manager).setPath(path).loadAsync(\n mtlName,\n ) as any;\n materials.preload();\n\n const group = await new OBJLoader(manager).setPath(path).setMaterials(\n materials,\n ).loadAsync(objName) as Three.Group;\n\n group.scale.set(.15, 0.15, 0.15);\n\n return group;\n };\n}\n", "import { Entity } from \"../../Ontology/Entity.ts\";\nimport { ThreeJSTransform } from \"../Components/ThreeJSTransform.ts\";\n\nexport class SimpleEntity extends Entity {\n getDefaultBlueprint = () => {\n return {\n name: \"simple\",\n components: [\n {\n component: new ThreeJSTransform(),\n data: {\n position: {\n x: 1,\n y: 2,\n z: 3,\n },\n rotation: {\n w: 0,\n x: 0,\n y: 0,\n z: 0,\n },\n },\n },\n ],\n };\n };\n}\n", "// TODO ENSURE THESE ARE CLEANED UP\nconst POLL_FREQUENCY_MS = 100;\nconst MAX_ATTEMPTS = 50;\n\nexport const waitUntilX = async (\n condition,\n callback: Function | undefined = undefined,\n ): Promise => {\n let attempts = 0;\n // wait ms\n while (!condition() && attempts < MAX_ATTEMPTS) {\n await wait(POLL_FREQUENCY_MS);\n attempts++;\n }\n if (attempts >= MAX_ATTEMPTS) {\n return await Promise.reject(new Error(\"Condition not met\"));\n }\n callback && callback();\n return await Promise.resolve();\n };\n\nexport const waitUntil = async (\n condition,\n callback: Function | undefined = undefined,\n): Promise => {\n let attempts = 0;\n // wait ms\n while (!condition() && attempts < MAX_ATTEMPTS) {\n await wait(POLL_FREQUENCY_MS);\n attempts++;\n }\n if (attempts >= MAX_ATTEMPTS) {\n return await Promise.resolve();\n }\n callback && callback();\n return await Promise.resolve();\n};\n\nexport const wait = (ms: number) => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n};\n\n", "import { Component } from '../../Ontology/Entity/Component.ts';\nimport { IObject3D } from '../API.ts';\nimport { Transform } from './Transform.ts';\nimport { OrbitControls as ThreeOrbitControls } from '../../Deps/ThreeJSM.ts';\nimport { Camera } from './Camera.ts';\nimport { waitUntilX } from '../../Helpers/Wait.ts';\nimport { Note, qnote } from '../../Helpers/Note.ts';\nimport { Three } from '../../Deps/Three.ts';\nimport { Empty } from '../../Helpers/Types.ts';\nimport { ThreeJSTransform } from \"./ThreeJSTransform.ts\";\n\nexport class OrbitControls extends Component implements IObject3D {\n\tstatic Instance: OrbitControls | undefined;\n\t_controls: ThreeOrbitControls | undefined;\n\n\tget transform() {\n\t\treturn this.entity!.getComponent(ThreeJSTransform)! as unknown as any;\n\t}\n\n\tcreate = () => {\n\t\tif (OrbitControls.Instance !== undefined) {\n\t\t\tNote.warn('_', 'OrbitControls already exists');\n\t\t\treturn;\n\t\t}\n\t\tOrbitControls.Instance = this;\n\t\tthis.init();\n\t};\n\n\tupdate = () => {\n\t\tif (this._controls == null) {\n\t\t\treturn;\n\t\t}\n\t\tthis._controls.update();\n\t};\n\n\tdestroy = () => {\n\t\tif (this == OrbitControls.Instance) {\n\t\t\tOrbitControls.Instance = undefined;\n\t\t}\n\t};\n\n\tinit = () => {\n\t\twaitUntilX(() => Camera.main?._threeCamera != null, () => {\n\t\t\tqnote(\n\t\t\t\t'OrbitControls',\n\t\t\t\t'init',\n\t\t\t\tCamera.main?._threeCamera,\n\t\t\t\tdocument.getElementById('scene')!,\n\t\t\t);\n\t\t\tthis._controls = new ThreeOrbitControls(\n\t\t\t\tCamera.main!._threeCamera!,\n\t\t\t\tdocument.getElementById('scene')!,\n\t\t\t);\n\t\t\tthis._controls!.target = new Three.Vector3(0, 0.5, 0) as any;\n\t\t});\n\t};\n}\n", "export class Time {\n static deltaTime: number;\n static curTime: number;\n \n static _updateTime(time: number) {\n if (Time.curTime === undefined) {\n Time.curTime = time;\n }\n this.deltaTime = time - this.curTime;\n this.curTime = time;\n }\n}\n", "import { Component } from '../../Ontology/Entity/Component.ts';\nimport { Time } from '../../Helpers/Time.ts';\nimport { Three } from '../../Deps/Three.ts';\nimport { Vector3, Vector3Like } from '../../Helpers/Vector3.ts';\nimport { Quaternion, QuaternionLike } from '../../Helpers/Quaternion.ts';\n\ntype SpinnerData = {\n\tspeed?: number;\n};\n\nexport class Spinner extends Component {\n\t_quat: Quaternion = new Quaternion();\n\t_threeQuat = new Three.Quaternion();\n\t_threeQuat2 = new Three.Quaternion();\n\t\n\t_vectorAxis = new Three.Vector3(0.131, 0.437, 1)\n\n\t_quatLike: QuaternionLike = Quaternion.get_ALLOC();\n\n\tupdate = () => {\n\t\tif (!this.isOwner) {\n\t\t\treturn;\n\t\t}\n\t\tthis.entity?.transform?.mutate_ALLOC((data) => {\n\t\t\tthis._threeQuat.set(data.rotation.x, data.rotation.y, data.rotation.z, data.rotation.w).multiply(\n\t\t\t\tthis._threeQuat2.setFromAxisAngle(this._vectorAxis, Time.deltaTime * this.data!.speed!)\n\t\t\t).normalize();\n\n\t\t\tthis._quat.set(this._threeQuat);\n\t\t\tdata.rotation = this._quat;\n\t\t\treturn data;\n\t\t});\n\t};\n\n\tgetDefaultData = (): SpinnerData => {\n\t\treturn {\n\t\t\tspeed: 2,\n\t\t};\n\t};\n}\n", "import { EntityBlueprintInstance } from '../../Ontology/API.ts';\nimport { Entity } from '../../Ontology/Entity.ts';\nimport { CubeRenderer } from '../Components/CubeRenderer.ts';\nimport { Spinner } from '../Components/Spinner.ts';\nimport { ThreeJSTransform } from '../Components/ThreeJSTransform.ts';\n\nexport class NestedCube extends Entity {\n\tgetDefaultBlueprint = (): EntityBlueprintInstance => ({\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tname: 'baby-CubeRenderer',\n\t\t\t\tentity: new Entity(),\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponent: new ThreeJSTransform(),\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tposition: { x: 0, y: 0, z: 0 },\n\t\t\t\t\t\t\trotation: { x: 0, y: 0, z: 0, w: 1 },\n\t\t\t\t\t\t\tscale: 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponent: new CubeRenderer(),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n name: 'mama-CubeRenderer',\n\t\tcomponents: [\n\t\t\t{\n\t\t\t\tcomponent: new ThreeJSTransform(),\n\t\t\t\tdata: {\n\t\t\t\t\tposition: { x: 0, y: 1, z: 0 },\n\t\t\t\t\trotation: { x: 0, y: 0, z: 0, w: 1 },\n\t\t\t\t\tscale: 1,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponent: new Spinner(),\n\t\t\t\tdata: {\n\t\t\t\t\tspeed: 2,\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t});\n}\n", "export const isNonZero = (value: number, epsilon = 0.001): boolean => {\n\treturn Math.abs(value) > epsilon;\n};\n\n\n// [[a, b, c], [d, e, f]] * [x, y, z] = [a*x + b*y + c*z, d*x + e*y + f*z]\nexport const matmul = (a: number[][], b: number[]): number[] => {\n\tif (a[0].length != b.length) {\n\t\tthrow new Error(`matmul: incompatible dimensions: ${a[0].length} != ${b.length}`);\n\t}\n\tconst result: number[] = [];\n\tfor (let i = 0; i < a.length; i++) {\n\t\tlet sum = 0;\n\t\tfor (let j = 0; j < a[i].length; j++) {\n\t\t\tsum += (a[i][j] * b[j])\n\t\t}\n\t\tresult.push(sum);\n\t}\n\treturn result;\n}", "import { Three } from '../../Deps/Three.ts';\nimport { Axis, Input, Key } from '../../Helpers/Input.ts';\nimport { isNonZero } from '../../Helpers/Math.ts';\nimport { qnote } from '../../Helpers/Note.ts';\nimport { Time } from '../../Helpers/Time.ts';\nimport { Component } from '../../Ontology/Entity/Component.ts';\nimport { Vector3, Vector3Like } from '../../Helpers/Vector3.ts';\nimport { Quaternion, QuaternionLike } from '../../Helpers/Quaternion.ts';\nimport { ThreeJSComponent } from './ThreeJSComponent.ts';\nimport { XR } from '../../Helpers/XR.ts';\nimport { ThreeJSTransform } from \"./ThreeJSTransform.ts\";\nimport { Entity } from \"../../Ontology/Entity.ts\";\n\ntype PlayerControlsData = {\n\tspeed: number;\n};\n\nconst MOVE_DEADZONE = 0.01;\n\nexport class PlayerControls extends Component {\n\tprivate x = 0;\n\tprivate y = 0;\n\t\n\tprivate v = new Vector3()\n\tprivate v2 = new Vector3()\n\n\tprivate q = new Quaternion();\n\tprivate q2 = new Quaternion();\n\n\tprivate justTurned = false;\n\n\tprivate lHand: Entity | null = null;\n\tprivate rHand: Entity | null = null;\n\n\tcreate = () => {\n\t\t// add arrow Helpers\n\t\tif (!this.isOwner) {\n\t\t\treturn;\n\t\t}\n\t};\n\n\n\tprivate __dummy1 = new Vector3();\n\tprivate __dummy2 = new Vector3();\n\tupdate = () => {\n\t\tif (!this.isOwner) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst transform = this.entity!.transform!\n\n\t\tconst playerHead = this.entity?.getChildByName('player-head')\n\t\t\t?.getComponent(ThreeJSComponent);\n\n\t\tconst forward = playerHead!.entity!.transform!.forward(this.__dummy1);\n\t\tforward.y = 0;\n\t\tconst right = playerHead!.entity!.transform!.right(this.__dummy2);\n\t\tright.y = 0\n\n\t\t//translate\n\t\tconst moveX = Input.getAxis(Axis.moveX);\n\t\tconst moveZ = Input.getAxis(Axis.moveZ);\n\t\tconst speed = this.data!.speed * Time.deltaTime *\n\t\t\t(Input.getKey(Key.sprint) ? 1.67 : 1);\n\n\t\t// if (XR.isActive()) {\n\t\t// \tconst zeroedPosition = new Vector3(playerHead!.transform.position)\n\t\t// \tzeroedPosition.y = 1\n\t\t\t\n\t\t// \tthis.entity!.transform!.localPosition = zeroedPosition\n\t\t// }\n\t\t// else {\n\t\t\tif (Math.abs(moveZ) > MOVE_DEADZONE) {\n\t\t\t\tthis.v = this.v.set(transform.data!.position).add(\n\t\t\t\t\tnew Vector3(forward).multiply(-moveZ * speed))\n\t\t\t\ttransform.data!.position.x = this.v.x;\n\t\t\t\ttransform.data!.position.y = 0;\n\t\t\t\ttransform.data!.position.z = this.v.z;\n\t\t\t\ttransform.mutateImmediate(null)\n\t\t\t\t// this.entity?.transform?.mutate((data) => {\n\t\t\t\t// \tconst vec = new Vector3(data.position)!.add(\n\t\t\t\t// \t\tnew Vector3(forward).multiply(-moveZ * speed),\n\t\t\t\t// \t);\n\t\t\t\t// \tdata.position.x = vec.x;\n\t\t\t\t// \tdata.position.y = 0;\n\t\t\t\t// \tdata.position.z = vec.z;\n\t\t\t\t// \treturn data;\n\t\t\t\t// });\n\t\t\t}\n\t\t\tif (Math.abs(moveX) > MOVE_DEADZONE) {\n\t\t\t\tthis.v2 = this.v2.set(transform.data!.position).add(\n\t\t\t\t\tnew Vector3(right).multiply(moveX * speed))\n\t\t\t\ttransform.data!.position.x = this.v2.x;\n\t\t\t\ttransform.data!.position.y = 0;\n\t\t\t\ttransform.data!.position.z = this.v2.z;\n\t\t\t\ttransform.mutateImmediate(null)\n\t\t\t\t// this.entity?.transform?.mutate((data) => {\n\t\t\t\t// \tconst vec = new Vector3(data.position)!.add(\n\t\t\t\t// \t\tnew Vector3(right).multiply(moveX * speed),\n\t\t\t\t// \t);\n\t\t\t\t// \tdata.position.x = vec.x;\n\t\t\t\t// \tdata.position.y = 0;\n\t\t\t\t// \tdata.position.z = vec.z;\n\t\t\t\t// \treturn data;\n\t\t\t\t// });\n\t\t\t}\n\t\t// }\n\n\t\t//rotate\n\t\tif (XR.isActive()) {\n\t\t\tconst turnAmount = Math.PI / 4;\n\t\t\tconst lookX = -Input.getAxis(Axis.lookX);\n\t\t\tconst isTurning = isNonZero(lookX, MOVE_DEADZONE)\n\t\t\tif (isTurning && !this.justTurned) {\n\t\t\t\ttransform.rotation = this.q.set(transform.data!.rotation).rotateY(Math.sign(lookX) * turnAmount)\n\t\t\t\ttransform.mutateImmediate(null);\n\n\t\t\t\t// this.entity?.transform?.mutate((data) => {\n\t\t\t\t// \tdata.rotation = new Quaternion(data.rotation).rotateY(\n\t\t\t\t// \t\tMath.sign(lookX) * turnAmount,\n\t\t\t\t// \t);\n\t\t\t\t// \treturn data;\n\t\t\t\t// });\n\t\t\t\tthis.justTurned = true;\n\t\t\t} else if (this.justTurned && !isTurning) {\n\t\t\t\tthis.justTurned = false;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tconst lookX = Input.getAxis(Axis.lookX);\n\t\t\tconst lookY = Input.getAxis(Axis.lookY);\n\t\n\t\t\tthis.x = this.x + lookX * Time.deltaTime;\n\t\n\t\t\tconst maxAngle = Math.PI / 2 - Math.PI / 8;\n\t\t\tthis.y = Math.min(\n\t\t\t\tMath.max(this.y + lookY * Time.deltaTime, -maxAngle),\n\t\t\t\tmaxAngle,\n\t\t\t);\n\t\n\t\t\tif (isNonZero(lookX)) {\n\t\t\t\ttransform.data!.rotation = this.q.fromEuler_ALLOC(0, -this.x, 0);\n\t\t\t\ttransform.mutateImmediate(null);\n\t\t\t\t// this.entity!.transform!.mutate_ALLOC((data) => {\n\t\t\t\t// \tdata.rotation = this.q.fromEuler_ALLOC(0, -this.x, 0);\n\t\t\t\t// \treturn data;\n\t\t\t\t// });\n\t\t\t}\n\t\t\tif (isNonZero(lookY)) {\n\t\t\t\tconst headTransform = playerHead!.entity!.transform!;\n\t\t\t\theadTransform.data!.rotation = this.q2.fromEuler_ALLOC(-this.y, 0, 0);\n\t\t\t\theadTransform.mutateImmediate(null);\n\n\t\t\t\t// this.entity!.getChildByName(\"player-head\")!.transform!.mutate_ALLOC((data) => {\n\t\t\t\t// \tdata.rotation = this.q2.fromEuler_ALLOC(-this.y, 0, 0);\n\t\t\t\t// \treturn data;\n\t\t\t\t// });\n\t\t\t}\n\t\t}\n\t};\n\n\t_hackFlipAround = () => {\n\t\tthis.x = Math.PI\n\t}\n\n\tsetLHand = (lHand: Entity) => {\n\t\tthis.lHand = lHand;\n\t}\n\n\tsetRHand = (rHand: Entity) => {\n\t\tthis.rHand = rHand;\n\t}\n\n\tgetDefaultData = () => ({\n\t\tspeed: 8,\n\t});\n}\n", "import { Three } from '../../Deps/Three.ts';\nimport { matmul } from '../../Helpers/Math.ts';\nimport { Time } from '../../Helpers/Time.ts';\nimport { Vector3 } from '../../Helpers/Vector3.ts';\nimport { IThreeJSObject3D } from '../API.ts';\nimport { Camera } from './Camera.ts';\nimport { ThreeJSComponent } from './ThreeJSComponent.ts';\n\ntype HypercubeRendererProps = {\n\tcolor: number;\n\twireframe: boolean;\n};\n\nconst frontZ = [0, 1, 2, 3];\nconst backZ = [4, 7, 6, 5];\nconst frontY = [0, 4, 5, 1];\nconst frontX = [1, 5, 6, 2];\nconst backY = [2, 6, 7, 3];\nconst backX = [3, 7, 4, 0];\n\nconst hyper = (indices: number[]) => indices.map(i => i + 8);\n\nexport class HypercubeRenderer extends ThreeJSComponent\n\timplements IThreeJSObject3D {\n\t_threeObject: Three.Object3D | null = null;\n\t_geometry = new Three.BufferGeometry();\n\n\tcreateThreeObject = (): Promise => {\n\t\t// Front, back, thenwrap around top, right, bottom, left\n\t\tconst triangles = [\n\t\t\t...cube(frontZ, backZ),\n\t\t\t...cube(hyper(frontZ), hyper(backZ)),\n\t\t\t...hypercube(frontX, hyper(frontX)),\n\t\t\t...hypercube(frontY, hyper(frontY)),\n\t\t\t...hypercube(frontZ, hyper(frontZ)),\n\t\t\t...hypercube(backZ, hyper(backZ)),\n\t\t\t...hypercube(backY, hyper(backY)),\n\t\t\t...hypercube(backX, hyper(backX)),\n\t\t];\n\n\t\tthis._geometry.setIndex(triangles);\n\t\tthis._geometry.setAttribute(\n\t\t\t'position',\n\t\t\tnew Three.Float32BufferAttribute(this.getVertices(1, 0), 3),\n\t\t);\n\n\t\t// random hex color\n\t\tconst material = new Three.MeshBasicMaterial({\n\t\t\tcolor: this.data?.color ?? this.getRandomColor(),\n\t\t\topacity: 0.5,\n\t\t\ttransparent: true,\n\t\t\twireframe: this.data?.wireframe,\n\t\t});\n\t\tconst mesh = new Three.Mesh(this._geometry, material);\n\t\tmesh.name = 'HypercubeRenderer';\n\t\treturn Promise.resolve(mesh);\n\t};\n\n\tgetVertices = (t: number, d: number): number[] => {\n\t\tconst l = 1; // length of side\n\t\tconst p = l / 2; // half length of side / position\n\t\t// const d = 1; // distance from center\n\t\tlet theta = t; // angle of rotation\n\n\t\tconst vertices4D = [\n\t\t\t// Start CubeRenderer\n\t\t\t[-p, p, p, -p],\n\t\t\t[p, p, p, -p],\n\t\t\t[p, -p, p, -p],\n\t\t\t[-p, -p, p, -p],\n\t\t\t[-p, p, -p, -p],\n\t\t\t[p, p, -p, -p],\n\t\t\t[p, -p, -p, -p],\n\t\t\t[-p, -p, -p, -p],\n\n\t\t\t// End CubeRenderer\n\t\t\t[-p, p, p, p],\n\t\t\t[p, p, p, p],\n\t\t\t[p, -p, p, p],\n\t\t\t[-p, -p, p, p],\n\t\t\t[-p, p, -p, p],\n\t\t\t[p, p, -p, p],\n\t\t\t[p, -p, -p, p],\n\t\t\t[-p, -p, -p, p],\n\t\t];\n\n\t\tconst rotateZW = [\n\t\t\t[1, 0, 0, 0],\n\t\t\t[0, 1, 0, 0],\n\t\t\t[0, 0, Math.cos(theta), -Math.sin(theta)],\n\t\t\t[0, 0, Math.sin(theta), Math.cos(theta)],\n\t\t];\n\n\t\tconst rotateXY = [\n\t\t\t[Math.cos(theta), -Math.sin(theta), 0, 0],\n\t\t\t[Math.sin(theta), Math.cos(theta), 0, 0],\n\t\t\t[0, 0, 1, 0],\n\t\t\t[0, 0, 0, 1],\n\t\t];\n\n\t\tconst vertices3D = vertices4D.flatMap((v) => {\n\t\t\tconst rotated = matmul(rotateXY, matmul(rotateZW, v))\n\t\t\tconst w = 1 - (rotated[3] / d);\n\t\t\tconst vec3 = [\n\t\t\t\trotated[0] * w,\n\t\t\t\trotated[1] * w,\n\t\t\t\trotated[2] * w,\n\t\t\t];\n\n\t\t\treturn vec3;\n\t\t});\n\n\t\treturn vertices3D\n\t};\n\n\tgetRandomColor = (): number => {\n\t\treturn 0xffffff * Math.random() * 2;\n\t};\n\n\tgetDefaultData = (): HypercubeRendererProps => {\n\t\treturn {\n\t\t\tcolor: this.getRandomColor(),\n\t\t\twireframe: true,\n\t\t};\n\t};\n\n\tupdate = () => {\n\t\tthis.super.update();\n\n\t\tconst d =\n\t\t\tVector3.distance(\n\t\t\t\tthis.entity!.transform!.position,\n\t\t\t\tCamera.main!.transform.position,\n\t\t\t);\n\n\t\tthis._geometry.setAttribute(\n\t\t\t'position',\n\t\t\tnew Three.Float32BufferAttribute(\n\t\t\t\tthis.getVertices(Time.curTime, d),\n\t\t\t\t3,\n\t\t\t),\n\t\t);\n\t};\n}\n\n// 0,1,2,3\n// 4,7,6,5\n\n// 0,4,5,1\n// 1,5,6,2\n// 2,6,7,3\n// 3,7,4,0\nconst cube = (front: number[], back: number[]) => {\n\tconst top = [front[0], back[0], back[3], front[1]];\n\tconst right = [front[1], back[3], back[2], front[2]];\n\tconst bottom = [front[2], back[2], back[1], front[3]];\n\tconst left = [front[3], back[1], back[0], front[0]];\n\treturn [front, back, top, left, right, bottom].flatMap(face)\n}\n\n// 0,1,2,3\n// 8,9,10,11\n\n// 0,1,9,8\n// f[0], f[1], b[1], b[0]\nconst hypercube = (front: number[], back: number[]) => {\n\tconst top = [front[0], front[1], back[1], back[0]];\n\tconst right = [front[1], back[1], back[2], front[3]];\n\tconst bottom = [front[2], front[3], back[2], back[3]];\n\tconst left = [front[0], back[0], back[3], front[2]];\n\treturn [front, back, top, left, right, bottom].flatMap(face)\n}\n\n\nconst face = (faceVerts: number[]): number[] => {\n\treturn [\n\t\tfaceVerts[0],\n\t\tfaceVerts[1],\n\t\tfaceVerts[2],\n\t\tfaceVerts[0],\n\t\tfaceVerts[2],\n\t\tfaceVerts[3],\n\t];\n};\n\n// 0 = (-p, p, p)\n// 1 = (p, p, p)\n// 2 = (p, -p, p)\n// 3 = (-p, -p, p)\n\n// 4 = (-p, p, -p)\n// 5 = (p, p, -p)\n// 6 = (p, -p, -p)\n// 7 = (-p, -p, -p)\n\n// const vertices3D = [\n// -p, p, p,\n// p, p, p,\n// p, -p, p,\n// -p, -p, p,\n// -p, p, -p,\n// p, p, -p,\n// p, -p, -p,\n// -p, -p, -p,\n// ];\n", "import { Component } from '../../Ontology/Entity/Component.ts';\nimport { Vector3, Vector3Like } from '../../Helpers/Vector3.ts';\nimport { Quaternion } from '../../Helpers/Quaternion.ts';\nimport { ITransform } from '../../Ontology/API.ts';\n\ntype FollowerData = {\n\toffsetPosition: Vector3Like;\n\toffsetRotation: Vector3Like;\n\tfollowPosition: boolean;\n\tfollowRotation: 'y' | boolean;\n};\n\nexport class Follower extends Component {\n\tenabled = false;\n\ttarget: ITransform | null = null;\n\n\tv = new Vector3();\n\tq = new Quaternion();\n\n\tv2 = new Vector3();\n\n\tcreate = () => {\n\t};\n\n\tupdate = () => {\n\t\tif (!this.enabled || !this.target) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.data!.followPosition) {\n\t\t\tthis.entity!.transform!.position = this.v.set(this.target.position)\n\t\t\t\t.add(this.data!.offsetPosition);\n\t\t}\n\n\t\t// if (this.data!.followRotation === true) {\n\t\t// \tthis.entity!.transform!.rotation = this.q.set(this.target.rotation);\n\t\t// }\n\n\t\tif (this.data!.followRotation === 'y') {\n\t\t\t// this.v2.set(this.target.forward).cross(this.target.up);\n\t\t\tthis.entity!.transform!.localRotation = this.q.fromEuler(0, this.target.rotation.y, 0)\n\t\t\t// this.entity!.transform!.localRotation = this.q.set(this.target.localRotation)\n\t\t}\n\t};\n\n\tsetTarget(target: ITransform) {\n\t\tthis.enabled = true;\n\t\tthis.target = target;\n\t}\n\n\tgetDefaultData = () => ({\n\t\toffsetPosition: Vector3.zero,\n\t\toffsetRotation: Vector3.zero,\n\t\tfollowPosition: true,\n\t\tfollowRotation: true,\n\t});\n}\n", "import { Entity } from \"../../Ontology/Entity.ts\";\nimport { GLTFMesh } from \"../Components/GLTFMesh.ts\";\nimport { ThreeJSTransform } from \"../Components/ThreeJSTransform.ts\";\nimport { Transform } from \"../Components/Transform.ts\";\n\nexport class Gun extends Entity {\n getDefaultBlueprint = () => {\n return {\n name: \"gun\",\n components: [\n {\n component: new ThreeJSTransform(),\n data: {\n position: {\n x: 1,\n y: 2,\n z: 3,\n },\n rotation: {\n w: 0,\n x: 0,\n y: 0,\n z: 0,\n },\n },\n },\n {\n component: new GLTFMesh(),\n data: {\n url: \"./assets/glock.glb\",\n },\n }\n ],\n };\n };\n}\n", "import { GLTFLoader, ThreeStats } from '../../Deps/ThreeJSM.ts';\nimport { Three } from '../../Deps/Three.ts';\nimport { IThreeJSObject3D } from '../API.ts';\nimport { ThreeJSComponent } from './ThreeJSComponent.ts';\nimport { Component } from '../../Ontology/Entity/Component.ts';\nexport type StatsData = {};\n\nexport class Stats2D extends Component {\n threeStats: ReturnType | null = null;\n \n create = () => {\n this.threeStats = ThreeStats();\n document.body.appendChild(this.threeStats.dom)\n this.threeStats.dom.style.position = 'absolute';\n this.threeStats.dom.style.left = '160px';\n this.threeStats.dom.style.top = '30px';\n }\n\n update = () => {\n this.threeStats!.update();\n }\n}", "import { Three } from '../../Deps/Three.ts';\nimport { Component } from '../../Ontology/Entity/Component.ts';\nimport { ThreeJSComponent } from './ThreeJSComponent.ts';\n\n// Renders a grid of relativity spacetime lines using three.js\nexport class RelativityGrid extends ThreeJSComponent {\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tcreateThreeObject = async () => {\n\t\tconst size = 10, divisions = 10;\n\n\t\tconst color1 = new Three.Color(0x444444);\n\t\tconst color2 = new Three.Color(0x888888);\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices: any[] = [], colors: any[] = [];\n\n\t\tfor (let i = 0, j = 0, k = -halfSize; i <= divisions; i++, k += step) {\n\t\t\tvertices.push(-halfSize, 0, k, halfSize, 0, k);\n\t\t\tvertices.push(k, 0, -halfSize, k, 0, halfSize);\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray(colors, j);\n\t\t\tj += 3;\n\t\t\tcolor.toArray(colors, j);\n\t\t\tj += 3;\n\t\t\tcolor.toArray(colors, j);\n\t\t\tj += 3;\n\t\t\tcolor.toArray(colors, j);\n\t\t\tj += 3;\n\t\t}\n\n\t\tconst geometry = new Three.BufferGeometry();\n\t\tgeometry.setAttribute(\n\t\t\t'position',\n\t\t\tnew Three.Float32BufferAttribute(vertices, 3),\n\t\t);\n\t\tgeometry.setAttribute(\n\t\t\t'color',\n\t\t\tnew Three.Float32BufferAttribute(colors, 3),\n\t\t);\n\n\t\tconst material = new Three.LineBasicMaterial({\n\t\t\tvertexColors: true,\n\t\t\ttoneMapped: false,\n\t\t});\n\n\t\tconst lineSegments = new Three.LineSegments(geometry, material);\n\n\t\treturn await Promise.resolve(lineSegments);\n\t};\n}\n", "import { Player, PlayerXRComponent } from './Core/Animus/Entities/Player.ts';\nimport { GaiaNode } from './Core/Gaia/GaiaNode.ts';\nimport { Constructor } from './Core/Helpers/Types.ts';\nimport { meta } from './Core/Ontology/Meta.ts';\nimport { Entity, UpdatingEntity } from './Core/Ontology/Entity.ts';\nimport { Component } from './Core/Ontology/Entity/Component.ts';\nimport { Camera } from './Core/Animus/Components/Camera.ts';\nimport { Light } from './Core/Animus/Components/Light.ts';\nimport { CubeRenderer } from './Core/Animus/Components/CubeRenderer.ts';\nimport { CubeRenderer1k } from './Core/Animus/Components/CubeRenderer1k.ts';\nimport { AudioSource } from './Core/Animus/Components/AudioSource.ts';\nimport { AudioListener } from './Core/Animus/Components/AudioListener.ts';\nimport { XRFollower } from './Core/Animus/Components/XRFollower.ts';\nimport { Fox } from './Core/Animus/Components/Fox.ts';\nimport { GLTFMesh } from './Core/Animus/Components/GLTFMesh.ts';\nimport { SimpleEntity } from './Core/Animus/Entities/Simple.ts';\nimport { OrbitControls } from './Core/Animus/Components/OrbitControls.ts';\nimport { Spinner } from './Core/Animus/Components/Spinner.ts';\nimport { NestedCube } from './Core/Animus/Entities/NestedCube.ts';\nimport { Input } from './Core/Helpers/Input.ts';\nimport { PlayerControls } from \"./Core/Animus/Components/PlayerControls.ts\";\nimport { HypercubeRenderer } from \"./Core/Animus/Components/HypercubeRenderer.ts\";\nimport { Empty } from \"./Core/Animus/Components/Empty.ts\";\nimport { ThreeJSTransform } from \"./Core/Animus/Components/ThreeJSTransform.ts\";\nimport { Follower } from \"./Core/Animus/Components/Follower.ts\";\nimport { Gun } from \"./Core/Animus/Entities/Gun.ts\";\nimport { Stats3D } from \"./Core/Animus/Components/Stats3D.ts\";\nimport { Stats2D } from \"./Core/Animus/Components/Stats2D.ts\";\nimport { RelativityGrid } from \"./Core/Animus/Components/RelativityGrid.ts\";\nimport { PlayerHand } from \"./Core/Animus/Components/PlayerHand.ts\";\n\nconst init = () => {\n\n\t// \uD83D\uDC4B NOTE: ADD EVERY CLASS HERE (!!!)\n\t// This tracks which classes can be instantiated by various commands & across the network.\n\n\t// TODO: Automate this\n\tconst classes: Constructor[] = [\n\t\t// Entities\n\t\tEntity,\n\t\tUpdatingEntity,\n\t\tPlayer,\n\t\tSimpleEntity,\n\t\tNestedCube,\n\t\tGun,\n\t\tPlayerHand,\n\n\t\t// Component\n\t\tEmpty,\n\t\tComponent,\n\t\tThreeJSTransform,\n\t\tRelativityGrid,\n\t\tGaiaNode,\n\t\tLight,\n\t\tCubeRenderer,\n\t\tCubeRenderer1k,\n\t\tHypercubeRenderer,\n\t\tCamera,\n\t\tAudioSource,\n\t\tAudioListener,\n\t\tSpinner,\n\t\tFollower,\n\t\tXRFollower,\n\t\tFox,\n\t\tGLTFMesh,\n\t\tPlayerXRComponent,\n\t\tOrbitControls,\n\t\tPlayerControls,\n\t\tStats2D,\n\t\tStats3D,\n\t];\n\n\tfor (const cls of classes) {\n\t\tmeta.registerClass(cls);\n\t}\n\n\tInput._initialize();\n\n\t// @ts-ignore meta\n\twindow.meta = meta;\n};\n\nexport { init };\n", "import { IObject3D, IScene, IThreeJSObject3D } from \"../API.ts\";\nimport { Three } from \"../../Deps/Three.ts\";\nimport { XR, XRButton } from \"../../Helpers/XR.ts\";\nimport { OrbitControls as ThreeOrbitControls } from \"../../Deps/ThreeJSM.ts\";\nimport { Camera } from \"../Components/Camera.ts\";\nimport { ThreeJSTransform, ThreeJSTransformData } from \"../Components/ThreeJSTransform.ts\";\nimport { qnote } from \"../../Helpers/Note.ts\";\n\nexport class ThreeJSScene implements IScene {\n _objects: IThreeJSObject3D[] = [];\n _scene: Three.Scene;\n _renderer: Three.WebGLRenderer;\n _controls: ThreeOrbitControls | undefined;\n\n _showDebugAxes = false;\n\n constructor() {\n this._scene = new Three.Scene();\n\n this._renderer = new Three.WebGLRenderer({ antialias: true });\n this._renderer.setSize(window.innerWidth, window.innerHeight);\n this._renderer.setClearColor(0x000000);\n\n this.start();\n // this.render();\n }\n\n start = async () => {\n this._renderer.xr.enabled = await XR.isEnabled();\n\n const xrButton = await XRButton.createButton(this._renderer)\n\n if (xrButton != null) {\n document.getElementById(\"scene\")!.appendChild(\n xrButton\n );\n }\n\n document.body.appendChild(this._renderer.domElement);\n console.log(\"xr is enabled ?\", this._renderer.xr.enabled);\n };\n\n getDebugAxes = () => new Three.AxesHelper(10);\n\n add(object: IObject3D | IThreeJSObject3D) {\n const threeObject = \"getThreeObject\" in object\n ? object.getThreeObject()\n : null;\n if (!threeObject) {\n return;\n }\n\n if (object instanceof ThreeJSTransform && object.data!.group) {\n this._scene.add(threeObject);\n const parent = (object.entity?.parent?.transform as unknown as ThreeJSTransform)\n if (parent) {\n qnote('parenting group to ', parent)\n // parent.getThreeObject()?.attach(threeObject);\n threeObject.parent = parent.getThreeObject()\n }\n }\n else {\n this._scene.add(threeObject);\n\n const transform = (object.transform as unknown as ThreeJSTransform)\n if (transform.data!.group) {\n // transform.getThreeObject()!.attach(threeObject);\n threeObject.parent = transform.getThreeObject()!;\n }\n }\n\n this._objects.push(object as IThreeJSObject3D);\n if (this._showDebugAxes) {\n threeObject.add(this.getDebugAxes());\n }\n }\n\n showDebugAxes = (show: boolean) => {\n this._showDebugAxes = show;\n this._objects.forEach((object) => {\n if (show) {\n object.getThreeObject()!.add(this.getDebugAxes());\n }\n });\n };\n\n remove(object: IObject3D | IThreeJSObject3D) {\n const threeObject = \"getThreeObject\" in object\n ? object.getThreeObject()\n : null;\n if (!threeObject) {\n return;\n }\n this._scene.remove(threeObject);\n this._objects.remove(object as IThreeJSObject3D);\n }\n\n render = () => {\n const cam = Camera.main?._threeCamera;\n if (!cam) {\n return;\n }\n this._renderer.render(this._scene, cam);\n };\n}\n", "import { IAxon, WebRTCPeer } from \"../Axon/API.ts\";\n\nconst constraints = {\n audio: true,\n // video: false,\n};\n\nexport class Aer {\n axon: IAxon | null = null;\n\n link = async (axon: IAxon): Promise => {\n this.axon = axon;\n // await this.startReceiving(this.axon!.peer, this.axon!.peer.conn!);\n // await this.startStreaming(this.axon!.peer, this.axon!.peer.conn!);\n // this.axon.onConnected.push(() => this.startStreaming);\n this.axon!.peer.subscribe(\"new-peer\", async () => {\n // await this.startReceiving(this.axon!.peer, this.axon!.peer.conn!);\n // await this.startStreaming(this.axon!.peer, this.axon!.peer.conn!);\n });\n this.axon!.peer.subscribe(\"connected\", async () => {\n // this.axon!.peer!.conn.media\n });\n };\n\n\n startStreaming = async (peer: WebRTCPeer, conn: RTCPeerConnection) => {\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n\n for (const track of stream.getTracks()) {\n console.log(\"adding local track\", track, stream);\n conn.addTrack(track, stream);\n }\n peer.audioInitialized = true\n };\n\n startReceiving = (peer: WebRTCPeer, conn: RTCPeerConnection) => {\n console.log(\"start receiving\");\n // conn.ontrack = this.onTrack\n // conn.removeEventListener('track', this.onTrack);\n\n // why isn't this being called???\n // try something else:\n // conn.addEventListener(\"track\", this.onTrack)\n };\n\n onTrack = (event: RTCTrackEvent) => {\n console.log(\"REMOTE TRACK IS HERE HUZZZZAAAAH\", event.track);\n const audio = document.getElementById(\"remote-audio\");\n const stream = new MediaStream();\n (audio! as any).srcObject = stream;\n stream.addTrack(event.track);\n }\n}\n", "import { Gaia } from './Core/Gaia/mod.ts';\nimport { Vector3, Vector3Like } from './Core/Helpers/Vector3.ts';\nimport { Quaternion, QuaternionLike } from './Core/Helpers/Quaternion.ts';\nimport type { IWorld } from './Core/Ontology/API.ts';\nimport { World } from './Core/Ontology/World.ts';\nimport { Axon } from './Core/Axon/mod.ts';\nimport { IOntologyAxonLink } from './Core/OntologyAxon/API.ts';\nimport { OntologyAxonLink } from './Core/OntologyAxon/mod.ts';\nimport { Player, PlayerXRComponent } from './Core/Animus/Entities/Player.ts';\nimport { init as appInit } from './AppMeta.ts';\nimport { ThreeJSScene } from './Core/Animus/Scene/ThreeJSScene.ts';\nimport { Entity, UpdatingEntity } from './Core/Ontology/Entity.ts';\nimport { Light } from './Core/Animus/Components/Light.ts';\nimport { XRFrame, XRSession } from './Core/Deps/WebXR.ts';\nimport { XR } from './Core/Helpers/XR.ts';\nimport { Time } from './Core/Helpers/Time.ts';\nimport { Aer } from './Core/Aer/Aer.ts';\nimport { GLTFMesh } from './Core/Animus/Components/GLTFMesh.ts';\nimport { Camera } from './Core/Animus/Components/Camera.ts';\nimport { OrbitControls } from './Core/Animus/Components/OrbitControls.ts';\nimport { qnote } from './Core/Helpers/Note.ts';\nimport { waitUntil } from './Core/Helpers/Wait.ts';\nimport { CubeRenderer } from './Core/Animus/Components/CubeRenderer.ts';\nimport { Spinner } from './Core/Animus/Components/Spinner.ts';\nimport { PlayerControls } from './Core/Animus/Components/PlayerControls.ts';\nimport { Input } from './Core/Helpers/Input.ts';\nimport { HypercubeRenderer } from './Core/Animus/Components/HypercubeRenderer.ts';\nimport { Empty } from './Core/Animus/Components/Empty.ts';\nimport { ThreeJSTransform } from './Core/Animus/Components/ThreeJSTransform.ts';\nimport { Stats2D } from './Core/Animus/Components/Stats2D.ts';\nimport { Stats3D } from './Core/Animus/Components/Stats3D.ts';\n\nclass App {\n\taer: Aer;\n\tscene: ThreeJSScene;\n\tworld: IWorld;\n\tgaia: Gaia;\n\tontologyAxonLink: IOntologyAxonLink;\n\txrSession: XRSession | null = null;\n\n\tconstructor() {\n\t\tappInit();\n\n\t\tthis.scene = new ThreeJSScene();\n\t\tthis.world = new World();\n\t\tthis.gaia = new Gaia(this.world, this.scene, Axon);\n\t\tthis.aer = new Aer();\n\n\t\tthis.aer.link(Axon);\n\t\tthis.ontologyAxonLink = new OntologyAxonLink();\n\t\tthis.ontologyAxonLink.link(this.world, this.scene, Axon);\n\n\t\t// @ts-ignore - this is an additional developer tool!\n\t\twindow.gaia = window.g = window.dev = this.gaia;\n\t\t// @ts-ignore - k\n\t\tthis.gaia.app = this;\n\t}\n\n\tcreateScene = async () => {\n\t\tthis.gaia.spawn2(Entity, 'private', [{\n\t\t\tcomponent: new ThreeJSTransform(),\n\t\t\tdata: {\n\t\t\t\tposition: Vector3.zero,\n\t\t\t\trotation: Quaternion.identity,\n\t\t\t\tscale: Vector3.one,\n\t\t\t},\n\t\t}, {\n\t\t\tcomponent: new GLTFMesh(),\n\t\t\tdata: {\n\t\t\t\turl: 'assets/terrain_flat.glb',\n\t\t\t},\n\t\t}]);\n\n\t\tthis.gaia.spawn2(Entity, 'private', [{\n\t\t\tcomponent: new ThreeJSTransform(),\n\t\t\tdata: {\n\t\t\t\tposition: Vector3.zero,\n\t\t\t\trotation: Quaternion.identity,\n\t\t\t\tscale: Vector3.one.multiply(2),\n\t\t\t},\n\t\t}, {\n\t\t\tcomponent: new GLTFMesh(),\n\t\t\tdata: {\n\t\t\t\turl: 'assets/skysphere.glb',\n\t\t\t\tshadowsEnabled: false,\n\t\t\t},\n\t\t}]);\n\n\t\tPlayer.Local = new Player();\n\t\tconst player = this.world.spawn(\n\t\t\tPlayer.Local,\n\t\t\tthis.scene,\n\t\t\tnull,\n\t\t\tthis,\n\t\t);\n\n\t\tplayer.addComponent(PlayerControls, { privacy: 'private' });\n\n\t\tconst playerHead = player.getChildByName('player-head')!;\n\n\t\tconst xrOn = await XR.isEnabled();\n\t\tif (xrOn) {\n\t\t\tconst camera = playerHead.addComponent(Camera, {\n\t\t\t\tprivacy: 'private',\n\t\t\t\tdata: { follow: false },\n\t\t\t}, null);\n\t\t\tcamera!.setDolly(player.getComponent(Empty)!);\n\t\t} else {\n\t\t\tplayerHead.addComponent(Camera, {\n\t\t\t\tprivacy: 'private',\n\t\t\t\tdata: { follow: false },\n\t\t\t}, null);\n\t\t}\n\n\t\tthis.gaia.spawn2(Entity, 'private', [{\n\t\t\tcomponent: new ThreeJSTransform(),\n\t\t\tdata: {\n\t\t\t\tposition: { x: 5, y: 20, z: 5 },\n\t\t\t},\n\t\t}, {\n\t\t\tcomponent: new Light(),\n\t\t\tdata: {\n\t\t\t\ttype: 'point',\n\t\t\t\tcolor: 0x87ceeb,\n\t\t\t\tintensity: 0.9,\n\t\t\t},\n\t\t}]);\n\n\t\t// this.gaia.spawn2(UpdatingEntity, 'private', [{\n\t\t// \tcomponent: new ThreeJSTransform(),\n\t\t// \tdata: {\n\t\t// \t\tposition: { x: 0, y: 1, z: -5 },\n\t\t// \t}\n\t\t// }, {\n\t\t// \tcomponent: new HyperCubeRenderer(),\n\t\t// }])\n\n\t\tthis.gaia.spawn2(Entity, 'private', [{\n\t\t\tcomponent: new ThreeJSTransform(),\n\t\t\tdata: {\n\t\t\t\tposition: { x: 2, y: 10, z: 2 },\n\t\t\t},\n\t\t}, {\n\t\t\tcomponent: new Light(),\n\t\t\tdata: {\n\t\t\t\ttype: 'ambient',\n\t\t\t\tcolor: 0xffffff0,\n\t\t\t\tintensity: 1,\n\t\t\t},\n\t\t}]);\n\n\t\t// this.spawnZeCubeRenderers(5);\n\t\tXR.isEnabled().then((xrOn) => {\n\t\t\tif (xrOn) {\n\t\t\t\tthis.spawnGuideCubes();\n\t\t\t}\n\t\t});\n\t};\n\n\tstart = async () => {\n\t\tawait this.createScene();\n\n\t\t// @ts-ignore this works\n\t\tthis.scene._renderer.setAnimationLoop(this.tick);\n\n\t\tAxon.connect();\n\n\t\tconst getPlayerXREnabled = () =>\n\t\t\tPlayer.Remote?.getComponent(PlayerXRComponent)?.data?.isInXR;\n\n\t\tAxon.subscribe('connected', (isHost: boolean) => {\n\t\t\twaitUntil(() => getPlayerXREnabled() != null, () => {\n\t\t\t\tqnote('other player is in XR? ', getPlayerXREnabled());\n\t\t\t\tif (\n\t\t\t\t\t!isHost || getPlayerXREnabled() === true\n\t\t\t\t) {\n\t\t\t\t\t// Camera.main!.getThreeObject()!.position.z = -1.5;\n\t\t\t\t\tPlayer.Local!.transform!.position = {\n\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\tz: -1.5,\n\t\t\t\t\t};\n\t\t\t\t\tPlayer.Local!.transform!.rotation = new Quaternion()\n\t\t\t\t\t\t.rotateY(Math.PI);\n\t\t\t\t\tPlayer.Local!.getComponent(PlayerControls)\n\t\t\t\t\t\t?._hackFlipAround();\n\t\t\t\t}\n\n\t\t\t\tif (isHost) {\n\t\t\t\t\t// this.spawnZeCubeRenderers(10);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t};\n\n\tspawnGuideCubes = () => {\n\t\t// Spawn two cubes, one in front and higher than the other\n\t\t// So the VR player can see where is forward!\n\t\tconst cube1 = this.gaia.spawn2(Entity, 'private', [{\n\t\t\tcomponent: new ThreeJSTransform(),\n\t\t\tdata: {\n\t\t\t\tposition: { x: 0, y: 0, z: -1 },\n\t\t\t},\n\t\t}, {\n\t\t\tcomponent: new CubeRenderer(),\n\t\t}]);\n\n\t\tconst cube2 = this.gaia.spawn2(Entity, 'private', [{\n\t\t\tcomponent: new ThreeJSTransform(),\n\t\t\tdata: {\n\t\t\t\tposition: { x: 0, y: 0.5, z: 0 },\n\t\t\t},\n\t\t}, {\n\t\t\tcomponent: new CubeRenderer(),\n\t\t}]);\n\t};\n\n\tspawnZeCubeRenderers = (quantity: number) => {\n\t\tfor (let i = 0; i < quantity; i++) {\n\t\t\tthis.gaia.spawn2(UpdatingEntity, undefined, [{\n\t\t\t\tcomponent: new ThreeJSTransform(),\n\t\t\t}, {\n\t\t\t\tcomponent: new CubeRenderer(),\n\t\t\t}, {\n\t\t\t\tcomponent: new Spinner(),\n\t\t\t}]);\n\t\t}\n\t};\n\n\ttick = (time: number, frame?: XRFrame) => {\n\t\tInput._update();\n\t\tTime._updateTime(time / 1000);\n\t\tXR.updateXRFrame(frame || null);\n\t\tthis.world.tick();\n\t\tthis.scene.render();\n\t};\n\n\tdestroy = () => {\n\t\tthis.ontologyAxonLink.unlink(this.world, this.scene, Axon);\n\t};\n}\n\nwindow.onload = async () => {\n\tconst app = new App();\n\tawait app.start();\n};\n"], "mappings": "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AgB,KAAK,MAAM,GAAG;;;ACvHvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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a;AACnB,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA;AAEf,IAAM,cAAc;AAAA,EAClB,QAAQ;AAAA,IACN,SAAS,EAAC,OAAO,IAAI,MAAM;AAAA,IAC3B,SAAS,EAAC,OAAO;AAAA,IACjB,KAAK,EAAC,OAAO;AAAA,IACb,aAAa,EAAC,OAAO,IAAI;AAAA,IACzB,cAAc,EAAC,OAAO,IAAI;AAAA,IAC1B,UAAU,EAAC,OAAO;AAAA,IAClB,WAAW,EAAC,OAAO;AAAA;AAAA,EAErB,aAAa;AAAA,IACX,aAAa,EAAC,OAAO;AAAA;AAAA,EAEvB,QAAQ;AAAA,IACN,QAAQ,EAAC,OAAO;AAAA,IAChB,YAAY,EAAC,OAAO;AAAA,IACpB,cAAc,EAAC,OAAO;AAAA,IACtB,KAAK,EAAC,OAAO;AAAA,IACb,iBAAiB,EAAC,OAAO;AAAA;AAAA,EAE3B,OAAO;AAAA,IACL,OAAO,EAAC,OAAO;AAAA,IACf,gBAAgB,EAAC,OAAO;AAAA;AAAA,EAE1B,UAAU;AAAA,IACR,UAAU,EAAC,OAAO;AAAA,IAClB,mBAAmB,EAAC,OAAO;AAAA;AAAA,EAE7B,aAAa;AAAA,IACX,aAAa,EAAC,OAAO;AAAA;AAAA,EAEvB,SAAS;AAAA,IACP,SAAS,EAAC,OAAO;AAAA,IACjB,WAAW,EAAC,OAAO;AAAA;AAAA,EAErB,WAAW;AAAA,IACT,WAAW,EAAC,OAAO;AAAA,IACnB,aAAa,EAAC,OAAO,IAAI,QAAQ,GAAG;AAAA;AAAA,EAEtC,iBAAiB;AAAA,IACf,iBAAiB,EAAC,OAAO;AAAA,IACzB,mBAAmB,EAAC,OAAO;AAAA,IAC3B,kBAAkB,EAAC,OAAO;AAAA;AAAA,EAE5B,cAAc;AAAA,IACZ,cAAc,EAAC,OAAO;AAAA;AAAA,EAExB,cAAc;AAAA,IACZ,cAAc,EAAC,OAAO;AAAA;AAAA,EAExB,aAAa;AAAA,IACX,aAAa,EAAC,OAAO;AAAA;AAAA,EAEvB,KAAK;AAAA,IACH,YAAY,EAAC,OAAO;AAAA,IACpB,SAAS,EAAC,OAAO;AAAA,IACjB,QAAQ,EAAC,OAAO;AAAA,IAChB,UAAU,EAAC,OAAO,IAAI,MAAM;AAAA;AAAA,EAE9B,QAAQ;AAAA,IACN,mBAAmB,EAAC,OAAO;AAAA,IAC3B,YAAY,EAAC,OAAO;AAAA,IACpB,mBAAmB,EAAC,OAAO,IAAI,YAAY;AAAA,MACzC,WAAW;AAAA,MACX,OAAO;AAAA;AAAA,IAET,yBAAyB,EAAC,OAAO,IAAI,YAAY;AAAA,MAC/C,YAAY;AAAA,MACZ,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,eAAe;AAAA;AAAA,IAEjB,sBAAsB,EAAC,OAAO;AAAA,IAC9B,yBAAyB,EAAC,OAAO;AAAA,IACjC,YAAY,EAAC,OAAO,IAAI,YAAY;AAAA,MAClC,OAAO;AAAA,MACP,UAAU;AAAA,MACV,WAAW;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,MACb,OAAO;AAAA;AAAA,IAET,kBAAkB,EAAC,OAAO,IAAI,YAAY;AAAA,MACxC,YAAY;AAAA,MACZ,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,eAAe;AAAA;AAAA,IAEjB,eAAe,EAAC,OAAO;AAAA,IACvB,kBAAkB,EAAC,OAAO;AAAA,IAC1B,aAAa,EAAC,OAAO,IAAI,YAAY;AAAA,MACnC,OAAO;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA,MACP,UAAU;AAAA;AAAA,IAEZ,mBAAmB,EAAC,OAAO,IAAI,YAAY;AAAA,MACzC,YAAY;AAAA,MACZ,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,eAAe;AAAA,MACf,kBAAkB;AAAA,MAClB,iBAAiB;AAAA;AAAA,IAEnB,gBAAgB,EAAC,OAAO;AAAA,IACxB,mBAAmB,EAAC,OAAO;AAAA,IAC3B,kBAAkB,EAAC,OAAO,IAAI,YAAY;AAAA,MACxC,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa;AAAA;AAAA,IAEf,gBAAgB,EAAC,OAAO,IAAI,YAAY;AAAA,MACtC,OAAO;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA;AAAA,IAEV,OAAO,EAAC,OAAO;AAAA,IACf,OAAO,EAAC,OAAO;AAAA;AAAA,EAEjB,QAAQ;AAAA,IACN,SAAS,EAAC,OAAO,IAAI,MAAM;AAAA,IAC3B,SAAS,EAAC,OAAO;AAAA,IACjB,MAAM,EAAC,OAAO;AAAA,IACd,OAAO,EAAC,OAAO;AAAA,IACf,KAAK,EAAC,OAAO;AAAA,IACb,UAAU,EAAC,OAAO;AAAA,IAClB,WAAW,EAAC,OAAO;AAAA,IACnB,aAAa,EAAC,OAAO,IAAI;AAAA;AAAA,EAE3B,QAAQ;AAAA,IACN,SAAS,EAAC,OAAO,IAAI,MAAM;AAAA,IAC3B,SAAS,EAAC,OAAO;AAAA,IACjB,QAAQ,EAAC,OAAO,IAAI,QAAQ,KAAK;AAAA,IACjC,UAAU,EAAC,OAAO;AAAA,IAClB,KAAK,EAAC,OAAO;AAAA,IACb,UAAU,EAAC,OAAO;AAAA,IAClB,WAAW,EAAC,OAAO;AAAA,IACnB,aAAa,EAAC,OAAO,IAAI;AAAA;AAAA;AAG7B,IAAM,YAAY;AAAA,EAChB,OAAO;AAAA,IACL,UAAU,cAAc;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA;AAAA,IAEd,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,SAAS;AAAA,IACP,UAAU,cAAc;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,UAAU,EAAC,OAAO,IAAI,MAAM;AAAA;AAAA;AAAA,IAGhC,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,OAAO;AAAA,IACL,UAAU,cAAc;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,UAAU,EAAC,OAAO,IAAI,MAAM;AAAA,QAC5B,UAAU,EAAC,OAAO,IAAI,MAAM;AAAA,QAC5B,WAAW,EAAC,OAAO;AAAA;AAAA;AAAA,IAGvB,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,UAAU;AAAA,IACR,UAAU,cAAc;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,UAAU,EAAC,OAAO,IAAI,MAAM;AAAA,QAC5B,WAAW,EAAC,OAAO;AAAA,QACnB,WAAW,EAAC,OAAO;AAAA,QACnB,iBAAiB,EAAC,OAAO;AAAA;AAAA;AAAA,IAG7B,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,MAAM;AAAA,IACJ,UAAU,cAAc;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,UAAU,EAAC,OAAO,IAAI,MAAM;AAAA;AAAA;AAAA,IAGhC,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,QAAQ;AAAA,IACN,UAAU,cAAc;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,QAAQ,EAAC,OAAO;AAAA;AAAA;AAAA,IAGpB,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,QAAQ;AAAA,IACN,UAAU,cAAc;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA;AAAA,IAEd,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,QAAQ;AAAA,IACN,UAAU,cAAc;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,OAAO,EAAC,OAAO;AAAA,QACf,UAAU,EAAC,OAAO;AAAA,QAClB,WAAW,EAAC,OAAO;AAAA;AAAA;AAAA,IAGvB,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,OAAO;AAAA,IACL,UAAU,cAAc;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA;AAAA,IAEd,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,QAAQ;AAAA,IACN,UAAU,cAAc;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,SAAS,EAAC,OAAO;AAAA;AAAA;AAAA,IAGrB,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,QAAQ;AAAA,IACN,UAAU,cAAc;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA;AAAA,IAEd,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,YAAY;AAAA,IACV,UAAU;AAAA,MACR,aAAa,EAAC,OAAO,IAAI;AAAA,MACzB,KAAK,EAAC,OAAO;AAAA;AAAA,IAEf,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,MAAM;AAAA,IACJ,UAAU,cAAc;AAAA,MACtB,YAAY;AAAA,MACZ;AAAA,QACE,SAAS,EAAC,OAAO;AAAA;AAAA;AAAA,IAGrB,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,UAAU;AAAA,IACR,UAAU;AAAA,MACR,WAAW,EAAC,OAAO;AAAA;AAAA,IAErB,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,cAAc;AAAA,IACZ,UAAU,cAAc;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,mBAAmB,EAAC,OAAO,IAAI;AAAA,QAC/B,cAAc,EAAC,OAAO;AAAA,QACtB,aAAa,EAAC,OAAO;AAAA;AAAA;AAAA,IAGzB,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA,EAE9B,QAAQ;AAAA,IACN,UAAU,cAAc;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,OAAO,EAAC,OAAO,IAAI,MAAM;AAAA,QACzB,SAAS,EAAC,OAAO;AAAA;AAAA;AAAA,IAGrB,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA;AAAA;AAGhC,UAAU,WAAW;AAAA,EACnB,UAAU,cAAc;AAAA,IACtB,UAAU,SAAS;AAAA,IACnB;AAAA,MACE,WAAW,EAAC,OAAO;AAAA,MACnB,cAAc,EAAC,OAAO;AAAA,MACtB,oBAAoB,EAAC,OAAO;AAAA,MAC5B,uBAAuB,EAAC,OAAO;AAAA,MAC/B,sBAAsB,EAAC,OAAO,IAAI,QAAQ,GAAG;AAAA,MAC7C,oBAAoB,EAAC,OAAO;AAAA,MAC5B,OAAO,EAAC,OAAO;AAAA,MACf,YAAY,EAAC,OAAO,IAAI,MAAM;AAAA,MAC9B,eAAe,EAAC,OAAO;AAAA,MACvB,gBAAgB,EAAC,OAAO;AAAA,MACxB,mBAAmB,EAAC,OAAO;AAAA,MAC3B,cAAc,EAAC,OAAO;AAAA,MACtB,iBAAiB,EAAC,OAAO;AAAA,MACzB,yBAAyB,EAAC,OAAO,IAAI;AAAA,MACrC,wBAAwB,EAAC,OAAO;AAAA,MAChC,WAAW,EAAC,OAAO;AAAA,MACnB,cAAc,EAAC,OAAO;AAAA,MACtB,qBAAqB,EAAC,OAAO;AAAA,MAC7B,kBAAkB,EAAC,OAAO,IAAI,MAAM;AAAA,MACpC,mBAAmB,EAAC,OAAO;AAAA,MAC3B,sBAAsB,EAAC,OAAO;AAAA,MAC9B,eAAe,EAAC,OAAO,IAAI,MAAM,GAAG,GAAG;AAAA,MACvC,kBAAkB,EAAC,OAAO;AAAA;AAAA;AAAA,EAG9B,cAAc,YAAY;AAAA,EAC1B,gBAAgB,YAAY;AAAA;AAE9B,yBAAyB,UAAU,UAAU,OAAO,SAAS,oBAAoB;AAC/E,QAAM,aAAa,IAAI,MAAM;AAC7B,MAAI,aAAa;AACjB,MAAI;AACJ,MAAI;AACJ,MAAI,oBAAoB;AACxB,MAAI,2BAA2B;AAC/B,MAAI,qBAAqB;AACzB,mBAAgB,YAAY,OAAO;AACjC,QAAI,aAAa;AACjB,QAAI,aAAa,MAAM,YAAY,OAAO,MAAM,aAAa;AAC7D,QAAI,cAAc,WAAW,WAAW;AACtC,mBAAa,SAAS,IAAI;AAAA;AAE5B,UAAM,MAAK,SAAS;AACpB,UAAM,UAAU,IAAG,cAAc,IAAG;AACpC,QAAI,WAAW,QAAQ,yBAAyB,YAAY;AAC1D,mBAAa;AAAA;AAEf,QAAI,eAAe,MAAM;AACvB,eAAS,YAAY;AAAA,eACZ,cAAc,WAAW,SAAS;AAC3C,eAAS,YAAY;AACrB,mBAAa;AAAA;AAEf,QAAI,SAAS,aAAa,YAAY;AACpC,eAAS,MAAM,SAAS,gBAAgB,SAAS,gBAAgB,SAAS;AAAA;AAE5E,QAAI,cAAe,YAAW,iBAAiB,WAAW,YAAY,0BAA0B;AAC9F,UAAI,YAAY,QAAQ;AACtB,kBAAU,IAAI,KAAK,IAAI,YAAY,GAAG,GAAG,IAAI,IAAI,eAAe;AAAA,UAC9D,MAAM;AAAA,UACN,UAAU,cAAc,UAAU,KAAK;AAAA,UACvC,cAAc,UAAU,KAAK;AAAA,UAC7B,gBAAgB,UAAU,KAAK;AAAA,UAC/B,MAAM;AAAA,UACN,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,KAAK;AAAA;AAEP,gBAAQ,SAAS,gBAAgB;AACjC,gBAAQ,SAAS,gBAAgB;AACjC,gBAAQ,iBAAiB,SAAS,WAAW,QAAQ,QAAQ;AAC3D,eAAK,YAAY,aAAa,OAAO;AAAA;AAEvC,eAAO,eAAe,QAAQ,UAAU,UAAU;AAAA,UAChD,KAAK,WAAW;AACd,mBAAO,KAAK,SAAS,OAAO;AAAA;AAAA;AAGhC,gBAAQ,OAAO;AAAA;AAEjB,cAAQ,SAAS,SAAS,OAAO,QAAQ;AACzC,cAAQ,SAAS,SAAS,WAAW,QAAQ,WAAW,iBAAiB,WAAW,0BAA0B,QAAQ,KAAK;AAC3H,UAAI,sBAAsB,cAAc,6BAA6B,WAAW,WAAW,uBAAuB,SAAS,aAAa;AACtI,gBAAQ,SAAS,cAAc;AAC/B,4BAAoB;AACpB,mCAA2B,WAAW;AACtC,6BAAqB,SAAS;AAAA;AAEhC,iBAAW,QAAQ,SAAS,QAAQ,UAAU,QAAQ,UAAU,GAAG,GAAG;AAAA,eAC7D,cAAc,WAAW,WAAW;AAC7C,UAAI,cAAc,QAAQ;AACxB,oBAAY,IAAI,KAAK,IAAI,cAAc,GAAG,IAAI,IAAI,eAAe;AAAA,UAC/D,MAAM;AAAA,UACN,UAAU,cAAc,UAAU,WAAW;AAAA,UAC7C,cAAc,UAAU,WAAW;AAAA,UACnC,gBAAgB,UAAU,WAAW;AAAA,UACrC,MAAM;AAAA,UACN,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,KAAK;AAAA;AAEP,kBAAU,SAAS,gBAAgB;AACnC,eAAO,eAAe,UAAU,UAAU,OAAO;AAAA,UAC/C,KAAK,WAAW;AACd,mBAAO,KAAK,SAAS,IAAI;AAAA;AAAA;AAG7B,gBAAQ,OAAO;AAAA;AAEjB,gBAAU,SAAS,SAAS,IAAI,QAAQ;AACxC,UAAI,WAAW,qBAAqB,MAAM;AACxC,mBAAW;AAAA;AAEb,gBAAU,SAAS,SAAS,YAAY,MAAM,KAAK,WAAW;AAC9D,UAAI,sBAAsB,cAAc,6BAA6B,WAAW,WAAW,uBAAuB,SAAS,aAAa;AACtI,kBAAU,SAAS,cAAc;AACjC,4BAAoB;AACpB,mCAA2B,WAAW;AACtC,6BAAqB,SAAS;AAAA;AAEhC,iBAAW,QAAQ,WAAW,UAAU,UAAU,UAAU,UAAU,GAAG,GAAG;AAAA;AAAA;AAGhF,oBAAkB,OAAO,OAAO;AAC9B,UAAM,QAAQ,MAAM,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;AAAA;AAEjE,SAAO;AAAA,IACL,eAAe,WAAW;AACxB,aAAO;AAAA;AAAA,IAET,eAAe,SAAS,OAAO,QAAQ,GAAG;AACxC,iBAAW,IAAI;AACf,mBAAa;AACb,eAAS,YAAY;AAAA;AAAA,IAEvB,eAAe,WAAW;AACxB,aAAO;AAAA;AAAA,IAET,eAAe,SAAS,OAAO;AAC7B,mBAAa;AACb,eAAS,YAAY;AAAA;AAAA,IAEvB;AAAA;AAAA;AAGJ,4BAA4B,KAAI,YAAY,YAAY,cAAc;AACpE,QAAM,sBAAsB,IAAG,aAAa;AAC5C,QAAM,YAAY,aAAa,WAAW,OAAO,WAAW,IAAI;AAChE,QAAM,eAAe,aAAa,YAAY,cAAc;AAC5D,QAAM,gBAAgB;AACtB,QAAM,eAAe,mBAAmB;AACxC,MAAI,eAAe;AACnB,iBAAe,SAAQ,UAAU,SAAS,UAAU,QAAO;AACzD,QAAI,gBAAgB;AACpB,QAAI,cAAc;AAChB,YAAM,QAAQ,gBAAgB,UAAU,SAAS;AACjD,UAAI,iBAAiB,OAAO;AAC1B,uBAAe;AACf,8BAAsB,aAAa;AAAA;AAErC,sBAAgB,YAAY,UAAU;AACtC,UAAI;AACF,kBAAU,UAAU;AAAA,WACjB;AACL,YAAM,YAAY,SAAS,cAAc;AACzC,UAAI,aAAa,aAAa,SAAS,MAAM,aAAa,YAAY,QAAQ,MAAM,aAAa,cAAc,WAAW;AACxH,qBAAa,WAAW,SAAS;AACjC,qBAAa,UAAU,QAAQ;AAC/B,qBAAa,YAAY;AACzB,wBAAgB;AAAA;AAAA;AAGpB,QAAI,QAAO,oBAAoB,MAAM;AACnC,sBAAgB;AAAA;AAElB,QAAI,WAAU,MAAM;AAClB,iBAAW,OAAO,QAAO;AAAA;AAE3B,QAAI,eAAe;AACjB,4BAAsB,SAAQ,UAAU,SAAS;AACjD,UAAI,WAAU,MAAM;AAClB,YAAG,WAAW,OAAO,WAAW,IAAI,QAAO;AAAA;AAAA;AAAA;AAIjD,qCAAmC;AACjC,QAAI,aAAa;AACf,aAAO,IAAG;AACZ,WAAO,UAAU;AAAA;AAEnB,iCAA+B,KAAK;AAClC,QAAI,aAAa;AACf,aAAO,IAAG,gBAAgB;AAC5B,WAAO,UAAU,mBAAmB;AAAA;AAEtC,mCAAiC,KAAK;AACpC,QAAI,aAAa;AACf,aAAO,IAAG,kBAAkB;AAC9B,WAAO,UAAU,qBAAqB;AAAA;AAExC,2BAAyB,UAAU,SAAS,UAAU;AACpD,UAAM,YAAY,SAAS,cAAc;AACzC,QAAI,aAAa,cAAc,SAAS;AACxC,QAAI,eAAe,QAAQ;AACzB,mBAAa;AACb,oBAAc,SAAS,MAAM;AAAA;AAE/B,QAAI,WAAW,WAAW,QAAQ;AAClC,QAAI,aAAa,QAAQ;AACvB,iBAAW;AACX,iBAAW,QAAQ,MAAM;AAAA;AAE3B,QAAI,QAAQ,SAAS;AACrB,QAAI,UAAU,QAAQ;AACpB,cAAQ,mBAAmB;AAC3B,eAAS,aAAa;AAAA;AAExB,WAAO;AAAA;AAET,8BAA4B,KAAK;AAC/B,UAAM,gBAAgB;AACtB,UAAM,oBAAoB;AAC1B,UAAM,oBAAoB;AAC1B,aAAS,IAAI,GAAG,IAAI,qBAAqB,KAAK;AAC5C,oBAAc,KAAK;AACnB,wBAAkB,KAAK;AACvB,wBAAkB,KAAK;AAAA;AAEzB,WAAO;AAAA,MACL,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,OAAO;AAAA;AAAA;AAGX,uBAAqB,UAAU,QAAO;AACpC,UAAM,mBAAmB,aAAa;AACtC,UAAM,qBAAqB,SAAS;AACpC,QAAI,gBAAgB;AACpB,eAAW,OAAO,oBAAoB;AACpC,YAAM,kBAAkB,iBAAiB;AACzC,YAAM,oBAAoB,mBAAmB;AAC7C,UAAI,oBAAoB;AACtB,eAAO;AACT,UAAI,gBAAgB,cAAc;AAChC,eAAO;AACT,UAAI,gBAAgB,SAAS,kBAAkB;AAC7C,eAAO;AACT;AAAA;AAEF,QAAI,aAAa,kBAAkB;AACjC,aAAO;AACT,QAAI,aAAa,UAAU;AACzB,aAAO;AACT,WAAO;AAAA;AAET,qBAAmB,UAAU,QAAO;AAClC,UAAM,SAAQ;AACd,UAAM,cAAc,SAAS;AAC7B,QAAI,gBAAgB;AACpB,eAAW,OAAO,aAAa;AAC7B,YAAM,YAAY,YAAY;AAC9B,YAAM,QAAO;AACb,YAAK,YAAY;AACjB,UAAI,UAAU,MAAM;AAClB,cAAK,OAAO,UAAU;AAAA;AAExB,aAAM,OAAO;AACb;AAAA;AAEF,iBAAa,aAAa;AAC1B,iBAAa,gBAAgB;AAC7B,iBAAa,QAAQ;AAAA;AAEvB,4BAA0B;AACxB,UAAM,gBAAgB,aAAa;AACnC,aAAS,IAAI,GAAG,KAAK,cAAc,QAAQ,IAAI,IAAI,KAAK;AACtD,oBAAc,KAAK;AAAA;AAAA;AAGvB,2BAAyB,WAAW;AAClC,8BAA0B,WAAW;AAAA;AAEvC,qCAAmC,WAAW,kBAAkB;AAC9D,UAAM,gBAAgB,aAAa;AACnC,UAAM,oBAAoB,aAAa;AACvC,UAAM,oBAAoB,aAAa;AACvC,kBAAc,aAAa;AAC3B,QAAI,kBAAkB,eAAe,GAAG;AACtC,UAAG,wBAAwB;AAC3B,wBAAkB,aAAa;AAAA;AAEjC,QAAI,kBAAkB,eAAe,kBAAkB;AACrD,YAAM,aAAa,aAAa,WAAW,MAAK,WAAW,IAAI;AAC/D,iBAAW,aAAa,WAAW,wBAAwB,4BAA4B,WAAW;AAClG,wBAAkB,aAAa;AAAA;AAAA;AAGnC,qCAAmC;AACjC,UAAM,gBAAgB,aAAa;AACnC,UAAM,oBAAoB,aAAa;AACvC,aAAS,IAAI,GAAG,KAAK,kBAAkB,QAAQ,IAAI,IAAI,KAAK;AAC1D,UAAI,kBAAkB,OAAO,cAAc,IAAI;AAC7C,YAAG,yBAAyB;AAC5B,0BAAkB,KAAK;AAAA;AAAA;AAAA;AAI7B,+BAA6B,QAAO,MAAM,MAAM,YAAY,QAAQ,SAAQ;AAC1E,QAAI,aAAa,aAAa,QAAS,UAAS,QAAQ,SAAS,OAAO;AACtE,UAAG,qBAAqB,QAAO,MAAM,MAAM,QAAQ;AAAA,WAC9C;AACL,UAAG,oBAAoB,QAAO,MAAM,MAAM,YAAY,QAAQ;AAAA;AAAA;AAGlE,iCAA+B,SAAQ,UAAU,SAAS,UAAU;AAClE,QAAI,aAAa,aAAa,SAAU,SAAO,mBAAmB,SAAS,4BAA4B;AACrG,UAAI,WAAW,IAAI,8BAA8B;AAC/C;AAAA;AAEJ;AACA,UAAM,qBAAqB,SAAS;AACpC,UAAM,oBAAoB,QAAQ;AAClC,UAAM,iCAAiC,SAAS;AAChD,eAAW,SAAQ,mBAAmB;AACpC,YAAM,mBAAmB,kBAAkB;AAC3C,UAAI,iBAAiB,YAAY,GAAG;AAClC,YAAI,oBAAoB,mBAAmB;AAC3C,YAAI,sBAAsB,QAAQ;AAChC,cAAI,UAAS,oBAAoB,QAAO;AACtC,gCAAoB,QAAO;AAC7B,cAAI,UAAS,mBAAmB,QAAO;AACrC,gCAAoB,QAAO;AAAA;AAE/B,YAAI,sBAAsB,QAAQ;AAChC,gBAAM,aAAa,kBAAkB;AACrC,gBAAM,OAAO,kBAAkB;AAC/B,gBAAM,YAAY,WAAW,IAAI;AACjC,cAAI,cAAc;AAChB;AACF,gBAAM,SAAS,UAAU;AACzB,gBAAM,OAAO,UAAU;AACvB,gBAAM,kBAAkB,UAAU;AAClC,cAAI,kBAAkB,8BAA8B;AAClD,kBAAM,QAAO,kBAAkB;AAC/B,kBAAM,SAAS,MAAK;AACpB,kBAAM,UAAS,kBAAkB;AACjC,gBAAI,SAAQ,MAAK,8BAA8B;AAC7C,uBAAS,IAAI,GAAG,IAAI,iBAAiB,cAAc,KAAK;AACtD,0CAA0B,iBAAiB,WAAW,GAAG,MAAK;AAAA;AAEhE,kBAAI,QAAO,oBAAoB,QAAQ,SAAS,sBAAsB,QAAQ;AAC5E,yBAAS,oBAAoB,MAAK,mBAAmB,MAAK;AAAA;AAAA,mBAEvD;AACL,uBAAS,IAAI,GAAG,IAAI,iBAAiB,cAAc,KAAK;AACtD,gCAAgB,iBAAiB,WAAW;AAAA;AAAA;AAGhD,gBAAG,WAAW,OAAO;AACrB,qBAAS,IAAI,GAAG,IAAI,iBAAiB,cAAc,KAAK;AACtD,kCAAoB,iBAAiB,WAAW,GAAG,OAAO,iBAAiB,cAAc,MAAM,YAAY,SAAS,iBAAkB,WAAS,OAAO,iBAAiB,eAAe,KAAK;AAAA;AAAA,iBAExL;AACL,gBAAI,kBAAkB,4BAA4B;AAChD,uBAAS,IAAI,GAAG,IAAI,iBAAiB,cAAc,KAAK;AACtD,0CAA0B,iBAAiB,WAAW,GAAG,kBAAkB;AAAA;AAE7E,kBAAI,QAAO,oBAAoB,QAAQ,SAAS,sBAAsB,QAAQ;AAC5E,yBAAS,oBAAoB,kBAAkB,mBAAmB,kBAAkB;AAAA;AAAA,mBAEjF;AACL,uBAAS,IAAI,GAAG,IAAI,iBAAiB,cAAc,KAAK;AACtD,gCAAgB,iBAAiB,WAAW;AAAA;AAAA;AAGhD,gBAAG,WAAW,OAAO;AACrB,qBAAS,IAAI,GAAG,IAAI,iBAAiB,cAAc,KAAK;AACtD,kCAAoB,iBAAiB,WAAW,GAAG,OAAO,iBAAiB,cAAc,MAAM,YAAY,OAAO,iBAAiB,OAAO,iBAAiB,eAAe,IAAI;AAAA;AAAA;AAAA,mBAGzK,mCAAmC,QAAQ;AACpD,gBAAM,QAAQ,+BAA+B;AAC7C,cAAI,UAAU,QAAQ;AACpB,oBAAQ,MAAM;AAAA,mBACP;AACH,oBAAG,gBAAgB,iBAAiB,UAAU;AAC9C;AAAA,mBACG;AACH,oBAAG,gBAAgB,iBAAiB,UAAU;AAC9C;AAAA,mBACG;AACH,oBAAG,gBAAgB,iBAAiB,UAAU;AAC9C;AAAA;AAEA,oBAAG,gBAAgB,iBAAiB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAM1D;AAAA;AAEF,qBAAmB;AACjB;AACA,eAAW,cAAc,eAAe;AACtC,YAAM,aAAa,cAAc;AACjC,iBAAW,aAAa,YAAY;AAClC,cAAM,WAAW,WAAW;AAC5B,mBAAW,aAAa,UAAU;AAChC,kCAAwB,SAAS,WAAW;AAC5C,iBAAO,SAAS;AAAA;AAElB,eAAO,WAAW;AAAA;AAEpB,aAAO,cAAc;AAAA;AAAA;AAGzB,mCAAiC,UAAU;AACzC,QAAI,cAAc,SAAS,QAAQ;AACjC;AACF,UAAM,aAAa,cAAc,SAAS;AAC1C,eAAW,aAAa,YAAY;AAClC,YAAM,WAAW,WAAW;AAC5B,iBAAW,aAAa,UAAU;AAChC,gCAAwB,SAAS,WAAW;AAC5C,eAAO,SAAS;AAAA;AAElB,aAAO,WAAW;AAAA;AAEpB,WAAO,cAAc,SAAS;AAAA;AAEhC,kCAAgC,SAAS;AACvC,eAAW,cAAc,eAAe;AACtC,YAAM,aAAa,cAAc;AACjC,UAAI,WAAW,QAAQ,QAAQ;AAC7B;AACF,YAAM,WAAW,WAAW,QAAQ;AACpC,iBAAW,aAAa,UAAU;AAChC,gCAAwB,SAAS,WAAW;AAC5C,eAAO,SAAS;AAAA;AAElB,aAAO,WAAW,QAAQ;AAAA;AAAA;AAG9B,mBAAiB;AACf;AACA,QAAI,iBAAiB;AACnB;AACF,mBAAe;AACf,0BAAsB,aAAa;AAAA;AAErC,+BAA6B;AAC3B,iBAAa,WAAW;AACxB,iBAAa,UAAU;AACvB,iBAAa,YAAY;AAAA;AAE3B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAGJ,6BAA6B,KAAI,YAAY,MAAM,cAAc;AAC/D,QAAM,WAAW,aAAa;AAC9B,MAAI;AACJ,mBAAiB,OAAO;AACtB,WAAO;AAAA;AAET,mBAAgB,QAAO,OAAO;AAC5B,QAAG,WAAW,MAAM,QAAO;AAC3B,SAAK,OAAO,OAAO,MAAM;AAAA;AAE3B,2BAAyB,QAAO,OAAO,WAAW;AAChD,QAAI,cAAc;AAChB;AACF,QAAI,WAAW;AACf,QAAI,UAAU;AACZ,kBAAY;AACZ,mBAAa;AAAA,WACR;AACL,kBAAY,WAAW,IAAI;AAC3B,mBAAa;AACb,UAAI,cAAc,MAAM;AACtB,gBAAQ,MAAM;AACd;AAAA;AAAA;AAGJ,cAAU,YAAY,MAAM,QAAO,OAAO;AAC1C,SAAK,OAAO,OAAO,MAAM;AAAA;AAE3B,OAAK,UAAU;AACf,OAAK,SAAS;AACd,OAAK,kBAAkB;AAAA;AAEzB,2BAA2B,KAAI,YAAY,YAAY;AACrD,MAAI;AACJ,8BAA4B;AAC1B,QAAI,kBAAkB;AACpB,aAAO;AACT,QAAI,WAAW,IAAI,sCAAsC,MAAM;AAC7D,YAAM,YAAY,WAAW,IAAI;AACjC,sBAAgB,IAAG,aAAa,UAAU;AAAA,WACrC;AACL,sBAAgB;AAAA;AAElB,WAAO;AAAA;AAET,2BAAyB,YAAY;AACnC,QAAI,eAAe,SAAS;AAC1B,UAAI,IAAG,yBAAyB,OAAO,OAAO,YAAY,KAAK,IAAG,yBAAyB,OAAO,OAAO,YAAY,GAAG;AACtH,eAAO;AAAA;AAET,mBAAa;AAAA;AAEf,QAAI,eAAe,WAAW;AAC5B,UAAI,IAAG,yBAAyB,OAAO,OAAO,YAAY,KAAK,IAAG,yBAAyB,OAAO,OAAO,YAAY,GAAG;AACtH,eAAO;AAAA;AAAA;AAGX,WAAO;AAAA;AAET,QAAM,WAAW,OAAO,2BAA2B,eAAe,eAAc,0BAA0B,OAAO,kCAAkC,eAAe,eAAc;AAChL,MAAI,YAAY,WAAW,cAAc,SAAS,WAAW,YAAY;AACzE,QAAM,eAAe,gBAAgB;AACrC,MAAI,iBAAiB,WAAW;AAC9B,YAAQ,KAAK,wBAAwB,WAAW,wBAAwB,cAAc;AACtF,gBAAY;AAAA;AAEd,QAAM,cAAc,YAAY,WAAW,IAAI;AAC/C,QAAM,yBAAyB,WAAW,2BAA2B;AACrE,QAAM,cAAc,IAAG,aAAa;AACpC,QAAM,oBAAoB,IAAG,aAAa;AAC1C,QAAM,iBAAiB,IAAG,aAAa;AACvC,QAAM,iBAAiB,IAAG,aAAa;AACvC,QAAM,gBAAgB,IAAG,aAAa;AACtC,QAAM,oBAAoB,IAAG,aAAa;AAC1C,QAAM,cAAc,IAAG,aAAa;AACpC,QAAM,sBAAsB,IAAG,aAAa;AAC5C,QAAM,iBAAiB,oBAAoB;AAC3C,QAAM,wBAAwB,YAAY,WAAW,IAAI;AACzD,QAAM,sBAAsB,kBAAkB;AAC9C,QAAM,aAAa,WAAW,IAAG,aAAa,SAAS;AACvD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAGJ,uBAAuB,YAAY;AACjC,QAAM,QAAQ;AACd,MAAI,cAAc,MAAM,kBAAkB,GAAG,uBAAuB,OAAO,mBAAmB;AAC9F,QAAM,QAAQ,IAAI,SAAS,mBAAmB,IAAI,WAAW,UAAU,EAAC,OAAO,MAAM,aAAa;AAClG,OAAK,UAAU;AACf,OAAK,YAAY;AACjB,OAAK,kBAAkB;AACvB,OAAK,OAAO,SAAS,QAAQ,qBAAqB,QAAQ;AACxD,UAAM,UAAU,OAAO,WAAW,KAAK,uBAAuB,oBAAoB,KAAK;AACvF,2BAAuB;AACvB,kBAAc,cAAc,QAAQ,QAAQ;AAC5C,sBAAkB,OAAO;AACzB,WAAO;AAAA;AAET,OAAK,eAAe,WAAW;AAC7B,uBAAmB;AACnB,kBAAc;AAAA;AAEhB,OAAK,aAAa,WAAW;AAC3B,uBAAmB;AACnB;AAAA;AAEF,OAAK,WAAW,SAAS,UAAU,QAAQ,UAAU;AACnD,UAAM,SAAS,SAAS,gBAAgB,mBAAmB,SAAS,kBAAkB,cAAc,SAAS;AAC7G,UAAM,qBAAqB,WAAW,IAAI;AAC1C,QAAI,CAAC,wBAAwB,WAAW,QAAQ,OAAO,WAAW,KAAK,oBAAoB,CAAC,aAAa;AACvG,UAAI,kBAAkB;AACpB,sBAAc;AAAA,aACT;AACL;AAAA;AAAA,WAEG;AACL,YAAM,UAAU,mBAAmB,IAAI,iBAAiB,UAAU,UAAU;AAC5E,UAAI,WAAW,mBAAmB,iBAAiB;AACnD,cAAQ,QAAQ;AAChB,iBAAW,cAAc,QAAQ,QAAQ,SAAS;AAClD,eAAS,IAAI,GAAG,MAAM,SAAS,EAAE,GAAG;AAClC,iBAAS,KAAK,YAAY;AAAA;AAE5B,yBAAmB,gBAAgB;AACnC,WAAK,kBAAkB,mBAAmB,KAAK,YAAY;AAC3D,WAAK,aAAa;AAAA;AAAA;AAGtB,8BAA4B;AAC1B,QAAI,QAAQ,UAAU,aAAa;AACjC,cAAQ,QAAQ;AAChB,cAAQ,cAAc,kBAAkB;AAAA;AAE1C,UAAM,YAAY;AAClB,UAAM,kBAAkB;AAAA;AAE1B,yBAAuB,QAAQ,QAAQ,WAAW,eAAe;AAC/D,UAAM,UAAU,WAAW,OAAO,OAAO,SAAS;AAClD,QAAI,WAAW;AACf,QAAI,YAAY,GAAG;AACjB,iBAAW,QAAQ;AACnB,UAAI,kBAAkB,QAAQ,aAAa,MAAM;AAC/C,cAAM,WAAW,YAAY,UAAU,GAAG,aAAa,OAAO;AAC9D,yBAAiB,gBAAgB;AACjC,YAAI,aAAa,QAAQ,SAAS,SAAS,UAAU;AACnD,qBAAW,IAAI,aAAa;AAAA;AAE9B,iBAAS,IAAI,GAAG,KAAK,WAAW,MAAM,SAAS,EAAE,GAAG,MAAM,GAAG;AAC3D,gBAAM,KAAK,OAAO,IAAI,aAAa,YAAY;AAC/C,gBAAM,OAAO,QAAQ,UAAU;AAC/B,mBAAS,KAAK,KAAK,MAAM;AAAA;AAAA;AAG7B,cAAQ,QAAQ;AAChB,cAAQ,cAAc;AAAA;AAExB,UAAM,YAAY;AAClB,UAAM,kBAAkB;AACxB,WAAO;AAAA;AAAA;AAGX,uBAAuB,UAAU;AAC/B,MAAI,WAAW,IAAI;AACnB,6BAA2B,SAAS,SAAS;AAC3C,QAAI,YAAY,kCAAkC;AAChD,cAAQ,UAAU;AAAA,eACT,YAAY,kCAAkC;AACvD,cAAQ,UAAU;AAAA;AAEpB,WAAO;AAAA;AAET,gBAAa,SAAS;AACpB,QAAI,WAAW,QAAQ,aAAa,QAAQ,0BAA0B,OAAO;AAC3E,YAAM,UAAU,QAAQ;AACxB,UAAI,YAAY,oCAAoC,YAAY,kCAAkC;AAChG,YAAI,SAAS,IAAI,UAAU;AACzB,gBAAM,UAAU,SAAS,IAAI,SAAS;AACtC,iBAAO,kBAAkB,SAAS,QAAQ;AAAA,eACrC;AACL,gBAAM,QAAQ,QAAQ;AACtB,cAAI,SAAS,MAAM,SAAS,GAAG;AAC7B,kBAAM,sBAAsB,SAAS;AACrC,kBAAM,eAAe,IAAI,sBAAsB,MAAM,SAAS;AAC9D,yBAAa,2BAA2B,UAAU;AAClD,qBAAS,IAAI,SAAS;AACtB,qBAAS,gBAAgB;AACzB,oBAAQ,iBAAiB,WAAW;AACpC,mBAAO,kBAAkB,aAAa,SAAS,QAAQ;AAAA,iBAClD;AACL,mBAAO;AAAA;AAAA;AAAA;AAAA;AAKf,WAAO;AAAA;AAET,4BAA0B,OAAO;AAC/B,UAAM,UAAU,MAAM;AACtB,YAAQ,oBAAoB,WAAW;AACvC,UAAM,UAAU,SAAS,IAAI;AAC7B,QAAI,YAAY,QAAQ;AACtB,eAAS,OAAO;AAChB,cAAQ;AAAA;AAAA;AAGZ,qBAAmB;AACjB,eAAW,IAAI;AAAA;AAEjB,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA;AAGJ,uCAAiC,OAAO;AAAA,EACtC,YAAY,QAAO,IAAI,SAAQ,GAAG,OAAM,GAAG,UAAS,IAAI,OAAO,KAAK,MAAM,KAAK;AAC7E;AACA,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,MAAM;AACX,SAAK,SAAS;AACd,SAAK,OAAO;AACZ,SAAK,MAAM;AACX,SAAK;AAAA;AAAA,EAEP,KAAK,QAAQ,WAAW;AACtB,UAAM,KAAK,QAAQ;AACnB,SAAK,OAAO,OAAO;AACnB,SAAK,QAAQ,OAAO;AACpB,SAAK,MAAM,OAAO;AAClB,SAAK,SAAS,OAAO;AACrB,SAAK,OAAO,OAAO;AACnB,SAAK,MAAM,OAAO;AAClB,SAAK,OAAO,OAAO;AACnB,SAAK,OAAO,OAAO,SAAS,OAAO,OAAO,OAAO,OAAO,IAAI,OAAO;AACnE,WAAO;AAAA;AAAA,EAET,cAAc,WAAW,YAAY,IAAG,GAAG,OAAO,QAAQ;AACxD,QAAI,KAAK,SAAS,MAAM;AACtB,WAAK,OAAO;AAAA,QACV,SAAS;AAAA,QACT,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,QACP,QAAQ;AAAA;AAAA;AAGZ,SAAK,KAAK,UAAU;AACpB,SAAK,KAAK,YAAY;AACtB,SAAK,KAAK,aAAa;AACvB,SAAK,KAAK,UAAU;AACpB,SAAK,KAAK,UAAU;AACpB,SAAK,KAAK,QAAQ;AAClB,SAAK,KAAK,SAAS;AACnB,SAAK;AAAA;AAAA,EAEP,kBAAkB;AAChB,QAAI,KAAK,SAAS,MAAM;AACtB,WAAK,KAAK,UAAU;AAAA;AAEtB,SAAK;AAAA;AAAA,EAEP,yBAAyB;AACvB,UAAM,MAAM,MAAK,QAAQ,KAAK,QAAS,KAAI,KAAK;AAChD,UAAM,KAAM,MAAK,MAAM,KAAK,UAAW,KAAI,KAAK;AAChD,UAAM,MAAM,MAAK,QAAQ,KAAK,QAAQ;AACtC,UAAM,KAAM,MAAK,MAAM,KAAK,UAAU;AACtC,QAAI,QAAO,MAAK;AAChB,QAAI,SAAQ,MAAK;AACjB,QAAI,OAAM,KAAK;AACf,QAAI,UAAS,KAAK;AAClB,QAAI,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS;AAC3C,YAAM,SAAU,MAAK,QAAQ,KAAK,QAAQ,KAAK,KAAK,YAAY,KAAK;AACrE,YAAM,SAAU,MAAK,MAAM,KAAK,UAAU,KAAK,KAAK,aAAa,KAAK;AACtE,eAAQ,SAAS,KAAK,KAAK;AAC3B,eAAQ,QAAO,SAAS,KAAK,KAAK;AAClC,cAAO,SAAS,KAAK,KAAK;AAC1B,gBAAS,OAAM,SAAS,KAAK,KAAK;AAAA;AAEpC,SAAK,iBAAiB,iBAAiB,OAAM,QAAO,MAAK,SAAQ,KAAK,MAAM,KAAK;AACjF,SAAK,wBAAwB,KAAK,KAAK,kBAAkB;AAAA;AAAA,EAE3D,OAAO,OAAM;AACX,UAAM,QAAO,MAAM,OAAO;AAC1B,UAAK,OAAO,OAAO,KAAK;AACxB,UAAK,OAAO,OAAO,KAAK;AACxB,UAAK,OAAO,QAAQ,KAAK;AACzB,UAAK,OAAO,MAAM,KAAK;AACvB,UAAK,OAAO,SAAS,KAAK;AAC1B,UAAK,OAAO,OAAO,KAAK;AACxB,UAAK,OAAO,MAAM,KAAK;AACvB,QAAI,KAAK,SAAS;AAChB,YAAK,OAAO,OAAO,OAAO,OAAO,IAAI,KAAK;AAC5C,WAAO;AAAA;AAAA;AAGX,mBAAmB,UAAU,uBAAuB;AACpD,sCAAgC,eAAe;AAAA,EAC7C,YAAY,YAAY;AACtB,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAGhB,kBAAkB,UAAU,sBAAsB;AAClD,IAAM,UAAU;AAChB,IAAM,UAAU;AAChB,IAAM,WAAW,KAAK,IAAI,GAAG;AAC7B,IAAM,kBAAkB,CAAC,OAAO,OAAO,MAAM,OAAO,OAAO;AAC3D,IAAM,aAAa,UAAU,UAAU,IAAI,gBAAgB;AAC3D,IAAM,cAAc;AACpB,IAAM,YAAY;AAAA,GACf,iBAAiB;AAAA,GACjB,eAAe;AAAA,GACf,eAAe;AAAA,GACf,gBAAgB;AAAA,GAChB,iBAAiB;AAAA,GACjB,eAAe;AAAA,GACf,gBAAgB;AAAA;AAEnB,IAAM,cAA8B,oBAAI;AACxC,IAAM,EAAC,YAAY,WAAW,YAA2B;AACzD,IAAM,cAA8B,oBAAI;AACxC,IAAI,aAAa;AACjB,IAAM,MAAO,KAAI,KAAK,KAAK,MAAM;AACjC,IAAM,UAAU,IAAI;AACpB,IAAM,kBAAkB;AAAA,EACN,oBAAI,SAAQ,GAAG,GAAG;AAAA,EAClB,oBAAI,SAAQ,IAAI,GAAG;AAAA,EACnB,oBAAI,SAAQ,GAAG,GAAG;AAAA,EAClB,oBAAI,SAAQ,IAAI,GAAG;AAAA,EACnB,oBAAI,SAAQ,GAAG,KAAK;AAAA,EACpB,oBAAI,SAAQ,GAAG,KAAK,CAAC;AAAA,EACrB,oBAAI,SAAQ,SAAS,GAAG;AAAA,EACxB,oBAAI,SAAQ,CAAC,SAAS,GAAG;AAAA,EACzB,oBAAI,SAAQ,KAAK,SAAS;AAAA,EAC1B,oBAAI,SAAQ,CAAC,KAAK,SAAS;AAAA;AAE7C,2BAAqB;AAAA,EACnB,YAAY,UAAU;AACpB,SAAK,YAAY;AACjB,SAAK,wBAAwB;AAC7B,SAAK,gBAAgB,eAAe;AACpC,SAAK,kBAAkB;AACvB,SAAK,iBAAiB;AACtB,SAAK,iBAAiB,KAAK;AAAA;AAAA,EAE7B,UAAU,OAAO,QAAQ,GAAG,OAAO,KAAK,MAAM,KAAK;AACjD,iBAAa,KAAK,UAAU;AAC5B,UAAM,qBAAqB,KAAK;AAChC,SAAK,eAAe,OAAO,MAAM,KAAK;AACtC,QAAI,QAAQ,GAAG;AACb,WAAK,MAAM,oBAAoB,GAAG,GAAG;AAAA;AAEvC,SAAK,YAAY;AACjB,SAAK,SAAS;AACd,WAAO;AAAA;AAAA,EAET,oBAAoB,iBAAiB;AACnC,WAAO,KAAK,aAAa;AAAA;AAAA,EAE3B,YAAY,SAAS;AACnB,WAAO,KAAK,aAAa;AAAA;AAAA,EAE3B,uBAAuB;AACrB,QAAI,KAAK,mBAAmB,MAAM;AAChC,WAAK,iBAAiB;AACtB,WAAK,iBAAiB,KAAK;AAAA;AAAA;AAAA,EAG/B,+BAA+B;AAC7B,QAAI,KAAK,oBAAoB,MAAM;AACjC,WAAK,kBAAkB;AACvB,WAAK,iBAAiB,KAAK;AAAA;AAAA;AAAA,EAG/B,UAAU;AACR,SAAK,cAAc;AACnB,QAAI,KAAK,mBAAmB;AAC1B,WAAK,eAAe;AACtB,QAAI,KAAK,oBAAoB;AAC3B,WAAK,gBAAgB;AACvB,aAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,iBAAW,GAAG;AAAA;AAAA;AAAA,EAGlB,SAAS,cAAc;AACrB,SAAK,sBAAsB;AAC3B,SAAK,UAAU,gBAAgB;AAC/B,iBAAa,cAAc;AAC3B,iBAAa,cAAc,GAAG,GAAG,aAAa,OAAO,aAAa;AAAA;AAAA,EAEpE,aAAa,SAAS;AACpB,iBAAa,KAAK,UAAU;AAC5B,UAAM,qBAAqB,KAAK,iBAAiB;AACjD,SAAK,iBAAiB,SAAS;AAC/B,SAAK,YAAY;AACjB,SAAK,SAAS;AACd,WAAO;AAAA;AAAA,EAET,iBAAiB,SAAS;AACxB,UAAM,SAAS;AAAA,MACb,WAAW;AAAA,MACX,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU,OAAO,WAAW,QAAQ,WAAW;AAAA,MAC/C,aAAa;AAAA;AAEf,UAAM,qBAAqB,oBAAoB;AAC/C,uBAAmB,cAAc,UAAU,QAAQ;AACnD,SAAK,wBAAwB,oBAAoB;AACjD,WAAO;AAAA;AAAA,EAET,iBAAiB,UAAU;AACzB,UAAM,UAAU,IAAI,KAAK,WAAW,IAAI;AACxC,SAAK,UAAU,QAAQ,SAAS;AAAA;AAAA,EAElC,eAAe,OAAO,MAAM,KAAK,oBAAoB;AACnD,UAAM,QAAO;AACb,UAAM,WAAU;AAChB,UAAM,aAAa,IAAI,kBAAkB,OAAM,UAAS,MAAM;AAC9D,UAAM,SAAS,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG;AAChC,UAAM,cAAc,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI;AACtC,UAAM,WAAW,KAAK;AACtB,UAAM,oBAAoB,SAAS;AACnC,UAAM,iBAAiB,SAAS;AAChC,UAAM,cAAc,SAAS;AAC7B,aAAS,cAAc;AACvB,aAAS,cAAc;AACvB,aAAS,iBAAiB;AAC1B,aAAS,YAAY;AACrB,UAAM,qBAAqB,IAAI,kBAAkB;AAAA,MAC/C,MAAM;AAAA,MACN,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,WAAW;AAAA;AAEb,UAAM,gBAAgB,IAAI,KAAK,IAAI,eAAe;AAClD,QAAI,gBAAgB;AACpB,UAAM,aAAa,MAAM;AACzB,QAAI,YAAY;AACd,UAAI,WAAW,SAAS;AACtB,2BAAmB,MAAM,KAAK;AAC9B,cAAM,aAAa;AACnB,wBAAgB;AAAA;AAAA,WAEb;AACL,yBAAmB,MAAM,KAAK;AAC9B,sBAAgB;AAAA;AAElB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAM,MAAM,IAAI;AAChB,UAAI,OAAO,GAAG;AACZ,mBAAW,GAAG,IAAI,GAAG,OAAO,IAAI;AAChC,mBAAW,OAAO,YAAY,IAAI,GAAG;AAAA,iBAC5B,OAAO,GAAG;AACnB,mBAAW,GAAG,IAAI,GAAG,GAAG,OAAO;AAC/B,mBAAW,OAAO,GAAG,YAAY,IAAI;AAAA,aAChC;AACL,mBAAW,GAAG,IAAI,GAAG,OAAO,IAAI;AAChC,mBAAW,OAAO,GAAG,GAAG,YAAY;AAAA;AAEtC,mBAAa,oBAAoB,MAAM,UAAU,IAAI,IAAI,WAAW,GAAG,UAAU;AACjF,eAAS,gBAAgB;AACzB,UAAI,eAAe;AACjB,iBAAS,OAAO,eAAe;AAAA;AAEjC,eAAS,OAAO,OAAO;AAAA;AAEzB,kBAAc,SAAS;AACvB,kBAAc,SAAS;AACvB,aAAS,cAAc;AACvB,aAAS,iBAAiB;AAC1B,aAAS,YAAY;AACrB,UAAM,aAAa;AAAA;AAAA,EAErB,aAAa,SAAS,SAAS;AAC7B,YAAQ,QAAQ,UAAU,QAAQ;AAAA;AAAA,EAEpC,iBAAiB,SAAS,oBAAoB;AAC5C,UAAM,WAAW,KAAK;AACtB,UAAM,gBAAgB,QAAQ,YAAY,yBAAyB,QAAQ,YAAY;AACvF,QAAI,eAAe;AACjB,UAAI,KAAK,kBAAkB,MAAM;AAC/B,aAAK,iBAAiB;AAAA;AAAA,WAEnB;AACL,UAAI,KAAK,mBAAmB,MAAM;AAChC,aAAK,kBAAkB;AAAA;AAAA;AAG3B,UAAM,WAAW,gBAAgB,KAAK,iBAAiB,KAAK;AAC5D,UAAM,OAAO,IAAI,KAAK,WAAW,IAAI;AACrC,UAAM,WAAW,SAAS;AAC1B,aAAS,UAAU,QAAQ;AAC3B,QAAI,CAAC,eAAe;AAClB,eAAS,aAAa,MAAM,IAAI,IAAI,QAAQ,MAAM,OAAO,IAAI,QAAQ,MAAM;AAAA;AAE7E,SAAK,aAAa,SAAS,kBAAkB;AAC7C,SAAK,aAAa,SAAS,mBAAmB,mBAAmB;AACjE,iBAAa,oBAAoB,GAAG,GAAG,IAAI,UAAU,IAAI;AACzD,aAAS,gBAAgB;AACzB,aAAS,OAAO,MAAM;AAAA;AAAA,EAExB,YAAY,oBAAoB;AAC9B,UAAM,WAAW,KAAK;AACtB,UAAM,YAAY,SAAS;AAC3B,aAAS,YAAY;AACrB,aAAS,IAAI,GAAG,IAAI,YAAY,KAAK;AACnC,YAAM,QAAQ,KAAK,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,IAAI,KAAK,QAAQ,IAAI;AAC/E,YAAM,WAAW,gBAAiB,KAAI,KAAK,gBAAgB;AAC3D,WAAK,MAAM,oBAAoB,IAAI,GAAG,GAAG,OAAO;AAAA;AAElD,aAAS,YAAY;AAAA;AAAA,EAEvB,MAAM,oBAAoB,OAAO,QAAQ,OAAO,UAAU;AACxD,UAAM,uBAAuB,KAAK;AAClC,SAAK,UAAU,oBAAoB,sBAAsB,OAAO,QAAQ,OAAO,eAAe;AAC9F,SAAK,UAAU,sBAAsB,oBAAoB,QAAQ,QAAQ,OAAO,gBAAgB;AAAA;AAAA,EAElG,UAAU,UAAU,WAAW,OAAO,QAAQ,cAAc,WAAW,UAAU;AAC/E,UAAM,WAAW,KAAK;AACtB,UAAM,eAAe,KAAK;AAC1B,QAAI,cAAc,iBAAiB,cAAc,gBAAgB;AAC/D,cAAQ,MAAM;AAAA;AAEhB,UAAM,sBAAsB;AAC5B,UAAM,WAAW,IAAI,KAAK,WAAW,SAAS;AAC9C,UAAM,eAAe,aAAa;AAClC,UAAM,SAAS,UAAU,SAAS;AAClC,UAAM,kBAAkB,SAAS,gBAAgB,KAAK,KAAM,KAAI,UAAU,IAAI,KAAK,KAAM,KAAI,cAAc;AAC3G,UAAM,cAAc,eAAe;AACnC,UAAM,UAAU,SAAS,gBAAgB,IAAI,KAAK,MAAM,sBAAsB,eAAe;AAC7F,QAAI,UAAU,aAAa;AACzB,cAAQ,KAAK,iBAAiB,6DAA6D,8CAA8C;AAAA;AAE3I,UAAM,UAAU;AAChB,QAAI,MAAM;AACV,aAAS,IAAI,GAAG,IAAI,aAAa,EAAE,GAAG;AACpC,YAAM,MAAK,IAAI;AACf,YAAM,SAAS,KAAK,IAAI,CAAC,MAAK,MAAK;AACnC,cAAQ,KAAK;AACb,UAAI,KAAK,GAAG;AACV,eAAO;AAAA,iBACE,IAAI,SAAS;AACtB,eAAO,IAAI;AAAA;AAAA;AAGf,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,cAAQ,KAAK,QAAQ,KAAK;AAAA;AAE5B,iBAAa,UAAU,QAAQ,SAAS;AACxC,iBAAa,WAAW,QAAQ;AAChC,iBAAa,WAAW,QAAQ;AAChC,iBAAa,eAAe,QAAQ,cAAc;AAClD,QAAI,UAAU;AACZ,mBAAa,YAAY,QAAQ;AAAA;AAEnC,iBAAa,UAAU,QAAQ;AAC/B,iBAAa,UAAU,QAAQ,UAAU;AACzC,SAAK,aAAa,aAAa,kBAAkB,SAAS;AAC1D,SAAK,aAAa,aAAa,mBAAmB,SAAS;AAC3D,UAAM,aAAa,UAAU;AAC7B,UAAM,KAAI,IAAI,KAAK,IAAI,GAAG,WAAW,IAAI;AACzC,UAAM,IAAK,YAAW,IAAI,IAAI,IAAI,YAAY,IAAI,aAAc,UAAS,UAAU,UAAU,SAAS,UAAU,UAAU;AAC1H,iBAAa,WAAW,IAAG,GAAG,IAAI,YAAY,IAAI;AAClD,aAAS,gBAAgB;AACzB,aAAS,OAAO,UAAU;AAAA;AAAA;AAG9B,gBAAgB,SAAS;AACvB,MAAI,YAAY,UAAU,QAAQ,SAAS;AACzC,WAAO;AACT,SAAO,QAAQ,aAAa,kBAAkB,QAAQ,aAAa,gBAAgB,QAAQ,aAAa;AAAA;AAE1G,yBAAyB;AACvB,QAAM,eAAc;AACpB,QAAM,cAAa;AACnB,QAAM,YAAW;AACjB,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,YAAY,KAAK;AACnC,UAAM,UAAU,KAAK,IAAI,GAAG;AAC5B,gBAAW,KAAK;AAChB,QAAI,QAAQ,IAAI;AAChB,QAAI,IAAI,UAAU,SAAS;AACzB,cAAQ,gBAAgB,IAAI,UAAU,UAAU;AAAA,eACvC,KAAK,GAAG;AACjB,cAAQ;AAAA;AAEV,cAAS,KAAK;AACd,UAAM,YAAY,IAAK,WAAU;AACjC,UAAM,OAAM,CAAC,YAAY;AACzB,UAAM,OAAM,IAAI,YAAY;AAC5B,UAAM,MAAM,CAAC,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK;AACpE,UAAM,YAAY;AAClB,UAAM,WAAW;AACjB,UAAM,eAAe;AACrB,UAAM,SAAS;AACf,UAAM,gBAAgB;AACtB,UAAM,WAAW,IAAI,aAAa,eAAe,WAAW;AAC5D,UAAM,KAAK,IAAI,aAAa,SAAS,WAAW;AAChD,UAAM,YAAY,IAAI,aAAa,gBAAgB,WAAW;AAC9D,aAAS,QAAO,GAAG,QAAO,WAAW,SAAQ;AAC3C,YAAM,KAAI,QAAO,IAAI,IAAI,IAAI;AAC7B,YAAM,IAAI,QAAO,IAAI,IAAI;AACzB,YAAM,cAAc;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAI,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA,KAAI,IAAI;AAAA,QACR,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAI,IAAI;AAAA,QACR,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,QACA,IAAI;AAAA,QACJ;AAAA;AAEF,eAAS,IAAI,aAAa,eAAe,WAAW;AACpD,SAAG,IAAI,KAAK,SAAS,WAAW;AAChC,YAAM,QAAO,CAAC,OAAM,OAAM,OAAM,OAAM,OAAM;AAC5C,gBAAU,IAAI,OAAM,gBAAgB,WAAW;AAAA;AAEjD,UAAM,SAAS,IAAI;AACnB,WAAO,aAAa,YAAY,IAAI,gBAAgB,UAAU;AAC9D,WAAO,aAAa,MAAM,IAAI,gBAAgB,IAAI;AAClD,WAAO,aAAa,aAAa,IAAI,gBAAgB,WAAW;AAChE,iBAAY,KAAK;AACjB,QAAI,MAAM,SAAS;AACjB;AAAA;AAAA;AAGJ,SAAO,EAAC,YAAY,cAAa,WAAW,aAAY,SAAS;AAAA;AAEnE,6BAA6B,QAAQ;AACnC,QAAM,qBAAqB,IAAI,kBAAkB,IAAI,UAAU,IAAI,UAAU;AAC7E,qBAAmB,QAAQ,UAAU;AACrC,qBAAmB,QAAQ,OAAO;AAClC,qBAAmB,cAAc;AACjC,SAAO;AAAA;AAET,sBAAsB,QAAQ,IAAG,GAAG,OAAO,QAAQ;AACjD,SAAO,SAAS,IAAI,IAAG,GAAG,OAAO;AACjC,SAAO,QAAQ,IAAI,IAAG,GAAG,OAAO;AAAA;AAElC,wBAAwB,YAAY;AAClC,QAAM,UAAU,IAAI,aAAa;AACjC,QAAM,WAAW,IAAI,SAAQ,GAAG,GAAG;AACnC,QAAM,iBAAiB,IAAI,kBAAkB;AAAA,IAC3C,MAAM;AAAA,IACN,SAAS,EAAC,GAAG;AAAA,IACb,UAAU;AAAA,MACR,QAAQ,EAAC,OAAO;AAAA,MAChB,SAAS,EAAC,OAAO;AAAA,MACjB,SAAS,EAAC,OAAO;AAAA,MACjB,aAAa,EAAC,OAAO;AAAA,MACrB,QAAQ,EAAC,OAAO;AAAA,MAChB,QAAQ,EAAC,OAAO;AAAA,MAChB,UAAU,EAAC,OAAO;AAAA,MAClB,eAAe,EAAC,OAAO,UAAU;AAAA,MACjC,gBAAgB,EAAC,OAAO,UAAU;AAAA;AAAA,IAEpC,cAAc;AAAA,IACd,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAef;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAkDD,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA;AAEd,SAAO;AAAA;AAET,8BAA8B;AAC5B,QAAM,YAAY,IAAI,QAAQ,GAAG;AACjC,QAAM,iBAAiB,IAAI,kBAAkB;AAAA,IAC3C,MAAM;AAAA,IACN,UAAU;AAAA,MACR,QAAQ,EAAC,OAAO;AAAA,MAChB,WAAW,EAAC,OAAO;AAAA,MACnB,eAAe,EAAC,OAAO,UAAU;AAAA,MACjC,gBAAgB,EAAC,OAAO,UAAU;AAAA;AAAA,IAEpC,cAAc;AAAA,IACd,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAUf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA6BD,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA;AAEd,SAAO;AAAA;AAET,6BAA6B;AAC3B,QAAM,iBAAiB,IAAI,kBAAkB;AAAA,IAC3C,MAAM;AAAA,IACN,UAAU;AAAA,MACR,QAAQ,EAAC,OAAO;AAAA,MAChB,eAAe,EAAC,OAAO,UAAU;AAAA,MACjC,gBAAgB,EAAC,OAAO,UAAU;AAAA;AAAA,IAEpC,cAAc;AAAA,IACd,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KASf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUD,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA;AAEd,SAAO;AAAA;AAET,kCAAkC;AAChC,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2DT,yBAAyB;AACvB,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkFT,yBAAyB,UAAU;AACjC,MAAI,aAAa,IAAI;AACrB,MAAI,iBAAiB;AACrB,gBAAa,SAAS;AACpB,QAAI,WAAW,QAAQ,aAAa,QAAQ,0BAA0B,OAAO;AAC3E,YAAM,UAAU,QAAQ;AACxB,YAAM,gBAAgB,YAAY,oCAAoC,YAAY;AAClF,YAAM,YAAY,YAAY,yBAAyB,YAAY;AACnE,UAAI,iBAAiB,WAAW;AAC9B,YAAI,WAAW,IAAI,UAAU;AAC3B,iBAAO,WAAW,IAAI,SAAS;AAAA,eAC1B;AACL,gBAAM,QAAQ,QAAQ;AACtB,cAAI,iBAAiB,SAAS,MAAM,SAAS,KAAK,aAAa,SAAS,sBAAsB,QAAQ;AACpG,kBAAM,sBAAsB,SAAS;AACrC,gBAAI,mBAAmB;AACrB,+BAAiB,IAAI,eAAe;AACtC,kBAAM,eAAe,gBAAgB,eAAe,oBAAoB,WAAW,eAAe,YAAY;AAC9G,uBAAW,IAAI,SAAS;AACxB,qBAAS,gBAAgB;AACzB,oBAAQ,iBAAiB,WAAW;AACpC,mBAAO,aAAa;AAAA,iBACf;AACL,mBAAO;AAAA;AAAA;AAAA;AAAA;AAKf,WAAO;AAAA;AAET,iCAA+B,OAAO;AACpC,QAAI,QAAQ;AACZ,UAAM,UAAS;AACf,aAAS,IAAI,GAAG,IAAI,SAAQ,KAAK;AAC/B,UAAI,MAAM,OAAO;AACf;AAAA;AAEJ,WAAO,UAAU;AAAA;AAEnB,4BAA0B,OAAO;AAC/B,UAAM,UAAU,MAAM;AACtB,YAAQ,oBAAoB,WAAW;AACvC,UAAM,YAAY,WAAW,IAAI;AACjC,QAAI,cAAc,QAAQ;AACxB,iBAAW,OAAO;AAClB,gBAAU;AAAA;AAAA;AAGd,qBAAmB;AACjB,iBAAa,IAAI;AACjB,QAAI,mBAAmB,MAAM;AAC3B,qBAAe;AACf,uBAAiB;AAAA;AAAA;AAGrB,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA;AAGJ,yBAAyB,KAAI;AAC3B,QAAM,aAAa;AACnB,wBAAsB,OAAM;AAC1B,QAAI,WAAW,WAAU,QAAQ;AAC/B,aAAO,WAAW;AAAA;AAEpB,QAAI;AACJ,YAAQ;AAAA,WACD;AACH,oBAAY,IAAG,aAAa,0BAA0B,IAAG,aAAa,8BAA8B,IAAG,aAAa;AACpH;AAAA,WACG;AACH,oBAAY,IAAG,aAAa,qCAAqC,IAAG,aAAa,yCAAyC,IAAG,aAAa;AAC1I;AAAA,WACG;AACH,oBAAY,IAAG,aAAa,oCAAoC,IAAG,aAAa,wCAAwC,IAAG,aAAa;AACxI;AAAA,WACG;AACH,oBAAY,IAAG,aAAa,qCAAqC,IAAG,aAAa;AACjF;AAAA;AAEA,oBAAY,IAAG,aAAa;AAAA;AAEhC,eAAW,SAAQ;AACnB,WAAO;AAAA;AAET,SAAO;AAAA,IACL,KAAK,SAAS,OAAM;AAClB,aAAO,aAAa,WAAU;AAAA;AAAA,IAEhC,MAAM,SAAS,cAAc;AAC3B,UAAI,aAAa,UAAU;AACzB,qBAAa;AAAA,aACR;AACL,qBAAa;AACb,qBAAa;AACb,qBAAa;AACb,qBAAa;AACb,qBAAa;AACb,qBAAa;AACb,qBAAa;AACb,qBAAa;AAAA;AAEf,mBAAa;AACb,mBAAa;AACb,mBAAa;AAAA;AAAA,IAEf,KAAK,SAAS,OAAM;AAClB,YAAM,YAAY,aAAa;AAC/B,UAAI,cAAc,MAAM;AACtB,gBAAQ,KAAK,0BAA0B,QAAO;AAAA;AAEhD,aAAO;AAAA;AAAA;AAAA;AAIb,yBAAyB,KAAI,YAAY,MAAM,eAAe;AAC5D,QAAM,aAAa;AACnB,QAAM,sBAAsB,IAAI;AAChC,6BAA2B,OAAO;AAChC,UAAM,WAAW,MAAM;AACvB,QAAI,SAAS,UAAU,MAAM;AAC3B,iBAAW,OAAO,SAAS;AAAA;AAE7B,eAAW,SAAQ,SAAS,YAAY;AACtC,iBAAW,OAAO,SAAS,WAAW;AAAA;AAExC,aAAS,oBAAoB,WAAW;AACxC,WAAO,WAAW,SAAS;AAC3B,UAAM,YAAY,oBAAoB,IAAI;AAC1C,QAAI,WAAW;AACb,iBAAW,OAAO;AAClB,0BAAoB,OAAO;AAAA;AAE7B,kBAAc,wBAAwB;AACtC,QAAI,SAAS,8BAA8B,MAAM;AAC/C,aAAO,SAAS;AAAA;AAElB,SAAK,OAAO;AAAA;AAEd,gBAAa,SAAQ,UAAU;AAC7B,QAAI,WAAW,SAAS,QAAQ;AAC9B,aAAO;AACT,aAAS,iBAAiB,WAAW;AACrC,eAAW,SAAS,MAAM;AAC1B,SAAK,OAAO;AACZ,WAAO;AAAA;AAET,kBAAgB,UAAU;AACxB,UAAM,qBAAqB,SAAS;AACpC,eAAW,SAAQ,oBAAoB;AACrC,iBAAW,OAAO,mBAAmB,QAAO;AAAA;AAE9C,UAAM,kBAAkB,SAAS;AACjC,eAAW,SAAQ,iBAAiB;AAClC,YAAM,SAAQ,gBAAgB;AAC9B,eAAS,IAAI,GAAG,IAAI,OAAM,QAAQ,IAAI,GAAG,KAAK;AAC5C,mBAAW,OAAO,OAAM,IAAI;AAAA;AAAA;AAAA;AAIlC,oCAAkC,UAAU;AAC1C,UAAM,UAAU;AAChB,UAAM,gBAAgB,SAAS;AAC/B,UAAM,mBAAmB,SAAS,WAAW;AAC7C,QAAI,WAAU;AACd,QAAI,kBAAkB,MAAM;AAC1B,YAAM,SAAQ,cAAc;AAC5B,iBAAU,cAAc;AACxB,eAAS,IAAI,GAAG,IAAI,OAAM,QAAQ,IAAI,GAAG,KAAK,GAAG;AAC/C,cAAM,IAAI,OAAM,IAAI;AACpB,cAAM,IAAI,OAAM,IAAI;AACpB,cAAM,KAAI,OAAM,IAAI;AACpB,gBAAQ,KAAK,GAAG,GAAG,GAAG,IAAG,IAAG;AAAA;AAAA,WAEzB;AACL,YAAM,SAAQ,iBAAiB;AAC/B,iBAAU,iBAAiB;AAC3B,eAAS,IAAI,GAAG,IAAI,OAAM,SAAS,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG;AACvD,cAAM,IAAI,IAAI;AACd,cAAM,IAAI,IAAI;AACd,cAAM,KAAI,IAAI;AACd,gBAAQ,KAAK,GAAG,GAAG,GAAG,IAAG,IAAG;AAAA;AAAA;AAGhC,UAAM,YAAY,IAAK,UAAS,WAAW,QAAQ,wBAAwB,uBAAuB,SAAS;AAC3G,cAAU,UAAU;AACpB,UAAM,oBAAoB,oBAAoB,IAAI;AAClD,QAAI;AACF,iBAAW,OAAO;AACpB,wBAAoB,IAAI,UAAU;AAAA;AAEpC,iCAA+B,UAAU;AACvC,UAAM,mBAAmB,oBAAoB,IAAI;AACjD,QAAI,kBAAkB;AACpB,YAAM,gBAAgB,SAAS;AAC/B,UAAI,kBAAkB,MAAM;AAC1B,YAAI,iBAAiB,UAAU,cAAc,SAAS;AACpD,mCAAyB;AAAA;AAAA;AAAA,WAGxB;AACL,+BAAyB;AAAA;AAE3B,WAAO,oBAAoB,IAAI;AAAA;AAEjC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAGJ,oCAAoC,KAAI,YAAY,MAAM,cAAc;AACtE,QAAM,WAAW,aAAa;AAC9B,MAAI;AACJ,mBAAiB,OAAO;AACtB,WAAO;AAAA;AAET,MAAI,MAAM;AACV,oBAAkB,OAAO;AACvB,WAAO,MAAM;AACb,sBAAkB,MAAM;AAAA;AAE1B,mBAAgB,QAAO,OAAO;AAC5B,QAAG,aAAa,MAAM,OAAO,MAAM,SAAQ;AAC3C,SAAK,OAAO,OAAO,MAAM;AAAA;AAE3B,2BAAyB,QAAO,OAAO,WAAW;AAChD,QAAI,cAAc;AAChB;AACF,QAAI,WAAW;AACf,QAAI,UAAU;AACZ,kBAAY;AACZ,mBAAa;AAAA,WACR;AACL,kBAAY,WAAW,IAAI;AAC3B,mBAAa;AACb,UAAI,cAAc,MAAM;AACtB,gBAAQ,MAAM;AACd;AAAA;AAAA;AAGJ,cAAU,YAAY,MAAM,OAAO,MAAM,SAAQ,iBAAiB;AAClE,SAAK,OAAO,OAAO,MAAM;AAAA;AAE3B,OAAK,UAAU;AACf,OAAK,WAAW;AAChB,OAAK,SAAS;AACd,OAAK,kBAAkB;AAAA;AAEzB,mBAAmB,KAAI;AACrB,QAAM,SAAS;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA;AAEZ,QAAM,UAAS;AAAA,IACb,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,OAAO;AAAA;AAET,kBAAgB,OAAO,MAAM,eAAe;AAC1C,YAAO;AACP,YAAQ;AAAA,WACD;AACH,gBAAO,aAAa,gBAAiB,SAAQ;AAC7C;AAAA,WACG;AACH,gBAAO,SAAS,gBAAiB,SAAQ;AACzC;AAAA,WACG;AACH,gBAAO,SAAS,gBAAiB,SAAQ;AACzC;AAAA,WACG;AACH,gBAAO,SAAS,gBAAgB;AAChC;AAAA,WACG;AACH,gBAAO,UAAU,gBAAgB;AACjC;AAAA;AAEA,gBAAQ,MAAM,uCAAuC;AACrD;AAAA;AAAA;AAGN,mBAAiB;AACf,YAAO;AACP,YAAO,QAAQ;AACf,YAAO,YAAY;AACnB,YAAO,SAAS;AAChB,YAAO,QAAQ;AAAA;AAEjB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,WAAW;AAAA,IACX;AAAA,IACA;AAAA;AAAA;AAGJ,uCAAiC,QAAQ;AAAA,EACvC,YAAY,QAAO,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG;AACzD,UAAM;AACN,SAAK,QAAQ,EAAC,aAAM,OAAO,QAAQ;AACnC,SAAK,YAAY;AACjB,SAAK,YAAY;AACjB,SAAK,QAAQ;AACb,SAAK,kBAAkB;AACvB,SAAK,QAAQ;AACb,SAAK,kBAAkB;AACvB,SAAK,cAAc;AAAA;AAAA;AAGvB,mBAAmB,UAAU,uBAAuB;AACpD,uBAAuB,GAAG,GAAG;AAC3B,SAAO,EAAE,KAAK,EAAE;AAAA;AAElB,0BAA0B,GAAG,GAAG;AAC9B,SAAO,KAAK,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE;AAAA;AAErC,qBAAqB,OAAO,WAAW;AACrC,MAAI,cAAc;AAClB,QAAM,SAAQ,UAAU,+BAA+B,UAAU,KAAK,QAAQ,UAAU;AACxF,MAAI,kBAAiB;AACnB,kBAAc;AAAA,WACP,kBAAiB;AACxB,kBAAc;AAAA,WACP,kBAAiB;AACxB,kBAAc;AAAA;AAEd,YAAQ,MAAM,oEAAoE;AACpF,QAAM,aAAa;AAAA;AAErB,2BAA2B,KAAI,cAAc,UAAU;AACrD,QAAM,iBAAiB;AACvB,QAAM,kBAAkB,IAAI,aAAa;AACzC,QAAM,gBAAgB,IAAI;AAC1B,QAAM,QAAQ,IAAI;AAClB,QAAM,iBAAiB;AACvB,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,mBAAe,KAAK,CAAC,GAAG;AAAA;AAE1B,kBAAgB,SAAQ,UAAU,UAAU,SAAS;AACnD,UAAM,mBAAmB,QAAO;AAChC,QAAI,aAAa,aAAa,MAAM;AAClC,YAAM,uBAAuB,SAAS,gBAAgB,SAAS;AAC/D,UAAI,QAAQ,cAAc,IAAI;AAC9B,UAAI,UAAU,UAAU,MAAM,UAAU,sBAAsB;AAC5D,YAAI,UAAU;AACZ,gBAAM,QAAQ;AAChB,cAAM,kBAAkB,SAAS,gBAAgB,WAAW;AAC5D,cAAM,eAAe,SAAS,gBAAgB;AAC9C,cAAM,eAAe,SAAS,gBAAgB,UAAU;AACxD,cAAM,mBAAmB,SAAS,WAAW,SAAS;AACtD,cAAM,qBAAqB,oBAAoB,OAAO,IAAI;AAC1D,YAAI,QAAQ,mBAAmB;AAC/B,YAAI,SAAS;AACb,YAAI,QAAQ,aAAa,gBAAgB;AACvC,mBAAS,KAAK,KAAK,QAAQ,aAAa;AACxC,kBAAQ,aAAa;AAAA;AAEvB,cAAM,SAAS,IAAI,aAAa,QAAQ,SAAS,IAAI;AACrD,cAAM,UAAU,IAAI,mBAAmB,QAAQ,OAAO,QAAQ;AAC9D,gBAAQ,SAAS;AACjB,gBAAQ,OAAO;AACf,cAAM,mBAAmB,qBAAqB;AAC9C,iBAAS,IAAI,GAAG,IAAI,sBAAsB,KAAK;AAC7C,gBAAM,cAAc,aAAa;AACjC,gBAAM,cAAc,aAAa;AACjC,gBAAM,UAAS,QAAQ,SAAS,IAAI;AACpC,mBAAS,IAAI,GAAG,IAAI,YAAY,OAAO,KAAK;AAC1C,kBAAM,oBAAoB,aAAa;AACvC,gBAAI,YAAY,eAAe;AAC7B,0BAAY,OAAO;AACrB,kBAAM,SAAS,IAAI;AACnB,mBAAO,UAAS,SAAS,KAAK,MAAM;AACpC,mBAAO,UAAS,SAAS,KAAK,MAAM;AACpC,mBAAO,UAAS,SAAS,KAAK,MAAM;AACpC,mBAAO,UAAS,SAAS,KAAK;AAC9B,gBAAI,oBAAoB,MAAM;AAC5B,oBAAM,oBAAoB,aAAa;AACvC,kBAAI,YAAY,eAAe;AAC7B,4BAAY,OAAO;AACrB,qBAAO,UAAS,SAAS,KAAK,MAAM;AACpC,qBAAO,UAAS,SAAS,KAAK,MAAM;AACpC,qBAAO,UAAS,SAAS,KAAK,MAAM;AACpC,qBAAO,UAAS,SAAS,KAAK;AAAA;AAAA;AAAA;AAIpC,gBAAQ;AAAA,UACN,OAAO;AAAA,UACP;AAAA,UACA,MAAM,IAAI,QAAQ,OAAO;AAAA;AAE3B,sBAAc,IAAI,UAAU;AAAA;AAE9B,UAAI,qBAAqB;AACzB,eAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,KAAK;AAChD,8BAAsB,iBAAiB;AAAA;AAEzC,YAAM,qBAAqB,SAAS,uBAAuB,IAAI,IAAI;AACnE,cAAQ,cAAc,SAAS,KAAI,4BAA4B;AAC/D,cAAQ,cAAc,SAAS,KAAI,yBAAyB;AAC5D,cAAQ,cAAc,SAAS,KAAI,uBAAuB,MAAM,SAAS;AACzE,cAAQ,cAAc,SAAS,KAAI,2BAA2B,MAAM;AAAA,WAC/D;AACL,YAAM,UAAS,qBAAqB,SAAS,IAAI,iBAAiB;AAClE,UAAI,aAAa,eAAe,SAAS;AACzC,UAAI,eAAe,UAAU,WAAW,WAAW,SAAQ;AACzD,qBAAa;AACb,iBAAS,IAAI,GAAG,IAAI,SAAQ,KAAK;AAC/B,qBAAW,KAAK,CAAC,GAAG;AAAA;AAEtB,uBAAe,SAAS,MAAM;AAAA;AAEhC,eAAS,IAAI,GAAG,IAAI,SAAQ,KAAK;AAC/B,cAAM,YAAY,WAAW;AAC7B,kBAAU,KAAK;AACf,kBAAU,KAAK,iBAAiB;AAAA;AAElC,iBAAW,KAAK;AAChB,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAI,IAAI,WAAU,WAAW,GAAG,IAAI;AAClC,yBAAe,GAAG,KAAK,WAAW,GAAG;AACrC,yBAAe,GAAG,KAAK,WAAW,GAAG;AAAA,eAChC;AACL,yBAAe,GAAG,KAAK,OAAO;AAC9B,yBAAe,GAAG,KAAK;AAAA;AAAA;AAG3B,qBAAe,KAAK;AACpB,YAAM,eAAe,SAAS,gBAAgB;AAC9C,YAAM,eAAe,SAAS,gBAAgB;AAC9C,UAAI,qBAAqB;AACzB,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,cAAM,YAAY,eAAe;AACjC,cAAM,SAAQ,UAAU;AACxB,cAAM,QAAQ,UAAU;AACxB,YAAI,WAAU,OAAO,oBAAoB,OAAO;AAC9C,cAAI,gBAAgB,SAAS,aAAa,gBAAgB,OAAO,aAAa,SAAQ;AACpF,qBAAS,aAAa,gBAAgB,GAAG,aAAa;AAAA;AAExD,cAAI,gBAAgB,SAAS,aAAa,gBAAgB,OAAO,aAAa,SAAQ;AACpF,qBAAS,aAAa,gBAAgB,GAAG,aAAa;AAAA;AAExD,0BAAgB,KAAK;AACrB,gCAAsB;AAAA,eACjB;AACL,cAAI,gBAAgB,SAAS,aAAa,gBAAgB,OAAO,MAAM;AACrE,qBAAS,gBAAgB,gBAAgB;AAAA;AAE3C,cAAI,gBAAgB,SAAS,aAAa,gBAAgB,OAAO,MAAM;AACrE,qBAAS,gBAAgB,gBAAgB;AAAA;AAE3C,0BAAgB,KAAK;AAAA;AAAA;AAGzB,YAAM,qBAAqB,SAAS,uBAAuB,IAAI,IAAI;AACnE,cAAQ,cAAc,SAAS,KAAI,4BAA4B;AAC/D,cAAQ,cAAc,SAAS,KAAI,yBAAyB;AAAA;AAAA;AAGhE,SAAO;AAAA,IACL;AAAA;AAAA;AAGJ,sBAAsB,KAAI,YAAY,YAAY,MAAM;AACtD,MAAI,YAAY,IAAI;AACpB,kBAAgB,SAAQ;AACtB,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,WAAW,QAAO;AACxB,UAAM,iBAAiB,WAAW,IAAI,SAAQ;AAC9C,QAAI,UAAU,IAAI,oBAAoB,OAAO;AAC3C,iBAAW,OAAO;AAClB,gBAAU,IAAI,gBAAgB;AAAA;AAEhC,QAAI,QAAO,iBAAiB;AAC1B,UAAI,QAAO,iBAAiB,WAAW,4BAA4B,OAAO;AACxE,gBAAO,iBAAiB,WAAW;AAAA;AAErC,iBAAW,OAAO,QAAO,gBAAgB;AACzC,UAAI,QAAO,kBAAkB,MAAM;AACjC,mBAAW,OAAO,QAAO,eAAe;AAAA;AAAA;AAG5C,WAAO;AAAA;AAET,qBAAmB;AACjB,gBAAY,IAAI;AAAA;AAElB,kCAAgC,OAAO;AACrC,UAAM,gBAAgB,MAAM;AAC5B,kBAAc,oBAAoB,WAAW;AAC7C,eAAW,OAAO,cAAc;AAChC,QAAI,cAAc,kBAAkB;AAClC,iBAAW,OAAO,cAAc;AAAA;AAEpC,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA;AAGJ,kCAA4B,QAAQ;AAAA,EAClC,YAAY,QAAO,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG;AACzD,UAAM;AACN,SAAK,QAAQ,EAAC,aAAM,OAAO,QAAQ;AACnC,SAAK,YAAY;AACjB,SAAK,YAAY;AACjB,SAAK,QAAQ;AACb,SAAK,kBAAkB;AACvB,SAAK,QAAQ;AACb,SAAK,kBAAkB;AACvB,SAAK,cAAc;AAAA;AAAA;AAGvB,cAAc,UAAU,kBAAkB;AAC1C,IAAM,eAAe,IAAI;AACzB,IAAM,sBAAsB,IAAI;AAChC,IAAM,iBAAiB,IAAI;AAC3B,IAAM,mBAAmB,IAAI;AAC7B,IAAM,gBAAgB;AACtB,IAAM,gBAAgB;AACtB,IAAM,YAAY,IAAI,aAAa;AACnC,IAAM,YAAY,IAAI,aAAa;AACnC,IAAM,YAAY,IAAI,aAAa;AACnC,iBAAiB,QAAO,SAAS,WAAW;AAC1C,QAAM,YAAY,OAAM;AACxB,MAAI,aAAa,KAAK,YAAY;AAChC,WAAO;AACT,QAAM,IAAI,UAAU;AACpB,MAAI,IAAI,cAAc;AACtB,MAAI,MAAM,QAAQ;AAChB,QAAI,IAAI,aAAa;AACrB,kBAAc,KAAK;AAAA;AAErB,MAAI,YAAY,GAAG;AACjB,cAAU,QAAQ,GAAG;AACrB,aAAS,IAAI,GAAG,UAAS,GAAG,MAAM,SAAS,EAAE,GAAG;AAC9C,iBAAU;AACV,aAAM,GAAG,QAAQ,GAAG;AAAA;AAAA;AAGxB,SAAO;AAAA;AAET,qBAAqB,GAAG,GAAG;AACzB,MAAI,EAAE,WAAW,EAAE;AACjB,WAAO;AACT,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAI,GAAG,KAAK;AACxC,QAAI,EAAE,OAAO,EAAE;AACb,aAAO;AAAA;AAEX,SAAO;AAAA;AAET,oBAAmB,GAAG,GAAG;AACvB,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAI,GAAG,KAAK;AACxC,MAAE,KAAK,EAAE;AAAA;AAAA;AAGb,uBAAuB,UAAU,GAAG;AAClC,MAAI,IAAI,cAAc;AACtB,MAAI,MAAM,QAAQ;AAChB,QAAI,IAAI,WAAW;AACnB,kBAAc,KAAK;AAAA;AAErB,WAAS,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG;AAC5B,MAAE,KAAK,SAAS;AAAA;AAElB,SAAO;AAAA;AAET,qBAAqB,KAAI,GAAG;AAC1B,QAAM,SAAQ,KAAK;AACnB,MAAI,OAAM,OAAO;AACf;AACF,MAAG,UAAU,KAAK,MAAM;AACxB,SAAM,KAAK;AAAA;AAEb,qBAAqB,KAAI,GAAG;AAC1B,QAAM,SAAQ,KAAK;AACnB,MAAI,EAAE,MAAM,QAAQ;AAClB,QAAI,OAAM,OAAO,EAAE,KAAK,OAAM,OAAO,EAAE,GAAG;AACxC,UAAG,UAAU,KAAK,MAAM,EAAE,GAAG,EAAE;AAC/B,aAAM,KAAK,EAAE;AACb,aAAM,KAAK,EAAE;AAAA;AAAA,SAEV;AACL,QAAI,YAAY,QAAO;AACrB;AACF,QAAG,WAAW,KAAK,MAAM;AACzB,eAAU,QAAO;AAAA;AAAA;AAGrB,qBAAqB,KAAI,GAAG;AAC1B,QAAM,SAAQ,KAAK;AACnB,MAAI,EAAE,MAAM,QAAQ;AAClB,QAAI,OAAM,OAAO,EAAE,KAAK,OAAM,OAAO,EAAE,KAAK,OAAM,OAAO,EAAE,GAAG;AAC5D,UAAG,UAAU,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;AACpC,aAAM,KAAK,EAAE;AACb,aAAM,KAAK,EAAE;AACb,aAAM,KAAK,EAAE;AAAA;AAAA,aAEN,EAAE,MAAM,QAAQ;AACzB,QAAI,OAAM,OAAO,EAAE,KAAK,OAAM,OAAO,EAAE,KAAK,OAAM,OAAO,EAAE,GAAG;AAC5D,UAAG,UAAU,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;AACpC,aAAM,KAAK,EAAE;AACb,aAAM,KAAK,EAAE;AACb,aAAM,KAAK,EAAE;AAAA;AAAA,SAEV;AACL,QAAI,YAAY,QAAO;AACrB;AACF,QAAG,WAAW,KAAK,MAAM;AACzB,eAAU,QAAO;AAAA;AAAA;AAGrB,qBAAqB,KAAI,GAAG;AAC1B,QAAM,SAAQ,KAAK;AACnB,MAAI,EAAE,MAAM,QAAQ;AAClB,QAAI,OAAM,OAAO,EAAE,KAAK,OAAM,OAAO,EAAE,KAAK,OAAM,OAAO,EAAE,KAAK,OAAM,OAAO,EAAE,GAAG;AAChF,UAAG,UAAU,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACzC,aAAM,KAAK,EAAE;AACb,aAAM,KAAK,EAAE;AACb,aAAM,KAAK,EAAE;AACb,aAAM,KAAK,EAAE;AAAA;AAAA,SAEV;AACL,QAAI,YAAY,QAAO;AACrB;AACF,QAAG,WAAW,KAAK,MAAM;AACzB,eAAU,QAAO;AAAA;AAAA;AAGrB,oBAAoB,KAAI,GAAG;AACzB,QAAM,SAAQ,KAAK;AACnB,QAAM,WAAW,EAAE;AACnB,MAAI,aAAa,QAAQ;AACvB,QAAI,YAAY,QAAO;AACrB;AACF,QAAG,iBAAiB,KAAK,MAAM,OAAO;AACtC,eAAU,QAAO;AAAA,SACZ;AACL,QAAI,YAAY,QAAO;AACrB;AACF,cAAU,IAAI;AACd,QAAG,iBAAiB,KAAK,MAAM,OAAO;AACtC,eAAU,QAAO;AAAA;AAAA;AAGrB,oBAAoB,KAAI,GAAG;AACzB,QAAM,SAAQ,KAAK;AACnB,QAAM,WAAW,EAAE;AACnB,MAAI,aAAa,QAAQ;AACvB,QAAI,YAAY,QAAO;AACrB;AACF,QAAG,iBAAiB,KAAK,MAAM,OAAO;AACtC,eAAU,QAAO;AAAA,SACZ;AACL,QAAI,YAAY,QAAO;AACrB;AACF,cAAU,IAAI;AACd,QAAG,iBAAiB,KAAK,MAAM,OAAO;AACtC,eAAU,QAAO;AAAA;AAAA;AAGrB,oBAAoB,KAAI,GAAG;AACzB,QAAM,SAAQ,KAAK;AACnB,QAAM,WAAW,EAAE;AACnB,MAAI,aAAa,QAAQ;AACvB,QAAI,YAAY,QAAO;AACrB;AACF,QAAG,iBAAiB,KAAK,MAAM,OAAO;AACtC,eAAU,QAAO;AAAA,SACZ;AACL,QAAI,YAAY,QAAO;AACrB;AACF,cAAU,IAAI;AACd,QAAG,iBAAiB,KAAK,MAAM,OAAO;AACtC,eAAU,QAAO;AAAA;AAAA;AAGrB,qBAAqB,KAAI,GAAG;AAC1B,QAAM,SAAQ,KAAK;AACnB,MAAI,OAAM,OAAO;AACf;AACF,MAAG,UAAU,KAAK,MAAM;AACxB,SAAM,KAAK;AAAA;AAEb,qBAAqB,KAAI,GAAG;AAC1B,QAAM,SAAQ,KAAK;AACnB,MAAI,YAAY,QAAO;AACrB;AACF,MAAG,WAAW,KAAK,MAAM;AACzB,aAAU,QAAO;AAAA;AAEnB,qBAAqB,KAAI,GAAG;AAC1B,QAAM,SAAQ,KAAK;AACnB,MAAI,YAAY,QAAO;AACrB;AACF,MAAG,WAAW,KAAK,MAAM;AACzB,aAAU,QAAO;AAAA;AAEnB,qBAAqB,KAAI,GAAG;AAC1B,QAAM,SAAQ,KAAK;AACnB,MAAI,YAAY,QAAO;AACrB;AACF,MAAG,WAAW,KAAK,MAAM;AACzB,aAAU,QAAO;AAAA;AAEnB,sBAAsB,KAAI,GAAG;AAC3B,QAAM,SAAQ,KAAK;AACnB,MAAI,OAAM,OAAO;AACf;AACF,MAAG,WAAW,KAAK,MAAM;AACzB,SAAM,KAAK;AAAA;AAEb,sBAAsB,KAAI,GAAG;AAC3B,QAAM,SAAQ,KAAK;AACnB,MAAI,YAAY,QAAO;AACrB;AACF,MAAG,YAAY,KAAK,MAAM;AAC1B,aAAU,QAAO;AAAA;AAEnB,sBAAsB,KAAI,GAAG;AAC3B,QAAM,SAAQ,KAAK;AACnB,MAAI,YAAY,QAAO;AACrB;AACF,MAAG,YAAY,KAAK,MAAM;AAC1B,aAAU,QAAO;AAAA;AAEnB,sBAAsB,KAAI,GAAG;AAC3B,QAAM,SAAQ,KAAK;AACnB,MAAI,YAAY,QAAO;AACrB;AACF,MAAG,YAAY,KAAK,MAAM;AAC1B,aAAU,QAAO;AAAA;AAEnB,oBAAoB,KAAI,GAAG,UAAU;AACnC,QAAM,SAAQ,KAAK;AACnB,QAAM,OAAO,SAAS;AACtB,MAAI,OAAM,OAAO,MAAM;AACrB,QAAG,UAAU,KAAK,MAAM;AACxB,WAAM,KAAK;AAAA;AAEb,WAAS,iBAAiB,KAAK,cAAc;AAAA;AAE/C,sBAAsB,KAAI,GAAG,UAAU;AACrC,QAAM,SAAQ,KAAK;AACnB,QAAM,OAAO,SAAS;AACtB,MAAI,OAAM,OAAO,MAAM;AACrB,QAAG,UAAU,KAAK,MAAM;AACxB,WAAM,KAAK;AAAA;AAEb,WAAS,aAAa,KAAK,gBAAgB;AAAA;AAE7C,oBAAoB,KAAI,GAAG,UAAU;AACnC,QAAM,SAAQ,KAAK;AACnB,QAAM,OAAO,SAAS;AACtB,MAAI,OAAM,OAAO,MAAM;AACrB,QAAG,UAAU,KAAK,MAAM;AACxB,WAAM,KAAK;AAAA;AAEb,WAAS,mBAAmB,KAAK,kBAAkB;AAAA;AAErD,2BAA2B,KAAI,GAAG,UAAU;AAC1C,QAAM,SAAQ,KAAK;AACnB,QAAM,OAAO,SAAS;AACtB,MAAI,OAAM,OAAO,MAAM;AACrB,QAAG,UAAU,KAAK,MAAM;AACxB,WAAM,KAAK;AAAA;AAEb,WAAS,kBAAkB,KAAK,qBAAqB;AAAA;AAEvD,2BAA2B,MAAM;AAC/B,UAAQ;AAAA,SACD;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AAAA,SACA;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AAAA,SACA;AAAA,SACA;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AAAA,SACA;AAAA,SACA;AACH,aAAO;AAAA;AAAA;AAGb,0BAA0B,KAAI,GAAG;AAC/B,MAAG,WAAW,KAAK,MAAM;AAAA;AAE3B,0BAA0B,KAAI,GAAG;AAC/B,QAAM,QAAO,QAAQ,GAAG,KAAK,MAAM;AACnC,MAAG,WAAW,KAAK,MAAM;AAAA;AAE3B,0BAA0B,KAAI,GAAG;AAC/B,QAAM,QAAO,QAAQ,GAAG,KAAK,MAAM;AACnC,MAAG,WAAW,KAAK,MAAM;AAAA;AAE3B,0BAA0B,KAAI,GAAG;AAC/B,QAAM,QAAO,QAAQ,GAAG,KAAK,MAAM;AACnC,MAAG,WAAW,KAAK,MAAM;AAAA;AAE3B,yBAAyB,KAAI,GAAG;AAC9B,QAAM,QAAO,QAAQ,GAAG,KAAK,MAAM;AACnC,MAAG,iBAAiB,KAAK,MAAM,OAAO;AAAA;AAExC,yBAAyB,KAAI,GAAG;AAC9B,QAAM,QAAO,QAAQ,GAAG,KAAK,MAAM;AACnC,MAAG,iBAAiB,KAAK,MAAM,OAAO;AAAA;AAExC,yBAAyB,KAAI,GAAG;AAC9B,QAAM,QAAO,QAAQ,GAAG,KAAK,MAAM;AACnC,MAAG,iBAAiB,KAAK,MAAM,OAAO;AAAA;AAExC,0BAA0B,KAAI,GAAG;AAC/B,MAAG,WAAW,KAAK,MAAM;AAAA;AAE3B,0BAA0B,KAAI,GAAG;AAC/B,MAAG,WAAW,KAAK,MAAM;AAAA;AAE3B,0BAA0B,KAAI,GAAG;AAC/B,MAAG,WAAW,KAAK,MAAM;AAAA;AAE3B,0BAA0B,KAAI,GAAG;AAC/B,MAAG,WAAW,KAAK,MAAM;AAAA;AAE3B,2BAA2B,KAAI,GAAG;AAChC,MAAG,YAAY,KAAK,MAAM;AAAA;AAE5B,2BAA2B,KAAI,GAAG;AAChC,MAAG,YAAY,KAAK,MAAM;AAAA;AAE5B,2BAA2B,KAAI,GAAG;AAChC,MAAG,YAAY,KAAK,MAAM;AAAA;AAE5B,2BAA2B,KAAI,GAAG;AAChC,MAAG,YAAY,KAAK,MAAM;AAAA;AAE5B,yBAAyB,KAAI,GAAG,UAAU;AACxC,QAAM,IAAI,EAAE;AACZ,QAAM,QAAQ,cAAc,UAAU;AACtC,MAAG,WAAW,KAAK,MAAM;AACzB,WAAS,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG;AAC5B,aAAS,iBAAiB,EAAE,MAAM,cAAc,MAAM;AAAA;AAAA;AAG1D,0BAA0B,KAAI,GAAG,UAAU;AACzC,QAAM,IAAI,EAAE;AACZ,QAAM,QAAQ,cAAc,UAAU;AACtC,MAAG,WAAW,KAAK,MAAM;AACzB,WAAS,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG;AAC5B,aAAS,aAAa,EAAE,MAAM,gBAAgB,MAAM;AAAA;AAAA;AAGxD,yBAAyB,KAAI,GAAG,UAAU;AACxC,QAAM,IAAI,EAAE;AACZ,QAAM,QAAQ,cAAc,UAAU;AACtC,MAAG,WAAW,KAAK,MAAM;AACzB,WAAS,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG;AAC5B,aAAS,mBAAmB,EAAE,MAAM,kBAAkB,MAAM;AAAA;AAAA;AAGhE,+BAA+B,KAAI,GAAG,UAAU;AAC9C,QAAM,IAAI,EAAE;AACZ,QAAM,QAAQ,cAAc,UAAU;AACtC,MAAG,WAAW,KAAK,MAAM;AACzB,WAAS,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG;AAC5B,aAAS,kBAAkB,EAAE,MAAM,qBAAqB,MAAM;AAAA;AAAA;AAGlE,4BAA4B,MAAM;AAChC,UAAQ;AAAA,SACD;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AAAA,SACA;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AAAA,SACA;AAAA,SACA;AACH,aAAO;AAAA,SACJ;AAAA,SACA;AAAA,SACA;AAAA,SACA;AACH,aAAO;AAAA;AAAA;AAGb,uBAAuB,KAAI,YAAY,MAAM;AAC3C,OAAK,KAAK;AACV,OAAK,OAAO;AACZ,OAAK,QAAQ;AACb,OAAK,WAAW,kBAAkB,WAAW;AAAA;AAE/C,0BAA0B,KAAI,YAAY,MAAM;AAC9C,OAAK,KAAK;AACV,OAAK,OAAO;AACZ,OAAK,QAAQ;AACb,OAAK,OAAO,WAAW;AACvB,OAAK,WAAW,mBAAmB,WAAW;AAAA;AAEhD,iBAAiB,UAAU,cAAc,SAAS,OAAM;AACtD,QAAM,SAAQ,KAAK;AACnB,MAAI,iBAAgB,gBAAgB,OAAM,WAAW,MAAK,QAAQ;AAChE,SAAK,QAAQ,IAAI,aAAa,MAAK;AAAA;AAErC,aAAU,QAAO;AAAA;AAEnB,2BAA2B,KAAI;AAC7B,OAAK,KAAK;AACV,OAAK,MAAM;AACX,OAAK,MAAM;AAAA;AAEb,kBAAkB,UAAU,WAAW,SAAS,KAAI,OAAO,UAAU;AACnE,QAAM,MAAM,KAAK;AACjB,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,MAAM,GAAG,EAAE,GAAG;AAC5C,UAAM,IAAI,IAAI;AACd,MAAE,SAAS,KAAI,MAAM,EAAE,KAAK;AAAA;AAAA;AAGhC,IAAM,aAAa;AACnB,oBAAoB,WAAW,eAAe;AAC5C,YAAU,IAAI,KAAK;AACnB,YAAU,IAAI,cAAc,MAAM;AAAA;AAEpC,sBAAsB,YAAY,MAAM,WAAW;AACjD,QAAM,QAAO,WAAW,MAAM,aAAa,MAAK;AAChD,aAAW,YAAY;AACvB,SAAO,MAAM;AACX,UAAM,SAAQ,WAAW,KAAK,QAAO,WAAW,WAAW;AAC3D,QAAI,MAAK,OAAM;AACf,UAAM,YAAY,OAAM,OAAO,KAAK,YAAY,OAAM;AACtD,QAAI;AACF,YAAK,MAAK;AACZ,QAAI,cAAc,UAAU,cAAc,OAAO,WAAW,MAAM,YAAY;AAC5E,iBAAW,WAAW,cAAc,SAAS,IAAI,cAAc,KAAI,YAAY,QAAQ,IAAI,iBAAiB,KAAI,YAAY;AAC5H;AAAA,WACK;AACL,YAAM,OAAM,UAAU;AACtB,UAAI,QAAO,KAAI;AACf,UAAI,UAAS,QAAQ;AACnB,gBAAO,IAAI,kBAAkB;AAC7B,mBAAW,WAAW;AAAA;AAExB,kBAAY;AAAA;AAAA;AAAA;AAIlB,uBAAuB,KAAI,SAAS;AAClC,OAAK,MAAM;AACX,OAAK,MAAM;AACX,QAAM,IAAI,IAAG,oBAAoB,SAAS;AAC1C,WAAS,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC1B,UAAM,OAAO,IAAG,iBAAiB,SAAS,IAAI,OAAO,IAAG,mBAAmB,SAAS,KAAK;AACzF,iBAAa,MAAM,MAAM;AAAA;AAAA;AAG7B,cAAc,UAAU,WAAW,SAAS,KAAI,OAAM,OAAO,UAAU;AACrE,QAAM,IAAI,KAAK,IAAI;AACnB,MAAI,MAAM;AACR,MAAE,SAAS,KAAI,OAAO;AAAA;AAE1B,cAAc,UAAU,cAAc,SAAS,KAAI,SAAQ,OAAM;AAC/D,QAAM,IAAI,QAAO;AACjB,MAAI,MAAM;AACR,SAAK,SAAS,KAAI,OAAM;AAAA;AAE5B,cAAc,SAAS,SAAS,KAAI,KAAK,SAAQ,UAAU;AACzD,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,MAAM,GAAG,EAAE,GAAG;AAC5C,UAAM,IAAI,IAAI,IAAI,IAAI,QAAO,EAAE;AAC/B,QAAI,EAAE,gBAAgB,OAAO;AAC3B,QAAE,SAAS,KAAI,EAAE,OAAO;AAAA;AAAA;AAAA;AAI9B,cAAc,eAAe,SAAS,KAAK,SAAQ;AACjD,QAAM,IAAI;AACV,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,MAAM,GAAG,EAAE,GAAG;AAC5C,UAAM,IAAI,IAAI;AACd,QAAI,EAAE,MAAM;AACV,QAAE,KAAK;AAAA;AAEX,SAAO;AAAA;AAET,qBAAqB,KAAI,MAAM,SAAQ;AACrC,QAAM,SAAS,IAAG,aAAa;AAC/B,MAAG,aAAa,QAAQ;AACxB,MAAG,cAAc;AACjB,SAAO;AAAA;AAET,IAAI,iBAAiB;AACrB,wBAAwB,SAAQ;AAC9B,QAAM,QAAQ,QAAO,MAAM;AAC3B,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,UAAM,KAAK,IAAI,IAAI,OAAO,MAAM;AAAA;AAElC,SAAO,MAAM,KAAK;AAAA;AAEpB,+BAA+B,UAAU;AACvC,UAAQ;AAAA,SACD;AACH,aAAO,CAAC,UAAU;AAAA,SACf;AACH,aAAO,CAAC,QAAQ;AAAA,SACb;AACH,aAAO,CAAC,QAAQ;AAAA,SACb;AACH,aAAO,CAAC,QAAQ;AAAA,SACb;AACH,aAAO,CAAC,QAAQ;AAAA,SACb;AACH,aAAO,CAAC,QAAQ;AAAA,SACb;AACH,aAAO,CAAC,SAAS;AAAA;AAEjB,cAAQ,KAAK,6CAA6C;AAC1D,aAAO,CAAC,UAAU;AAAA;AAAA;AAGxB,yBAAyB,KAAI,QAAQ,MAAM;AACzC,QAAM,SAAS,IAAG,mBAAmB,QAAQ;AAC7C,QAAM,SAAS,IAAG,iBAAiB,QAAQ;AAC3C,MAAI,UAAU,WAAW;AACvB,WAAO;AACT,SAAO,KAAK,gBAAgB,SAAS,SAAS,SAAS,eAAe,IAAG,gBAAgB;AAAA;AAE3F,kCAAkC,cAAc,UAAU;AACxD,QAAM,aAAa,sBAAsB;AACzC,SAAO,UAAU,eAAe,6BAA6B,WAAW,KAAK,aAAa,WAAW,KAAK;AAAA;AAE5G,kCAAkC,cAAc,UAAU;AACxD,QAAM,aAAa,sBAAsB;AACzC,SAAO,UAAU,eAAe,qCAAqC,WAAW,KAAK,WAAW,KAAK;AAAA;AAEvG,gCAAgC,cAAc,aAAa;AACzD,MAAI;AACJ,UAAQ;AAAA,SACD;AACH,wBAAkB;AAClB;AAAA,SACG;AACH,wBAAkB;AAClB;AAAA,SACG;AACH,wBAAkB;AAClB;AAAA,SACG;AACH,wBAAkB;AAClB;AAAA,SACG;AACH,wBAAkB;AAClB;AAAA;AAEA,cAAQ,KAAK,gDAAgD;AAC7D,wBAAkB;AAAA;AAEtB,SAAO,UAAU,eAAe,6BAA6B,kBAAkB;AAAA;AAEjF,4BAA4B,YAAY;AACtC,QAAM,SAAS;AAAA,IACb,WAAW,wBAAwB,WAAW,gBAAgB,WAAW,WAAW,WAAW,yBAAyB,WAAW,sBAAsB,WAAW,eAAe,WAAW,aAAa,aAAa,oDAAoD;AAAA,IAC3Q,YAAW,sBAAsB,WAAW,2BAA2B,WAAW,6BAA6B,0CAA0C;AAAA,IAC1J,WAAW,wBAAwB,WAAW,+BAA+B,6CAA6C;AAAA,IACzH,YAAW,6BAA6B,WAAW,UAAU,WAAW,iBAAiB,WAAW,oCAAoC,kDAAkD;AAAA;AAE7L,SAAO,OAAO,OAAO,iBAAiB,KAAK;AAAA;AAE7C,yBAAyB,SAAS;AAChC,QAAM,SAAS;AACf,aAAW,SAAQ,SAAS;AAC1B,UAAM,QAAQ,QAAQ;AACtB,QAAI,UAAU;AACZ;AACF,WAAO,KAAK,aAAa,QAAO,MAAM;AAAA;AAExC,SAAO,OAAO,KAAK;AAAA;AAErB,iCAAiC,KAAI,SAAS;AAC5C,QAAM,aAAa;AACnB,QAAM,IAAI,IAAG,oBAAoB,SAAS;AAC1C,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAM,OAAO,IAAG,gBAAgB,SAAS;AACzC,UAAM,QAAO,KAAK;AAClB,QAAI,eAAe;AACnB,QAAI,KAAK,SAAS;AAChB,qBAAe;AACjB,QAAI,KAAK,SAAS;AAChB,qBAAe;AACjB,QAAI,KAAK,SAAS;AAChB,qBAAe;AACjB,eAAW,SAAQ;AAAA,MACjB,MAAM,KAAK;AAAA,MACX,UAAU,IAAG,kBAAkB,SAAS;AAAA,MACxC;AAAA;AAAA;AAGJ,SAAO;AAAA;AAET,yBAAyB,SAAQ;AAC/B,SAAO,YAAW;AAAA;AAEpB,0BAA0B,SAAQ,YAAY;AAC5C,SAAO,QAAO,QAAQ,mBAAmB,WAAW,cAAc,QAAQ,oBAAoB,WAAW,eAAe,QAAQ,yBAAyB,WAAW,mBAAmB,QAAQ,qBAAqB,WAAW,gBAAgB,QAAQ,oBAAoB,WAAW,eAAe,QAAQ,0BAA0B,WAAW,oBAAoB,QAAQ,2BAA2B,WAAW,qBAAqB,QAAQ,4BAA4B,WAAW;AAAA;AAE1d,kCAAkC,SAAQ,YAAY;AACpD,SAAO,QAAO,QAAQ,wBAAwB,WAAW,mBAAmB,QAAQ,0BAA0B,WAAW,oBAAoB,WAAW;AAAA;AAE1J,IAAM,iBAAiB;AACvB,yBAAyB,SAAQ;AAC/B,SAAO,QAAO,QAAQ,gBAAgB;AAAA;AAExC,yBAAyB,QAAO,SAAS;AACvC,QAAM,UAAS,YAAY;AAC3B,MAAI,YAAW,QAAQ;AACrB,UAAM,IAAI,MAAM,+BAA+B,UAAU;AAAA;AAE3D,SAAO,gBAAgB;AAAA;AAEzB,IAAM,8BAA8B;AACpC,IAAM,oBAAoB;AAC1B,qBAAqB,SAAQ;AAC3B,SAAO,QAAO,QAAQ,mBAAmB,cAAc,QAAQ,6BAA6B;AAAA;AAE9F,gCAAgC,QAAO,QAAO,MAAK,SAAS;AAC1D,UAAQ,KAAK;AACb,SAAO,aAAa,QAAO,QAAO,MAAK;AAAA;AAEzC,sBAAsB,QAAO,QAAO,MAAK,SAAS;AAChD,MAAI,UAAS;AACb,WAAS,IAAI,SAAS,SAAQ,IAAI,SAAS,OAAM,KAAK;AACpD,eAAU,QAAQ,QAAQ,gBAAgB,OAAO,IAAI,MAAM,QAAQ,wBAAwB;AAAA;AAE7F,SAAO;AAAA;AAET,2BAA2B,YAAY;AACrC,MAAI,kBAAkB,eAAe,WAAW,YAAY,wBAAwB,WAAW,YAAY;AAC3G,MAAI,WAAW,cAAc,SAAS;AACpC,uBAAmB;AAAA,aACV,WAAW,cAAc,WAAW;AAC7C,uBAAmB;AAAA,aACV,WAAW,cAAc,QAAQ;AAC1C,uBAAmB;AAAA;AAErB,SAAO;AAAA;AAET,qCAAqC,YAAY;AAC/C,MAAI,sBAAsB;AAC1B,MAAI,WAAW,kBAAkB,cAAc;AAC7C,0BAAsB;AAAA,aACb,WAAW,kBAAkB,kBAAkB;AACxD,0BAAsB;AAAA,aACb,WAAW,kBAAkB,cAAc;AACpD,0BAAsB;AAAA;AAExB,SAAO;AAAA;AAET,kCAAkC,YAAY;AAC5C,MAAI,mBAAmB;AACvB,MAAI,WAAW,QAAQ;AACrB,YAAQ,WAAW;AAAA,WACZ;AAAA,WACA;AACH,2BAAmB;AACnB;AAAA,WACG;AAAA,WACA;AACH,2BAAmB;AACnB;AAAA;AAAA;AAGN,SAAO;AAAA;AAET,kCAAkC,YAAY;AAC5C,MAAI,mBAAmB;AACvB,MAAI,WAAW,QAAQ;AACrB,YAAQ,WAAW;AAAA,WACZ;AAAA,WACA;AACH,2BAAmB;AACnB;AAAA;AAAA;AAGN,SAAO;AAAA;AAET,sCAAsC,YAAY;AAChD,MAAI,uBAAuB;AAC3B,MAAI,WAAW,QAAQ;AACrB,YAAQ,WAAW;AAAA,WACZ;AACH,+BAAuB;AACvB;AAAA,WACG;AACH,+BAAuB;AACvB;AAAA,WACG;AACH,+BAAuB;AACvB;AAAA;AAAA;AAGN,SAAO;AAAA;AAET,sBAAsB,UAAU,UAAU,YAAY,eAAe;AACnE,QAAM,MAAK,SAAS;AACpB,QAAM,UAAU,WAAW;AAC3B,MAAI,eAAe,WAAW;AAC9B,MAAI,iBAAiB,WAAW;AAChC,QAAM,sBAAsB,4BAA4B;AACxD,QAAM,mBAAmB,yBAAyB;AAClD,QAAM,mBAAmB,yBAAyB;AAClD,QAAM,uBAAuB,6BAA6B;AAC1D,QAAM,oBAAoB,SAAS,cAAc,IAAI,SAAS,cAAc;AAC5E,QAAM,mBAAmB,WAAW,WAAW,KAAK,mBAAmB;AACvE,QAAM,gBAAgB,gBAAgB;AACtC,QAAM,UAAU,IAAG;AACnB,MAAI,cAAc;AAClB,MAAI,gBAAgB,WAAW,cAAc,cAAc,WAAW,cAAc,OAAO;AAC3F,MAAI,WAAW,qBAAqB;AAClC,mBAAe;AAAA,MACb;AAAA,MACA,OAAO,iBAAiB,KAAK;AAC/B,QAAI,aAAa,SAAS,GAAG;AAC3B,sBAAgB;AAAA;AAElB,qBAAiB;AAAA,MACf;AAAA,MACA;AAAA,MACA,OAAO,iBAAiB,KAAK;AAC/B,QAAI,eAAe,SAAS,GAAG;AAC7B,wBAAkB;AAAA;AAAA,SAEf;AACL,mBAAe;AAAA,MACb,kBAAkB;AAAA,MAClB,yBAAyB,WAAW;AAAA,MACpC;AAAA,MACA,WAAW,aAAa,2BAA2B;AAAA,MACnD,WAAW,kBAAkB,iCAAiC;AAAA,MAC9D,WAAW,yBAAyB,4BAA4B;AAAA,MAChE,0BAA0B;AAAA,MAC1B,uBAAuB,WAAW;AAAA,MAClC,WAAW,UAAU,WAAW,MAAM,oBAAoB;AAAA,MAC1D,WAAW,UAAU,WAAW,UAAU,qBAAqB;AAAA,MAC/D,WAAW,MAAM,oBAAoB;AAAA,MACrC,WAAW,SAAS,uBAAuB;AAAA,MAC3C,WAAW,SAAS,aAAa,mBAAmB;AAAA,MACpD,WAAW,WAAW,yBAAyB;AAAA,MAC/C,WAAW,QAAQ,sBAAsB;AAAA,MACzC,WAAW,cAAc,4BAA4B;AAAA,MACrD,WAAW,UAAU,wBAAwB;AAAA,MAC7C,WAAW,YAAY,0BAA0B;AAAA,MACjD,WAAW,aAAa,WAAW,uBAAuB,kCAAkC;AAAA,MAC5F,WAAW,aAAa,WAAW,wBAAwB,mCAAmC;AAAA,MAC9F,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,wBAAwB,uCAAuC;AAAA,MAC1E,WAAW,qBAAqB,oCAAoC;AAAA,MACpE,WAAW,mBAAmB,WAAW,yBAAyB,gCAAgC;AAAA,MAClG,WAAW,cAAc,4BAA4B;AAAA,MACrD,WAAW,uBAAuB,qCAAqC;AAAA,MACvE,WAAW,mBAAmB,iCAAiC;AAAA,MAC/D,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,WAAW,yBAAyB;AAAA,MAC/C,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,kBAAkB,gCAAgC;AAAA,MAC7D,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,gBAAgB,8BAA8B;AAAA,MACzD,WAAW,oBAAoB,kCAAkC;AAAA,MACjE,WAAW,iBAAiB,wBAAwB;AAAA,MACpD,WAAW,eAAe,sBAAsB;AAAA,MAChD,WAAW,eAAe,4BAA4B;AAAA,MACtD,WAAW,YAAY,mBAAmB;AAAA,MAC1C,WAAW,gBAAgB,4BAA4B;AAAA,MACvD,WAAW,cAAc,wBAAwB;AAAA,MACjD,WAAW,WAAW,yBAAyB;AAAA,MAC/C,WAAW,mBAAmB,yBAAyB;AAAA,MACvD,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,gBAAgB,WAAW,gBAAgB,QAAQ,6BAA6B;AAAA,MAC3F,WAAW,gBAAgB,WAAW,WAAW,iCAAiC;AAAA,MAClF,WAAW,gBAAgB,WAAW,WAAW,gCAAgC,WAAW,oBAAoB;AAAA,MAChH,WAAW,cAAc,yBAAyB;AAAA,MAClD,WAAW,YAAY,uBAAuB;AAAA,MAC9C,WAAW,mBAAmB,0BAA0B;AAAA,MACxD,WAAW,mBAAmB,aAAa,sBAAsB;AAAA,MACjE,WAAW,kBAAkB,gCAAgC;AAAA,MAC7D,WAAW,yBAAyB,4BAA4B;AAAA,MAChE,WAAW,0BAA0B,WAAW,6BAA6B,gCAAgC;AAAA,MAC7G;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,iBAAiB,KAAK;AAC/B,qBAAiB;AAAA,MACf;AAAA,MACA,kBAAkB;AAAA,MAClB,yBAAyB,WAAW;AAAA,MACpC;AAAA,MACA,0BAA0B;AAAA,MAC1B,WAAW,UAAU,WAAW,MAAM,oBAAoB;AAAA,MAC1D,WAAW,UAAU,WAAW,UAAU,qBAAqB;AAAA,MAC/D,WAAW,MAAM,oBAAoB;AAAA,MACrC,WAAW,SAAS,uBAAuB;AAAA,MAC3C,WAAW,SAAS,uBAAuB;AAAA,MAC3C,WAAW,SAAS,aAAa,mBAAmB;AAAA,MACpD,WAAW,SAAS,aAAa,mBAAmB;AAAA,MACpD,WAAW,SAAS,aAAa,uBAAuB;AAAA,MACxD,WAAW,WAAW,yBAAyB;AAAA,MAC/C,WAAW,QAAQ,sBAAsB;AAAA,MACzC,WAAW,cAAc,4BAA4B;AAAA,MACrD,WAAW,UAAU,wBAAwB;AAAA,MAC7C,WAAW,YAAY,0BAA0B;AAAA,MACjD,WAAW,aAAa,WAAW,uBAAuB,kCAAkC;AAAA,MAC5F,WAAW,aAAa,WAAW,wBAAwB,mCAAmC;AAAA,MAC9F,WAAW,YAAY,0BAA0B;AAAA,MACjD,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,wBAAwB,uCAAuC;AAAA,MAC1E,WAAW,qBAAqB,oCAAoC;AAAA,MACpE,WAAW,cAAc,4BAA4B;AAAA,MACrD,WAAW,uBAAuB,qCAAqC;AAAA,MACvE,WAAW,mBAAmB,iCAAiC;AAAA,MAC/D,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,WAAW,yBAAyB;AAAA,MAC/C,WAAW,YAAY,0BAA0B;AAAA,MACjD,WAAW,QAAQ,sBAAsB;AAAA,MACzC,WAAW,gBAAgB,8BAA8B;AAAA,MACzD,WAAW,oBAAoB,kCAAkC;AAAA,MACjE,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,kBAAkB,gCAAgC;AAAA,MAC7D,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,iBAAiB,wBAAwB;AAAA,MACpD,WAAW,gBAAgB,WAAW,kBAAkB,sBAAsB;AAAA,MAC9E,WAAW,eAAe,4BAA4B;AAAA,MACtD,WAAW,YAAY,mBAAmB;AAAA,MAC1C,WAAW,gBAAgB,4BAA4B;AAAA,MACvD,WAAW,cAAc,4BAA4B;AAAA,MACrD,WAAW,cAAc,wBAAwB;AAAA,MACjD,WAAW,cAAc,yBAAyB;AAAA,MAClD,WAAW,YAAY,uBAAuB;AAAA,MAC9C,WAAW,mBAAmB,0BAA0B;AAAA,MACxD,WAAW,mBAAmB,aAAa,sBAAsB;AAAA,MACjE,WAAW,qBAAqB,gCAAgC;AAAA,MAChE,WAAW,0BAA0B,sCAAsC;AAAA,MAC3E,WAAW,yBAAyB,4BAA4B;AAAA,MAChE,WAAW,0BAA0B,WAAW,6BAA6B,gCAAgC;AAAA,MAC5G,YAAW,6BAA6B,WAAW,WAAW,WAAW,oCAAoC,4BAA4B;AAAA,MAC1I;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,gBAAgB,gBAAgB,yBAAyB;AAAA,MACpE,WAAW,gBAAgB,gBAAgB,YAAY,+BAA+B;AAAA,MACtF,WAAW,gBAAgB,gBAAgB,uBAAuB,eAAe,WAAW,eAAe;AAAA,MAC3G,WAAW,YAAY,sBAAsB;AAAA,MAC7C,WAAW,WAAW,YAAY,mBAAmB;AAAA,MACrD,YAAY;AAAA,MACZ,WAAW,MAAM,yBAAyB,oBAAoB,WAAW,eAAe;AAAA,MACxF,WAAW,SAAS,yBAAyB,uBAAuB,WAAW,kBAAkB;AAAA,MACjG,WAAW,SAAS,yBAAyB,uBAAuB,WAAW,kBAAkB;AAAA,MACjG,WAAW,cAAc,yBAAyB,4BAA4B,WAAW,uBAAuB;AAAA,MAChH,WAAW,mBAAmB,yBAAyB,iCAAiC,WAAW,4BAA4B;AAAA,MAC/H,WAAW,gBAAgB,yBAAyB,8BAA8B,WAAW,yBAAyB;AAAA,MACtH,WAAW,WAAW,yBAAyB,yBAAyB,WAAW,oBAAoB;AAAA,MACvG,yBAAyB,uBAAuB,WAAW;AAAA,MAC3D,WAAW,eAAe,2BAA2B,WAAW,eAAe;AAAA,MAC/E;AAAA,MACA,OAAO,iBAAiB,KAAK;AAAA;AAEjC,iBAAe,gBAAgB;AAC/B,iBAAe,iBAAiB,cAAc;AAC9C,iBAAe,yBAAyB,cAAc;AACtD,mBAAiB,gBAAgB;AACjC,mBAAiB,iBAAiB,gBAAgB;AAClD,mBAAiB,yBAAyB,gBAAgB;AAC1D,iBAAe,YAAY;AAC3B,mBAAiB,YAAY;AAC7B,MAAI,WAAW,YAAY,WAAW,wBAAwB,MAAM;AAClE,oBAAgB;AAChB,mBAAe;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK,QAAQ,OAAO;AACtB,qBAAiB;AAAA,MACf;AAAA,MACA,WAAW,gBAAgB,QAAQ,KAAK;AAAA,MACxC,WAAW,gBAAgB,QAAQ,KAAK;AAAA,MACxC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK,QAAQ,OAAO;AAAA;AAExB,QAAM,aAAa,gBAAgB,eAAe;AAClD,QAAM,eAAe,gBAAgB,iBAAiB;AACtD,QAAM,iBAAiB,YAAY,KAAI,OAAO;AAC9C,QAAM,mBAAmB,YAAY,KAAI,OAAO;AAChD,MAAG,aAAa,SAAS;AACzB,MAAG,aAAa,SAAS;AACzB,MAAI,WAAW,wBAAwB,QAAQ;AAC7C,QAAG,mBAAmB,SAAS,GAAG,WAAW;AAAA,aACpC,WAAW,iBAAiB,MAAM;AAC3C,QAAG,mBAAmB,SAAS,GAAG;AAAA;AAEpC,MAAG,YAAY;AACf,MAAI,SAAS,MAAM,mBAAmB;AACpC,UAAM,aAAa,IAAG,kBAAkB,SAAS;AACjD,UAAM,YAAY,IAAG,iBAAiB,gBAAgB;AACtD,UAAM,cAAc,IAAG,iBAAiB,kBAAkB;AAC1D,QAAI,WAAW;AACf,QAAI,kBAAkB;AACtB,QAAI,IAAG,oBAAoB,SAAS,WAAW,OAAO;AACpD,iBAAW;AACX,YAAM,eAAe,gBAAgB,KAAI,gBAAgB;AACzD,YAAM,iBAAiB,gBAAgB,KAAI,kBAAkB;AAC7D,cAAQ,MAAM,sCAAsC,IAAG,aAAa,wBAAwB,IAAG,oBAAoB,SAAS,SAAS,2BAA2B,aAAa,OAAO,eAAe,OAAO;AAAA,eACjM,eAAe,IAAI;AAC5B,cAAQ,KAAK,yCAAyC;AAAA,eAC7C,cAAc,MAAM,gBAAgB,IAAI;AACjD,wBAAkB;AAAA;AAEpB,QAAI,iBAAiB;AACnB,WAAK,cAAc;AAAA,QACjB;AAAA,QACA;AAAA,QACA,cAAc;AAAA,UACZ,KAAK;AAAA,UACL,QAAQ;AAAA;AAAA,QAEV,gBAAgB;AAAA,UACd,KAAK;AAAA,UACL,QAAQ;AAAA;AAAA;AAAA;AAAA;AAKhB,MAAG,aAAa;AAChB,MAAG,aAAa;AAChB,MAAI;AACJ,OAAK,cAAc,WAAW;AAC5B,QAAI,mBAAmB,QAAQ;AAC7B,uBAAiB,IAAI,cAAc,KAAI;AAAA;AAEzC,WAAO;AAAA;AAET,MAAI;AACJ,OAAK,gBAAgB,WAAW;AAC9B,QAAI,qBAAqB,QAAQ;AAC/B,yBAAmB,wBAAwB,KAAI;AAAA;AAEjD,WAAO;AAAA;AAET,OAAK,UAAU,WAAW;AACxB,kBAAc,uBAAuB;AACrC,QAAG,cAAc;AACjB,SAAK,UAAU;AAAA;AAEjB,OAAK,OAAO,WAAW;AACvB,OAAK,KAAK;AACV,OAAK,WAAW;AAChB,OAAK,YAAY;AACjB,OAAK,UAAU;AACf,OAAK,eAAe;AACpB,OAAK,iBAAiB;AACtB,SAAO;AAAA;AAET,uBAAuB,UAAU,UAAU,YAAY,YAAY,cAAc,eAAe,UAAU;AACxG,QAAM,WAAW;AACjB,QAAM,WAAW,aAAa;AAC9B,QAAM,yBAAyB,aAAa;AAC5C,QAAM,sBAAsB,aAAa;AACzC,QAAM,oBAAoB,aAAa;AACvC,QAAM,iBAAiB,aAAa;AACpC,MAAI,YAAY,aAAa;AAC7B,QAAM,YAAY;AAAA,IAChB,mBAAmB;AAAA,IACnB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,IACnB,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA;AAElB,QAAM,iBAAiB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAEF,uBAAqB,SAAQ;AAC3B,UAAM,WAAW,QAAO;AACxB,UAAM,QAAQ,SAAS;AACvB,QAAI,qBAAqB;AACvB,aAAO;AAAA,WACF;AACL,YAAM,kBAAkB;AACxB,YAAM,kBAAkB,KAAK,MAAO,mBAAkB,MAAM;AAC5D,YAAM,WAAW,KAAK,IAAI,iBAAiB,MAAM;AACjD,UAAI,WAAW,MAAM,QAAQ;AAC3B,gBAAQ,KAAK,uCAAuC,MAAM,SAAS,+BAA+B,WAAW;AAC7G,eAAO;AAAA;AAET,aAAO;AAAA;AAAA;AAGX,qCAAmC,MAAK;AACtC,QAAI;AACJ,QAAI,QAAO,KAAI,WAAW;AACxB,iBAAW,KAAI;AAAA,eACN,QAAO,KAAI,qBAAqB;AACzC,cAAQ,KAAK;AACb,iBAAW,KAAI,QAAQ;AAAA,WAClB;AACL,iBAAW;AAAA;AAEb,WAAO;AAAA;AAET,yBAAuB,UAAU,QAAQ,SAAS,OAAO,SAAQ;AAC/D,UAAM,MAAM,MAAM;AAClB,UAAM,cAAc,SAAS,yBAAyB,MAAM,cAAc;AAC1E,UAAM,SAAU,UAAS,yBAAyB,aAAa,UAAU,IAAI,SAAS,UAAU;AAChG,UAAM,WAAW,UAAU,SAAS;AACpC,UAAM,WAAW,QAAO,gBAAgB,YAAY,WAAU;AAC9D,QAAI,SAAS,cAAc,MAAM;AAC/B,kBAAY,aAAa,gBAAgB,SAAS;AAClD,UAAI,cAAc,SAAS,WAAW;AACpC,gBAAQ,KAAK,qCAAqC,SAAS,WAAW,wBAAwB,WAAW;AAAA;AAAA;AAG7G,QAAI,cAAc;AAClB,QAAI,UAAU;AACZ,YAAM,SAAS,UAAU;AACzB,qBAAe,OAAO;AACtB,uBAAiB,OAAO;AAAA,WACnB;AACL,qBAAe,SAAS;AACxB,uBAAiB,SAAS;AAAA;AAE5B,UAAM,sBAAsB,SAAS;AACrC,UAAM,eAAe,SAAS,YAAY;AAC1C,UAAM,eAAe,SAAS,YAAY;AAC1C,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA,YAAY,SAAS;AAAA,MACrB;AAAA,MACA;AAAA,MACA,SAAS,SAAS;AAAA,MAClB,qBAAqB,SAAS,wBAAwB;AAAA,MACtD,aAAa,SAAS;AAAA,MACtB;AAAA,MACA,YAAY,QAAO,oBAAoB;AAAA,MACvC,iBAAiB,QAAO,oBAAoB,QAAQ,QAAO,kBAAkB;AAAA,MAC7E,wBAAwB;AAAA,MACxB,gBAAgB,wBAAwB,OAAO,0BAA0B,oBAAoB,WAAW,SAAS;AAAA,MACjH,KAAK,CAAC,CAAC,SAAS;AAAA,MAChB,aAAa,0BAA0B,SAAS;AAAA,MAChD,QAAQ,CAAC,CAAC,SAAS;AAAA,MACnB,gBAAgB,0BAA0B,SAAS;AAAA,MACnD,QAAQ,CAAC,CAAC;AAAA,MACV,YAAY,UAAU,OAAO;AAAA,MAC7B,gBAAgB,0BAA0B;AAAA,MAC1C,cAAc,CAAC,CAAC,UAAW,QAAO,YAAY,2BAA2B,OAAO,YAAY;AAAA,MAC5F,UAAU,CAAC,CAAC,SAAS;AAAA,MACrB,kBAAkB,0BAA0B,SAAS;AAAA,MACrD,OAAO,CAAC,CAAC,SAAS;AAAA,MAClB,aAAa,CAAC,CAAC,SAAS;AAAA,MACxB,qBAAqB,0BAA0B,SAAS;AAAA,MACxD,SAAS,CAAC,CAAC,SAAS;AAAA,MACpB,WAAW,CAAC,CAAC,SAAS;AAAA,MACtB,sBAAsB,SAAS,kBAAkB;AAAA,MACjD,uBAAuB,SAAS,kBAAkB;AAAA,MAClD,WAAW;AAAA,MACX,cAAc,gBAAgB,CAAC,CAAC,SAAS;AAAA,MACzC,uBAAuB,gBAAgB,CAAC,CAAC,SAAS;AAAA,MAClD,oBAAoB,gBAAgB,CAAC,CAAC,SAAS;AAAA,MAC/C,iBAAiB,CAAC,CAAC,SAAS;AAAA,MAC5B,cAAc,CAAC,CAAC,SAAS;AAAA,MACzB,cAAc,CAAC,CAAC,SAAS;AAAA,MACzB,aAAa,CAAC,CAAC,SAAS;AAAA,MACxB,sBAAsB,CAAC,CAAC,SAAS;AAAA,MACjC,kBAAkB,CAAC,CAAC,SAAS;AAAA,MAC7B,0BAA0B,0BAA0B,SAAS;AAAA,MAC7D,UAAU,CAAC,CAAC,SAAS;AAAA,MACrB,WAAW;AAAA,MACX,aAAa,CAAC,CAAC,SAAS;AAAA,MACxB,OAAO,SAAS,QAAQ;AAAA,MACxB,eAAe,CAAC,CAAC,SAAS;AAAA,MAC1B,uBAAuB,0BAA0B,SAAS;AAAA,MAC1D,mBAAmB,CAAC,CAAC,SAAS;AAAA,MAC9B,cAAc,SAAS,eAAe;AAAA,MACtC,iBAAiB,CAAC,CAAC,SAAS;AAAA,MAC5B,cAAc,CAAC,CAAC,SAAS;AAAA,MACzB,SAAS,SAAS;AAAA,MAClB,gBAAgB,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,QAAO,YAAY,CAAC,CAAC,QAAO,SAAS,WAAW;AAAA,MAC1F,cAAc,SAAS;AAAA,MACvB,cAAc,SAAS,iBAAiB,QAAQ,CAAC,CAAC,QAAO,YAAY,CAAC,CAAC,QAAO,SAAS,WAAW,SAAS,QAAO,SAAS,WAAW,MAAM,aAAa;AAAA,MACzJ,WAAW,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS,yBAAyB,CAAC,CAAC,SAAS,sBAAsB,CAAC,CAAC,SAAS,mBAAmB,CAAC,CAAC,SAAS,mBAAmB,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS,wBAAwB,CAAC,CAAC,SAAS,oBAAoB,CAAC,CAAC,SAAS,iBAAiB,SAAS;AAAA,MAC1e,eAAe,CAAE,EAAC,CAAC,SAAS,OAAO,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS,sBAAsB,SAAS,eAAe,KAAK,CAAC,CAAC,SAAS,mBAAmB,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS,wBAAwB,CAAC,CAAC,SAAS,oBAAoB,SAAS,QAAQ,KAAK,CAAC,CAAC,SAAS,iBAAiB,CAAC,CAAC,SAAS,sBAAsB,CAAC,CAAC,SAAS;AAAA,MACze,KAAK,CAAC,CAAC;AAAA,MACP,QAAQ,SAAS;AAAA,MACjB,SAAS,OAAO,IAAI;AAAA,MACpB,aAAa,CAAC,CAAC,SAAS;AAAA,MACxB,iBAAiB,SAAS;AAAA,MAC1B;AAAA,MACA,UAAU,QAAO,kBAAkB,QAAQ,WAAW;AAAA,MACtD;AAAA,MACA,kBAAkB;AAAA,MAClB,cAAc,CAAC,CAAC,QAAO,YAAY,CAAC,CAAC,QAAO,SAAS,gBAAgB;AAAA,MACrE,cAAc,CAAC,CAAC,QAAO,YAAY,CAAC,CAAC,QAAO,SAAS,gBAAgB;AAAA,MACrE,mBAAmB,CAAC,CAAC,QAAO,YAAY,CAAC,CAAC,QAAO,SAAS,gBAAgB,WAAW,QAAO,SAAS,gBAAgB,SAAS,SAAS;AAAA,MACvI,cAAc,OAAO,YAAY;AAAA,MACjC,gBAAgB,OAAO,MAAM;AAAA,MAC7B,eAAe,OAAO,KAAK;AAAA,MAC3B,mBAAmB,OAAO,SAAS;AAAA,MACnC,eAAe,OAAO,KAAK;AAAA,MAC3B,oBAAoB,OAAO,qBAAqB;AAAA,MAChD,sBAAsB,OAAO,eAAe;AAAA,MAC5C,qBAAqB,OAAO,cAAc;AAAA,MAC1C,mBAAmB,SAAS;AAAA,MAC5B,qBAAqB,SAAS;AAAA,MAC9B,QAAQ,SAAS;AAAA,MACjB,WAAW,SAAS;AAAA,MACpB,kBAAkB,SAAS,UAAU,WAAW,QAAQ,SAAS;AAAA,MACjE,eAAe,SAAS,UAAU;AAAA,MAClC,aAAa,SAAS,aAAa,SAAS,cAAc;AAAA,MAC1D,yBAAyB,SAAS;AAAA,MAClC,oBAAoB,SAAS;AAAA,MAC7B,aAAa,SAAS,SAAS;AAAA,MAC/B,WAAW,SAAS,SAAS;AAAA,MAC7B,cAAc,SAAS,iBAAiB,SAAS,SAAS,eAAe;AAAA,MACzE,qBAAqB,SAAS;AAAA,MAC9B,sBAAsB,SAAS,cAAc,SAAS,WAAW;AAAA,MACjE,oBAAoB,SAAS,cAAc,SAAS,WAAW;AAAA,MAC/D,sBAAsB,SAAS,cAAc,SAAS,WAAW;AAAA,MACjE,2BAA2B,SAAS,cAAc,SAAS,WAAW;AAAA,MACtE,4BAA4B,YAAY,WAAW,IAAI;AAAA,MACvD,8BAA8B,YAAY,WAAW,IAAI;AAAA,MACzD,mCAAmC,YAAY,WAAW,IAAI;AAAA,MAC9D,uBAAuB,SAAS;AAAA;AAElC,WAAO;AAAA;AAET,8BAA4B,YAAY;AACtC,UAAM,SAAQ;AACd,QAAI,WAAW,UAAU;AACvB,aAAM,KAAK,WAAW;AAAA,WACjB;AACL,aAAM,KAAK,WAAW,WAAW;AACjC,aAAM,KAAK,WAAW,WAAW;AAAA;AAEnC,QAAI,WAAW,YAAY,QAAQ;AACjC,iBAAW,SAAQ,WAAW,SAAS;AACrC,eAAM,KAAK;AACX,eAAM,KAAK,WAAW,QAAQ;AAAA;AAAA;AAGlC,QAAI,WAAW,wBAAwB,OAAO;AAC5C,eAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC9C,eAAM,KAAK,WAAW,eAAe;AAAA;AAEvC,aAAM,KAAK,SAAS;AACpB,aAAM,KAAK,SAAS;AAAA;AAEtB,WAAM,KAAK,WAAW;AACtB,WAAO,OAAM;AAAA;AAEf,uBAAqB,UAAU;AAC7B,UAAM,WAAW,UAAU,SAAS;AACpC,QAAI;AACJ,QAAI,UAAU;AACZ,YAAM,SAAS,UAAU;AACzB,iBAAW,cAAc,MAAM,OAAO;AAAA,WACjC;AACL,iBAAW,SAAS;AAAA;AAEtB,WAAO;AAAA;AAET,0BAAwB,YAAY,UAAU;AAC5C,QAAI;AACJ,aAAS,IAAI,GAAG,MAAK,SAAS,QAAQ,IAAI,KAAI,KAAK;AACjD,YAAM,qBAAqB,SAAS;AACpC,UAAI,mBAAmB,aAAa,UAAU;AAC5C,kBAAU;AACV,UAAE,QAAQ;AACV;AAAA;AAAA;AAGJ,QAAI,YAAY,QAAQ;AACtB,gBAAU,IAAI,aAAa,UAAU,UAAU,YAAY;AAC3D,eAAS,KAAK;AAAA;AAEhB,WAAO;AAAA;AAET,0BAAwB,SAAS;AAC/B,QAAI,EAAE,QAAQ,cAAc,GAAG;AAC7B,YAAM,IAAI,SAAS,QAAQ;AAC3B,eAAS,KAAK,SAAS,SAAS,SAAS;AACzC,eAAS;AACT,cAAQ;AAAA;AAAA;AAGZ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAGJ,2BAA2B;AACzB,MAAI,aAAa,IAAI;AACrB,gBAAa,SAAQ;AACnB,QAAI,OAAM,WAAW,IAAI;AACzB,QAAI,SAAQ,QAAQ;AAClB,aAAM;AACN,iBAAW,IAAI,SAAQ;AAAA;AAEzB,WAAO;AAAA;AAET,kBAAgB,SAAQ;AACtB,eAAW,OAAO;AAAA;AAEpB,kBAAgB,SAAQ,KAAK,OAAO;AAClC,eAAW,IAAI,SAAQ,OAAO;AAAA;AAEhC,qBAAmB;AACjB,iBAAa,IAAI;AAAA;AAEnB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAGJ,2BAA2B,GAAG,GAAG;AAC/B,MAAI,EAAE,eAAe,EAAE,YAAY;AACjC,WAAO,EAAE,aAAa,EAAE;AAAA,aACf,EAAE,gBAAgB,EAAE,aAAa;AAC1C,WAAO,EAAE,cAAc,EAAE;AAAA,aAChB,EAAE,YAAY,EAAE,SAAS;AAClC,WAAO,EAAE,QAAQ,KAAK,EAAE,QAAQ;AAAA,aACvB,EAAE,SAAS,OAAO,EAAE,SAAS,IAAI;AAC1C,WAAO,EAAE,SAAS,KAAK,EAAE,SAAS;AAAA,aACzB,EAAE,MAAM,EAAE,GAAG;AACtB,WAAO,EAAE,IAAI,EAAE;AAAA,SACV;AACL,WAAO,EAAE,KAAK,EAAE;AAAA;AAAA;AAGpB,kCAAkC,GAAG,GAAG;AACtC,MAAI,EAAE,eAAe,EAAE,YAAY;AACjC,WAAO,EAAE,aAAa,EAAE;AAAA,aACf,EAAE,gBAAgB,EAAE,aAAa;AAC1C,WAAO,EAAE,cAAc,EAAE;AAAA,aAChB,EAAE,MAAM,EAAE,GAAG;AACtB,WAAO,EAAE,IAAI,EAAE;AAAA,SACV;AACL,WAAO,EAAE,KAAK,EAAE;AAAA;AAAA;AAGpB,yBAAyB,YAAY;AACnC,QAAM,cAAc;AACpB,MAAI,mBAAmB;AACvB,QAAM,SAAS;AACf,QAAM,eAAe;AACrB,QAAM,cAAc;AACpB,QAAM,iBAAiB,EAAC,IAAI;AAC5B,mBAAgB;AACd,uBAAmB;AACnB,WAAO,SAAS;AAChB,iBAAa,SAAS;AACtB,gBAAY,SAAS;AAAA;AAEvB,6BAA2B,SAAQ,UAAU,UAAU,YAAY,GAAG,OAAO;AAC3E,QAAI,aAAa,YAAY;AAC7B,UAAM,qBAAqB,WAAW,IAAI;AAC1C,QAAI,eAAe,QAAQ;AACzB,mBAAa;AAAA,QACX,IAAI,QAAO;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,mBAAmB,WAAW;AAAA,QACvC;AAAA,QACA,aAAa,QAAO;AAAA,QACpB;AAAA,QACA;AAAA;AAEF,kBAAY,oBAAoB;AAAA,WAC3B;AACL,iBAAW,KAAK,QAAO;AACvB,iBAAW,SAAS;AACpB,iBAAW,WAAW;AACtB,iBAAW,WAAW;AACtB,iBAAW,UAAU,mBAAmB,WAAW;AACnD,iBAAW,aAAa;AACxB,iBAAW,cAAc,QAAO;AAChC,iBAAW,IAAI;AACf,iBAAW,QAAQ;AAAA;AAErB;AACA,WAAO;AAAA;AAET,iBAAc,SAAQ,UAAU,UAAU,YAAY,GAAG,OAAO;AAC9D,UAAM,aAAa,kBAAkB,SAAQ,UAAU,UAAU,YAAY,GAAG;AAChF,QAAI,SAAS,eAAe,GAAG;AAC7B,mBAAa,KAAK;AAAA,eACT,SAAS,gBAAgB,MAAM;AACxC,kBAAY,KAAK;AAAA,WACZ;AACL,aAAO,KAAK;AAAA;AAAA;AAGhB,mBAAiB,SAAQ,UAAU,UAAU,YAAY,GAAG,OAAO;AACjE,UAAM,aAAa,kBAAkB,SAAQ,UAAU,UAAU,YAAY,GAAG;AAChF,QAAI,SAAS,eAAe,GAAG;AAC7B,mBAAa,QAAQ;AAAA,eACZ,SAAS,gBAAgB,MAAM;AACxC,kBAAY,QAAQ;AAAA,WACf;AACL,aAAO,QAAQ;AAAA;AAAA;AAGnB,iBAAc,kBAAkB,uBAAuB;AACrD,QAAI,OAAO,SAAS;AAClB,aAAO,KAAK,oBAAoB;AAClC,QAAI,aAAa,SAAS;AACxB,mBAAa,KAAK,yBAAyB;AAC7C,QAAI,YAAY,SAAS;AACvB,kBAAY,KAAK,yBAAyB;AAAA;AAE9C,oBAAkB;AAChB,aAAS,IAAI,kBAAkB,KAAK,YAAY,QAAQ,IAAI,IAAI,KAAK;AACnE,YAAM,aAAa,YAAY;AAC/B,UAAI,WAAW,OAAO;AACpB;AACF,iBAAW,KAAK;AAChB,iBAAW,SAAS;AACpB,iBAAW,WAAW;AACtB,iBAAW,WAAW;AACtB,iBAAW,UAAU;AACrB,iBAAW,QAAQ;AAAA;AAAA;AAGvB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAGJ,0BAA0B,YAAY;AACpC,MAAI,QAAQ,IAAI;AAChB,gBAAa,OAAO,iBAAiB;AACnC,QAAI;AACJ,QAAI,MAAM,IAAI,WAAW,OAAO;AAC9B,aAAO,IAAI,gBAAgB;AAC3B,YAAM,IAAI,OAAO,CAAC;AAAA,WACb;AACL,UAAI,mBAAmB,MAAM,IAAI,OAAO,QAAQ;AAC9C,eAAO,IAAI,gBAAgB;AAC3B,cAAM,IAAI,OAAO,KAAK;AAAA,aACjB;AACL,eAAO,MAAM,IAAI,OAAO;AAAA;AAAA;AAG5B,WAAO;AAAA;AAET,qBAAmB;AACjB,YAAQ,IAAI;AAAA;AAEd,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA;AAGJ,yBAAyB;AACvB,QAAM,SAAS;AACf,SAAO;AAAA,IACL,KAAK,SAAS,OAAO;AACnB,UAAI,OAAO,MAAM,QAAQ,QAAQ;AAC/B,eAAO,OAAO,MAAM;AAAA;AAEtB,UAAI;AACJ,cAAQ,MAAM;AAAA,aACP;AACH,qBAAW;AAAA,YACT,WAAW,IAAI;AAAA,YACf,OAAO,IAAI;AAAA;AAEb;AAAA,aACG;AACH,qBAAW;AAAA,YACT,UAAU,IAAI;AAAA,YACd,WAAW,IAAI;AAAA,YACf,OAAO,IAAI;AAAA,YACX,UAAU;AAAA,YACV,SAAS;AAAA,YACT,aAAa;AAAA,YACb,OAAO;AAAA;AAET;AAAA,aACG;AACH,qBAAW;AAAA,YACT,UAAU,IAAI;AAAA,YACd,OAAO,IAAI;AAAA,YACX,UAAU;AAAA,YACV,OAAO;AAAA;AAET;AAAA,aACG;AACH,qBAAW;AAAA,YACT,WAAW,IAAI;AAAA,YACf,UAAU,IAAI;AAAA,YACd,aAAa,IAAI;AAAA;AAEnB;AAAA,aACG;AACH,qBAAW;AAAA,YACT,OAAO,IAAI;AAAA,YACX,UAAU,IAAI;AAAA,YACd,WAAW,IAAI;AAAA,YACf,YAAY,IAAI;AAAA;AAElB;AAAA;AAEJ,aAAO,MAAM,MAAM;AACnB,aAAO;AAAA;AAAA;AAAA;AAIb,+BAA+B;AAC7B,QAAM,SAAS;AACf,SAAO;AAAA,IACL,KAAK,SAAS,OAAO;AACnB,UAAI,OAAO,MAAM,QAAQ,QAAQ;AAC/B,eAAO,OAAO,MAAM;AAAA;AAEtB,UAAI;AACJ,cAAQ,MAAM;AAAA,aACP;AACH,qBAAW;AAAA,YACT,YAAY;AAAA,YACZ,kBAAkB;AAAA,YAClB,cAAc;AAAA,YACd,eAAe,IAAI;AAAA;AAErB;AAAA,aACG;AACH,qBAAW;AAAA,YACT,YAAY;AAAA,YACZ,kBAAkB;AAAA,YAClB,cAAc;AAAA,YACd,eAAe,IAAI;AAAA;AAErB;AAAA,aACG;AACH,qBAAW;AAAA,YACT,YAAY;AAAA,YACZ,kBAAkB;AAAA,YAClB,cAAc;AAAA,YACd,eAAe,IAAI;AAAA,YACnB,kBAAkB;AAAA,YAClB,iBAAiB;AAAA;AAEnB;AAAA;AAEJ,aAAO,MAAM,MAAM;AACnB,aAAO;AAAA;AAAA;AAAA;AAIb,IAAI,cAAc;AAClB,kCAAkC,QAAQ,QAAQ;AAChD,SAAQ,QAAO,aAAa,IAAI,KAAM,QAAO,aAAa,IAAI;AAAA;AAEhE,qBAAqB,YAAY,cAAc;AAC7C,QAAM,SAAQ,IAAI;AAClB,QAAM,cAAc;AACpB,QAAM,QAAQ;AAAA,IACZ,SAAS;AAAA,IACT,MAAM;AAAA,MACJ,mBAAmB;AAAA,MACnB,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,uBAAuB;AAAA,MACvB,iBAAiB;AAAA,MACjB,gBAAgB;AAAA;AAAA,IAElB,SAAS,CAAC,GAAG,GAAG;AAAA,IAChB,OAAO;AAAA,IACP,aAAa;AAAA,IACb,mBAAmB;AAAA,IACnB,sBAAsB;AAAA,IACtB,yBAAyB;AAAA,IACzB,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,UAAU;AAAA,IACV,cAAc;AAAA,IACd,cAAc;AAAA,IACd,OAAO;AAAA,IACP,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,MAAM;AAAA;AAER,WAAS,IAAI,GAAG,IAAI,GAAG;AACrB,UAAM,MAAM,KAAK,IAAI;AACvB,QAAM,UAAU,IAAI;AACpB,QAAM,UAAU,IAAI;AACpB,QAAM,WAAW,IAAI;AACrB,iBAAe,QAAQ,yBAAyB;AAC9C,QAAI,IAAI,GAAG,IAAI,GAAG,IAAI;AACtB,aAAS,IAAI,GAAG,IAAI,GAAG;AACrB,YAAM,MAAM,GAAG,IAAI,GAAG,GAAG;AAC3B,QAAI,oBAAoB;AACxB,QAAI,cAAc;AAClB,QAAI,aAAa;AACjB,QAAI,iBAAiB;AACrB,QAAI,aAAa;AACjB,QAAI,wBAAwB;AAC5B,QAAI,kBAAkB;AACtB,QAAI,iBAAiB;AACrB,WAAO,KAAK;AACZ,UAAM,cAAc,4BAA4B,OAAO,KAAK,KAAK;AACjE,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC7C,YAAM,QAAQ,OAAO;AACrB,YAAM,QAAQ,MAAM;AACpB,YAAM,YAAY,MAAM;AACxB,YAAM,WAAW,MAAM;AACvB,YAAM,YAAY,MAAM,UAAU,MAAM,OAAO,MAAM,MAAM,OAAO,IAAI,UAAU;AAChF,UAAI,MAAM,gBAAgB;AACxB,aAAK,MAAM,IAAI,YAAY;AAC3B,aAAK,MAAM,IAAI,YAAY;AAC3B,aAAK,MAAM,IAAI,YAAY;AAAA,iBAClB,MAAM,cAAc;AAC7B,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,gBAAM,MAAM,GAAG,gBAAgB,MAAM,GAAG,aAAa,IAAI;AAAA;AAAA,iBAElD,MAAM,oBAAoB;AACnC,cAAM,WAAW,OAAM,IAAI;AAC3B,iBAAS,MAAM,KAAK,MAAM,OAAO,eAAe,MAAM,YAAY;AAClE,YAAI,MAAM,YAAY;AACpB,gBAAM,SAAS,MAAM;AACrB,gBAAM,iBAAiB,YAAY,IAAI;AACvC,yBAAe,aAAa,OAAO;AACnC,yBAAe,mBAAmB,OAAO;AACzC,yBAAe,eAAe,OAAO;AACrC,yBAAe,gBAAgB,OAAO;AACtC,gBAAM,kBAAkB,qBAAqB;AAC7C,gBAAM,qBAAqB,qBAAqB;AAChD,gBAAM,wBAAwB,qBAAqB,MAAM,OAAO;AAChE;AAAA;AAEF,cAAM,YAAY,qBAAqB;AACvC;AAAA,iBACS,MAAM,aAAa;AAC5B,cAAM,WAAW,OAAM,IAAI;AAC3B,iBAAS,SAAS,sBAAsB,MAAM;AAC9C,iBAAS,MAAM,KAAK,OAAO,eAAe,YAAY;AACtD,iBAAS,WAAW;AACpB,iBAAS,UAAU,KAAK,IAAI,MAAM;AAClC,iBAAS,cAAc,KAAK,IAAI,MAAM,QAAS,KAAI,MAAM;AACzD,iBAAS,QAAQ,MAAM;AACvB,YAAI,MAAM,YAAY;AACpB,gBAAM,SAAS,MAAM;AACrB,gBAAM,iBAAiB,YAAY,IAAI;AACvC,yBAAe,aAAa,OAAO;AACnC,yBAAe,mBAAmB,OAAO;AACzC,yBAAe,eAAe,OAAO;AACrC,yBAAe,gBAAgB,OAAO;AACtC,gBAAM,WAAW,cAAc;AAC/B,gBAAM,cAAc,cAAc;AAClC,gBAAM,iBAAiB,cAAc,MAAM,OAAO;AAClD;AAAA;AAEF,cAAM,KAAK,cAAc;AACzB;AAAA,iBACS,MAAM,iBAAiB;AAChC,cAAM,WAAW,OAAM,IAAI;AAC3B,iBAAS,MAAM,KAAK,OAAO,eAAe;AAC1C,iBAAS,UAAU,IAAI,MAAM,QAAQ,KAAK,GAAG;AAC7C,iBAAS,WAAW,IAAI,GAAG,MAAM,SAAS,KAAK;AAC/C,cAAM,SAAS,kBAAkB;AACjC;AAAA,iBACS,MAAM,cAAc;AAC7B,cAAM,WAAW,OAAM,IAAI;AAC3B,iBAAS,MAAM,KAAK,MAAM,OAAO,eAAe,MAAM,YAAY;AAClE,iBAAS,WAAW,MAAM;AAC1B,iBAAS,QAAQ,MAAM;AACvB,YAAI,MAAM,YAAY;AACpB,gBAAM,SAAS,MAAM;AACrB,gBAAM,iBAAiB,YAAY,IAAI;AACvC,yBAAe,aAAa,OAAO;AACnC,yBAAe,mBAAmB,OAAO;AACzC,yBAAe,eAAe,OAAO;AACrC,yBAAe,gBAAgB,OAAO;AACtC,yBAAe,mBAAmB,OAAO,OAAO;AAChD,yBAAe,kBAAkB,OAAO,OAAO;AAC/C,gBAAM,YAAY,eAAe;AACjC,gBAAM,eAAe,eAAe;AACpC,gBAAM,kBAAkB,eAAe,MAAM,OAAO;AACpD;AAAA;AAEF,cAAM,MAAM,eAAe;AAC3B;AAAA,iBACS,MAAM,mBAAmB;AAClC,cAAM,WAAW,OAAM,IAAI;AAC3B,iBAAS,SAAS,KAAK,MAAM,OAAO,eAAe,YAAY;AAC/D,iBAAS,YAAY,KAAK,MAAM,aAAa,eAAe,YAAY;AACxE,cAAM,KAAK,cAAc;AACzB;AAAA;AAAA;AAGJ,QAAI,iBAAiB,GAAG;AACtB,UAAI,aAAa,UAAU;AACzB,cAAM,eAAe,YAAY;AACjC,cAAM,eAAe,YAAY;AAAA,aAC5B;AACL,YAAI,WAAW,IAAI,gCAAgC,MAAM;AACvD,gBAAM,eAAe,YAAY;AACjC,gBAAM,eAAe,YAAY;AAAA,mBACxB,WAAW,IAAI,qCAAqC,MAAM;AACnE,gBAAM,eAAe,YAAY;AACjC,gBAAM,eAAe,YAAY;AAAA,eAC5B;AACL,kBAAQ,MAAM;AAAA;AAAA;AAAA;AAIpB,UAAM,QAAQ,KAAK;AACnB,UAAM,QAAQ,KAAK;AACnB,UAAM,QAAQ,KAAK;AACnB,UAAM,QAAO,MAAM;AACnB,QAAI,MAAK,sBAAsB,qBAAqB,MAAK,gBAAgB,eAAe,MAAK,eAAe,cAAc,MAAK,mBAAmB,kBAAkB,MAAK,eAAe,cAAc,MAAK,0BAA0B,yBAAyB,MAAK,oBAAoB,mBAAmB,MAAK,mBAAmB,gBAAgB;AAChV,YAAM,YAAY,SAAS;AAC3B,YAAM,KAAK,SAAS;AACpB,YAAM,SAAS,SAAS;AACxB,YAAM,MAAM,SAAS;AACrB,YAAM,KAAK,SAAS;AACpB,YAAM,kBAAkB,SAAS;AACjC,YAAM,qBAAqB,SAAS;AACpC,YAAM,YAAY,SAAS;AAC3B,YAAM,eAAe,SAAS;AAC9B,YAAM,WAAW,SAAS;AAC1B,YAAM,cAAc,SAAS;AAC7B,YAAM,wBAAwB,SAAS;AACvC,YAAM,kBAAkB,SAAS;AACjC,YAAM,iBAAiB,SAAS;AAChC,YAAK,oBAAoB;AACzB,YAAK,cAAc;AACnB,YAAK,aAAa;AAClB,YAAK,iBAAiB;AACtB,YAAK,aAAa;AAClB,YAAK,wBAAwB;AAC7B,YAAK,kBAAkB;AACvB,YAAK,iBAAiB;AACtB,YAAM,UAAU;AAAA;AAAA;AAGpB,qBAAmB,QAAQ,QAAQ;AACjC,QAAI,oBAAoB;AACxB,QAAI,cAAc;AAClB,QAAI,aAAa;AACjB,QAAI,iBAAiB;AACrB,QAAI,aAAa;AACjB,UAAM,aAAa,OAAO;AAC1B,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC7C,YAAM,QAAQ,OAAO;AACrB,UAAI,MAAM,oBAAoB;AAC5B,cAAM,WAAW,MAAM,YAAY;AACnC,iBAAS,UAAU,sBAAsB,MAAM;AAC/C,gBAAQ,sBAAsB,MAAM,OAAO;AAC3C,iBAAS,UAAU,IAAI;AACvB,iBAAS,UAAU,mBAAmB;AACtC;AAAA,iBACS,MAAM,aAAa;AAC5B,cAAM,WAAW,MAAM,KAAK;AAC5B,iBAAS,SAAS,sBAAsB,MAAM;AAC9C,iBAAS,SAAS,aAAa;AAC/B,iBAAS,UAAU,sBAAsB,MAAM;AAC/C,gBAAQ,sBAAsB,MAAM,OAAO;AAC3C,iBAAS,UAAU,IAAI;AACvB,iBAAS,UAAU,mBAAmB;AACtC;AAAA,iBACS,MAAM,iBAAiB;AAChC,cAAM,WAAW,MAAM,SAAS;AAChC,iBAAS,SAAS,sBAAsB,MAAM;AAC9C,iBAAS,SAAS,aAAa;AAC/B,iBAAS;AACT,gBAAQ,KAAK,MAAM;AACnB,gBAAQ,YAAY;AACpB,iBAAS,gBAAgB;AACzB,iBAAS,UAAU,IAAI,MAAM,QAAQ,KAAK,GAAG;AAC7C,iBAAS,WAAW,IAAI,GAAG,MAAM,SAAS,KAAK;AAC/C,iBAAS,UAAU,aAAa;AAChC,iBAAS,WAAW,aAAa;AACjC;AAAA,iBACS,MAAM,cAAc;AAC7B,cAAM,WAAW,MAAM,MAAM;AAC7B,iBAAS,SAAS,sBAAsB,MAAM;AAC9C,iBAAS,SAAS,aAAa;AAC/B;AAAA,iBACS,MAAM,mBAAmB;AAClC,cAAM,WAAW,MAAM,KAAK;AAC5B,iBAAS,UAAU,sBAAsB,MAAM;AAC/C,iBAAS,UAAU,mBAAmB;AACtC,iBAAS,UAAU;AACnB;AAAA;AAAA;AAAA;AAIN,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAGJ,0BAA0B,YAAY,cAAc;AAClD,QAAM,SAAS,IAAI,YAAY,YAAY;AAC3C,QAAM,cAAc;AACpB,QAAM,eAAe;AACrB,mBAAgB;AACd,gBAAY,SAAS;AACrB,iBAAa,SAAS;AAAA;AAExB,qBAAmB,OAAO;AACxB,gBAAY,KAAK;AAAA;AAEnB,sBAAoB,aAAa;AAC/B,iBAAa,KAAK;AAAA;AAEpB,uBAAqB,yBAAyB;AAC5C,WAAO,MAAM,aAAa;AAAA;AAE5B,2BAAyB,QAAQ;AAC/B,WAAO,UAAU,aAAa;AAAA;AAEhC,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA;AAEF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAGJ,2BAA2B,YAAY,cAAc;AACnD,MAAI,eAAe,IAAI;AACvB,gBAAa,OAAO,kBAAkB,GAAG;AACvC,QAAI;AACJ,QAAI,aAAa,IAAI,WAAW,OAAO;AACrC,oBAAc,IAAI,iBAAiB,YAAY;AAC/C,mBAAa,IAAI,OAAO,CAAC;AAAA,WACpB;AACL,UAAI,mBAAmB,aAAa,IAAI,OAAO,QAAQ;AACrD,sBAAc,IAAI,iBAAiB,YAAY;AAC/C,qBAAa,IAAI,OAAO,KAAK;AAAA,aACxB;AACL,sBAAc,aAAa,IAAI,OAAO;AAAA;AAAA;AAG1C,WAAO;AAAA;AAET,qBAAmB;AACjB,mBAAe,IAAI;AAAA;AAErB,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA;AAGJ,sCAAgC,SAAS;AAAA,EACvC,YAAY,YAAY;AACtB;AACA,SAAK,OAAO;AACZ,SAAK,eAAe;AACpB,SAAK,MAAM;AACX,SAAK,WAAW;AAChB,SAAK,kBAAkB;AACvB,SAAK,oBAAoB;AACzB,SAAK,mBAAmB;AACxB,SAAK,YAAY;AACjB,SAAK,qBAAqB;AAC1B,SAAK,MAAM;AACX,SAAK,UAAU;AAAA;AAAA,EAEjB,KAAK,QAAQ;AACX,UAAM,KAAK;AACX,SAAK,eAAe,OAAO;AAC3B,SAAK,MAAM,OAAO;AAClB,SAAK,WAAW,OAAO;AACvB,SAAK,kBAAkB,OAAO;AAC9B,SAAK,oBAAoB,OAAO;AAChC,SAAK,mBAAmB,OAAO;AAC/B,SAAK,YAAY,OAAO;AACxB,SAAK,qBAAqB,OAAO;AACjC,WAAO;AAAA;AAAA;AAGX,kBAAkB,UAAU,sBAAsB;AAClD,yCAAmC,SAAS;AAAA,EAC1C,YAAY,YAAY;AACtB;AACA,SAAK,OAAO;AACZ,SAAK,oBAAoB,IAAI;AAC7B,SAAK,eAAe;AACpB,SAAK,cAAc;AACnB,SAAK,MAAM;AACX,SAAK,WAAW;AAChB,SAAK,kBAAkB;AACvB,SAAK,oBAAoB;AACzB,SAAK,mBAAmB;AACxB,SAAK,MAAM;AACX,SAAK,UAAU;AAAA;AAAA,EAEjB,KAAK,QAAQ;AACX,UAAM,KAAK;AACX,SAAK,kBAAkB,KAAK,OAAO;AACnC,SAAK,eAAe,OAAO;AAC3B,SAAK,cAAc,OAAO;AAC1B,SAAK,MAAM,OAAO;AAClB,SAAK,WAAW,OAAO;AACvB,SAAK,kBAAkB,OAAO;AAC9B,SAAK,oBAAoB,OAAO;AAChC,SAAK,mBAAmB,OAAO;AAC/B,WAAO;AAAA;AAAA;AAGX,qBAAqB,UAAU,yBAAyB;AACxD,IAAM,SAAS;AACf,IAAM,WAAW;AACjB,wBAAwB,WAAW,UAAU,eAAe;AAC1D,MAAI,WAAW,IAAI;AACnB,QAAM,iBAAiB,IAAI,WAAW,gBAAgB,IAAI,WAAW,YAAY,IAAI,WAAW,iBAAiB,IAAI,kBAAkB,EAAC,cAAc,qBAAoB,oBAAoB,IAAI,wBAAwB,iBAAiB,IAAI,kBAAkB,cAAc;AAC/Q,QAAM,aAAa,EAAC,GAAG,UAAU,GAAG,WAAW,GAAG;AAClD,QAAM,yBAAyB,IAAI,eAAe;AAAA,IAChD,SAAS;AAAA,MACP,aAAa;AAAA;AAAA,IAEf,UAAU;AAAA,MACR,aAAa,EAAC,OAAO;AAAA,MACrB,YAAY,EAAC,OAAO,IAAI;AAAA,MACxB,QAAQ,EAAC,OAAO;AAAA;AAAA,IAElB,cAAc;AAAA,IACd,gBAAgB;AAAA;AAElB,QAAM,2BAA2B,uBAAuB;AACxD,2BAAyB,QAAQ,kBAAkB;AACnD,QAAM,gBAAgB,IAAI;AAC1B,gBAAc,aAAa,YAAY,IAAI,gBAAgB,IAAI,aAAa,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,IAAI,GAAG,OAAO;AACpH,QAAM,iBAAiB,IAAI,KAAK,eAAe;AAC/C,QAAM,QAAQ;AACd,OAAK,UAAU;AACf,OAAK,aAAa;AAClB,OAAK,cAAc;AACnB,OAAK,OAAO;AACZ,OAAK,SAAS,SAAS,QAAQ,OAAO,QAAQ;AAC5C,QAAI,MAAM,YAAY;AACpB;AACF,QAAI,MAAM,eAAe,SAAS,MAAM,gBAAgB;AACtD;AACF,QAAI,OAAO,WAAW;AACpB;AACF,UAAM,sBAAsB,UAAU;AACtC,UAAM,iBAAiB,UAAU;AACjC,UAAM,oBAAoB,UAAU;AACpC,UAAM,SAAS,UAAU;AACzB,WAAO,YAAY;AACnB,WAAO,QAAQ,MAAM,SAAS,GAAG,GAAG,GAAG;AACvC,WAAO,QAAQ,MAAM,QAAQ;AAC7B,WAAO,eAAe;AACtB,aAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK;AAC/C,YAAM,QAAQ,OAAO;AACrB,YAAM,SAAS,MAAM;AACrB,UAAI,WAAW,QAAQ;AACrB,gBAAQ,KAAK,yBAAyB,OAAO;AAC7C;AAAA;AAEF,UAAI,OAAO,eAAe,SAAS,OAAO,gBAAgB;AACxD;AACF,qBAAe,KAAK,OAAO;AAC3B,YAAM,qBAAqB,OAAO;AAClC,qBAAe,SAAS;AACxB,oBAAc,KAAK,OAAO;AAC1B,UAAI,eAAe,IAAI,mBAAmB,eAAe,IAAI,iBAAiB;AAC5E,YAAI,eAAe,IAAI,iBAAiB;AACtC,wBAAc,IAAI,KAAK,MAAM,kBAAkB,mBAAmB;AAClE,yBAAe,IAAI,cAAc,IAAI,mBAAmB;AACxD,iBAAO,QAAQ,IAAI,cAAc;AAAA;AAEnC,YAAI,eAAe,IAAI,iBAAiB;AACtC,wBAAc,IAAI,KAAK,MAAM,kBAAkB,mBAAmB;AAClE,yBAAe,IAAI,cAAc,IAAI,mBAAmB;AACxD,iBAAO,QAAQ,IAAI,cAAc;AAAA;AAAA;AAGrC,UAAI,OAAO,QAAQ,QAAQ,CAAC,OAAO,sBAAsB,KAAK,SAAS,cAAc;AACnF,cAAM,OAAO,EAAC,WAAW,cAAc,WAAW,cAAc,QAAQ;AACxE,eAAO,MAAM,IAAI,kBAAkB,eAAe,GAAG,eAAe,GAAG;AACvE,eAAO,IAAI,QAAQ,OAAO,MAAM,OAAO;AACvC,eAAO,UAAU,IAAI,kBAAkB,eAAe,GAAG,eAAe,GAAG;AAC3E,eAAO,OAAO;AAAA;AAEhB,UAAI,OAAO,QAAQ,MAAM;AACvB,cAAM,OAAO,EAAC,WAAW,eAAe,WAAW,eAAe,QAAQ;AAC1E,eAAO,MAAM,IAAI,kBAAkB,eAAe,GAAG,eAAe,GAAG;AACvE,eAAO,IAAI,QAAQ,OAAO,MAAM,OAAO;AACvC,eAAO,OAAO;AAAA;AAEhB,gBAAU,gBAAgB,OAAO;AACjC,gBAAU;AACV,YAAM,gBAAgB,OAAO;AAC7B,eAAS,MAAK,GAAG,MAAK,eAAe,OAAM;AACzC,cAAM,YAAW,OAAO,YAAY;AACpC,kBAAU,IAAI,cAAc,IAAI,UAAS,GAAG,cAAc,IAAI,UAAS,GAAG,cAAc,IAAI,UAAS,GAAG,cAAc,IAAI,UAAS;AACnI,eAAO,SAAS;AAChB,eAAO,eAAe,OAAO;AAC7B,mBAAW,OAAO;AAClB,qBAAa,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK;AAAA;AAEzD,UAAI,CAAC,OAAO,sBAAsB,KAAK,SAAS,cAAc;AAC5D,gBAAQ,QAAQ;AAAA;AAElB,aAAO,cAAc;AAAA;AAEvB,UAAM,cAAc;AACpB,cAAU,gBAAgB,qBAAqB,gBAAgB;AAAA;AAEjE,mBAAiB,QAAQ,QAAQ;AAC/B,UAAM,WAAW,SAAS,OAAO;AACjC,QAAI,uBAAuB,QAAQ,gBAAgB,OAAO,aAAa;AACrE,6BAAuB,QAAQ,cAAc,OAAO;AACpD,+BAAyB,QAAQ,cAAc,OAAO;AACtD,6BAAuB,cAAc;AACrC,+BAAyB,cAAc;AAAA;AAEzC,2BAAuB,SAAS,YAAY,QAAQ,OAAO,IAAI;AAC/D,2BAAuB,SAAS,WAAW,QAAQ,OAAO;AAC1D,2BAAuB,SAAS,OAAO,QAAQ,OAAO;AACtD,cAAU,gBAAgB,OAAO;AACjC,cAAU;AACV,cAAU,mBAAmB,QAAQ,MAAM,UAAU,wBAAwB,gBAAgB;AAC7F,6BAAyB,SAAS,YAAY,QAAQ,OAAO,QAAQ;AACrE,6BAAyB,SAAS,WAAW,QAAQ,OAAO;AAC5D,6BAAyB,SAAS,OAAO,QAAQ,OAAO;AACxD,cAAU,gBAAgB,OAAO;AACjC,cAAU;AACV,cAAU,mBAAmB,QAAQ,MAAM,UAAU,0BAA0B,gBAAgB;AAAA;AAEjG,4BAA0B,SAAQ,UAAU,UAAU,OAAO,kBAAkB,iBAAiB,MAAM;AACpG,QAAI,SAAS;AACb,UAAM,iBAAiB,MAAM,iBAAiB,OAAO,QAAO,yBAAyB,QAAO;AAC5F,QAAI,mBAAmB,QAAQ;AAC7B,eAAS;AAAA,WACJ;AACL,eAAS,MAAM,iBAAiB,OAAO,oBAAoB;AAAA;AAE7D,QAAI,UAAU,wBAAwB,SAAS,gBAAgB,QAAQ,SAAS,eAAe,WAAW,KAAK,SAAS,mBAAmB,SAAS,sBAAsB,KAAK,SAAS,YAAY,SAAS,YAAY,GAAG;AAC1N,YAAM,OAAO,OAAO,MAAM,OAAO,SAAS;AAC1C,UAAI,sBAAsB,eAAe;AACzC,UAAI,wBAAwB,QAAQ;AAClC,8BAAsB;AACtB,uBAAe,QAAQ;AAAA;AAEzB,UAAI,iBAAiB,oBAAoB;AACzC,UAAI,mBAAmB,QAAQ;AAC7B,yBAAiB,OAAO;AACxB,4BAAoB,QAAQ;AAAA;AAE9B,eAAS;AAAA;AAEX,WAAO,UAAU,SAAS;AAC1B,WAAO,YAAY,SAAS;AAC5B,QAAI,SAAS,cAAc;AACzB,aAAO,OAAO,SAAS,eAAe,OAAO,SAAS,aAAa,SAAS;AAAA,WACvE;AACL,aAAO,OAAO,SAAS,eAAe,OAAO,SAAS,aAAa,WAAW,SAAS;AAAA;AAEzF,WAAO,WAAW,SAAS;AAC3B,WAAO,YAAY,SAAS;AAC5B,WAAO,cAAc,SAAS;AAC9B,WAAO,iBAAiB,SAAS;AACjC,WAAO,mBAAmB,SAAS;AACnC,WAAO,kBAAkB,SAAS;AAClC,WAAO,oBAAoB,SAAS;AACpC,WAAO,mBAAmB,SAAS;AACnC,WAAO,qBAAqB,SAAS;AACrC,WAAO,YAAY,SAAS;AAC5B,QAAI,MAAM,iBAAiB,QAAQ,OAAO,2BAA2B,MAAM;AACzE,aAAO,kBAAkB,sBAAsB,MAAM;AACrD,aAAO,eAAe;AACtB,aAAO,cAAc;AAAA;AAEvB,WAAO;AAAA;AAET,wBAAsB,SAAQ,QAAQ,cAAc,OAAO,MAAM;AAC/D,QAAI,QAAO,YAAY;AACrB;AACF,UAAM,UAAU,QAAO,OAAO,KAAK,OAAO;AAC1C,QAAI,WAAY,SAAO,UAAU,QAAO,UAAU,QAAO,WAAW;AAClE,UAAK,SAAO,cAAc,QAAO,iBAAiB,SAAS,iBAAkB,EAAC,QAAO,iBAAiB,SAAS,iBAAiB,WAAU;AACxI,gBAAO,gBAAgB,iBAAiB,aAAa,oBAAoB,QAAO;AAChF,cAAM,WAAW,SAAS,OAAO;AACjC,cAAM,WAAW,QAAO;AACxB,YAAI,MAAM,QAAQ,WAAW;AAC3B,gBAAM,SAAS,SAAS;AACxB,mBAAS,KAAI,GAAG,MAAK,OAAO,QAAQ,KAAI,KAAI,MAAK;AAC/C,kBAAM,QAAQ,OAAO;AACrB,kBAAM,gBAAgB,SAAS,MAAM;AACrC,gBAAI,iBAAiB,cAAc,SAAS;AAC1C,oBAAM,gBAAgB,iBAAiB,SAAQ,UAAU,eAAe,OAAO,aAAa,MAAM,aAAa,KAAK;AACpH,wBAAU,mBAAmB,cAAc,MAAM,UAAU,eAAe,SAAQ;AAAA;AAAA;AAAA,mBAG7E,SAAS,SAAS;AAC3B,gBAAM,gBAAgB,iBAAiB,SAAQ,UAAU,UAAU,OAAO,aAAa,MAAM,aAAa,KAAK;AAC/G,oBAAU,mBAAmB,cAAc,MAAM,UAAU,eAAe,SAAQ;AAAA;AAAA;AAAA;AAIxF,UAAM,WAAW,QAAO;AACxB,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC/C,mBAAa,SAAS,IAAI,QAAQ,cAAc,OAAO;AAAA;AAAA;AAAA;AAI7D,oBAAoB,KAAI,YAAY,cAAc;AAChD,QAAM,WAAW,aAAa;AAC9B,yBAAuB;AACrB,QAAI,SAAS;AACb,UAAM,QAAQ,IAAI;AAClB,QAAI,mBAAmB;AACvB,UAAM,oBAAoB,IAAI,QAAQ,GAAG,GAAG,GAAG;AAC/C,WAAO;AAAA,MACL,SAAS,SAAS,WAAW;AAC3B,YAAI,qBAAqB,aAAa,CAAC,QAAQ;AAC7C,cAAG,UAAU,WAAW,WAAW,WAAW;AAC9C,6BAAmB;AAAA;AAAA;AAAA,MAGvB,WAAW,SAAS,MAAM;AACxB,iBAAS;AAAA;AAAA,MAEX,UAAU,SAAS,GAAG,GAAG,GAAG,GAAG,oBAAoB;AACjD,YAAI,uBAAuB,MAAM;AAC/B,eAAK;AACL,eAAK;AACL,eAAK;AAAA;AAEP,cAAM,IAAI,GAAG,GAAG,GAAG;AACnB,YAAI,kBAAkB,OAAO,WAAW,OAAO;AAC7C,cAAG,WAAW,GAAG,GAAG,GAAG;AACvB,4BAAkB,KAAK;AAAA;AAAA;AAAA,MAG3B,OAAO,WAAW;AAChB,iBAAS;AACT,2BAAmB;AACnB,0BAAkB,IAAI,IAAI,GAAG,GAAG;AAAA;AAAA;AAAA;AAItC,yBAAuB;AACrB,QAAI,SAAS;AACb,QAAI,mBAAmB;AACvB,QAAI,mBAAmB;AACvB,QAAI,oBAAoB;AACxB,WAAO;AAAA,MACL,SAAS,SAAS,WAAW;AAC3B,YAAI,WAAW;AACb,kBAAO;AAAA,eACF;AACL,kBAAQ;AAAA;AAAA;AAAA,MAGZ,SAAS,SAAS,WAAW;AAC3B,YAAI,qBAAqB,aAAa,CAAC,QAAQ;AAC7C,cAAG,UAAU;AACb,6BAAmB;AAAA;AAAA;AAAA,MAGvB,SAAS,SAAS,WAAW;AAC3B,YAAI,qBAAqB,WAAW;AAClC,cAAI,WAAW;AACb,oBAAQ;AAAA,mBACD;AACH,oBAAG,UAAU;AACb;AAAA,mBACG;AACH,oBAAG,UAAU;AACb;AAAA,mBACG;AACH,oBAAG,UAAU;AACb;AAAA,mBACG;AACH,oBAAG,UAAU;AACb;AAAA,mBACG;AACH,oBAAG,UAAU;AACb;AAAA,mBACG;AACH,oBAAG,UAAU;AACb;AAAA,mBACG;AACH,oBAAG,UAAU;AACb;AAAA,mBACG;AACH,oBAAG,UAAU;AACb;AAAA;AAEA,oBAAG,UAAU;AAAA;AAAA,iBAEZ;AACL,gBAAG,UAAU;AAAA;AAEf,6BAAmB;AAAA;AAAA;AAAA,MAGvB,WAAW,SAAS,MAAM;AACxB,iBAAS;AAAA;AAAA,MAEX,UAAU,SAAS,OAAO;AACxB,YAAI,sBAAsB,OAAO;AAC/B,cAAG,WAAW;AACd,8BAAoB;AAAA;AAAA;AAAA,MAGxB,OAAO,WAAW;AAChB,iBAAS;AACT,2BAAmB;AACnB,2BAAmB;AACnB,4BAAoB;AAAA;AAAA;AAAA;AAI1B,2BAAyB;AACvB,QAAI,SAAS;AACb,QAAI,qBAAqB;AACzB,QAAI,qBAAqB;AACzB,QAAI,oBAAoB;AACxB,QAAI,yBAAyB;AAC7B,QAAI,qBAAqB;AACzB,QAAI,sBAAsB;AAC1B,QAAI,sBAAsB;AAC1B,QAAI,sBAAsB;AAC1B,WAAO;AAAA,MACL,SAAS,SAAS,aAAa;AAC7B,YAAI,CAAC,QAAQ;AACX,cAAI,aAAa;AACf,oBAAO;AAAA,iBACF;AACL,oBAAQ;AAAA;AAAA;AAAA;AAAA,MAId,SAAS,SAAS,aAAa;AAC7B,YAAI,uBAAuB,eAAe,CAAC,QAAQ;AACjD,cAAG,YAAY;AACf,+BAAqB;AAAA;AAAA;AAAA,MAGzB,SAAS,SAAS,aAAa,YAAY,aAAa;AACtD,YAAI,uBAAuB,eAAe,sBAAsB,cAAc,2BAA2B,aAAa;AACpH,cAAG,YAAY,aAAa,YAAY;AACxC,+BAAqB;AACrB,8BAAoB;AACpB,mCAAyB;AAAA;AAAA;AAAA,MAG7B,OAAO,SAAS,aAAa,cAAc,cAAc;AACvD,YAAI,uBAAuB,eAAe,wBAAwB,gBAAgB,wBAAwB,cAAc;AACtH,cAAG,UAAU,aAAa,cAAc;AACxC,+BAAqB;AACrB,gCAAsB;AACtB,gCAAsB;AAAA;AAAA;AAAA,MAG1B,WAAW,SAAS,MAAM;AACxB,iBAAS;AAAA;AAAA,MAEX,UAAU,SAAS,SAAS;AAC1B,YAAI,wBAAwB,SAAS;AACnC,cAAG,aAAa;AAChB,gCAAsB;AAAA;AAAA;AAAA,MAG1B,OAAO,WAAW;AAChB,iBAAS;AACT,6BAAqB;AACrB,6BAAqB;AACrB,4BAAoB;AACpB,iCAAyB;AACzB,6BAAqB;AACrB,8BAAsB;AACtB,8BAAsB;AACtB,8BAAsB;AAAA;AAAA;AAAA;AAI5B,QAAM,cAAc,IAAI;AACxB,QAAM,cAAc,IAAI;AACxB,QAAM,gBAAgB,IAAI;AAC1B,MAAI,sBAAsB;AAC1B,MAAI,2BAA2B;AAC/B,MAAI,iBAAiB;AACrB,MAAI,yBAAyB;AAC7B,MAAI,kBAAkB;AACtB,MAAI,uBAAuB;AAC3B,MAAI,kBAAkB;AACtB,MAAI,kBAAkB;AACtB,MAAI,4BAA4B;AAChC,MAAI,uBAAuB;AAC3B,MAAI,uBAAuB;AAC3B,MAAI,2BAA2B;AAC/B,MAAI,mBAAmB;AACvB,MAAI,kBAAkB;AACtB,MAAI,mBAAmB;AACvB,MAAI,6BAA6B;AACjC,MAAI,4BAA4B;AAChC,QAAM,cAAc,IAAG,aAAa;AACpC,MAAI,qBAAqB;AACzB,MAAI,WAAU;AACd,QAAM,YAAY,IAAG,aAAa;AAClC,MAAI,UAAU,QAAQ,aAAa,IAAI;AACrC,eAAU,WAAW,cAAc,KAAK,WAAW;AACnD,yBAAqB,YAAW;AAAA,aACvB,UAAU,QAAQ,iBAAiB,IAAI;AAChD,eAAU,WAAW,kBAAkB,KAAK,WAAW;AACvD,yBAAqB,YAAW;AAAA;AAElC,MAAI,qBAAqB;AACzB,MAAI,uBAAuB;AAC3B,QAAM,eAAe,IAAG,aAAa;AACrC,QAAM,gBAAgB,IAAG,aAAa;AACtC,QAAM,iBAAiB,IAAI,UAAU,UAAU;AAC/C,QAAM,kBAAkB,IAAI,UAAU,UAAU;AAChD,yBAAuB,MAAM,QAAQ,OAAO;AAC1C,UAAM,QAAO,IAAI,WAAW;AAC5B,UAAM,UAAU,IAAG;AACnB,QAAG,YAAY,MAAM;AACrB,QAAG,cAAc,MAAM,OAAO;AAC9B,QAAG,cAAc,MAAM,OAAO;AAC9B,aAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,UAAG,WAAW,SAAS,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,MAAM;AAAA;AAE1D,WAAO;AAAA;AAET,QAAM,gBAAgB;AACtB,gBAAc,QAAQ,cAAc,MAAM,MAAM;AAChD,gBAAc,SAAS,cAAc,OAAO,OAAO;AACnD,cAAY,SAAS,GAAG,GAAG,GAAG;AAC9B,cAAY,SAAS;AACrB,gBAAc,SAAS;AACvB,UAAO;AACP,cAAY,QAAQ;AACpB,eAAa;AACb,cAAY;AACZ,UAAO;AACP,cAAY;AACZ,mBAAgB,KAAI;AAClB,QAAI,oBAAoB,SAAQ,MAAM;AACpC,UAAG,OAAO;AACV,0BAAoB,OAAM;AAAA;AAAA;AAG9B,mBAAiB,KAAI;AACnB,QAAI,oBAAoB,SAAQ,OAAO;AACrC,UAAG,QAAQ;AACX,0BAAoB,OAAM;AAAA;AAAA;AAG9B,2BAAyB,QAAQ,aAAa;AAC5C,QAAI,yBAAyB,YAAY,aAAa;AACpD,UAAG,gBAAgB,QAAQ;AAC3B,+BAAyB,UAAU;AACnC,UAAI,UAAU;AACZ,YAAI,WAAW,OAAO;AACpB,mCAAyB,SAAS;AAAA;AAEpC,YAAI,WAAW,OAAO;AACpB,mCAAyB,SAAS;AAAA;AAAA;AAGtC,aAAO;AAAA;AAET,WAAO;AAAA;AAET,sBAAoB,SAAS;AAC3B,QAAI,mBAAmB,SAAS;AAC9B,UAAG,WAAW;AACd,uBAAiB;AACjB,aAAO;AAAA;AAET,WAAO;AAAA;AAET,QAAM,eAAe;AAAA,KAClB,cAAc;AAAA,KACd,mBAAmB;AAAA,KACnB,0BAA0B;AAAA;AAE7B,MAAI,UAAU;AACZ,iBAAa,eAAe;AAC5B,iBAAa,eAAe;AAAA,SACvB;AACL,UAAM,YAAY,WAAW,IAAI;AACjC,QAAI,cAAc,MAAM;AACtB,mBAAa,eAAe,UAAU;AACtC,mBAAa,eAAe,UAAU;AAAA;AAAA;AAG1C,QAAM,aAAa;AAAA,KAChB,aAAa;AAAA,KACb,YAAY;AAAA,KACZ,iBAAiB;AAAA,KACjB,iBAAiB;AAAA,KACjB,yBAAyB;AAAA,KACzB,iBAAiB;AAAA,KACjB,iBAAiB;AAAA,KACjB,yBAAyB;AAAA,KACzB,yBAAyB;AAAA,KACzB,yBAAyB;AAAA,KACzB,yBAAyB;AAAA;AAE5B,uBAAqB,UAAU,eAAe,UAAU,UAAU,oBAAoB,eAAe,eAAe,oBAAoB;AACtI,QAAI,aAAa,YAAY;AAC3B,UAAI,2BAA2B,MAAM;AACnC,gBAAQ;AACR,iCAAyB;AAAA;AAE3B;AAAA;AAEF,QAAI,2BAA2B,OAAO;AACpC,cAAO;AACP,+BAAyB;AAAA;AAE3B,QAAI,aAAa,gBAAgB;AAC/B,UAAI,aAAa,mBAAmB,uBAAuB,0BAA0B;AACnF,YAAI,yBAAyB,eAAe,8BAA8B,aAAa;AACrF,cAAG,cAAc;AACjB,iCAAuB;AACvB,sCAA4B;AAAA;AAE9B,YAAI,oBAAoB;AACtB,kBAAQ;AAAA,iBACD;AACH,kBAAG,kBAAkB,GAAG,KAAK,GAAG;AAChC;AAAA,iBACG;AACH,kBAAG,UAAU,GAAG;AAChB;AAAA,iBACG;AACH,kBAAG,kBAAkB,GAAG,GAAG,KAAK;AAChC;AAAA,iBACG;AACH,kBAAG,kBAAkB,GAAG,KAAK,GAAG;AAChC;AAAA;AAEA,sBAAQ,MAAM,wCAAwC;AACtD;AAAA;AAAA,eAEC;AACL,kBAAQ;AAAA,iBACD;AACH,kBAAG,kBAAkB,KAAK,KAAK,GAAG;AAClC;AAAA,iBACG;AACH,kBAAG,UAAU,KAAK;AAClB;AAAA,iBACG;AACH,kBAAG,UAAU,GAAG;AAChB;AAAA,iBACG;AACH,kBAAG,UAAU,GAAG;AAChB;AAAA;AAEA,sBAAQ,MAAM,wCAAwC;AACtD;AAAA;AAAA;AAGN,0BAAkB;AAClB,0BAAkB;AAClB,+BAAuB;AACvB,+BAAuB;AACvB,0BAAkB;AAClB,mCAA2B;AAAA;AAE7B;AAAA;AAEF,yBAAqB,sBAAsB;AAC3C,oBAAgB,iBAAiB;AACjC,oBAAgB,iBAAiB;AACjC,QAAI,kBAAkB,wBAAwB,uBAAuB,2BAA2B;AAC9F,UAAG,sBAAsB,aAAa,gBAAgB,aAAa;AACnE,6BAAuB;AACvB,kCAA4B;AAAA;AAE9B,QAAI,aAAa,mBAAmB,aAAa,mBAAmB,kBAAkB,wBAAwB,kBAAkB,sBAAsB;AACpJ,UAAG,kBAAkB,WAAW,WAAW,WAAW,WAAW,WAAW,gBAAgB,WAAW;AACvG,wBAAkB;AAClB,wBAAkB;AAClB,6BAAuB;AACvB,6BAAuB;AAAA;AAEzB,sBAAkB;AAClB,+BAA2B;AAAA;AAE7B,uBAAqB,UAAU,aAAa;AAC1C,aAAS,SAAS,aAAa,QAAQ,QAAQ,QAAO;AACtD,QAAI,YAAY,SAAS,SAAS;AAClC,QAAI;AACF,kBAAY,CAAC;AACf,iBAAa;AACb,aAAS,aAAa,kBAAkB,SAAS,gBAAgB,QAAQ,YAAY,cAAc,YAAY,SAAS,UAAU,SAAS,eAAe,SAAS,UAAU,SAAS,UAAU,SAAS,oBAAoB,SAAS,eAAe,SAAS,eAAe,SAAS;AACtR,gBAAY,QAAQ,SAAS;AAC7B,gBAAY,QAAQ,SAAS;AAC7B,gBAAY,QAAQ,SAAS;AAC7B,gBAAY,QAAQ,SAAS;AAC7B,UAAM,eAAe,SAAS;AAC9B,kBAAc,QAAQ;AACtB,QAAI,cAAc;AAChB,oBAAc,QAAQ,SAAS;AAC/B,oBAAc,QAAQ,SAAS,aAAa,SAAS,YAAY,SAAS;AAC1E,oBAAc,MAAM,SAAS,aAAa,SAAS,cAAc,SAAS;AAAA;AAE5E,qBAAiB,SAAS,eAAe,SAAS,qBAAqB,SAAS;AAChF,aAAS,oBAAoB,OAAO,QAAO,SAAS,QAAQ;AAAA;AAE9D,wBAAsB,WAAW;AAC/B,QAAI,qBAAqB,WAAW;AAClC,UAAI,WAAW;AACb,YAAG,UAAU;AAAA,aACR;AACL,YAAG,UAAU;AAAA;AAEf,yBAAmB;AAAA;AAAA;AAGvB,uBAAqB,UAAU;AAC7B,QAAI,aAAa,cAAc;AAC7B,cAAO;AACP,UAAI,aAAa,iBAAiB;AAChC,YAAI,aAAa,cAAc;AAC7B,cAAG,SAAS;AAAA,mBACH,aAAa,eAAe;AACrC,cAAG,SAAS;AAAA,eACP;AACL,cAAG,SAAS;AAAA;AAAA;AAAA,WAGX;AACL,cAAQ;AAAA;AAEV,sBAAkB;AAAA;AAEpB,wBAAsB,OAAO;AAC3B,QAAI,UAAU,kBAAkB;AAC9B,UAAI;AACF,YAAG,UAAU;AACf,yBAAmB;AAAA;AAAA;AAGvB,4BAA0B,eAAe,QAAQ,OAAO;AACtD,QAAI,eAAe;AACjB,cAAO;AACP,UAAI,+BAA+B,UAAU,8BAA8B,OAAO;AAChF,YAAG,cAAc,QAAQ;AACzB,qCAA6B;AAC7B,oCAA4B;AAAA;AAAA,WAEzB;AACL,cAAQ;AAAA;AAAA;AAGZ,0BAAwB,aAAa;AACnC,QAAI,aAAa;AACf,cAAO;AAAA,WACF;AACL,cAAQ;AAAA;AAAA;AAGZ,yBAAuB,WAAW;AAChC,QAAI,cAAc;AAChB,kBAAY,QAAQ,cAAc;AACpC,QAAI,uBAAuB,WAAW;AACpC,UAAG,cAAc;AACjB,2BAAqB;AAAA;AAAA;AAGzB,uBAAqB,WAAW,cAAc;AAC5C,QAAI,uBAAuB,MAAM;AAC/B;AAAA;AAEF,QAAI,eAAe,qBAAqB;AACxC,QAAI,iBAAiB,QAAQ;AAC3B,qBAAe,EAAC,MAAM,QAAQ,SAAS;AACvC,2BAAqB,sBAAsB;AAAA;AAE7C,QAAI,aAAa,SAAS,aAAa,aAAa,YAAY,cAAc;AAC5E,UAAG,YAAY,WAAW,gBAAgB,cAAc;AACxD,mBAAa,OAAO;AACpB,mBAAa,UAAU;AAAA;AAAA;AAG3B,2BAAyB;AACvB,UAAM,eAAe,qBAAqB;AAC1C,QAAI,iBAAiB,UAAU,aAAa,SAAS,QAAQ;AAC3D,UAAG,YAAY,aAAa,MAAM;AAClC,mBAAa,OAAO;AACpB,mBAAa,UAAU;AAAA;AAAA;AAG3B,kCAAgC;AAC9B,QAAI;AACF,UAAG,qBAAqB,MAAM,KAAI;AAAA,aAC3B,OAAP;AACA,cAAQ,MAAM,qBAAqB;AAAA;AAAA;AAGvC,2BAAyB;AACvB,QAAI;AACF,UAAG,cAAc,MAAM,KAAI;AAAA,aACpB,OAAP;AACA,cAAQ,MAAM,qBAAqB;AAAA;AAAA;AAGvC,0BAAwB;AACtB,QAAI;AACF,UAAG,aAAa,MAAM,KAAI;AAAA,aACnB,OAAP;AACA,cAAQ,MAAM,qBAAqB;AAAA;AAAA;AAGvC,wBAAsB;AACpB,QAAI;AACF,UAAG,WAAW,MAAM,KAAI;AAAA,aACjB,OAAP;AACA,cAAQ,MAAM,qBAAqB;AAAA;AAAA;AAGvC,wBAAsB;AACpB,QAAI;AACF,UAAG,WAAW,MAAM,KAAI;AAAA,aACjB,OAAP;AACA,cAAQ,MAAM,qBAAqB;AAAA;AAAA;AAGvC,mBAAiB,UAAU;AACzB,QAAI,eAAe,OAAO,cAAc,OAAO;AAC7C,UAAG,QAAQ,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;AACxD,qBAAe,KAAK;AAAA;AAAA;AAGxB,qBAAkB,YAAW;AAC3B,QAAI,gBAAgB,OAAO,gBAAe,OAAO;AAC/C,UAAG,SAAS,WAAU,GAAG,WAAU,GAAG,WAAU,GAAG,WAAU;AAC7D,sBAAgB,KAAK;AAAA;AAAA;AAGzB,mBAAiB;AACf,QAAG,QAAQ;AACX,QAAG,QAAQ;AACX,QAAG,QAAQ;AACX,QAAG,QAAQ;AACX,QAAG,QAAQ;AACX,QAAG,QAAQ;AACX,QAAG,QAAQ;AACX,QAAG,cAAc;AACjB,QAAG,UAAU,GAAG;AAChB,QAAG,kBAAkB,GAAG,GAAG,GAAG;AAC9B,QAAG,UAAU,MAAM,MAAM,MAAM;AAC/B,QAAG,WAAW,GAAG,GAAG,GAAG;AACvB,QAAG,UAAU;AACb,QAAG,UAAU;AACb,QAAG,WAAW;AACd,QAAG,YAAY;AACf,QAAG,YAAY,KAAK,GAAG;AACvB,QAAG,UAAU,MAAM,MAAM;AACzB,QAAG,aAAa;AAChB,QAAG,SAAS;AACZ,QAAG,UAAU;AACb,QAAG,cAAc,GAAG;AACpB,QAAG,cAAc;AACjB,QAAG,gBAAgB,OAAO;AAC1B,QAAI,aAAa,MAAM;AACrB,UAAG,gBAAgB,OAAO;AAC1B,UAAG,gBAAgB,OAAO;AAAA;AAE5B,QAAG,WAAW;AACd,QAAG,UAAU;AACb,QAAG,QAAQ,GAAG,GAAG,IAAG,OAAO,OAAO,IAAG,OAAO;AAC5C,QAAG,SAAS,GAAG,GAAG,IAAG,OAAO,OAAO,IAAG,OAAO;AAC7C,0BAAsB;AACtB,yBAAqB;AACrB,2BAAuB;AACvB,+BAA2B;AAC3B,qBAAiB;AACjB,6BAAyB;AACzB,sBAAkB;AAClB,2BAAuB;AACvB,sBAAkB;AAClB,sBAAkB;AAClB,gCAA4B;AAC5B,2BAAuB;AACvB,2BAAuB;AACvB,+BAA2B;AAC3B,uBAAmB;AACnB,sBAAkB;AAClB,uBAAmB;AACnB,iCAA6B;AAC7B,gCAA4B;AAC5B,mBAAe,IAAI,GAAG,GAAG,IAAG,OAAO,OAAO,IAAG,OAAO;AACpD,oBAAgB,IAAI,GAAG,GAAG,IAAG,OAAO,OAAO,IAAG,OAAO;AACrD,gBAAY;AACZ,gBAAY;AACZ,kBAAc;AAAA;AAEhB,SAAO;AAAA,IACL,SAAS;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA;AAAA,IAEX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAGJ,uBAAuB,KAAK,YAAY,OAAO,YAAY,cAAc,OAAO,MAAM;AACpF,QAAM,WAAW,aAAa;AAC9B,QAAM,cAAc,aAAa;AACjC,QAAM,iBAAiB,aAAa;AACpC,QAAM,iBAAiB,aAAa;AACpC,QAAM,aAAa,aAAa;AAChC,QAAM,iCAAiC,WAAW,IAAI;AACtD,QAAM,uCAAuC,iCAAiC,WAAW,IAAI,0CAA0C;AACvI,QAAM,iBAAiB,IAAI;AAC3B,MAAI;AACJ,MAAI,qBAAqB;AACzB,MAAI;AACF,yBAAqB,OAAO,oBAAoB,eAAe,IAAI,gBAAgB,GAAG,GAAG,WAAW,UAAU;AAAA,WACvG,KAAP;AAAA;AAEF,wBAAsB,OAAO,QAAQ;AACnC,WAAO,qBAAqB,IAAI,gBAAgB,OAAO,UAAU,gBAAgB;AAAA;AAEnF,uBAAqB,OAAO,iBAAiB,gBAAgB,SAAS;AACpE,QAAI,QAAQ;AACZ,QAAI,MAAM,QAAQ,WAAW,MAAM,SAAS,SAAS;AACnD,cAAQ,UAAU,KAAK,IAAI,MAAM,OAAO,MAAM;AAAA;AAEhD,QAAI,QAAQ,KAAK,oBAAoB,MAAM;AACzC,UAAI,OAAO,qBAAqB,eAAe,iBAAiB,oBAAoB,OAAO,sBAAsB,eAAe,iBAAiB,qBAAqB,OAAO,gBAAgB,eAAe,iBAAiB,aAAa;AACxO,cAAM,SAAQ,kBAAkB,kBAAkB,KAAK;AACvD,cAAM,QAAQ,OAAM,QAAQ,MAAM;AAClC,cAAM,SAAS,OAAM,QAAQ,MAAM;AACnC,YAAI,cAAa;AACf,sBAAW,aAAa,OAAO;AACjC,cAAM,SAAS,iBAAiB,aAAa,OAAO,UAAU;AAC9D,eAAO,QAAQ;AACf,eAAO,SAAS;AAChB,cAAM,UAAU,OAAO,WAAW;AAClC,gBAAQ,UAAU,OAAO,GAAG,GAAG,OAAO;AACtC,gBAAQ,KAAK,yDAAyD,MAAM,QAAQ,MAAM,MAAM,SAAS,WAAW,QAAQ,MAAM,SAAS;AAC3I,eAAO;AAAA,aACF;AACL,YAAI,UAAU,OAAO;AACnB,kBAAQ,KAAK,2DAA2D,MAAM,QAAQ,MAAM,MAAM,SAAS;AAAA;AAE7G,eAAO;AAAA;AAAA;AAGX,WAAO;AAAA;AAET,0BAAwB,OAAO;AAC7B,WAAO,aAAa,MAAM,UAAU,aAAa,MAAM;AAAA;AAEzD,kCAAgC,SAAS;AACvC,QAAI;AACF,aAAO;AACT,WAAO,QAAQ,UAAU,uBAAuB,QAAQ,UAAU,uBAAuB,QAAQ,cAAc,iBAAiB,QAAQ,cAAc;AAAA;AAExJ,uCAAqC,SAAS,cAAc;AAC1D,WAAO,QAAQ,mBAAmB,gBAAgB,QAAQ,cAAc,iBAAiB,QAAQ,cAAc;AAAA;AAEjH,0BAAwB,QAAQ;AAC9B,QAAI,eAAe;AAAA;AAErB,6BAA2B,oBAAoB,UAAU,QAAQ;AAC/D,QAAI,aAAa;AACf,aAAO;AACT,QAAI,uBAAuB,MAAM;AAC/B,UAAI,IAAI,wBAAwB;AAC9B,eAAO,IAAI;AACb,cAAQ,KAAK,6EAA6E,qBAAqB;AAAA;AAEjH,QAAI,iBAAiB;AACrB,QAAI,aAAa,MAAM;AACrB,UAAI,WAAW;AACb,yBAAiB;AACnB,UAAI,WAAW;AACb,yBAAiB;AACnB,UAAI,WAAW;AACb,yBAAiB;AAAA;AAErB,QAAI,aAAa,MAAM;AACrB,UAAI,WAAW;AACb,yBAAiB;AACnB,UAAI,WAAW;AACb,yBAAiB;AACnB,UAAI,WAAW;AACb,yBAAiB;AAAA;AAErB,QAAI,aAAa,MAAM;AACrB,UAAI,WAAW;AACb,yBAAiB;AACnB,UAAI,WAAW;AACb,yBAAiB;AACnB,UAAI,WAAW;AACb,yBAAiB;AAAA;AAErB,QAAI,mBAAmB,SAAS,mBAAmB,SAAS,mBAAmB,SAAS,mBAAmB,OAAO;AAChH,iBAAW,IAAI;AAAA;AAEjB,WAAO;AAAA;AAET,wBAAsB,SAAS,OAAO,cAAc;AAClD,QAAI,4BAA4B,SAAS,kBAAkB,MAAM;AAC/D,aAAO,KAAK,KAAK,KAAK,IAAI,MAAM,OAAO,MAAM,WAAW;AAAA,eAC/C,QAAQ,QAAQ,SAAS,GAAG;AACrC,aAAO,QAAQ,QAAQ;AAAA,WAClB;AACL,aAAO;AAAA;AAAA;AAGX,0BAAwB,IAAG;AACzB,QAAI,OAAM,iBAAiB,OAAM,8BAA8B,OAAM,2BAA2B;AAC9F,aAAO;AAAA;AAET,WAAO;AAAA;AAET,4BAA0B,OAAO;AAC/B,UAAM,UAAU,MAAM;AACtB,YAAQ,oBAAoB,WAAW;AACvC,sBAAkB;AAClB,QAAI,QAAQ,gBAAgB;AAC1B,qBAAe,OAAO;AAAA;AAExB,SAAK,OAAO;AAAA;AAEd,iCAA+B,OAAO;AACpC,UAAM,eAAe,MAAM;AAC3B,iBAAa,oBAAoB,WAAW;AAC5C,2BAAuB;AAAA;AAEzB,6BAA2B,SAAS;AAClC,UAAM,oBAAoB,WAAW,IAAI;AACzC,QAAI,kBAAkB,gBAAgB;AACpC;AACF,QAAI,cAAc,kBAAkB;AACpC,eAAW,OAAO;AAAA;AAEpB,kCAAgC,cAAc;AAC5C,UAAM,UAAU,aAAa;AAC7B,UAAM,yBAAyB,WAAW,IAAI;AAC9C,UAAM,oBAAoB,WAAW,IAAI;AACzC,QAAI,CAAC;AACH;AACF,QAAI,kBAAkB,mBAAmB,QAAQ;AAC/C,UAAI,cAAc,kBAAkB;AACpC,WAAK,OAAO;AAAA;AAEd,QAAI,aAAa,cAAc;AAC7B,mBAAa,aAAa;AAAA;AAE5B,QAAI,aAAa,yBAAyB;AACxC,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAI,kBAAkB,uBAAuB,mBAAmB;AAChE,YAAI,uBAAuB;AACzB,cAAI,mBAAmB,uBAAuB,mBAAmB;AAAA;AAAA,WAEhE;AACL,UAAI,kBAAkB,uBAAuB;AAC7C,UAAI,uBAAuB;AACzB,YAAI,mBAAmB,uBAAuB;AAChD,UAAI,uBAAuB;AACzB,YAAI,kBAAkB,uBAAuB;AAC/C,UAAI,uBAAuB;AACzB,YAAI,mBAAmB,uBAAuB;AAChD,UAAI,uBAAuB;AACzB,YAAI,mBAAmB,uBAAuB;AAAA;AAElD,QAAI,aAAa,8BAA8B;AAC7C,eAAS,IAAI,GAAG,KAAK,QAAQ,QAAQ,IAAI,IAAI,KAAK;AAChD,cAAM,uBAAuB,WAAW,IAAI,QAAQ;AACpD,YAAI,qBAAqB,gBAAgB;AACvC,cAAI,cAAc,qBAAqB;AACvC,eAAK,OAAO;AAAA;AAEd,mBAAW,OAAO,QAAQ;AAAA;AAAA;AAG9B,eAAW,OAAO;AAClB,eAAW,OAAO;AAAA;AAEpB,MAAI,eAAe;AACnB,+BAA6B;AAC3B,mBAAe;AAAA;AAEjB,iCAA+B;AAC7B,UAAM,cAAc;AACpB,QAAI,eAAe,aAAa;AAC9B,cAAQ,KAAK,wCAAwC,cAAc,iDAAiD;AAAA;AAEtH,oBAAgB;AAChB,WAAO;AAAA;AAET,wBAAsB,SAAS,MAAM;AACnC,UAAM,oBAAoB,WAAW,IAAI;AACzC,QAAI,QAAQ;AACV,yBAAmB;AACrB,QAAI,QAAQ,UAAU,KAAK,kBAAkB,cAAc,QAAQ,SAAS;AAC1E,YAAM,QAAQ,QAAQ;AACtB,UAAI,UAAU,QAAQ;AACpB,gBAAQ,KAAK;AAAA,iBACJ,MAAM,aAAa,OAAO;AACnC,gBAAQ,KAAK;AAAA,aACR;AACL,sBAAc,mBAAmB,SAAS;AAC1C;AAAA;AAAA;AAGJ,UAAM,cAAc,QAAQ;AAC5B,UAAM,YAAY,MAAM,kBAAkB;AAAA;AAE5C,6BAA2B,SAAS,MAAM;AACxC,UAAM,oBAAoB,WAAW,IAAI;AACzC,QAAI,QAAQ,UAAU,KAAK,kBAAkB,cAAc,QAAQ,SAAS;AAC1E,oBAAc,mBAAmB,SAAS;AAC1C;AAAA;AAEF,UAAM,cAAc,QAAQ;AAC5B,UAAM,YAAY,OAAO,kBAAkB;AAAA;AAE7C,wBAAsB,SAAS,MAAM;AACnC,UAAM,oBAAoB,WAAW,IAAI;AACzC,QAAI,QAAQ,UAAU,KAAK,kBAAkB,cAAc,QAAQ,SAAS;AAC1E,oBAAc,mBAAmB,SAAS;AAC1C;AAAA;AAEF,UAAM,cAAc,QAAQ;AAC5B,UAAM,YAAY,OAAO,kBAAkB;AAAA;AAE7C,0BAAwB,SAAS,MAAM;AACrC,UAAM,oBAAoB,WAAW,IAAI;AACzC,QAAI,QAAQ,UAAU,KAAK,kBAAkB,cAAc,QAAQ,SAAS;AAC1E,wBAAkB,mBAAmB,SAAS;AAC9C;AAAA;AAEF,UAAM,cAAc,QAAQ;AAC5B,UAAM,YAAY,OAAO,kBAAkB;AAAA;AAE7C,QAAM,eAAe;AAAA,KAClB,iBAAiB;AAAA,KACjB,sBAAsB;AAAA,KACtB,yBAAyB;AAAA;AAE5B,QAAM,aAAa;AAAA,KAChB,gBAAgB;AAAA,KAChB,6BAA6B;AAAA,KAC7B,4BAA4B;AAAA,KAC5B,eAAe;AAAA,KACf,4BAA4B;AAAA,KAC5B,2BAA2B;AAAA;AAE9B,gCAA8B,aAAa,SAAS,cAAc;AAChE,QAAI,cAAc;AAChB,UAAI,cAAc,aAAa,OAAO,aAAa,QAAQ;AAC3D,UAAI,cAAc,aAAa,OAAO,aAAa,QAAQ;AAC3D,UAAI,gBAAgB,SAAS,gBAAgB,OAAO;AAClD,YAAI,cAAc,aAAa,OAAO,aAAa,QAAQ;AAAA;AAE7D,UAAI,cAAc,aAAa,OAAO,WAAW,QAAQ;AACzD,UAAI,cAAc,aAAa,OAAO,WAAW,QAAQ;AAAA,WACpD;AACL,UAAI,cAAc,aAAa,OAAO;AACtC,UAAI,cAAc,aAAa,OAAO;AACtC,UAAI,gBAAgB,SAAS,gBAAgB,OAAO;AAClD,YAAI,cAAc,aAAa,OAAO;AAAA;AAExC,UAAI,QAAQ,UAAU,uBAAuB,QAAQ,UAAU,qBAAqB;AAClF,gBAAQ,KAAK;AAAA;AAEf,UAAI,cAAc,aAAa,OAAO,eAAe,QAAQ;AAC7D,UAAI,cAAc,aAAa,OAAO,eAAe,QAAQ;AAC7D,UAAI,QAAQ,cAAc,iBAAiB,QAAQ,cAAc,cAAc;AAC7E,gBAAQ,KAAK;AAAA;AAAA;AAGjB,QAAI,WAAW,IAAI,sCAAsC,MAAM;AAC7D,YAAM,YAAY,WAAW,IAAI;AACjC,UAAI,QAAQ,SAAS,aAAa,WAAW,IAAI,gCAAgC;AAC/E;AACF,UAAI,aAAa,SAAU,SAAQ,SAAS,iBAAiB,WAAW,IAAI,qCAAqC;AAC/G;AACF,UAAI,QAAQ,aAAa,KAAK,WAAW,IAAI,SAAS,qBAAqB;AACzE,YAAI,cAAc,aAAa,UAAU,4BAA4B,KAAK,IAAI,QAAQ,YAAY,aAAa;AAC/G,mBAAW,IAAI,SAAS,sBAAsB,QAAQ;AAAA;AAAA;AAAA;AAI5D,uBAAqB,mBAAmB,SAAS;AAC/C,QAAI,kBAAkB,gBAAgB,QAAQ;AAC5C,wBAAkB,cAAc;AAChC,cAAQ,iBAAiB,WAAW;AACpC,wBAAkB,iBAAiB,IAAI;AACvC,WAAK,OAAO;AAAA;AAAA;AAGhB,yBAAuB,mBAAmB,SAAS,MAAM;AACvD,QAAI,cAAc;AAClB,QAAI,QAAQ;AACV,oBAAc;AAChB,QAAI,QAAQ;AACV,oBAAc;AAChB,gBAAY,mBAAmB;AAC/B,UAAM,cAAc,QAAQ;AAC5B,UAAM,YAAY,aAAa,kBAAkB;AACjD,QAAI,YAAY,OAAO,QAAQ;AAC/B,QAAI,YAAY,OAAO,QAAQ;AAC/B,QAAI,YAAY,MAAM,QAAQ;AAC9B,QAAI,YAAY,OAAO;AACvB,UAAM,kBAAkB,uBAAuB,YAAY,eAAe,QAAQ,WAAW;AAC7F,UAAM,QAAQ,YAAY,QAAQ,OAAO,iBAAiB,OAAO;AACjE,UAAM,eAAe,eAAe,UAAU,UAAU,WAAW,MAAM,QAAQ,QAAQ;AACzF,QAAI,SAAS,MAAM,QAAQ,QAAQ,OAAO,mBAAmB,kBAAkB,QAAQ,gBAAgB,UAAU,QAAQ,QAAQ;AACjI,yBAAqB,aAAa,SAAS;AAC3C,QAAI;AACJ,UAAM,UAAU,QAAQ;AACxB,QAAI,QAAQ,gBAAgB;AAC1B,yBAAmB;AACnB,UAAI,UAAU;AACZ,YAAI,QAAQ,SAAS,WAAW;AAC9B,6BAAmB;AAAA,mBACV,QAAQ,SAAS,iBAAiB;AAC3C,6BAAmB;AAAA,mBACV,QAAQ,SAAS,oBAAoB;AAC9C,6BAAmB;AAAA,eACd;AACL,6BAAmB;AAAA;AAAA,aAEhB;AACL,YAAI,QAAQ,SAAS,WAAW;AAC9B,kBAAQ,MAAM;AAAA;AAAA;AAGlB,UAAI,QAAQ,WAAW,eAAe,qBAAqB,MAAM;AAC/D,YAAI,QAAQ,SAAS,qBAAqB,QAAQ,SAAS,iBAAiB;AAC1E,kBAAQ,KAAK;AACb,kBAAQ,OAAO;AACf,mBAAS,MAAM,QAAQ,QAAQ;AAAA;AAAA;AAGnC,UAAI,QAAQ,WAAW,sBAAsB,qBAAqB,MAAM;AACtE,2BAAmB;AACnB,YAAI,QAAQ,SAAS,oBAAoB;AACvC,kBAAQ,KAAK;AACb,kBAAQ,OAAO;AACf,mBAAS,MAAM,QAAQ,QAAQ;AAAA;AAAA;AAGnC,YAAM,WAAW,MAAM,GAAG,kBAAkB,MAAM,OAAO,MAAM,QAAQ,GAAG,UAAU,QAAQ;AAAA,eACnF,QAAQ,eAAe;AAChC,UAAI,QAAQ,SAAS,KAAK,cAAc;AACtC,iBAAS,IAAI,GAAG,KAAK,QAAQ,QAAQ,IAAI,IAAI,KAAK;AAChD,mBAAS,QAAQ;AACjB,gBAAM,WAAW,MAAM,GAAG,kBAAkB,OAAO,OAAO,OAAO,QAAQ,GAAG,UAAU,QAAQ,OAAO;AAAA;AAEvG,gBAAQ,kBAAkB;AAAA,aACrB;AACL,cAAM,WAAW,MAAM,GAAG,kBAAkB,MAAM,OAAO,MAAM,QAAQ,GAAG,UAAU,QAAQ,MAAM;AAAA;AAAA,eAE3F,QAAQ,qBAAqB;AACtC,eAAS,IAAI,GAAG,KAAK,QAAQ,QAAQ,IAAI,IAAI,KAAK;AAChD,iBAAS,QAAQ;AACjB,YAAI,QAAQ,WAAW,cAAc,QAAQ,WAAW,WAAW;AACjE,cAAI,aAAa,MAAM;AACrB,kBAAM,qBAAqB,MAAM,GAAG,kBAAkB,OAAO,OAAO,OAAO,QAAQ,GAAG,OAAO;AAAA,iBACxF;AACL,oBAAQ,KAAK;AAAA;AAAA,eAEV;AACL,gBAAM,WAAW,MAAM,GAAG,kBAAkB,OAAO,OAAO,OAAO,QAAQ,GAAG,UAAU,QAAQ,OAAO;AAAA;AAAA;AAAA,eAGhG,QAAQ,sBAAsB;AACvC,YAAM,WAAW,OAAO,GAAG,kBAAkB,MAAM,OAAO,MAAM,QAAQ,MAAM,OAAO,GAAG,UAAU,QAAQ,MAAM;AAAA,eACvG,QAAQ,iBAAiB;AAClC,YAAM,WAAW,OAAO,GAAG,kBAAkB,MAAM,OAAO,MAAM,QAAQ,MAAM,OAAO,GAAG,UAAU,QAAQ,MAAM;AAAA,WAC3G;AACL,YAAM,SAAS,aAAa,SAAS,OAAO;AAC5C,YAAM,gBAAgB,YAAY,QAAQ,mBAAmB;AAC7D,YAAM,iBAAiB,kBAAkB,cAAc;AACvD,UAAI,QAAQ,SAAS,KAAK,cAAc;AACtC,YAAI,iBAAiB,gBAAgB;AACnC,gBAAM,aAAa,MAAM,QAAQ,kBAAkB,QAAQ,GAAG,OAAO,QAAQ,GAAG;AAAA;AAElF,iBAAS,IAAI,GAAG,KAAK,QAAQ,QAAQ,IAAI,IAAI,KAAK;AAChD,mBAAS,QAAQ;AACjB,cAAI,eAAe;AACjB,kBAAM,cAAc,MAAM,GAAG,GAAG,GAAG,UAAU,QAAQ;AAAA,iBAChD;AACL,kBAAM,WAAW,MAAM,GAAG,kBAAkB,UAAU,QAAQ;AAAA;AAAA;AAGlE,gBAAQ,kBAAkB;AAAA,aACrB;AACL,YAAI,eAAe;AACjB,cAAI,gBAAgB;AAClB,kBAAM,aAAa,MAAM,QAAQ,kBAAkB,MAAM,OAAO,MAAM;AAAA;AAExE,gBAAM,cAAc,MAAM,GAAG,GAAG,GAAG,UAAU,QAAQ;AAAA,eAChD;AACL,gBAAM,WAAW,MAAM,GAAG,kBAAkB,UAAU,QAAQ;AAAA;AAAA;AAAA;AAIpE,QAAI,4BAA4B,SAAS,eAAe;AACtD,qBAAe;AAAA;AAEjB,sBAAkB,YAAY,QAAQ;AACtC,QAAI,QAAQ;AACV,cAAQ,SAAS;AAAA;AAErB,6BAA2B,mBAAmB,SAAS,MAAM;AAC3D,QAAI,QAAQ,MAAM,WAAW;AAC3B;AACF,gBAAY,mBAAmB;AAC/B,UAAM,cAAc,QAAQ;AAC5B,UAAM,YAAY,OAAO,kBAAkB;AAC3C,QAAI,YAAY,OAAO,QAAQ;AAC/B,QAAI,YAAY,OAAO,QAAQ;AAC/B,QAAI,YAAY,MAAM,QAAQ;AAC9B,QAAI,YAAY,OAAO;AACvB,UAAM,eAAe,WAAY,SAAQ,uBAAuB,QAAQ,MAAM,GAAG;AACjF,UAAM,gBAAgB,QAAQ,MAAM,MAAM,QAAQ,MAAM,GAAG;AAC3D,UAAM,YAAY;AAClB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAI,CAAC,gBAAgB,CAAC,eAAe;AACnC,kBAAU,KAAK,YAAY,QAAQ,MAAM,IAAI,OAAO,MAAM;AAAA,aACrD;AACL,kBAAU,KAAK,gBAAgB,QAAQ,MAAM,GAAG,QAAQ,QAAQ,MAAM;AAAA;AAAA;AAG1E,UAAM,QAAQ,UAAU,IAAI,eAAe,eAAe,UAAU,UAAU,WAAW,MAAM,QAAQ,QAAQ,SAAS,SAAS,MAAM,QAAQ,QAAQ,OAAO,mBAAmB,kBAAkB,QAAQ,gBAAgB,UAAU,QAAQ,QAAQ;AACrP,yBAAqB,OAAO,SAAS;AACrC,QAAI;AACJ,QAAI,cAAc;AAChB,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,kBAAU,UAAU,GAAG;AACvB,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,gBAAM,SAAS,QAAQ;AACvB,cAAI,QAAQ,WAAW,cAAc,QAAQ,WAAW,WAAW;AACjE,gBAAI,aAAa,MAAM;AACrB,oBAAM,qBAAqB,QAAQ,GAAG,GAAG,kBAAkB,OAAO,OAAO,OAAO,QAAQ,GAAG,OAAO;AAAA,mBAC7F;AACL,sBAAQ,KAAK;AAAA;AAAA,iBAEV;AACL,kBAAM,WAAW,QAAQ,GAAG,GAAG,kBAAkB,OAAO,OAAO,OAAO,QAAQ,GAAG,UAAU,QAAQ,OAAO;AAAA;AAAA;AAAA;AAAA,WAI3G;AACL,gBAAU,QAAQ;AAClB,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAI,eAAe;AACjB,gBAAM,WAAW,QAAQ,GAAG,GAAG,kBAAkB,UAAU,GAAG,OAAO,UAAU,GAAG,QAAQ,GAAG,UAAU,QAAQ,UAAU,GAAG;AAC5H,mBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,kBAAM,SAAS,QAAQ;AACvB,kBAAM,cAAc,OAAO,MAAM,GAAG;AACpC,kBAAM,WAAW,QAAQ,GAAG,IAAI,GAAG,kBAAkB,YAAY,OAAO,YAAY,QAAQ,GAAG,UAAU,QAAQ,YAAY;AAAA;AAAA,eAE1H;AACL,gBAAM,WAAW,QAAQ,GAAG,GAAG,kBAAkB,UAAU,QAAQ,UAAU;AAC7E,mBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,kBAAM,SAAS,QAAQ;AACvB,kBAAM,WAAW,QAAQ,GAAG,IAAI,GAAG,kBAAkB,UAAU,QAAQ,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAK5F,QAAI,4BAA4B,SAAS,eAAe;AACtD,qBAAe;AAAA;AAEjB,sBAAkB,YAAY,QAAQ;AACtC,QAAI,QAAQ;AACV,cAAQ,SAAS;AAAA;AAErB,mCAAiC,aAAa,cAAc,SAAS,YAAY,eAAe;AAC9F,UAAM,WAAW,MAAM,QAAQ,QAAQ;AACvC,UAAM,SAAS,MAAM,QAAQ,QAAQ;AACrC,UAAM,mBAAmB,kBAAkB,QAAQ,gBAAgB,UAAU,QAAQ,QAAQ;AAC7F,UAAM,yBAAyB,WAAW,IAAI;AAC9C,QAAI,CAAC,uBAAuB,uBAAuB;AACjD,UAAI,kBAAkB,SAAS,kBAAkB,OAAO;AACtD,cAAM,WAAW,eAAe,GAAG,kBAAkB,aAAa,OAAO,aAAa,QAAQ,aAAa,OAAO,GAAG,UAAU,QAAQ;AAAA,aAClI;AACL,cAAM,WAAW,eAAe,GAAG,kBAAkB,aAAa,OAAO,aAAa,QAAQ,GAAG,UAAU,QAAQ;AAAA;AAAA;AAGvH,UAAM,gBAAgB,OAAO;AAC7B,QAAI,aAAa,oBAAoB;AACnC,2CAAqC,mCAAmC,OAAO,YAAY,eAAe,WAAW,IAAI,SAAS,gBAAgB,GAAG,uBAAuB;AAAA,WACvK;AACL,UAAI,qBAAqB,OAAO,YAAY,eAAe,WAAW,IAAI,SAAS,gBAAgB;AAAA;AAErG,UAAM,gBAAgB,OAAO;AAAA;AAE/B,oCAAkC,cAAc,cAAc,eAAe;AAC3E,QAAI,iBAAiB,OAAO;AAC5B,QAAI,aAAa,eAAe,CAAC,aAAa,eAAe;AAC3D,UAAI,mBAAmB;AACvB,UAAI,iBAAiB,aAAa,oBAAoB;AACpD,cAAM,eAAe,aAAa;AAClC,YAAI,gBAAgB,aAAa,gBAAgB;AAC/C,cAAI,aAAa,SAAS,WAAW;AACnC,+BAAmB;AAAA,qBACV,aAAa,SAAS,iBAAiB;AAChD,+BAAmB;AAAA;AAAA;AAGvB,cAAM,UAAU,uBAAuB;AACvC,YAAI,aAAa,oBAAoB;AACnC,+CAAqC,kCAAkC,OAAO,SAAS,kBAAkB,aAAa,OAAO,aAAa;AAAA,eACrI;AACL,cAAI,+BAA+B,OAAO,SAAS,kBAAkB,aAAa,OAAO,aAAa;AAAA;AAAA,aAEnG;AACL,YAAI,oBAAoB,OAAO,kBAAkB,aAAa,OAAO,aAAa;AAAA;AAEpF,UAAI,wBAAwB,OAAO,OAAO,OAAO;AAAA,eACxC,aAAa,eAAe,aAAa,eAAe;AACjE,YAAM,UAAU,uBAAuB;AACvC,UAAI,iBAAiB,aAAa,iBAAiB;AACjD,YAAI,+BAA+B,OAAO,SAAS,OAAO,aAAa,OAAO,aAAa;AAAA,iBAClF,aAAa,oBAAoB;AAC1C,6CAAqC,kCAAkC,OAAO,SAAS,OAAO,aAAa,OAAO,aAAa;AAAA,aAC1H;AACL,YAAI,oBAAoB,OAAO,OAAO,aAAa,OAAO,aAAa;AAAA;AAEzE,UAAI,wBAAwB,OAAO,OAAO,OAAO;AAAA,WAC5C;AACL,YAAM,UAAU,aAAa,iCAAiC,OAAO,aAAa,QAAQ,KAAK,aAAa;AAC5G,YAAM,WAAW,MAAM,QAAQ,QAAQ;AACvC,YAAM,SAAS,MAAM,QAAQ,QAAQ;AACrC,YAAM,mBAAmB,kBAAkB,QAAQ,gBAAgB,UAAU,QAAQ,QAAQ;AAC7F,YAAM,UAAU,uBAAuB;AACvC,UAAI,iBAAiB,aAAa,iBAAiB;AACjD,YAAI,+BAA+B,OAAO,SAAS,kBAAkB,aAAa,OAAO,aAAa;AAAA,iBAC7F,aAAa,oBAAoB;AAC1C,6CAAqC,kCAAkC,OAAO,SAAS,kBAAkB,aAAa,OAAO,aAAa;AAAA,aACrI;AACL,YAAI,oBAAoB,OAAO,kBAAkB,aAAa,OAAO,aAAa;AAAA;AAAA;AAGtF,QAAI,iBAAiB,OAAO;AAAA;AAE9B,6BAA2B,aAAa,cAAc;AACpD,UAAM,SAAS,gBAAgB,aAAa;AAC5C,QAAI;AACF,YAAM,IAAI,MAAM;AAClB,UAAM,gBAAgB,OAAO;AAC7B,QAAI,CAAE,cAAa,gBAAgB,aAAa,aAAa,iBAAiB;AAC5E,YAAM,IAAI,MAAM;AAAA;AAElB,QAAI,CAAC,WAAW,IAAI,aAAa,cAAc,kBAAkB,aAAa,aAAa,MAAM,UAAU,aAAa,SAAS,aAAa,aAAa,MAAM,WAAW,aAAa,QAAQ;AAC/L,mBAAa,aAAa,MAAM,QAAQ,aAAa;AACrD,mBAAa,aAAa,MAAM,SAAS,aAAa;AACtD,mBAAa,aAAa,cAAc;AAAA;AAE1C,iBAAa,aAAa,cAAc;AACxC,UAAM,oBAAoB,WAAW,IAAI,aAAa,cAAc;AACpE,UAAM,UAAU,uBAAuB;AACvC,QAAI,aAAa,aAAa,WAAW,aAAa;AACpD,UAAI,aAAa,oBAAoB;AACnC,6CAAqC,mCAAmC,OAAO,OAAO,MAAM,mBAAmB,GAAG;AAAA,aAC7G;AACL,YAAI,qBAAqB,OAAO,OAAO,MAAM,mBAAmB;AAAA;AAAA,eAEzD,aAAa,aAAa,WAAW,oBAAoB;AAClE,UAAI,aAAa,oBAAoB;AACnC,6CAAqC,mCAAmC,OAAO,OAAO,MAAM,mBAAmB,GAAG;AAAA,aAC7G;AACL,YAAI,qBAAqB,OAAO,OAAO,MAAM,mBAAmB;AAAA;AAAA,WAE7D;AACL,YAAM,IAAI,MAAM;AAAA;AAAA;AAGpB,kCAAgC,cAAc;AAC5C,UAAM,yBAAyB,WAAW,IAAI;AAC9C,UAAM,SAAS,aAAa,4BAA4B;AACxD,QAAI,aAAa,gBAAgB,CAAC,uBAAuB,2BAA2B;AAClF,UAAI;AACF,cAAM,IAAI,MAAM;AAClB,wBAAkB,uBAAuB,oBAAoB;AAAA,WACxD;AACL,UAAI,QAAQ;AACV,+BAAuB,qBAAqB;AAC5C,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,gBAAM,gBAAgB,OAAO,uBAAuB,mBAAmB;AACvE,iCAAuB,mBAAmB,KAAK,IAAI;AACnD,mCAAyB,uBAAuB,mBAAmB,IAAI,cAAc;AAAA;AAAA,aAElF;AACL,cAAM,gBAAgB,OAAO,uBAAuB;AACpD,+BAAuB,qBAAqB,IAAI;AAChD,iCAAyB,uBAAuB,oBAAoB,cAAc;AAAA;AAAA;AAGtF,UAAM,gBAAgB,OAAO;AAAA;AAE/B,0BAAwB,cAAc,cAAc,cAAc;AAChE,UAAM,yBAAyB,WAAW,IAAI;AAC9C,QAAI,iBAAiB,QAAQ;AAC3B,8BAAwB,uBAAuB,oBAAoB,cAAc,aAAa,SAAS,OAAO;AAAA;AAEhH,QAAI,iBAAiB,QAAQ;AAC3B,6BAAuB;AAAA;AAAA;AAG3B,6BAA2B,cAAc;AACvC,UAAM,UAAU,aAAa;AAC7B,UAAM,yBAAyB,WAAW,IAAI;AAC9C,UAAM,oBAAoB,WAAW,IAAI;AACzC,iBAAa,iBAAiB,WAAW;AACzC,QAAI,aAAa,iCAAiC,MAAM;AACtD,UAAI,kBAAkB,mBAAmB,QAAQ;AAC/C,0BAAkB,iBAAiB,IAAI;AAAA;AAEzC,wBAAkB,YAAY,QAAQ;AACtC,WAAK,OAAO;AAAA;AAEd,UAAM,SAAS,aAAa,4BAA4B;AACxD,UAAM,0BAA0B,aAAa,iCAAiC;AAC9E,UAAM,mBAAmB,QAAQ,mBAAmB,QAAQ;AAC5D,UAAM,eAAe,eAAe,iBAAiB;AACrD,QAAI,YAAY,QAAQ,WAAW,aAAc,SAAQ,SAAS,aAAa,QAAQ,SAAS,gBAAgB;AAC9G,cAAQ,SAAS;AACjB,cAAQ,KAAK;AAAA;AAEf,QAAI,QAAQ;AACV,6BAAuB,qBAAqB;AAC5C,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,+BAAuB,mBAAmB,KAAK,IAAI;AAAA;AAAA,WAEhD;AACL,6BAAuB,qBAAqB,IAAI;AAChD,UAAI,yBAAyB;AAC3B,YAAI,aAAa,aAAa;AAC5B,gBAAM,WAAW,aAAa;AAC9B,mBAAS,IAAI,GAAG,KAAK,SAAS,QAAQ,IAAI,IAAI,KAAK;AACjD,kBAAM,uBAAuB,WAAW,IAAI,SAAS;AACrD,gBAAI,qBAAqB,mBAAmB,QAAQ;AAClD,mCAAqB,iBAAiB,IAAI;AAC1C,mBAAK,OAAO;AAAA;AAAA;AAAA,eAGX;AACL,kBAAQ,KAAK;AAAA;AAAA,iBAEN,aAAa,iBAAiB;AACvC,YAAI,UAAU;AACZ,iCAAuB,iCAAiC,IAAI;AAC5D,iCAAuB,2BAA2B,IAAI;AACtD,cAAI,iBAAiB,OAAO,uBAAuB;AACnD,gBAAM,WAAW,MAAM,QAAQ,QAAQ;AACvC,gBAAM,SAAS,MAAM,QAAQ,QAAQ;AACrC,gBAAM,mBAAmB,kBAAkB,QAAQ,gBAAgB,UAAU,QAAQ,QAAQ;AAC7F,gBAAM,UAAU,uBAAuB;AACvC,cAAI,+BAA+B,OAAO,SAAS,kBAAkB,aAAa,OAAO,aAAa;AACtG,gBAAM,gBAAgB,OAAO,uBAAuB;AACpD,cAAI,wBAAwB,OAAO,OAAO,OAAO,uBAAuB;AACxE,cAAI,iBAAiB,OAAO;AAC5B,cAAI,aAAa,aAAa;AAC5B,mCAAuB,2BAA2B,IAAI;AACtD,qCAAyB,uBAAuB,0BAA0B,cAAc;AAAA;AAE1F,gBAAM,gBAAgB,OAAO;AAAA,eACxB;AACL,kBAAQ,KAAK;AAAA;AAAA;AAAA;AAInB,QAAI,QAAQ;AACV,YAAM,YAAY,OAAO,kBAAkB;AAC3C,2BAAqB,OAAO,SAAS;AACrC,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,gCAAwB,uBAAuB,mBAAmB,IAAI,cAAc,SAAS,OAAO,QAAQ;AAAA;AAE9G,UAAI,4BAA4B,SAAS,eAAe;AACtD,uBAAe;AAAA;AAEjB,YAAM;AAAA,eACG,yBAAyB;AAClC,YAAM,WAAW,aAAa;AAC9B,eAAS,IAAI,GAAG,KAAK,SAAS,QAAQ,IAAI,IAAI,KAAK;AACjD,cAAM,aAAa,SAAS;AAC5B,cAAM,uBAAuB,WAAW,IAAI;AAC5C,cAAM,YAAY,MAAM,qBAAqB;AAC7C,6BAAqB,MAAM,YAAY;AACvC,gCAAwB,uBAAuB,oBAAoB,cAAc,YAAY,QAAQ,GAAG;AACxG,YAAI,4BAA4B,YAAY,eAAe;AACzD,yBAAe;AAAA;AAAA;AAGnB,YAAM;AAAA,WACD;AACL,UAAI,gBAAgB;AACpB,UAAI,kBAAkB;AACpB,YAAI,UAAU;AACZ,gBAAM,cAAc,QAAQ;AAC5B,0BAAgB,cAAc,QAAQ;AAAA,eACjC;AACL,kBAAQ,KAAK;AAAA;AAAA;AAGjB,YAAM,YAAY,eAAe,kBAAkB;AACnD,2BAAqB,eAAe,SAAS;AAC7C,8BAAwB,uBAAuB,oBAAoB,cAAc,SAAS,OAAO;AACjG,UAAI,4BAA4B,SAAS,eAAe;AACtD,uBAAe;AAAA;AAEjB,YAAM;AAAA;AAER,QAAI,aAAa,aAAa;AAC5B,6BAAuB;AAAA;AAAA;AAG3B,oCAAkC,cAAc;AAC9C,UAAM,eAAe,eAAe,iBAAiB;AACrD,UAAM,WAAW,aAAa,iCAAiC,OAAO,aAAa,UAAU,CAAC,aAAa;AAC3G,aAAS,IAAI,GAAG,KAAK,SAAS,QAAQ,IAAI,IAAI,KAAK;AACjD,YAAM,UAAU,SAAS;AACzB,UAAI,4BAA4B,SAAS,eAAe;AACtD,cAAM,SAAS,aAAa,0BAA0B,QAAQ;AAC9D,cAAM,eAAe,WAAW,IAAI,SAAS;AAC7C,cAAM,YAAY,QAAQ;AAC1B,uBAAe;AACf,cAAM;AAAA;AAAA;AAAA;AAIZ,yCAAuC,cAAc;AACnD,QAAI,aAAa,iBAAiB;AAChC,UAAI,UAAU;AACZ,cAAM,QAAQ,aAAa;AAC3B,cAAM,SAAS,aAAa;AAC5B,YAAI,OAAO;AACX,cAAM,oBAAoB,CAAC;AAC3B,cAAM,aAAa,aAAa,gBAAgB,QAAQ;AACxD,YAAI,aAAa,aAAa;AAC5B,4BAAkB,KAAK;AAAA;AAEzB,YAAI,CAAC,aAAa,+BAA+B;AAC/C,cAAI,aAAa;AACf,oBAAQ;AACV,cAAI,aAAa;AACf,oBAAQ;AAAA;AAEZ,cAAM,yBAAyB,WAAW,IAAI;AAC9C,cAAM,gBAAgB,OAAO,uBAAuB;AACpD,cAAM,gBAAgB,OAAO,uBAAuB;AACpD,YAAI,aAAa,+BAA+B;AAC9C,cAAI,sBAAsB,OAAO,CAAC;AAClC,cAAI,sBAAsB,OAAO,CAAC;AAAA;AAEpC,YAAI,gBAAgB,GAAG,GAAG,OAAO,QAAQ,GAAG,GAAG,OAAO,QAAQ,MAAM;AACpE,YAAI,sBAAsB,OAAO;AACjC,cAAM,gBAAgB,OAAO;AAC7B,cAAM,gBAAgB,OAAO,uBAAuB;AAAA,aAC/C;AACL,gBAAQ,KAAK;AAAA;AAAA;AAAA;AAInB,kCAAgC,cAAc;AAC5C,WAAO,YAAa,cAAa,mBAAmB,aAAa,sBAAsB,KAAK,IAAI,YAAY,aAAa,WAAW;AAAA;AAEtI,8BAA4B,SAAS;AACnC,UAAM,QAAQ,KAAK,OAAO;AAC1B,QAAI,eAAe,IAAI,aAAa,OAAO;AACzC,qBAAe,IAAI,SAAS;AAC5B,cAAQ;AAAA;AAAA;AAGZ,MAAI,kBAAkB;AACtB,MAAI,oBAAoB;AACxB,4BAA0B,SAAS,MAAM;AACvC,QAAI,WAAW,QAAQ,qBAAqB;AAC1C,UAAI,oBAAoB,OAAO;AAC7B,gBAAQ,KAAK;AACb,0BAAkB;AAAA;AAEpB,gBAAU,QAAQ;AAAA;AAEpB,iBAAa,SAAS;AAAA;AAExB,8BAA4B,SAAS,MAAM;AACzC,QAAI,WAAW,QAAQ,yBAAyB;AAC9C,UAAI,sBAAsB,OAAO;AAC/B,gBAAQ,KAAK;AACb,4BAAoB;AAAA;AAEtB,gBAAU,QAAQ;AAAA;AAEpB,mBAAe,SAAS;AAAA;AAE1B,OAAK,sBAAsB;AAC3B,OAAK,oBAAoB;AACzB,OAAK,eAAe;AACpB,OAAK,oBAAoB;AACzB,OAAK,eAAe;AACpB,OAAK,iBAAiB;AACtB,OAAK,iBAAiB;AACtB,OAAK,oBAAoB;AACzB,OAAK,2BAA2B;AAChC,OAAK,gCAAgC;AACrC,OAAK,yBAAyB;AAC9B,OAAK,0BAA0B;AAC/B,OAAK,mBAAmB;AACxB,OAAK,qBAAqB;AAAA;AAE5B,oBAAoB,KAAI,YAAY,cAAc;AAChD,QAAM,WAAW,aAAa;AAC9B,mBAAiB,GAAG;AAClB,QAAI;AACJ,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM,eAAe;AACvB,UAAI;AACF,eAAO;AACT,kBAAY,WAAW,IAAI;AAC3B,UAAI,cAAc,MAAM;AACtB,eAAO,UAAU;AAAA,aACZ;AACL,eAAO;AAAA;AAAA;AAGX,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM,wBAAwB,MAAM,yBAAyB,MAAM,yBAAyB,MAAM,uBAAuB;AAC3H,kBAAY,WAAW,IAAI;AAC3B,UAAI,cAAc,MAAM;AACtB,YAAI,MAAM;AACR,iBAAO,UAAU;AACnB,YAAI,MAAM;AACR,iBAAO,UAAU;AACnB,YAAI,MAAM;AACR,iBAAO,UAAU;AACnB,YAAI,MAAM;AACR,iBAAO,UAAU;AAAA,aACd;AACL,eAAO;AAAA;AAAA;AAGX,QAAI,MAAM,2BAA2B,MAAM,2BAA2B,MAAM,4BAA4B,MAAM,0BAA0B;AACtI,kBAAY,WAAW,IAAI;AAC3B,UAAI,cAAc,MAAM;AACtB,YAAI,MAAM;AACR,iBAAO,UAAU;AACnB,YAAI,MAAM;AACR,iBAAO,UAAU;AACnB,YAAI,MAAM;AACR,iBAAO,UAAU;AACnB,YAAI,MAAM;AACR,iBAAO,UAAU;AAAA,aACd;AACL,eAAO;AAAA;AAAA;AAGX,QAAI,MAAM,iBAAiB;AACzB,kBAAY,WAAW,IAAI;AAC3B,UAAI,cAAc,MAAM;AACtB,eAAO,UAAU;AAAA,aACZ;AACL,eAAO;AAAA;AAAA;AAGX,QAAI,MAAM,mBAAmB,MAAM,sBAAsB;AACvD,kBAAY,WAAW,IAAI;AAC3B,UAAI,cAAc,MAAM;AACtB,YAAI,MAAM;AACR,iBAAO,UAAU;AACnB,YAAI,MAAM;AACR,iBAAO,UAAU;AAAA;AAAA;AAGvB,QAAI,MAAM,wBAAwB,MAAM,wBAAwB,MAAM,wBAAwB,MAAM,wBAAwB,MAAM,wBAAwB,MAAM,wBAAwB,MAAM,wBAAwB,MAAM,wBAAwB,MAAM,yBAAyB,MAAM,yBAAyB,MAAM,yBAAyB,MAAM,0BAA0B,MAAM,0BAA0B,MAAM,0BAA0B,MAAM,gCAAgC,MAAM,gCAAgC,MAAM,gCAAgC,MAAM,gCAAgC,MAAM,gCAAgC,MAAM,gCAAgC,MAAM,gCAAgC,MAAM,gCAAgC,MAAM,iCAAiC,MAAM,iCAAiC,MAAM,iCAAiC,MAAM,kCAAkC,MAAM,kCAAkC,MAAM,gCAAgC;AAC18B,kBAAY,WAAW,IAAI;AAC3B,UAAI,cAAc,MAAM;AACtB,eAAO;AAAA,aACF;AACL,eAAO;AAAA;AAAA;AAGX,QAAI,MAAM,kBAAkB;AAC1B,kBAAY,WAAW,IAAI;AAC3B,UAAI,cAAc,MAAM;AACtB,eAAO;AAAA,aACF;AACL,eAAO;AAAA;AAAA;AAGX,QAAI,MAAM,oBAAoB;AAC5B,UAAI;AACF,eAAO;AACT,kBAAY,WAAW,IAAI;AAC3B,UAAI,cAAc,MAAM;AACtB,eAAO,UAAU;AAAA,aACZ;AACL,eAAO;AAAA;AAAA;AAAA;AAIb,SAAO,EAAC;AAAA;AAEV,gCAA0B,kBAAkB;AAAA,EAC1C,YAAY,SAAQ,IAAI;AACtB;AACA,SAAK,UAAU;AAAA;AAAA;AAGnB,YAAY,UAAU,gBAAgB;AACtC,0BAAoB,SAAS;AAAA,EAC3B,cAAc;AACZ;AACA,SAAK,OAAO;AAAA;AAAA;AAGhB,MAAM,UAAU,UAAU;AAC1B,IAAM,aAAa,EAAC,MAAM;AAC1B,4BAAsB;AAAA,EACpB,cAAc;AACZ,SAAK,aAAa;AAClB,SAAK,QAAQ;AACb,SAAK,QAAQ;AAAA;AAAA,EAEf,eAAe;AACb,QAAI,KAAK,UAAU,MAAM;AACvB,WAAK,QAAQ,IAAI;AACjB,WAAK,MAAM,mBAAmB;AAC9B,WAAK,MAAM,UAAU;AACrB,WAAK,MAAM,SAAS;AACpB,WAAK,MAAM,aAAa,EAAC,UAAU;AAAA;AAErC,WAAO,KAAK;AAAA;AAAA,EAEd,oBAAoB;AAClB,QAAI,KAAK,eAAe,MAAM;AAC5B,WAAK,aAAa,IAAI;AACtB,WAAK,WAAW,mBAAmB;AACnC,WAAK,WAAW,UAAU;AAC1B,WAAK,WAAW,oBAAoB;AACpC,WAAK,WAAW,iBAAiB,IAAI;AACrC,WAAK,WAAW,qBAAqB;AACrC,WAAK,WAAW,kBAAkB,IAAI;AAAA;AAExC,WAAO,KAAK;AAAA;AAAA,EAEd,eAAe;AACb,QAAI,KAAK,UAAU,MAAM;AACvB,WAAK,QAAQ,IAAI;AACjB,WAAK,MAAM,mBAAmB;AAC9B,WAAK,MAAM,UAAU;AACrB,WAAK,MAAM,oBAAoB;AAC/B,WAAK,MAAM,iBAAiB,IAAI;AAChC,WAAK,MAAM,qBAAqB;AAChC,WAAK,MAAM,kBAAkB,IAAI;AAAA;AAEnC,WAAO,KAAK;AAAA;AAAA,EAEd,cAAc,OAAO;AACnB,QAAI,KAAK,eAAe,MAAM;AAC5B,WAAK,WAAW,cAAc;AAAA;AAEhC,QAAI,KAAK,UAAU,MAAM;AACvB,WAAK,MAAM,cAAc;AAAA;AAE3B,QAAI,KAAK,UAAU,MAAM;AACvB,WAAK,MAAM,cAAc;AAAA;AAE3B,WAAO;AAAA;AAAA,EAET,WAAW,aAAa;AACtB,SAAK,cAAc,EAAC,MAAM,gBAAgB,MAAM;AAChD,QAAI,KAAK,eAAe,MAAM;AAC5B,WAAK,WAAW,UAAU;AAAA;AAE5B,QAAI,KAAK,UAAU,MAAM;AACvB,WAAK,MAAM,UAAU;AAAA;AAEvB,QAAI,KAAK,UAAU,MAAM;AACvB,WAAK,MAAM,UAAU;AAAA;AAEvB,WAAO;AAAA;AAAA,EAET,OAAO,aAAa,OAAO,gBAAgB;AACzC,QAAI,YAAY;AAChB,QAAI,WAAW;AACf,QAAI,WAAW;AACf,UAAM,YAAY,KAAK;AACvB,UAAM,OAAO,KAAK;AAClB,UAAM,OAAO,KAAK;AAClB,QAAI,eAAe,MAAM,QAAQ,oBAAoB,mBAAmB;AACtE,UAAI,cAAc,MAAM;AACtB,oBAAY,MAAM,QAAQ,YAAY,gBAAgB;AACtD,YAAI,cAAc,MAAM;AACtB,oBAAU,OAAO,UAAU,UAAU,UAAU;AAC/C,oBAAU,OAAO,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU;AAC7E,cAAI,UAAU,gBAAgB;AAC5B,sBAAU,oBAAoB;AAC9B,sBAAU,eAAe,KAAK,UAAU;AAAA,iBACnC;AACL,sBAAU,oBAAoB;AAAA;AAEhC,cAAI,UAAU,iBAAiB;AAC7B,sBAAU,qBAAqB;AAC/B,sBAAU,gBAAgB,KAAK,UAAU;AAAA,iBACpC;AACL,sBAAU,qBAAqB;AAAA;AAEjC,eAAK,cAAc;AAAA;AAAA;AAGvB,UAAI,QAAQ,YAAY,MAAM;AAC5B,mBAAW;AACX,mBAAW,cAAc,YAAY,KAAK,UAAU;AAClD,gBAAM,YAAY,MAAM,aAAa,YAAY;AACjD,cAAI,KAAK,OAAO,WAAW,eAAe,QAAQ;AAChD,kBAAM,SAAS,IAAI;AACnB,mBAAO,mBAAmB;AAC1B,mBAAO,UAAU;AACjB,iBAAK,OAAO,WAAW,aAAa;AACpC,iBAAK,IAAI;AAAA;AAEX,gBAAM,QAAQ,KAAK,OAAO,WAAW;AACrC,cAAI,cAAc,MAAM;AACtB,kBAAM,OAAO,UAAU,UAAU,UAAU;AAC3C,kBAAM,OAAO,UAAU,MAAM,UAAU,MAAM,UAAU,MAAM;AAC7D,kBAAM,cAAc,UAAU;AAAA;AAEhC,gBAAM,UAAU,cAAc;AAAA;AAEhC,cAAM,WAAW,KAAK,OAAO;AAC7B,cAAM,WAAW,KAAK,OAAO;AAC7B,cAAM,WAAW,SAAS,SAAS,WAAW,SAAS;AACvD,cAAM,kBAAkB;AACxB,cAAM,YAAY;AAClB,YAAI,KAAK,WAAW,YAAY,WAAW,kBAAkB,WAAW;AACtE,eAAK,WAAW,WAAW;AAC3B,eAAK,cAAc;AAAA,YACjB,MAAM;AAAA,YACN,YAAY,YAAY;AAAA,YACxB,QAAQ;AAAA;AAAA,mBAED,CAAC,KAAK,WAAW,YAAY,YAAY,kBAAkB,WAAW;AAC/E,eAAK,WAAW,WAAW;AAC3B,eAAK,cAAc;AAAA,YACjB,MAAM;AAAA,YACN,YAAY,YAAY;AAAA,YACxB,QAAQ;AAAA;AAAA;AAAA,aAGP;AACL,YAAI,SAAS,QAAQ,YAAY,WAAW;AAC1C,qBAAW,MAAM,QAAQ,YAAY,WAAW;AAChD,cAAI,aAAa,MAAM;AACrB,iBAAK,OAAO,UAAU,SAAS,UAAU;AACzC,iBAAK,OAAO,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK;AACzD,gBAAI,SAAS,gBAAgB;AAC3B,mBAAK,oBAAoB;AACzB,mBAAK,eAAe,KAAK,SAAS;AAAA,mBAC7B;AACL,mBAAK,oBAAoB;AAAA;AAE3B,gBAAI,SAAS,iBAAiB;AAC5B,mBAAK,qBAAqB;AAC1B,mBAAK,gBAAgB,KAAK,SAAS;AAAA,mBAC9B;AACL,mBAAK,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAMpC,QAAI,cAAc,MAAM;AACtB,gBAAU,UAAU,cAAc;AAAA;AAEpC,QAAI,SAAS,MAAM;AACjB,WAAK,UAAU,aAAa;AAAA;AAE9B,QAAI,SAAS,MAAM;AACjB,WAAK,UAAU,aAAa;AAAA;AAE9B,WAAO;AAAA;AAAA;AAGX,iCAA2B,QAAQ;AAAA,EACjC,YAAY,OAAO,QAAQ,MAAM,SAAS,OAAO,OAAO,WAAW,WAAW,YAAY,QAAQ;AAChG,aAAS,WAAW,SAAS,SAAS;AACtC,QAAI,WAAW,eAAe,WAAW,oBAAoB;AAC3D,YAAM,IAAI,MAAM;AAAA;AAElB,QAAI,SAAS,UAAU,WAAW;AAChC,aAAO;AACT,QAAI,SAAS,UAAU,WAAW;AAChC,aAAO;AACT,UAAM,MAAM,SAAS,OAAO,OAAO,WAAW,WAAW,QAAQ,MAAM;AACvE,SAAK,QAAQ,EAAC,OAAO;AACrB,SAAK,YAAY,cAAc,SAAS,YAAY;AACpD,SAAK,YAAY,cAAc,SAAS,YAAY;AACpD,SAAK,QAAQ;AACb,SAAK,kBAAkB;AAAA;AAAA;AAG3B,aAAa,UAAU,iBAAiB;AACxC,iCAA2B,gBAAgB;AAAA,EACzC,YAAY,UAAU,KAAI;AACxB;AACA,UAAM,QAAQ;AACd,QAAI,UAAU;AACd,QAAI,yBAAyB;AAC7B,QAAI,iBAAiB;AACrB,QAAI,qBAAqB;AACzB,UAAM,iCAAiC,SAAS,WAAW,IAAI;AAC/D,QAAI,OAAO;AACX,QAAI,YAAY;AAChB,QAAI,cAAc;AAClB,QAAI,cAAc;AAClB,QAAI,gBAAgB;AACpB,QAAI,UAAU;AACd,UAAM,aAAa,IAAG;AACtB,QAAI,sBAAsB;AAC1B,QAAI,kBAAkB;AACtB,UAAM,cAAc;AACpB,UAAM,kBAAkB,IAAI;AAC5B,UAAM,UAAU,IAAI;AACpB,YAAQ,OAAO,OAAO;AACtB,YAAQ,WAAW,IAAI;AACvB,UAAM,UAAU,IAAI;AACpB,YAAQ,OAAO,OAAO;AACtB,YAAQ,WAAW,IAAI;AACvB,UAAM,UAAU,CAAC,SAAS;AAC1B,UAAM,WAAW,IAAI;AACrB,aAAS,OAAO,OAAO;AACvB,aAAS,OAAO,OAAO;AACvB,QAAI,oBAAoB;AACxB,QAAI,mBAAmB;AACvB,SAAK,mBAAmB;AACxB,SAAK,UAAU;AACf,SAAK,eAAe;AACpB,SAAK,gBAAgB,SAAS,QAAO;AACnC,UAAI,aAAa,YAAY;AAC7B,UAAI,eAAe,QAAQ;AACzB,qBAAa,IAAI;AACjB,oBAAY,UAAS;AAAA;AAEvB,aAAO,WAAW;AAAA;AAEpB,SAAK,oBAAoB,SAAS,QAAO;AACvC,UAAI,aAAa,YAAY;AAC7B,UAAI,eAAe,QAAQ;AACzB,qBAAa,IAAI;AACjB,oBAAY,UAAS;AAAA;AAEvB,aAAO,WAAW;AAAA;AAEpB,SAAK,UAAU,SAAS,QAAO;AAC7B,UAAI,aAAa,YAAY;AAC7B,UAAI,eAAe,QAAQ;AACzB,qBAAa,IAAI;AACjB,oBAAY,UAAS;AAAA;AAEvB,aAAO,WAAW;AAAA;AAEpB,4BAAwB,OAAO;AAC7B,YAAM,aAAa,gBAAgB,IAAI,MAAM;AAC7C,UAAI,YAAY;AACd,mBAAW,cAAc,EAAC,MAAM,MAAM,MAAM,MAAM,MAAM;AAAA;AAAA;AAG5D,4BAAwB;AACtB,sBAAgB,QAAQ,SAAS,YAAY,aAAa;AACxD,mBAAW,WAAW;AAAA;AAExB,sBAAgB;AAChB,0BAAoB;AACpB,yBAAmB;AACnB,eAAS,gBAAgB;AACzB,oBAAc;AACd,oBAAc;AACd,kBAAY;AACZ,gBAAU;AACV,wBAAkB;AAClB,gBAAU;AACV,YAAM,eAAe;AACrB,YAAM,cAAc,EAAC,MAAM;AAAA;AAE7B,SAAK,4BAA4B,SAAS,OAAO;AAC/C,+BAAyB;AACzB,UAAI,MAAM,iBAAiB,MAAM;AAC/B,gBAAQ,KAAK;AAAA;AAAA;AAGjB,SAAK,wBAAwB,SAAS,OAAO;AAC3C,2BAAqB;AACrB,UAAI,MAAM,iBAAiB,MAAM;AAC/B,gBAAQ,KAAK;AAAA;AAAA;AAGjB,SAAK,oBAAoB,WAAW;AAClC,aAAO;AAAA;AAET,SAAK,eAAe,WAAW;AAC7B,aAAO,gBAAgB,OAAO,cAAc;AAAA;AAE9C,SAAK,aAAa,WAAW;AAC3B,aAAO;AAAA;AAET,SAAK,WAAW,WAAW;AACzB,aAAO;AAAA;AAET,SAAK,aAAa,WAAW;AAC3B,aAAO;AAAA;AAET,SAAK,aAAa,eAAe,OAAO;AACtC,gBAAU;AACV,UAAI,YAAY,MAAM;AACpB,8BAAsB,SAAS;AAC/B,gBAAQ,iBAAiB,UAAU;AACnC,gBAAQ,iBAAiB,eAAe;AACxC,gBAAQ,iBAAiB,aAAa;AACtC,gBAAQ,iBAAiB,WAAW;AACpC,gBAAQ,iBAAiB,gBAAgB;AACzC,gBAAQ,iBAAiB,cAAc;AACvC,gBAAQ,iBAAiB,OAAO;AAChC,gBAAQ,iBAAiB,sBAAsB;AAC/C,YAAI,WAAW,iBAAiB,MAAM;AACpC,gBAAM,IAAG;AAAA;AAEX,YAAI,QAAQ,YAAY,WAAW,UAAU,SAAS,aAAa,aAAa,OAAO;AACrF,gBAAM,YAAY;AAAA,YAChB,WAAW,QAAQ,YAAY,WAAW,SAAS,WAAW,YAAY;AAAA,YAC1E,OAAO,WAAW;AAAA,YAClB,OAAO,WAAW;AAAA,YAClB,SAAS,WAAW;AAAA,YACpB;AAAA;AAEF,wBAAc,IAAI,aAAa,SAAS,KAAI;AAC5C,kBAAQ,kBAAkB,EAAC,WAAW;AACtC,4BAAkB,IAAI,kBAAkB,YAAY,kBAAkB,YAAY;AAAA,eAC7E;AACL,0BAAgB,WAAW;AAC3B,cAAI,cAAc;AAClB,cAAI,YAAY;AAChB,cAAI,gBAAgB;AACpB,cAAI,WAAW,OAAO;AACpB,4BAAgB,WAAW,UAAU,QAAQ;AAC7C,0BAAc,WAAW,UAAU,qBAAqB;AACxD,wBAAY,WAAW,UAAU,qBAAqB;AAAA;AAExD,gBAAM,sBAAsB;AAAA,YAC1B,aAAa,WAAW,SAAS,gBAAgB,QAAQ;AAAA,YACzD,aAAa;AAAA,YACb,aAAa;AAAA;AAEf,sBAAY,IAAI,eAAe,SAAS;AACxC,wBAAc,UAAU,sBAAsB;AAC9C,kBAAQ,kBAAkB,EAAC,QAAQ,CAAC;AACpC,cAAI,eAAe;AACjB,8BAAkB,IAAI,6BAA6B,YAAY,cAAc,YAAY,eAAe;AAAA,cACtG,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,cAAc,IAAI,aAAa,YAAY,cAAc,YAAY,eAAe,WAAW,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,cAC/I,eAAe,WAAW;AAAA,cAC1B,aAAa,YAAY;AAAA,cACzB,oBAAoB;AAAA;AAAA,iBAEjB;AACL,8BAAkB,IAAI,kBAAkB,YAAY,cAAc,YAAY,eAAe;AAAA,cAC3F,QAAQ,WAAW,QAAQ,aAAa;AAAA,cACxC,MAAM;AAAA,cACN,cAAc,IAAI,aAAa,YAAY,cAAc,YAAY,eAAe,WAAW,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,cAC/I,eAAe,WAAW;AAAA,cAC1B,aAAa,YAAY;AAAA;AAAA;AAAA;AAI/B,aAAK,aAAa;AAClB,yBAAiB,MAAM,QAAQ,sBAAsB;AACrD,kBAAU,WAAW;AACrB,kBAAU;AACV,cAAM,eAAe;AACrB,cAAM,cAAc,EAAC,MAAM;AAAA;AAAA;AAG/B,kCAA8B,OAAO;AACnC,YAAM,eAAe,QAAQ;AAC7B,eAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC3C,wBAAgB,IAAI,aAAa,IAAI,YAAY;AAAA;AAEnD,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,QAAQ,KAAK;AAC7C,cAAM,cAAc,MAAM,QAAQ;AAClC,cAAM,aAAa,gBAAgB,IAAI;AACvC,YAAI,YAAY;AACd,qBAAW,cAAc,EAAC,MAAM,gBAAgB,MAAM;AACtD,0BAAgB,OAAO;AAAA;AAAA;AAG3B,eAAS,IAAI,GAAG,IAAI,MAAM,MAAM,QAAQ,KAAK;AAC3C,cAAM,cAAc,MAAM,MAAM;AAChC,cAAM,aAAa,gBAAgB,IAAI;AACvC,YAAI,YAAY;AACd,qBAAW,cAAc,EAAC,MAAM,aAAa,MAAM;AAAA;AAAA;AAAA;AAIzD,UAAM,aAAa,IAAI;AACvB,UAAM,aAAa,IAAI;AACvB,oCAAgC,QAAQ,UAAU,UAAU;AAC1D,iBAAW,sBAAsB,SAAS;AAC1C,iBAAW,sBAAsB,SAAS;AAC1C,YAAM,MAAM,WAAW,WAAW;AAClC,YAAM,QAAQ,SAAS,iBAAiB;AACxC,YAAM,QAAQ,SAAS,iBAAiB;AACxC,YAAM,OAAO,MAAM,MAAO,OAAM,MAAM;AACtC,YAAM,MAAM,MAAM,MAAO,OAAM,MAAM;AACrC,YAAM,SAAU,OAAM,KAAK,KAAK,MAAM;AACtC,YAAM,YAAa,OAAM,KAAK,KAAK,MAAM;AACzC,YAAM,UAAW,OAAM,KAAK,KAAK,MAAM;AACvC,YAAM,WAAY,OAAM,KAAK,KAAK,MAAM;AACxC,YAAM,QAAO,OAAO;AACpB,YAAM,SAAQ,OAAO;AACrB,YAAM,UAAU,MAAO,EAAC,UAAU;AAClC,YAAM,UAAU,UAAU,CAAC;AAC3B,eAAS,YAAY,UAAU,OAAO,UAAU,OAAO,YAAY,OAAO;AAC1E,aAAO,WAAW;AAClB,aAAO,WAAW;AAClB,aAAO,YAAY,QAAQ,OAAO,UAAU,OAAO,YAAY,OAAO;AACtE,aAAO,mBAAmB,KAAK,OAAO,aAAa;AACnD,YAAM,QAAQ,OAAO;AACrB,YAAM,OAAO,MAAM;AACnB,YAAM,SAAQ,QAAO;AACrB,YAAM,UAAS,SAAS,OAAM;AAC9B,YAAM,OAAO,SAAS,MAAM,OAAO;AACnC,YAAM,UAAU,YAAY,MAAM,OAAO;AACzC,aAAO,iBAAiB,gBAAgB,QAAO,SAAQ,MAAM,SAAS,OAAO;AAAA;AAE/E,0BAAsB,QAAQ,SAAQ;AACpC,UAAI,YAAW,MAAM;AACnB,eAAO,YAAY,KAAK,OAAO;AAAA,aAC1B;AACL,eAAO,YAAY,iBAAiB,QAAO,aAAa,OAAO;AAAA;AAEjE,aAAO,mBAAmB,KAAK,OAAO,aAAa;AAAA;AAErD,SAAK,eAAe,SAAS,QAAQ;AACnC,UAAI,YAAY;AACd;AACF,eAAS,OAAO,QAAQ,OAAO,QAAQ,OAAO,OAAO;AACrD,eAAS,MAAM,QAAQ,MAAM,QAAQ,MAAM,OAAO;AAClD,UAAI,sBAAsB,SAAS,QAAQ,qBAAqB,SAAS,KAAK;AAC5E,gBAAQ,kBAAkB;AAAA,UACxB,WAAW,SAAS;AAAA,UACpB,UAAU,SAAS;AAAA;AAErB,4BAAoB,SAAS;AAC7B,2BAAmB,SAAS;AAAA;AAE9B,YAAM,UAAS,OAAO;AACtB,YAAM,WAAW,SAAS;AAC1B,mBAAa,UAAU;AACvB,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,qBAAa,SAAS,IAAI;AAAA;AAE5B,eAAS,YAAY,UAAU,SAAS,UAAU,SAAS,YAAY,SAAS;AAChF,aAAO,SAAS,KAAK,SAAS;AAC9B,aAAO,WAAW,KAAK,SAAS;AAChC,aAAO,MAAM,KAAK,SAAS;AAC3B,aAAO,OAAO,KAAK,SAAS;AAC5B,aAAO,YAAY,KAAK,SAAS;AACjC,YAAM,WAAW,OAAO;AACxB,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC/C,iBAAS,GAAG,kBAAkB;AAAA;AAEhC,UAAI,SAAS,WAAW,GAAG;AACzB,+BAAuB,UAAU,SAAS;AAAA,aACrC;AACL,iBAAS,iBAAiB,KAAK,QAAQ;AAAA;AAAA;AAG3C,SAAK,YAAY,WAAW;AAC1B,aAAO;AAAA;AAET,SAAK,eAAe,WAAW;AAC7B,UAAI,gBAAgB,MAAM;AACxB,eAAO,YAAY;AAAA;AAErB,UAAI,gBAAgB,MAAM;AACxB,eAAO,YAAY;AAAA;AAErB,aAAO;AAAA;AAET,SAAK,eAAe,SAAS,WAAW;AACtC,UAAI,gBAAgB,MAAM;AACxB,oBAAY,iBAAiB;AAAA;AAE/B,UAAI,gBAAgB,QAAQ,YAAY,mBAAmB,QAAQ;AACjE,oBAAY,iBAAiB;AAAA;AAAA;AAGjC,QAAI,2BAA2B;AAC/B,8BAA0B,MAAM,OAAO;AACrC,aAAO,MAAM,cAAc;AAC3B,gBAAU;AACV,UAAI,SAAS,MAAM;AACjB,cAAM,QAAQ,KAAK;AACnB,YAAI,gBAAgB,MAAM;AACxB,mBAAS,2BAA2B,iBAAiB,YAAY;AACjE,mBAAS,gBAAgB;AAAA;AAE3B,YAAI,sBAAsB;AAC1B,YAAI,MAAM,WAAW,SAAS,QAAQ,QAAQ;AAC5C,mBAAS,QAAQ,SAAS;AAC1B,gCAAsB;AAAA;AAExB,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,gBAAM,OAAO,MAAM;AACnB,cAAI,YAAW;AACf,cAAI,gBAAgB,MAAM;AACxB,wBAAW,YAAY,YAAY;AAAA,iBAC9B;AACL,kBAAM,aAAa,UAAU,gBAAgB,aAAa;AAC1D,wBAAW,WAAW;AACtB,gBAAI,MAAM,GAAG;AACX,uBAAS,wBAAwB,iBAAiB,WAAW,cAAc,YAAY,oBAAoB,SAAS,WAAW;AAC/H,uBAAS,gBAAgB;AAAA;AAAA;AAG7B,gBAAM,SAAS,QAAQ;AACvB,iBAAO,OAAO,UAAU,KAAK,UAAU;AACvC,iBAAO,iBAAiB,UAAU,KAAK;AACvC,iBAAO,SAAS,IAAI,UAAS,GAAG,UAAS,GAAG,UAAS,OAAO,UAAS;AACrE,cAAI,MAAM,GAAG;AACX,qBAAS,OAAO,KAAK,OAAO;AAAA;AAE9B,cAAI,wBAAwB,MAAM;AAChC,qBAAS,QAAQ,KAAK;AAAA;AAAA;AAAA;AAI5B,YAAM,eAAe,QAAQ;AAC7B,eAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC3C,cAAM,aAAa,YAAY;AAC/B,cAAM,cAAc,aAAa;AACjC,mBAAW,OAAO,aAAa,OAAO;AAAA;AAExC,UAAI;AACF,iCAAyB,MAAM;AACjC,gBAAU;AAAA;AAEZ,UAAM,YAAY,IAAI;AACtB,cAAU,iBAAiB;AAC3B,SAAK,mBAAmB,SAAS,UAAU;AACzC,iCAA2B;AAAA;AAE7B,SAAK,UAAU,WAAW;AAAA;AAAA;AAAA;AAI9B,wBAAwB,YAAY;AAClC,8BAA4B,UAAU,KAAK;AACzC,aAAS,SAAS,MAAM,KAAK,IAAI;AACjC,QAAI,IAAI,OAAO;AACb,eAAS,QAAQ,QAAQ,IAAI;AAC7B,eAAS,OAAO,QAAQ,IAAI;AAAA,eACnB,IAAI,WAAW;AACxB,eAAS,WAAW,QAAQ,IAAI;AAAA;AAAA;AAGpC,mCAAiC,UAAU,UAAU,YAAY,QAAQ,0BAA0B;AACjG,QAAI,SAAS,qBAAqB;AAChC,4BAAsB,UAAU;AAAA,eACvB,SAAS,uBAAuB;AACzC,4BAAsB,UAAU;AAChC,6BAAuB,UAAU;AAAA,eACxB,SAAS,oBAAoB;AACtC,4BAAsB,UAAU;AAChC,0BAAoB,UAAU;AAAA,eACrB,SAAS,qBAAqB;AACvC,4BAAsB,UAAU;AAChC,2BAAqB,UAAU;AAAA,eACtB,SAAS,wBAAwB;AAC1C,4BAAsB,UAAU;AAChC,UAAI,SAAS,wBAAwB;AACnC,gCAAwB,UAAU,UAAU;AAAA,aACvC;AACL,gCAAwB,UAAU;AAAA;AAAA,eAE3B,SAAS,sBAAsB;AACxC,4BAAsB,UAAU;AAChC,4BAAsB,UAAU;AAAA,eACvB,SAAS,qBAAqB;AACvC,4BAAsB,UAAU;AAChC,2BAAqB,UAAU;AAAA,eACtB,SAAS,wBAAwB;AAC1C,4BAAsB,UAAU;AAChC,8BAAwB,UAAU;AAAA,eACzB,SAAS,sBAAsB;AACxC,4BAAsB,UAAU;AAChC,4BAAsB,UAAU;AAAA,eACvB,SAAS,qBAAqB;AACvC,0BAAoB,UAAU;AAC9B,UAAI,SAAS,sBAAsB;AACjC,4BAAoB,UAAU;AAAA;AAAA,eAEvB,SAAS,kBAAkB;AACpC,4BAAsB,UAAU,UAAU,YAAY;AAAA,eAC7C,SAAS,kBAAkB;AACpC,6BAAuB,UAAU;AAAA,eACxB,SAAS,kBAAkB;AACpC,eAAS,MAAM,MAAM,KAAK,SAAS;AACnC,eAAS,QAAQ,QAAQ,SAAS;AAAA,eACzB,SAAS,kBAAkB;AACpC,eAAS,qBAAqB;AAAA;AAAA;AAGlC,iCAA+B,UAAU,UAAU;AACjD,aAAS,QAAQ,QAAQ,SAAS;AAClC,QAAI,SAAS,OAAO;AAClB,eAAS,QAAQ,MAAM,KAAK,SAAS;AAAA;AAEvC,QAAI,SAAS,UAAU;AACrB,eAAS,SAAS,MAAM,KAAK,SAAS,UAAU,eAAe,SAAS;AAAA;AAE1E,QAAI,SAAS,KAAK;AAChB,eAAS,IAAI,QAAQ,SAAS;AAAA;AAEhC,QAAI,SAAS,UAAU;AACrB,eAAS,SAAS,QAAQ,SAAS;AAAA;AAErC,QAAI,SAAS,aAAa;AACxB,eAAS,YAAY,QAAQ,SAAS;AAAA;AAExC,QAAI,SAAS,YAAY,GAAG;AAC1B,eAAS,UAAU,QAAQ,SAAS;AAAA;AAEtC,UAAM,SAAS,WAAW,IAAI,UAAU;AACxC,QAAI,QAAQ;AACV,eAAS,OAAO,QAAQ;AACxB,eAAS,WAAW,QAAQ,OAAO,iBAAiB,OAAO,0BAA0B,QAAQ,KAAK;AAClG,eAAS,aAAa,QAAQ,SAAS;AACvC,eAAS,IAAI,QAAQ,SAAS;AAC9B,eAAS,gBAAgB,QAAQ,SAAS;AAAA;AAE5C,QAAI,SAAS,UAAU;AACrB,eAAS,SAAS,QAAQ,SAAS;AACnC,eAAS,kBAAkB,QAAQ,SAAS;AAAA;AAE9C,QAAI,SAAS,OAAO;AAClB,eAAS,MAAM,QAAQ,SAAS;AAChC,eAAS,eAAe,QAAQ,SAAS;AAAA;AAE3C,QAAI;AACJ,QAAI,SAAS,KAAK;AAChB,mBAAa,SAAS;AAAA,eACb,SAAS,aAAa;AAC/B,mBAAa,SAAS;AAAA,eACb,SAAS,iBAAiB;AACnC,mBAAa,SAAS;AAAA,eACb,SAAS,WAAW;AAC7B,mBAAa,SAAS;AAAA,eACb,SAAS,SAAS;AAC3B,mBAAa,SAAS;AAAA,eACb,SAAS,cAAc;AAChC,mBAAa,SAAS;AAAA,eACb,SAAS,cAAc;AAChC,mBAAa,SAAS;AAAA,eACb,SAAS,UAAU;AAC5B,mBAAa,SAAS;AAAA,eACb,SAAS,aAAa;AAC/B,mBAAa,SAAS;AAAA,eACb,SAAS,cAAc;AAChC,mBAAa,SAAS;AAAA,eACb,SAAS,oBAAoB;AACtC,mBAAa,SAAS;AAAA,eACb,SAAS,uBAAuB;AACzC,mBAAa,SAAS;AAAA,eACb,SAAS,sBAAsB;AACxC,mBAAa,SAAS;AAAA,eACb,SAAS,kBAAkB;AACpC,mBAAa,SAAS;AAAA,eACb,SAAS,iBAAiB;AACnC,mBAAa,SAAS;AAAA,eACb,SAAS,cAAc;AAChC,mBAAa,SAAS;AAAA,eACb,SAAS,eAAe;AACjC,mBAAa,SAAS;AAAA,eACb,SAAS,mBAAmB;AACrC,mBAAa,SAAS;AAAA;AAExB,QAAI,eAAe,QAAQ;AACzB,UAAI,WAAW,qBAAqB;AAClC,qBAAa,WAAW;AAAA;AAE1B,UAAI,WAAW,qBAAqB,MAAM;AACxC,mBAAW;AAAA;AAEb,eAAS,YAAY,MAAM,KAAK,WAAW;AAAA;AAE7C,QAAI;AACJ,QAAI,SAAS,OAAO;AAClB,oBAAc,SAAS;AAAA,eACd,SAAS,UAAU;AAC5B,oBAAc,SAAS;AAAA;AAEzB,QAAI,gBAAgB,QAAQ;AAC1B,UAAI,YAAY,qBAAqB;AACnC,sBAAc,YAAY;AAAA;AAE5B,UAAI,YAAY,qBAAqB,MAAM;AACzC,oBAAY;AAAA;AAEd,eAAS,aAAa,MAAM,KAAK,YAAY;AAAA;AAAA;AAGjD,+BAA6B,UAAU,UAAU;AAC/C,aAAS,QAAQ,MAAM,KAAK,SAAS;AACrC,aAAS,QAAQ,QAAQ,SAAS;AAAA;AAEpC,+BAA6B,UAAU,UAAU;AAC/C,aAAS,SAAS,QAAQ,SAAS;AACnC,aAAS,UAAU,QAAQ,SAAS,WAAW,SAAS;AACxD,aAAS,MAAM,QAAQ,SAAS;AAAA;AAElC,iCAA+B,UAAU,UAAU,YAAY,QAAQ;AACrE,aAAS,QAAQ,MAAM,KAAK,SAAS;AACrC,aAAS,QAAQ,QAAQ,SAAS;AAClC,aAAS,KAAK,QAAQ,SAAS,OAAO;AACtC,aAAS,MAAM,QAAQ,SAAS;AAChC,QAAI,SAAS,KAAK;AAChB,eAAS,IAAI,QAAQ,SAAS;AAAA;AAEhC,QAAI,SAAS,UAAU;AACrB,eAAS,SAAS,QAAQ,SAAS;AAAA;AAErC,QAAI,SAAS,YAAY,GAAG;AAC1B,eAAS,UAAU,QAAQ,SAAS;AAAA;AAEtC,QAAI;AACJ,QAAI,SAAS,KAAK;AAChB,mBAAa,SAAS;AAAA,eACb,SAAS,UAAU;AAC5B,mBAAa,SAAS;AAAA;AAExB,QAAI,eAAe,QAAQ;AACzB,UAAI,WAAW,qBAAqB,MAAM;AACxC,mBAAW;AAAA;AAEb,eAAS,YAAY,MAAM,KAAK,WAAW;AAAA;AAAA;AAG/C,kCAAgC,UAAU,UAAU;AAClD,aAAS,QAAQ,MAAM,KAAK,SAAS;AACrC,aAAS,QAAQ,QAAQ,SAAS;AAClC,aAAS,SAAS,QAAQ,SAAS;AACnC,QAAI,SAAS,KAAK;AAChB,eAAS,IAAI,QAAQ,SAAS;AAAA;AAEhC,QAAI,SAAS,UAAU;AACrB,eAAS,SAAS,QAAQ,SAAS;AAAA;AAErC,QAAI,SAAS,YAAY,GAAG;AAC1B,eAAS,UAAU,QAAQ,SAAS;AAAA;AAEtC,QAAI;AACJ,QAAI,SAAS,KAAK;AAChB,mBAAa,SAAS;AAAA,eACb,SAAS,UAAU;AAC5B,mBAAa,SAAS;AAAA;AAExB,QAAI,eAAe,QAAQ;AACzB,UAAI,WAAW,qBAAqB,MAAM;AACxC,mBAAW;AAAA;AAEb,eAAS,YAAY,MAAM,KAAK,WAAW;AAAA;AAAA;AAG/C,kCAAgC,UAAU,UAAU;AAClD,QAAI,SAAS,aAAa;AACxB,eAAS,YAAY,QAAQ,SAAS;AAAA;AAAA;AAG1C,gCAA8B,UAAU,UAAU;AAChD,aAAS,SAAS,MAAM,KAAK,SAAS;AACtC,aAAS,UAAU,QAAQ,KAAK,IAAI,SAAS,WAAW;AACxD,QAAI,SAAS,aAAa;AACxB,eAAS,YAAY,QAAQ,SAAS;AAAA;AAExC,QAAI,SAAS,SAAS;AACpB,eAAS,QAAQ,QAAQ,SAAS;AAClC,eAAS,UAAU,QAAQ,SAAS;AACpC,UAAI,SAAS,SAAS;AACpB,iBAAS,UAAU,SAAS;AAAA;AAEhC,QAAI,SAAS,WAAW;AACtB,eAAS,UAAU,QAAQ,SAAS;AACpC,eAAS,YAAY,MAAM,KAAK,SAAS;AACzC,UAAI,SAAS,SAAS;AACpB,iBAAS,YAAY,MAAM;AAAA;AAE/B,QAAI,SAAS,iBAAiB;AAC5B,eAAS,gBAAgB,QAAQ,SAAS;AAC1C,eAAS,kBAAkB,QAAQ,SAAS;AAC5C,eAAS,iBAAiB,QAAQ,SAAS;AAAA;AAAA;AAG/C,+BAA6B,UAAU,UAAU;AAC/C,QAAI,SAAS,aAAa;AACxB,eAAS,YAAY,QAAQ,SAAS;AAAA;AAExC,QAAI,SAAS,aAAa;AACxB,eAAS,YAAY,QAAQ,SAAS;AAAA;AAExC,QAAI,SAAS,SAAS;AACpB,eAAS,QAAQ,QAAQ,SAAS;AAClC,eAAS,UAAU,QAAQ,SAAS;AACpC,UAAI,SAAS,SAAS;AACpB,iBAAS,UAAU,SAAS;AAAA;AAEhC,QAAI,SAAS,WAAW;AACtB,eAAS,UAAU,QAAQ,SAAS;AACpC,eAAS,YAAY,MAAM,KAAK,SAAS;AACzC,UAAI,SAAS,SAAS;AACpB,iBAAS,YAAY,MAAM;AAAA;AAE/B,QAAI,SAAS,iBAAiB;AAC5B,eAAS,gBAAgB,QAAQ,SAAS;AAC1C,eAAS,kBAAkB,QAAQ,SAAS;AAC5C,eAAS,iBAAiB,QAAQ,SAAS;AAAA;AAAA;AAG/C,mCAAiC,UAAU,UAAU;AACnD,aAAS,UAAU,QAAQ,SAAS;AACpC,aAAS,UAAU,QAAQ,SAAS;AACpC,QAAI,SAAS,cAAc;AACzB,eAAS,aAAa,QAAQ,SAAS;AAAA;AAEzC,QAAI,SAAS,cAAc;AACzB,eAAS,aAAa,QAAQ,SAAS;AAAA;AAEzC,QAAI,SAAS,aAAa;AACxB,eAAS,YAAY,QAAQ,SAAS;AAAA;AAExC,QAAI,SAAS,SAAS;AACpB,eAAS,QAAQ,QAAQ,SAAS;AAClC,eAAS,UAAU,QAAQ,SAAS;AACpC,UAAI,SAAS,SAAS;AACpB,iBAAS,UAAU,SAAS;AAAA;AAEhC,QAAI,SAAS,WAAW;AACtB,eAAS,UAAU,QAAQ,SAAS;AACpC,eAAS,YAAY,MAAM,KAAK,SAAS;AACzC,UAAI,SAAS,SAAS;AACpB,iBAAS,YAAY,MAAM;AAAA;AAE/B,QAAI,SAAS,iBAAiB;AAC5B,eAAS,gBAAgB,QAAQ,SAAS;AAC1C,eAAS,kBAAkB,QAAQ,SAAS;AAC5C,eAAS,iBAAiB,QAAQ,SAAS;AAAA;AAE7C,UAAM,SAAS,WAAW,IAAI,UAAU;AACxC,QAAI,QAAQ;AACV,eAAS,gBAAgB,QAAQ,SAAS;AAAA;AAAA;AAG9C,mCAAiC,UAAU,UAAU,0BAA0B;AAC7E,4BAAwB,UAAU;AAClC,aAAS,IAAI,QAAQ,SAAS;AAC9B,QAAI,SAAS,QAAQ,GAAG;AACtB,eAAS,WAAW,MAAM,KAAK,SAAS,YAAY,eAAe,SAAS;AAC5E,eAAS,eAAe,QAAQ,SAAS;AACzC,UAAI,SAAS,eAAe;AAC1B,iBAAS,cAAc,QAAQ,SAAS;AAAA;AAE1C,UAAI,SAAS,mBAAmB;AAC9B,iBAAS,kBAAkB,QAAQ,SAAS;AAAA;AAAA;AAGhD,QAAI,SAAS,YAAY,GAAG;AAC1B,eAAS,UAAU,QAAQ,SAAS;AACpC,eAAS,mBAAmB,QAAQ,SAAS;AAC7C,UAAI,SAAS,cAAc;AACzB,iBAAS,aAAa,QAAQ,SAAS;AAAA;AAEzC,UAAI,SAAS,uBAAuB;AAClC,iBAAS,sBAAsB,QAAQ,SAAS;AAAA;AAElD,UAAI,SAAS,oBAAoB;AAC/B,iBAAS,qBAAqB,MAAM,KAAK,SAAS;AAClD,iBAAS,mBAAmB,QAAQ,SAAS;AAC7C,YAAI,SAAS,SAAS,UAAU;AAC9B,mBAAS,qBAAqB,MAAM;AAAA;AAAA;AAAA;AAI1C,QAAI,SAAS,eAAe,GAAG;AAC7B,eAAS,aAAa,QAAQ,SAAS;AACvC,eAAS,uBAAuB,QAAQ,yBAAyB;AACjE,eAAS,wBAAwB,MAAM,IAAI,yBAAyB,OAAO,yBAAyB;AACpG,UAAI,SAAS,iBAAiB;AAC5B,iBAAS,gBAAgB,QAAQ,SAAS;AAAA;AAE5C,eAAS,UAAU,QAAQ,SAAS;AACpC,UAAI,SAAS,cAAc;AACzB,iBAAS,aAAa,QAAQ,SAAS;AAAA;AAEzC,eAAS,oBAAoB,QAAQ,SAAS;AAC9C,eAAS,iBAAiB,MAAM,KAAK,SAAS;AAAA;AAEhD,aAAS,kBAAkB,QAAQ,SAAS;AAC5C,aAAS,cAAc,MAAM,KAAK,SAAS;AAC3C,QAAI,SAAS,sBAAsB;AACjC,eAAS,qBAAqB,QAAQ,SAAS;AAAA;AAEjD,QAAI,SAAS,kBAAkB;AAC7B,eAAS,iBAAiB,QAAQ,SAAS;AAAA;AAAA;AAG/C,iCAA+B,UAAU,UAAU;AACjD,QAAI,SAAS,QAAQ;AACnB,eAAS,OAAO,QAAQ,SAAS;AAAA;AAEnC,QAAI,SAAS,SAAS;AACpB,eAAS,QAAQ,QAAQ,SAAS;AAClC,eAAS,UAAU,QAAQ,SAAS;AACpC,UAAI,SAAS,SAAS;AACpB,iBAAS,UAAU,SAAS;AAAA;AAEhC,QAAI,SAAS,WAAW;AACtB,eAAS,UAAU,QAAQ,SAAS;AACpC,eAAS,YAAY,MAAM,KAAK,SAAS;AACzC,UAAI,SAAS,SAAS;AACpB,iBAAS,YAAY,MAAM;AAAA;AAE/B,QAAI,SAAS,iBAAiB;AAC5B,eAAS,gBAAgB,QAAQ,SAAS;AAC1C,eAAS,kBAAkB,QAAQ,SAAS;AAC5C,eAAS,iBAAiB,QAAQ,SAAS;AAAA;AAAA;AAG/C,gCAA8B,UAAU,UAAU;AAChD,QAAI,SAAS,iBAAiB;AAC5B,eAAS,gBAAgB,QAAQ,SAAS;AAC1C,eAAS,kBAAkB,QAAQ,SAAS;AAC5C,eAAS,iBAAiB,QAAQ,SAAS;AAAA;AAAA;AAG/C,mCAAiC,UAAU,UAAU;AACnD,QAAI,SAAS,iBAAiB;AAC5B,eAAS,gBAAgB,QAAQ,SAAS;AAC1C,eAAS,kBAAkB,QAAQ,SAAS;AAC5C,eAAS,iBAAiB,QAAQ,SAAS;AAAA;AAE7C,aAAS,kBAAkB,MAAM,KAAK,SAAS;AAC/C,aAAS,aAAa,QAAQ,SAAS;AACvC,aAAS,YAAY,QAAQ,SAAS;AAAA;AAExC,iCAA+B,UAAU,UAAU;AACjD,QAAI,SAAS,SAAS;AACpB,eAAS,QAAQ,QAAQ,SAAS;AAClC,eAAS,UAAU,QAAQ,SAAS;AACpC,UAAI,SAAS,SAAS;AACpB,iBAAS,UAAU,SAAS;AAAA;AAEhC,QAAI,SAAS,WAAW;AACtB,eAAS,UAAU,QAAQ,SAAS;AACpC,eAAS,YAAY,MAAM,KAAK,SAAS;AACzC,UAAI,SAAS,SAAS;AACpB,iBAAS,YAAY,MAAM;AAAA;AAE/B,QAAI,SAAS,iBAAiB;AAC5B,eAAS,gBAAgB,QAAQ,SAAS;AAC1C,eAAS,kBAAkB,QAAQ,SAAS;AAC5C,eAAS,iBAAiB,QAAQ,SAAS;AAAA;AAAA;AAG/C,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA;AAGJ,+BAA+B;AAC7B,QAAM,SAAS,gBAAgB;AAC/B,SAAO,MAAM,UAAU;AACvB,SAAO;AAAA;AAET,uBAAuB,aAAa,IAAI;AACtC,QAAM,YAAW,WAAW,WAAW,SAAS,WAAW,SAAS,uBAAuB,aAAY,WAAW,YAAY,SAAS,WAAW,UAAU,MAAM,SAAS,WAAW,UAAU,SAAS,WAAW,QAAQ,OAAO,SAAS,WAAW,UAAU,SAAS,WAAW,QAAQ,MAAM,WAAW,WAAW,YAAY,SAAS,WAAW,UAAU,MAAM,aAAa,WAAW,cAAc,SAAS,WAAW,YAAY,OAAO,sBAAsB,WAAW,uBAAuB,SAAS,WAAW,qBAAqB,MAAM,yBAAyB,WAAW,0BAA0B,SAAS,WAAW,wBAAwB,OAAO,mBAAmB,WAAW,oBAAoB,SAAS,WAAW,kBAAkB,WAAW,gCAAgC,WAAW,iCAAiC,SAAS,WAAW,+BAA+B;AACh3B,MAAI,oBAAoB;AACxB,MAAI,qBAAqB;AACzB,QAAM,kBAAkB;AACxB,QAAM,mBAAmB;AACzB,OAAK,aAAa;AAClB,OAAK,QAAQ;AAAA,IACX,mBAAmB;AAAA;AAErB,OAAK,YAAY;AACjB,OAAK,iBAAiB;AACtB,OAAK,iBAAiB;AACtB,OAAK,mBAAmB;AACxB,OAAK,cAAc;AACnB,OAAK,iBAAiB;AACtB,OAAK,uBAAuB;AAC5B,OAAK,cAAc;AACnB,OAAK,iBAAiB;AACtB,OAAK,0BAA0B;AAC/B,OAAK,cAAc;AACnB,OAAK,sBAAsB;AAC3B,QAAM,QAAQ;AACd,MAAI,iBAAiB;AACrB,MAAI,yBAAyB;AAC7B,MAAI,4BAA4B;AAChC,MAAI,uBAAuB;AAC3B,MAAI,qBAAqB;AACzB,MAAI,iBAAiB;AACrB,QAAM,mBAAmB,IAAI;AAC7B,QAAM,kBAAkB,IAAI;AAC5B,MAAI,sBAAsB;AAC1B,MAAI,SAAS,UAAS;AACtB,MAAI,UAAU,UAAS;AACvB,MAAI,cAAc;AAClB,MAAI,cAAc;AAClB,MAAI,mBAAmB;AACvB,QAAM,YAAY,IAAI,QAAQ,GAAG,GAAG,QAAQ;AAC5C,QAAM,WAAW,IAAI,QAAQ,GAAG,GAAG,QAAQ;AAC3C,MAAI,eAAe;AACnB,QAAM,sBAAsB;AAC5B,QAAM,WAAW,IAAI;AACrB,MAAI,mBAAmB;AACvB,MAAI,wBAAwB;AAC5B,MAAI,4BAA4B;AAChC,QAAM,sBAAqB,IAAI;AAC/B,QAAM,WAAW,IAAI;AACrB,QAAM,cAAc,EAAC,YAAY,MAAM,KAAK,MAAM,aAAa,MAAM,kBAAkB,MAAM,SAAS;AACtG,iCAA+B;AAC7B,WAAO,yBAAyB,OAAO,cAAc;AAAA;AAEvD,MAAI,MAAM;AACV,sBAAoB,cAAc,mBAAmB;AACnD,aAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC5C,YAAM,cAAc,aAAa;AACjC,YAAM,UAAU,UAAS,WAAW,aAAa;AACjD,UAAI,YAAY;AACd,eAAO;AAAA;AAEX,WAAO;AAAA;AAET,MAAI;AACF,UAAM,oBAAoB;AAAA,MACxB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,uBAAuB;AAAA,MACvB,iBAAiB;AAAA,MACjB,8BAA8B;AAAA;AAEhC,QAAI,kBAAkB;AACpB,gBAAS,aAAa,eAAe,aAAa;AACpD,cAAS,iBAAiB,oBAAoB,eAAe;AAC7D,cAAS,iBAAiB,wBAAwB,kBAAkB;AACpE,QAAI,QAAQ,MAAM;AAChB,YAAM,eAAe,CAAC,UAAU,SAAS;AACzC,UAAI,MAAM,qBAAqB,MAAM;AACnC,qBAAa;AAAA;AAEf,YAAM,WAAW,cAAc;AAC/B,UAAI,QAAQ,MAAM;AAChB,YAAI,WAAW,eAAe;AAC5B,gBAAM,IAAI,MAAM;AAAA,eACX;AACL,gBAAM,IAAI,MAAM;AAAA;AAAA;AAAA;AAItB,QAAI,IAAI,6BAA6B,QAAQ;AAC3C,UAAI,2BAA2B,WAAW;AACxC,eAAO,EAAC,UAAU,GAAG,UAAU,GAAG,WAAW;AAAA;AAAA;AAAA,WAG1C,OAAP;AACA,YAAQ,MAAM,0BAA0B,MAAM;AAC9C,UAAM;AAAA;AAER,MAAI,YAAY,cAAc,OAAO;AACrC,MAAI,YAAY,UAAU,UAAU,YAAY,YAAY,YAAY;AACxE,MAAI,cAAc,WAAW,aAAa,cAAc,UAAU;AAClE,MAAI,YAAY,cAAc,gBAAgB;AAC9C,MAAI,OAAO;AACX,2BAAyB;AACvB,iBAAa,IAAI,gBAAgB;AACjC,mBAAe,IAAI,kBAAkB,KAAK,YAAY;AACtD,eAAW,KAAK;AAChB,YAAQ,IAAI,WAAW,KAAK,YAAY;AACxC,YAAQ,IAAI,WAAW,KAAK,YAAY;AACxC,wBAAoB,KAAK;AACzB,WAAO,IAAI,UAAU;AACrB,iBAAa,IAAI;AACjB,eAAW,IAAI,cAAc,KAAK,YAAY,OAAO,YAAY,cAAc,OAAO;AACtF,eAAW,IAAI,cAAc;AAC7B,iBAAa,IAAI,gBAAgB;AACjC,iBAAa,IAAI,gBAAgB,KAAK;AACtC,oBAAgB,IAAI,mBAAmB,KAAK,YAAY,YAAY;AACpE,iBAAa,IAAI,gBAAgB,KAAK,YAAY,MAAM;AACxD,cAAU,IAAI,aAAa,KAAK,YAAY,YAAY;AACxD,mBAAe,IAAI,kBAAkB,KAAK,cAAc;AACxD,eAAW,IAAI,cAAc;AAC7B,mBAAe,IAAI,cAAc,OAAO,UAAU,YAAY,YAAY,cAAc,eAAe;AACvG,gBAAY,IAAI,eAAe;AAC/B,kBAAc,IAAI,iBAAiB;AACnC,mBAAe,IAAI,kBAAkB,YAAY;AACjD,iBAAa,IAAI,gBAAgB,OAAO,UAAU,OAAO,SAAS;AAClE,gBAAY,IAAI,eAAe,OAAO,SAAS;AAC/C,qBAAiB,IAAI,oBAAoB,KAAK,YAAY,MAAM;AAChE,4BAAwB,IAAI,2BAA2B,KAAK,YAAY,MAAM;AAC9E,SAAK,WAAW,aAAa;AAC7B,UAAM,eAAe;AACrB,UAAM,aAAa;AACnB,UAAM,aAAa;AACnB,UAAM,cAAc;AACpB,UAAM,YAAY;AAClB,UAAM,QAAQ;AACd,UAAM,OAAO;AAAA;AAEf;AACA,QAAM,MAAK,IAAI,aAAa,OAAO;AACnC,OAAK,KAAK;AACV,OAAK,aAAa,WAAW;AAC3B,WAAO;AAAA;AAET,OAAK,uBAAuB,WAAW;AACrC,WAAO,IAAI;AAAA;AAEb,OAAK,mBAAmB,WAAW;AACjC,UAAM,YAAY,WAAW,IAAI;AACjC,QAAI;AACF,gBAAU;AAAA;AAEd,OAAK,sBAAsB,WAAW;AACpC,UAAM,YAAY,WAAW,IAAI;AACjC,QAAI;AACF,gBAAU;AAAA;AAEd,OAAK,gBAAgB,WAAW;AAC9B,WAAO;AAAA;AAET,OAAK,gBAAgB,SAAS,OAAO;AACnC,QAAI,UAAU;AACZ;AACF,kBAAc;AACd,SAAK,QAAQ,QAAQ,SAAS;AAAA;AAEhC,OAAK,UAAU,SAAS,QAAQ;AAC9B,WAAO,OAAO,IAAI,QAAQ;AAAA;AAE5B,OAAK,UAAU,SAAS,OAAO,QAAQ,aAAa;AAClD,QAAI,IAAG,cAAc;AACnB,cAAQ,KAAK;AACb;AAAA;AAEF,aAAS;AACT,cAAU;AACV,cAAS,QAAQ,KAAK,MAAM,QAAQ;AACpC,cAAS,SAAS,KAAK,MAAM,SAAS;AACtC,QAAI,gBAAgB,OAAO;AACzB,gBAAS,MAAM,QAAQ,QAAQ;AAC/B,gBAAS,MAAM,SAAS,SAAS;AAAA;AAEnC,SAAK,YAAY,GAAG,GAAG,OAAO;AAAA;AAEhC,OAAK,uBAAuB,SAAS,QAAQ;AAC3C,WAAO,OAAO,IAAI,SAAS,aAAa,UAAU,aAAa;AAAA;AAEjE,OAAK,uBAAuB,SAAS,OAAO,QAAQ,YAAY;AAC9D,aAAS;AACT,cAAU;AACV,kBAAc;AACd,cAAS,QAAQ,KAAK,MAAM,QAAQ;AACpC,cAAS,SAAS,KAAK,MAAM,SAAS;AACtC,SAAK,YAAY,GAAG,GAAG,OAAO;AAAA;AAEhC,OAAK,qBAAqB,SAAS,QAAQ;AACzC,WAAO,OAAO,KAAK;AAAA;AAErB,OAAK,cAAc,SAAS,QAAQ;AAClC,WAAO,OAAO,KAAK;AAAA;AAErB,OAAK,cAAc,SAAS,IAAG,GAAG,OAAO,QAAQ;AAC/C,QAAI,GAAE,WAAW;AACf,gBAAU,IAAI,GAAE,GAAG,GAAE,GAAG,GAAE,GAAG,GAAE;AAAA,WAC1B;AACL,gBAAU,IAAI,IAAG,GAAG,OAAO;AAAA;AAE7B,UAAM,SAAS,iBAAiB,KAAK,WAAW,eAAe,aAAa;AAAA;AAE9E,OAAK,aAAa,SAAS,QAAQ;AACjC,WAAO,OAAO,KAAK;AAAA;AAErB,OAAK,aAAa,SAAS,IAAG,GAAG,OAAO,QAAQ;AAC9C,QAAI,GAAE,WAAW;AACf,eAAS,IAAI,GAAE,GAAG,GAAE,GAAG,GAAE,GAAG,GAAE;AAAA,WACzB;AACL,eAAS,IAAI,IAAG,GAAG,OAAO;AAAA;AAE5B,UAAM,QAAQ,gBAAgB,KAAK,UAAU,eAAe,aAAa;AAAA;AAE3E,OAAK,iBAAiB,WAAW;AAC/B,WAAO;AAAA;AAET,OAAK,iBAAiB,SAAS,SAAS;AACtC,UAAM,eAAe,eAAe;AAAA;AAEtC,OAAK,gBAAgB,SAAS,QAAQ;AACpC,kBAAc;AAAA;AAEhB,OAAK,qBAAqB,SAAS,QAAQ;AACzC,uBAAmB;AAAA;AAErB,OAAK,gBAAgB,SAAS,QAAQ;AACpC,WAAO,OAAO,KAAK,WAAW;AAAA;AAEhC,OAAK,gBAAgB,WAAW;AAC9B,eAAW,cAAc,MAAM,YAAY;AAAA;AAE7C,OAAK,gBAAgB,WAAW;AAC9B,WAAO,WAAW;AAAA;AAEpB,OAAK,gBAAgB,WAAW;AAC9B,eAAW,cAAc,MAAM,YAAY;AAAA;AAE7C,OAAK,QAAQ,SAAS,OAAO,OAAO,SAAS;AAC3C,QAAI,OAAO;AACX,QAAI,UAAU,UAAU;AACtB,cAAQ;AACV,QAAI,UAAU,UAAU;AACtB,cAAQ;AACV,QAAI,YAAY,UAAU;AACxB,cAAQ;AACV,QAAI,MAAM;AAAA;AAEZ,OAAK,aAAa,WAAW;AAC3B,SAAK,MAAM,MAAM,OAAO;AAAA;AAE1B,OAAK,aAAa,WAAW;AAC3B,SAAK,MAAM,OAAO,MAAM;AAAA;AAE1B,OAAK,eAAe,WAAW;AAC7B,SAAK,MAAM,OAAO,OAAO;AAAA;AAE3B,OAAK,UAAU,WAAW;AACxB,cAAS,oBAAoB,oBAAoB,eAAe;AAChE,cAAS,oBAAoB,wBAAwB,kBAAkB;AACvE,gBAAY;AACZ,iBAAa;AACb,eAAW;AACX,aAAS;AACT,eAAW;AACX,YAAQ;AACR,kBAAc;AACd,QAAG;AACH,QAAG,oBAAoB,gBAAgB;AACvC,QAAG,oBAAoB,cAAc;AACrC,QAAI,2BAA2B;AAC7B,gCAA0B;AAC1B,kCAA4B;AAAA;AAE9B,cAAU;AAAA;AAEZ,yBAAuB,OAAO;AAC5B,UAAM;AACN,YAAQ,IAAI;AACZ,qBAAiB;AAAA;AAEnB,8BAA4B;AAC1B,YAAQ,IAAI;AACZ,qBAAiB;AACjB,UAAM,gBAAgB,KAAK;AAC3B,UAAM,mBAAmB,UAAU;AACnC,UAAM,sBAAsB,UAAU;AACtC,UAAM,uBAAuB,UAAU;AACvC,UAAM,gBAAgB,UAAU;AAChC;AACA,SAAK,YAAY;AACjB,cAAU,UAAU;AACpB,cAAU,aAAa;AACvB,cAAU,cAAc;AACxB,cAAU,OAAO;AAAA;AAEnB,6BAA2B,OAAO;AAChC,UAAM,WAAW,MAAM;AACvB,aAAS,oBAAoB,WAAW;AACxC,uBAAmB;AAAA;AAErB,8BAA4B,UAAU;AACpC,qCAAiC;AACjC,eAAW,OAAO;AAAA;AAEpB,4CAA0C,UAAU;AAClD,UAAM,WAAW,WAAW,IAAI,UAAU;AAC1C,QAAI,aAAa,QAAQ;AACvB,eAAS,QAAQ,SAAS,SAAS;AACjC,qBAAa,eAAe;AAAA;AAAA;AAAA;AAIlC,OAAK,qBAAqB,SAAS,QAAQ,OAAO,UAAU,UAAU,SAAQ,OAAO;AACnF,QAAI,UAAU;AACZ,cAAQ;AACV,UAAM,cAAc,QAAO,UAAU,QAAO,YAAY,gBAAgB;AACxE,UAAM,UAAU,WAAW,QAAQ,OAAO,UAAU,UAAU;AAC9D,UAAM,YAAY,UAAU;AAC5B,QAAI,SAAQ,SAAS;AACrB,UAAM,WAAW,SAAS,WAAW;AACrC,QAAI,WAAU,MAAM;AAClB,UAAI,aAAa,UAAU,SAAS,UAAU;AAC5C;AAAA,eACO,OAAM,UAAU,GAAG;AAC5B;AAAA;AAEF,QAAI,cAAc;AAClB,QAAI,SAAS,cAAc,MAAM;AAC/B,eAAQ,WAAW,sBAAsB;AACzC,oBAAc;AAAA;AAEhB,kBAAc,MAAM,SAAQ,UAAU,SAAS,UAAU;AACzD,QAAI;AACJ,QAAI,WAAW;AACf,QAAI,WAAU,MAAM;AAClB,kBAAY,WAAW,IAAI;AAC3B,iBAAW;AACX,eAAS,SAAS;AAAA;AAEpB,UAAM,YAAY,WAAU,OAAO,OAAM,QAAQ,SAAS;AAC1D,UAAM,aAAa,SAAS,UAAU,QAAQ;AAC9C,UAAM,aAAa,SAAS,UAAU,QAAQ;AAC9C,UAAM,aAAa,UAAU,OAAO,MAAM,QAAQ,cAAc;AAChE,UAAM,aAAa,UAAU,OAAO,MAAM,QAAQ,cAAc;AAChE,UAAM,YAAY,KAAK,IAAI,YAAY;AACvC,UAAM,UAAU,KAAK,IAAI,WAAW,aAAa,YAAY,aAAa,cAAc;AACxF,UAAM,YAAY,KAAK,IAAI,GAAG,UAAU,YAAY;AACpD,QAAI,cAAc;AAChB;AACF,QAAI,QAAO,QAAQ;AACjB,UAAI,SAAS,cAAc,MAAM;AAC/B,cAAM,aAAa,SAAS,qBAAqB;AACjD,iBAAS,QAAQ;AAAA,aACZ;AACL,iBAAS,QAAQ;AAAA;AAAA,eAEV,QAAO,QAAQ;AACxB,UAAI,YAAY,SAAS;AACzB,UAAI,cAAc;AAChB,oBAAY;AACd,YAAM,aAAa,YAAY;AAC/B,UAAI,QAAO,gBAAgB;AACzB,iBAAS,QAAQ;AAAA,iBACR,QAAO,YAAY;AAC5B,iBAAS,QAAQ;AAAA,aACZ;AACL,iBAAS,QAAQ;AAAA;AAAA,eAEV,QAAO,UAAU;AAC1B,eAAS,QAAQ;AAAA,eACR,QAAO,UAAU;AAC1B,eAAS,QAAQ;AAAA;AAEnB,QAAI,QAAO,iBAAiB;AAC1B,eAAS,gBAAgB,WAAW,WAAW,QAAO;AAAA,eAC7C,SAAS,2BAA2B;AAC7C,YAAM,gBAAgB,KAAK,IAAI,SAAS,eAAe,SAAS;AAChE,eAAS,gBAAgB,WAAW,WAAW;AAAA,WAC1C;AACL,eAAS,OAAO,WAAW;AAAA;AAAA;AAG/B,OAAK,UAAU,SAAS,OAAO,QAAQ;AACrC,yBAAqB,aAAa,IAAI;AACtC,uBAAmB;AACnB,qBAAiB,KAAK;AACtB,UAAM,gBAAgB,SAAS,SAAQ;AACrC,UAAI,QAAO,WAAW,QAAO,OAAO,KAAK,OAAO,SAAS;AACvD,2BAAmB,UAAU;AAC7B,YAAI,QAAO,YAAY;AACrB,6BAAmB,WAAW;AAAA;AAAA;AAAA;AAIpC,uBAAmB,YAAY,MAAM;AACrC,UAAM,SAAS,SAAS,SAAQ;AAC9B,YAAM,WAAW,QAAO;AACxB,UAAI,UAAU;AACZ,YAAI,MAAM,QAAQ,WAAW;AAC3B,mBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,kBAAM,YAAY,SAAS;AAC3B,uBAAW,WAAW,OAAO;AAAA;AAAA,eAE1B;AACL,qBAAW,UAAU,OAAO;AAAA;AAAA;AAAA;AAIlC,qBAAiB;AACjB,yBAAqB;AAAA;AAEvB,MAAI,2BAA2B;AAC/B,4BAA0B,MAAM;AAC9B,QAAI;AACF,+BAAyB;AAAA;AAE7B,8BAA4B;AAC1B,cAAU;AAAA;AAEZ,4BAA0B;AACxB,cAAU;AAAA;AAEZ,QAAM,YAAY,IAAI;AACtB,YAAU,iBAAiB;AAC3B,MAAI,OAAO,WAAW;AACpB,cAAU,WAAW;AACvB,OAAK,mBAAmB,SAAS,UAAU;AACzC,+BAA2B;AAC3B,QAAG,iBAAiB;AACpB,iBAAa,OAAO,UAAU,SAAS,UAAU;AAAA;AAEnD,MAAG,iBAAiB,gBAAgB;AACpC,MAAG,iBAAiB,cAAc;AAClC,OAAK,SAAS,SAAS,OAAO,QAAQ;AACpC,QAAI,WAAW,UAAU,OAAO,aAAa,MAAM;AACjD,cAAQ,MAAM;AACd;AAAA;AAEF,QAAI,mBAAmB;AACrB;AACF,QAAI,MAAM,eAAe;AACvB,YAAM;AACR,QAAI,OAAO,WAAW;AACpB,aAAO;AACT,QAAI,IAAG,YAAY,QAAQ,IAAG,iBAAiB,MAAM;AACnD,UAAI,IAAG,qBAAqB;AAC1B,YAAG,aAAa;AAClB,eAAS,IAAG;AAAA;AAEd,QAAI,MAAM,YAAY;AACpB,YAAM,eAAe,OAAO,OAAO,QAAQ;AAC7C,yBAAqB,aAAa,IAAI,OAAO,iBAAiB;AAC9D,uBAAmB;AACnB,qBAAiB,KAAK;AACtB,wBAAmB,iBAAiB,OAAO,kBAAkB,OAAO;AACpE,aAAS,wBAAwB;AACjC,4BAAwB,KAAK;AAC7B,uBAAmB,SAAS,KAAK,KAAK,gBAAgB,uBAAuB;AAC7E,wBAAoB,YAAY,IAAI,OAAO,gBAAgB;AAC3D,sBAAkB;AAClB,oBAAgB,KAAK;AACrB,kBAAc,OAAO,QAAQ,GAAG,MAAM;AACtC,sBAAkB;AAClB,QAAI,MAAM,gBAAgB,MAAM;AAC9B,wBAAkB,KAAK,aAAa;AAAA;AAEtC,QAAI,qBAAqB;AACvB,eAAS;AACX,UAAM,eAAe,mBAAmB,MAAM;AAC9C,cAAU,OAAO,cAAc,OAAO;AACtC,QAAI,qBAAqB;AACvB,eAAS;AACX,QAAI,KAAK,KAAK,cAAc;AAC1B,WAAK,KAAK;AACZ,eAAW,OAAO,mBAAmB;AACrC,uBAAmB,YAAY,MAAM;AACrC,QAAI,OAAO,eAAe;AACxB,YAAM,UAAU,OAAO;AACvB,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAAI,GAAG,KAAK;AAC9C,cAAM,UAAU,QAAQ;AACxB,oBAAY,mBAAmB,OAAO,SAAS,QAAQ;AAAA;AAAA,WAEpD;AACL,kBAAY,mBAAmB,OAAO;AAAA;AAExC,QAAI,yBAAyB,MAAM;AACjC,eAAS,8BAA8B;AACvC,eAAS,yBAAyB;AAAA;AAEpC,QAAI,MAAM,YAAY;AACpB,YAAM,cAAc,OAAO,OAAO;AACpC,UAAM,QAAQ,MAAM,QAAQ;AAC5B,UAAM,QAAQ,MAAM,QAAQ;AAC5B,UAAM,QAAQ,MAAM,QAAQ;AAC5B,UAAM,iBAAiB;AACvB,kBAAc;AACd,yBAAqB;AACrB,qBAAiB;AACjB,qBAAiB;AACjB,QAAI,iBAAiB,SAAS,GAAG;AAC/B,2BAAqB,iBAAiB,iBAAiB,SAAS;AAAA,WAC3D;AACL,2BAAqB;AAAA;AAEvB,oBAAgB;AAChB,QAAI,gBAAgB,SAAS,GAAG;AAC9B,0BAAoB,gBAAgB,gBAAgB,SAAS;AAAA,WACxD;AACL,0BAAoB;AAAA;AAAA;AAGxB,yBAAuB,SAAQ,QAAQ,YAAY,aAAa;AAC9D,QAAI,QAAO,YAAY;AACrB;AACF,UAAM,UAAU,QAAO,OAAO,KAAK,OAAO;AAC1C,QAAI,SAAS;AACX,UAAI,QAAO,SAAS;AAClB,qBAAa,QAAO;AAAA,iBACX,QAAO,OAAO;AACvB,YAAI,QAAO,eAAe;AACxB,kBAAO,OAAO;AAAA,iBACP,QAAO,SAAS;AACzB,2BAAmB,UAAU;AAC7B,YAAI,QAAO,YAAY;AACrB,6BAAmB,WAAW;AAAA;AAAA,iBAEvB,QAAO,UAAU;AAC1B,YAAI,CAAC,QAAO,iBAAiB,SAAS,iBAAiB,UAAS;AAC9D,cAAI,aAAa;AACf,qBAAS,sBAAsB,QAAO,aAAa,aAAa;AAAA;AAElE,gBAAM,WAAW,QAAQ,OAAO;AAChC,gBAAM,WAAW,QAAO;AACxB,cAAI,SAAS,SAAS;AACpB,8BAAkB,KAAK,SAAQ,UAAU,UAAU,YAAY,SAAS,GAAG;AAAA;AAAA;AAAA,iBAGtE,QAAO,UAAU,QAAO,UAAU,QAAO,UAAU;AAC5D,YAAI,QAAO,eAAe;AACxB,cAAI,QAAO,SAAS,UAAU,KAAK,OAAO,OAAO;AAC/C,oBAAO,SAAS;AAChB,oBAAO,SAAS,QAAQ,KAAK,OAAO;AAAA;AAAA;AAGxC,YAAI,CAAC,QAAO,iBAAiB,SAAS,iBAAiB,UAAS;AAC9D,cAAI,aAAa;AACf,qBAAS,sBAAsB,QAAO,aAAa,aAAa;AAAA;AAElE,gBAAM,WAAW,QAAQ,OAAO;AAChC,gBAAM,WAAW,QAAO;AACxB,cAAI,MAAM,QAAQ,WAAW;AAC3B,kBAAM,SAAS,SAAS;AACxB,qBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC7C,oBAAM,QAAQ,OAAO;AACrB,oBAAM,gBAAgB,SAAS,MAAM;AACrC,kBAAI,iBAAiB,cAAc,SAAS;AAC1C,kCAAkB,KAAK,SAAQ,UAAU,eAAe,YAAY,SAAS,GAAG;AAAA;AAAA;AAAA,qBAG3E,SAAS,SAAS;AAC3B,8BAAkB,KAAK,SAAQ,UAAU,UAAU,YAAY,SAAS,GAAG;AAAA;AAAA;AAAA;AAAA;AAKnF,UAAM,WAAW,QAAO;AACxB,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC/C,oBAAc,SAAS,IAAI,QAAQ,YAAY;AAAA;AAAA;AAGnD,uBAAqB,oBAAoB,OAAO,QAAQ,WAAU;AAChE,UAAM,gBAAgB,mBAAmB;AACzC,UAAM,sBAAsB,mBAAmB;AAC/C,UAAM,qBAAqB,mBAAmB;AAC9C,uBAAmB,gBAAgB;AACnC,QAAI,oBAAoB,SAAS;AAC/B,6BAAuB,eAAe,OAAO;AAC/C,QAAI;AACF,YAAM,SAAS,iBAAiB,KAAK;AACvC,QAAI,cAAc,SAAS;AACzB,oBAAc,eAAe,OAAO;AACtC,QAAI,oBAAoB,SAAS;AAC/B,oBAAc,qBAAqB,OAAO;AAC5C,QAAI,mBAAmB,SAAS;AAC9B,oBAAc,oBAAoB,OAAO;AAAA;AAE7C,kCAAgC,eAAe,OAAO,QAAQ;AAC5D,QAAI,8BAA8B,MAAM;AACtC,YAAM,iBAAiB,eAAe,QAAQ,aAAa,aAAa;AACxE,YAAM,mBAAmB,iBAAiB,+BAA+B;AACzE,kCAA4B,IAAI,iBAAiB,MAAM,MAAM;AAAA,QAC3D,iBAAiB;AAAA,QACjB,MAAM,MAAM,QAAQ,mBAAmB,OAAO,gBAAgB;AAAA,QAC9D,WAAW;AAAA,QACX,WAAW;AAAA,QACX,OAAO;AAAA,QACP,OAAO;AAAA,QACP,oBAAoB,WAAW,IAAI;AAAA;AAAA;AAGvC,UAAM,sBAAsB,MAAM;AAClC,UAAM,gBAAgB;AACtB,UAAM;AACN,UAAM,qBAAqB,MAAM;AACjC,UAAM,cAAc;AACpB,kBAAc,eAAe,OAAO;AACpC,UAAM,cAAc;AACpB,aAAS,8BAA8B;AACvC,aAAS,yBAAyB;AAClC,UAAM,gBAAgB;AAAA;AAExB,yBAAuB,YAAY,OAAO,QAAQ;AAChD,UAAM,mBAAmB,MAAM,YAAY,OAAO,MAAM,mBAAmB;AAC3E,aAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,IAAI,GAAG,KAAK;AACjD,YAAM,aAAa,WAAW;AAC9B,YAAM,UAAS,WAAW;AAC1B,YAAM,WAAW,WAAW;AAC5B,YAAM,WAAW,qBAAqB,OAAO,WAAW,WAAW;AACnE,YAAM,QAAQ,WAAW;AACzB,UAAI,QAAO,OAAO,KAAK,OAAO,SAAS;AACrC,qBAAa,SAAQ,OAAO,QAAQ,UAAU,UAAU;AAAA;AAAA;AAAA;AAI9D,wBAAsB,SAAQ,OAAO,QAAQ,UAAU,UAAU,OAAO;AACtE,YAAO,eAAe,OAAO,OAAO,QAAQ,UAAU,UAAU;AAChE,YAAO,gBAAgB,iBAAiB,OAAO,oBAAoB,QAAO;AAC1E,YAAO,aAAa,gBAAgB,QAAO;AAC3C,aAAS,eAAe,OAAO,OAAO,QAAQ,UAAU,SAAQ;AAChE,QAAI,SAAS,gBAAgB,QAAQ,SAAS,SAAS,YAAY;AACjE,eAAS,OAAO;AAChB,eAAS,cAAc;AACvB,YAAM,mBAAmB,QAAQ,OAAO,UAAU,UAAU,SAAQ;AACpE,eAAS,OAAO;AAChB,eAAS,cAAc;AACvB,YAAM,mBAAmB,QAAQ,OAAO,UAAU,UAAU,SAAQ;AACpE,eAAS,OAAO;AAAA,WACX;AACL,YAAM,mBAAmB,QAAQ,OAAO,UAAU,UAAU,SAAQ;AAAA;AAEtE,YAAO,cAAc,OAAO,OAAO,QAAQ,UAAU,UAAU;AAAA;AAEjE,sBAAoB,UAAU,OAAO,SAAQ;AAC3C,QAAI,MAAM,YAAY;AACpB,cAAQ;AACV,UAAM,qBAAqB,WAAW,IAAI;AAC1C,UAAM,SAAS,mBAAmB,MAAM;AACxC,UAAM,eAAe,mBAAmB,MAAM;AAC9C,UAAM,qBAAqB,OAAO,MAAM;AACxC,UAAM,cAAc,aAAa,cAAc,UAAU,OAAO,OAAO,cAAc,OAAO;AAC5F,UAAM,kBAAkB,aAAa,mBAAmB;AACxD,QAAI,WAAW,mBAAmB;AAClC,uBAAmB,cAAc,SAAS,yBAAyB,MAAM,cAAc;AACvF,uBAAmB,MAAM,MAAM;AAC/B,uBAAmB,SAAU,UAAS,yBAAyB,aAAa,UAAU,IAAI,SAAS,UAAU,mBAAmB;AAChI,QAAI,aAAa,QAAQ;AACvB,eAAS,iBAAiB,WAAW;AACrC,iBAAW,IAAI;AACf,yBAAmB,WAAW;AAAA;AAEhC,QAAI,UAAU,SAAS,IAAI;AAC3B,QAAI,YAAY,QAAQ;AACtB,UAAI,mBAAmB,mBAAmB,WAAW,mBAAmB,uBAAuB,oBAAoB;AACjH,uCAA+B,UAAU;AACzC,eAAO;AAAA;AAAA,WAEJ;AACL,kBAAY,WAAW,aAAa,YAAY;AAChD,eAAS,QAAQ,SAAQ,aAAa;AACtC,eAAS,gBAAgB,aAAa;AACtC,gBAAU,aAAa,eAAe,aAAa;AACnD,eAAS,IAAI,iBAAiB;AAC9B,yBAAmB,WAAW,YAAY;AAAA;AAE5C,UAAM,WAAW,mBAAmB;AACpC,QAAI,CAAC,SAAS,oBAAoB,CAAC,SAAS,uBAAuB,SAAS,aAAa,MAAM;AAC7F,eAAS,iBAAiB,SAAS;AAAA;AAErC,mCAA+B,UAAU;AACzC,uBAAmB,cAAc,oBAAoB;AACrD,uBAAmB,qBAAqB;AACxC,QAAI,mBAAmB,aAAa;AAClC,eAAS,kBAAkB,QAAQ,OAAO,MAAM;AAChD,eAAS,WAAW,QAAQ,OAAO,MAAM;AACzC,eAAS,kBAAkB,QAAQ,OAAO,MAAM;AAChD,eAAS,wBAAwB,QAAQ,OAAO,MAAM;AACtD,eAAS,WAAW,QAAQ,OAAO,MAAM;AACzC,eAAS,iBAAiB,QAAQ,OAAO,MAAM;AAC/C,eAAS,eAAe,QAAQ,OAAO,MAAM;AAC7C,eAAS,MAAM,QAAQ,OAAO,MAAM;AACpC,eAAS,MAAM,QAAQ,OAAO,MAAM;AACpC,eAAS,YAAY,QAAQ,OAAO,MAAM;AAC1C,eAAS,kBAAkB,QAAQ,OAAO,MAAM;AAChD,eAAS,iBAAiB,QAAQ,OAAO,MAAM;AAC/C,eAAS,qBAAqB,QAAQ,OAAO,MAAM;AACnD,eAAS,wBAAwB,QAAQ,OAAO,MAAM;AACtD,eAAS,cAAc,QAAQ,OAAO,MAAM;AAC5C,eAAS,iBAAiB,QAAQ,OAAO,MAAM;AAC/C,eAAS,eAAe,QAAQ,OAAO,MAAM;AAC7C,eAAS,kBAAkB,QAAQ,OAAO,MAAM;AAAA;AAElD,UAAM,eAAe,QAAQ;AAC7B,UAAM,eAAe,cAAc,aAAa,aAAa,KAAK;AAClE,uBAAmB,iBAAiB;AACpC,uBAAmB,eAAe;AAClC,WAAO;AAAA;AAET,0CAAwC,UAAU,aAAa;AAC7D,UAAM,qBAAqB,WAAW,IAAI;AAC1C,uBAAmB,iBAAiB,YAAY;AAChD,uBAAmB,aAAa,YAAY;AAC5C,uBAAmB,WAAW,YAAY;AAC1C,uBAAmB,eAAe,YAAY;AAC9C,uBAAmB,eAAe,YAAY;AAC9C,uBAAmB,oBAAoB,YAAY;AACnD,uBAAmB,oBAAoB,YAAY;AACnD,uBAAmB,kBAAkB,YAAY;AACjD,uBAAmB,eAAe,YAAY;AAC9C,uBAAmB,iBAAiB,YAAY;AAAA;AAElD,sBAAoB,QAAQ,OAAO,UAAU,UAAU,SAAQ;AAC7D,QAAI,MAAM,YAAY;AACpB,cAAQ;AACV,aAAS;AACT,UAAM,MAAM,MAAM;AAClB,UAAM,cAAc,SAAS,yBAAyB,MAAM,cAAc;AAC1E,UAAM,WAAW,yBAAyB,OAAO,MAAM,iBAAiB,qBAAqB,QAAQ;AACrG,UAAM,SAAU,UAAS,yBAAyB,aAAa,UAAU,IAAI,SAAS,UAAU;AAChG,UAAM,eAAe,SAAS,iBAAiB,QAAQ,CAAC,CAAC,SAAS,WAAW,SAAS,SAAS,WAAW,MAAM,aAAa;AAC7H,UAAM,iBAAiB,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,SAAS,WAAW;AACrE,UAAM,eAAe,CAAC,CAAC,SAAS,gBAAgB;AAChD,UAAM,eAAe,CAAC,CAAC,SAAS,gBAAgB;AAChD,UAAM,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,WAAW,SAAS,gBAAgB,SAAS,SAAS;AAC3G,UAAM,qBAAqB,WAAW,IAAI;AAC1C,UAAM,SAAS,mBAAmB,MAAM;AACxC,QAAI,qBAAqB,MAAM;AAC7B,UAAI,0BAA0B,QAAQ,WAAW,gBAAgB;AAC/D,cAAM,WAAW,WAAW,kBAAkB,SAAS,OAAO;AAC9D,iBAAS,SAAS,UAAU,QAAQ;AAAA;AAAA;AAGxC,QAAI,qBAAqB;AACzB,QAAI,SAAS,YAAY,mBAAmB,WAAW;AACrD,UAAI,mBAAmB,eAAe,mBAAmB,uBAAuB,OAAO,MAAM,SAAS;AACpG,6BAAqB;AAAA,iBACZ,mBAAmB,mBAAmB,UAAU;AACzD,6BAAqB;AAAA,iBACZ,QAAO,mBAAmB,mBAAmB,eAAe,OAAO;AAC5E,6BAAqB;AAAA,iBACZ,CAAC,QAAO,mBAAmB,mBAAmB,eAAe,MAAM;AAC5E,6BAAqB;AAAA,iBACZ,QAAO,iBAAiB,mBAAmB,aAAa,OAAO;AACxE,6BAAqB;AAAA,iBACZ,CAAC,QAAO,iBAAiB,mBAAmB,aAAa,MAAM;AACxE,6BAAqB;AAAA,iBACZ,mBAAmB,WAAW,QAAQ;AAC/C,6BAAqB;AAAA,iBACZ,SAAS,OAAO,mBAAmB,QAAQ,KAAK;AACzD,6BAAqB;AAAA,iBACZ,mBAAmB,sBAAsB,UAAW,oBAAmB,sBAAsB,SAAS,aAAa,mBAAmB,oBAAoB,SAAS,kBAAkB;AAC9L,6BAAqB;AAAA,iBACZ,mBAAmB,iBAAiB,cAAc;AAC3D,6BAAqB;AAAA,iBACZ,mBAAmB,mBAAmB,gBAAgB;AAC/D,6BAAqB;AAAA,iBACZ,mBAAmB,iBAAiB,cAAc;AAC3D,6BAAqB;AAAA,iBACZ,mBAAmB,iBAAiB,cAAc;AAC3D,6BAAqB;AAAA,iBACZ,aAAa,aAAa,QAAQ,mBAAmB,sBAAsB,mBAAmB;AACvG,6BAAqB;AAAA;AAAA,WAElB;AACL,2BAAqB;AACrB,yBAAmB,YAAY,SAAS;AAAA;AAE1C,QAAI,UAAU,mBAAmB;AACjC,QAAI,uBAAuB,MAAM;AAC/B,gBAAU,WAAW,UAAU,OAAO;AAAA;AAExC,QAAI,iBAAiB;AACrB,QAAI,kBAAkB;AACtB,QAAI,gBAAgB;AACpB,UAAM,aAAa,QAAQ,eAAe,aAAa,mBAAmB;AAC1E,QAAI,MAAM,WAAW,QAAQ,UAAU;AACrC,uBAAiB;AACjB,wBAAkB;AAClB,sBAAgB;AAAA;AAElB,QAAI,SAAS,OAAO,oBAAoB;AACtC,2BAAqB,SAAS;AAC9B,wBAAkB;AAAA;AAEpB,QAAI,kBAAkB,mBAAmB,QAAQ;AAC/C,iBAAW,SAAS,KAAK,oBAAoB,OAAO;AACpD,UAAI,aAAa,wBAAwB;AACvC,mBAAW,SAAS,KAAK,iBAAiB,IAAK,MAAK,IAAI,OAAO,MAAM,KAAK,KAAK;AAAA;AAEjF,UAAI,mBAAmB,QAAQ;AAC7B,yBAAiB;AACjB,0BAAkB;AAClB,wBAAgB;AAAA;AAElB,UAAI,SAAS,oBAAoB,SAAS,uBAAuB,SAAS,sBAAsB,SAAS,0BAA0B,SAAS,QAAQ;AAClJ,cAAM,UAAU,WAAW,IAAI;AAC/B,YAAI,YAAY,QAAQ;AACtB,kBAAQ,SAAS,KAAK,SAAS,sBAAsB,OAAO;AAAA;AAAA;AAGhE,UAAI,SAAS,uBAAuB,SAAS,sBAAsB,SAAS,yBAAyB,SAAS,uBAAuB,SAAS,0BAA0B,SAAS,kBAAkB;AACjM,mBAAW,SAAS,KAAK,kBAAkB,OAAO,yBAAyB;AAAA;AAE7E,UAAI,SAAS,uBAAuB,SAAS,sBAAsB,SAAS,yBAAyB,SAAS,uBAAuB,SAAS,0BAA0B,SAAS,oBAAoB,SAAS,oBAAoB,QAAO,eAAe;AACtP,mBAAW,SAAS,KAAK,cAAc,OAAO;AAAA;AAAA;AAGlD,QAAI,QAAO,eAAe;AACxB,iBAAW,YAAY,KAAK,SAAQ;AACpC,iBAAW,YAAY,KAAK,SAAQ;AACpC,YAAM,WAAW,QAAO;AACxB,UAAI,UAAU;AACZ,YAAI,aAAa,qBAAqB;AACpC,cAAI,SAAS,gBAAgB;AAC3B,qBAAS;AACX,qBAAW,SAAS,KAAK,eAAe,SAAS,aAAa;AAC9D,qBAAW,SAAS,KAAK,mBAAmB,SAAS;AAAA,eAChD;AACL,qBAAW,YAAY,KAAK,UAAU;AAAA;AAAA;AAAA;AAI5C,QAAI,CAAC,CAAC,YAAa,UAAS,gBAAgB,aAAa,UAAU,SAAS,gBAAgB,WAAW,SAAS;AAC9G,mBAAa,OAAO,SAAQ,UAAU,UAAU;AAAA;AAElD,QAAI,mBAAmB,mBAAmB,kBAAkB,QAAO,eAAe;AAChF,yBAAmB,gBAAgB,QAAO;AAC1C,iBAAW,SAAS,KAAK,iBAAiB,QAAO;AAAA;AAEnD,QAAI,iBAAiB;AACnB,iBAAW,SAAS,KAAK,uBAAuB,MAAM;AACtD,UAAI,mBAAmB,aAAa;AAClC,sCAA8B,YAAY;AAAA;AAE5C,UAAI,OAAO,SAAS,KAAK;AACvB,kBAAU,mBAAmB,YAAY;AAAA;AAE3C,gBAAU,wBAAwB,YAAY,UAAU,aAAa,SAAS;AAC9E,oBAAc,OAAO,KAAK,mBAAmB,cAAc,YAAY;AAAA;AAEzE,QAAI,SAAS,oBAAoB,SAAS,uBAAuB,MAAM;AACrE,oBAAc,OAAO,KAAK,mBAAmB,cAAc,YAAY;AACvE,eAAS,qBAAqB;AAAA;AAEhC,QAAI,SAAS,kBAAkB;AAC7B,iBAAW,SAAS,KAAK,UAAU,QAAO;AAAA;AAE5C,eAAW,SAAS,KAAK,mBAAmB,QAAO;AACnD,eAAW,SAAS,KAAK,gBAAgB,QAAO;AAChD,eAAW,SAAS,KAAK,eAAe,QAAO;AAC/C,WAAO;AAAA;AAET,yCAAuC,UAAU,OAAO;AACtD,aAAS,kBAAkB,cAAc;AACzC,aAAS,WAAW,cAAc;AAClC,aAAS,kBAAkB,cAAc;AACzC,aAAS,wBAAwB,cAAc;AAC/C,aAAS,YAAY,cAAc;AACnC,aAAS,kBAAkB,cAAc;AACzC,aAAS,WAAW,cAAc;AAClC,aAAS,iBAAiB,cAAc;AACxC,aAAS,eAAe,cAAc;AACtC,aAAS,iBAAiB,cAAc;AAAA;AAE1C,+BAA6B,UAAU;AACrC,WAAO,SAAS,yBAAyB,SAAS,sBAAsB,SAAS,uBAAuB,SAAS,0BAA0B,SAAS,oBAAoB,SAAS,oBAAoB,SAAS,WAAW;AAAA;AAE3N,OAAK,oBAAoB,WAAW;AAClC,WAAO;AAAA;AAET,OAAK,uBAAuB,WAAW;AACrC,WAAO;AAAA;AAET,OAAK,kBAAkB,WAAW;AAChC,WAAO;AAAA;AAET,OAAK,0BAA0B,SAAS,cAAc,cAAc,cAAc;AAChF,eAAW,IAAI,aAAa,SAAS,iBAAiB;AACtD,eAAW,IAAI,aAAa,cAAc,iBAAiB;AAC3D,UAAM,yBAAyB,WAAW,IAAI;AAC9C,2BAAuB,wBAAwB;AAC/C,QAAI,uBAAuB,uBAAuB;AAChD,6BAAuB,4BAA4B,iBAAiB;AACpE,UAAI,CAAC,uBAAuB,2BAA2B;AACrD,YAAI,aAAa,oBAAoB;AACnC,kBAAQ,KAAK;AACb,uBAAa,qBAAqB;AAClC,uBAAa,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAKvC,OAAK,6BAA6B,SAAS,cAAc,oBAAoB;AAC3E,UAAM,yBAAyB,WAAW,IAAI;AAC9C,2BAAuB,qBAAqB;AAC5C,2BAAuB,0BAA0B,uBAAuB;AAAA;AAE1E,OAAK,kBAAkB,SAAS,cAAc,iBAAiB,GAAG,oBAAoB,GAAG;AACvF,2BAAuB;AACvB,6BAAyB;AACzB,gCAA4B;AAC5B,QAAI,wBAAwB;AAC5B,QAAI,cAAc;AAChB,YAAM,yBAAyB,WAAW,IAAI;AAC9C,UAAI,uBAAuB,4BAA4B,QAAQ;AAC7D,cAAM,gBAAgB,OAAO;AAC7B,gCAAwB;AAAA,iBACf,uBAAuB,uBAAuB,QAAQ;AAC/D,iBAAS,kBAAkB;AAAA,iBAClB,uBAAuB,uBAAuB;AACvD,iBAAS,eAAe,cAAc,WAAW,IAAI,aAAa,SAAS,gBAAgB,WAAW,IAAI,aAAa,cAAc;AAAA;AAAA;AAGzI,QAAI,cAAc;AAClB,QAAI,SAAS;AACb,QAAI,mBAAmB;AACvB,QAAI,cAAc;AAChB,YAAM,UAAU,aAAa;AAC7B,UAAI,QAAQ,mBAAmB,QAAQ,sBAAsB;AAC3D,2BAAmB;AAAA;AAErB,YAAM,qBAAqB,WAAW,IAAI,cAAc;AACxD,UAAI,aAAa,yBAAyB;AACxC,sBAAc,mBAAmB;AACjC,iBAAS;AAAA,iBACA,aAAa,iBAAiB;AACvC,sBAAc,WAAW,IAAI,cAAc;AAAA,aACtC;AACL,sBAAc;AAAA;AAEhB,uBAAiB,KAAK,aAAa;AACnC,sBAAgB,KAAK,aAAa;AAClC,4BAAsB,aAAa;AAAA,WAC9B;AACL,uBAAiB,KAAK,WAAW,eAAe,aAAa;AAC7D,sBAAgB,KAAK,UAAU,eAAe,aAAa;AAC3D,4BAAsB;AAAA;AAExB,UAAM,mBAAmB,MAAM,gBAAgB,OAAO;AACtD,QAAI,oBAAoB,aAAa,eAAe,uBAAuB;AACzE,UAAI,cAAc;AAClB,UAAI,cAAc;AAChB,YAAI,aAAa,8BAA8B;AAC7C,gBAAM,YAAY,aAAa;AAC/B,cAAI,oBAAoB,WAAW,UAAU,UAAU,oBAAoB,OAAO,OAAO;AACvF,qBAAS,IAAI,GAAG,KAAK,UAAU,QAAQ,IAAI,IAAI,KAAK;AAClD,kCAAoB,KAAK,QAAQ;AAAA;AAEnC,gCAAoB,SAAS,UAAU;AACvC,0BAAc;AAAA;AAAA,eAEX;AACL,cAAI,oBAAoB,WAAW,KAAK,oBAAoB,OAAO,OAAO;AACxE,gCAAoB,KAAK;AACzB,gCAAoB,SAAS;AAC7B,0BAAc;AAAA;AAAA;AAAA,aAGb;AACL,YAAI,oBAAoB,WAAW,KAAK,oBAAoB,OAAO,MAAM;AACvE,8BAAoB,KAAK;AACzB,8BAAoB,SAAS;AAC7B,wBAAc;AAAA;AAAA;AAGlB,UAAI,aAAa;AACf,YAAI,aAAa,UAAU;AACzB,cAAI,YAAY;AAAA,eACX;AACL,qBAAW,IAAI,sBAAsB,iBAAiB;AAAA;AAAA;AAAA;AAI5D,UAAM,SAAS;AACf,UAAM,QAAQ;AACd,UAAM,eAAe;AACrB,QAAI,QAAQ;AACV,YAAM,oBAAoB,WAAW,IAAI,aAAa;AACtD,UAAI,qBAAqB,OAAO,OAAO,QAAQ,gBAAgB,kBAAkB,gBAAgB;AAAA,eACxF,kBAAkB;AAC3B,YAAM,oBAAoB,WAAW,IAAI,aAAa;AACtD,YAAM,QAAQ,kBAAkB;AAChC,UAAI,wBAAwB,OAAO,OAAO,kBAAkB,gBAAgB,qBAAqB,GAAG;AAAA;AAEtG,yBAAqB;AAAA;AAEvB,OAAK,yBAAyB,SAAS,cAAc,IAAG,GAAG,OAAO,QAAQ,QAAQ,qBAAqB;AACrG,QAAI,CAAE,iBAAgB,aAAa,sBAAsB;AACvD,cAAQ,MAAM;AACd;AAAA;AAEF,QAAI,cAAc,WAAW,IAAI,cAAc;AAC/C,QAAI,aAAa,2BAA2B,wBAAwB,QAAQ;AAC1E,oBAAc,YAAY;AAAA;AAE5B,QAAI,aAAa;AACf,YAAM,gBAAgB,OAAO;AAC7B,UAAI;AACF,cAAM,UAAU,aAAa;AAC7B,cAAM,gBAAgB,QAAQ;AAC9B,cAAM,cAAc,QAAQ;AAC5B,YAAI,kBAAkB,cAAc,MAAM,QAAQ,mBAAmB,IAAI,aAAa,QAAQ;AAC5F,kBAAQ,MAAM;AACd;AAAA;AAEF,cAAM,0BAA0B,gBAAgB,iBAAkB,YAAW,IAAI,kCAAkC,aAAa,YAAY,WAAW,IAAI;AAC3J,YAAI,gBAAgB,oBAAoB,MAAM,QAAQ,iBAAiB,IAAI,aAAa,UAAU,CAAE,iBAAgB,aAAc,cAAa,YAAY,WAAW,IAAI,wBAAwB,WAAW,IAAI,iCAAiC,CAAC,yBAAyB;AAC1Q,kBAAQ,MAAM;AACd;AAAA;AAEF,YAAI,IAAI,uBAAuB,WAAW,OAAO;AAC/C,cAAI,MAAK,KAAK,MAAK,aAAa,QAAQ,SAAU,MAAK,KAAK,KAAK,aAAa,SAAS,SAAS;AAC9F,gBAAI,WAAW,IAAG,GAAG,OAAO,QAAQ,MAAM,QAAQ,gBAAgB,MAAM,QAAQ,cAAc;AAAA;AAAA,eAE3F;AACL,kBAAQ,MAAM;AAAA;AAAA,gBAEhB;AACA,cAAM,eAAe,yBAAyB,OAAO,WAAW,IAAI,sBAAsB,qBAAqB;AAC/G,cAAM,gBAAgB,OAAO;AAAA;AAAA;AAAA;AAInC,OAAK,2BAA2B,SAAS,UAAU,SAAS,QAAQ,GAAG;AACrE,UAAM,aAAa,KAAK,IAAI,GAAG,CAAC;AAChC,UAAM,QAAQ,KAAK,MAAM,QAAQ,MAAM,QAAQ;AAC/C,UAAM,SAAS,KAAK,MAAM,QAAQ,MAAM,SAAS;AACjD,QAAI,WAAW,MAAM,QAAQ,QAAQ;AACrC,QAAI,aAAa,UAAU;AACzB,UAAI,aAAa;AACf,mBAAW;AACb,UAAI,aAAa;AACf,mBAAW;AAAA;AAEf,aAAS,aAAa,SAAS;AAC/B,QAAI,eAAe,MAAM,OAAO,UAAU,SAAS,GAAG,SAAS,GAAG,OAAO,QAAQ;AACjF,UAAM;AAAA;AAER,OAAK,uBAAuB,SAAS,UAAU,YAAY,YAAY,QAAQ,GAAG;AAChF,UAAM,QAAQ,WAAW,MAAM;AAC/B,UAAM,SAAS,WAAW,MAAM;AAChC,UAAM,WAAW,MAAM,QAAQ,WAAW;AAC1C,UAAM,SAAS,MAAM,QAAQ,WAAW;AACxC,aAAS,aAAa,YAAY;AAClC,QAAI,YAAY,OAAO,WAAW;AAClC,QAAI,YAAY,OAAO,WAAW;AAClC,QAAI,YAAY,MAAM,WAAW;AACjC,QAAI,WAAW,eAAe;AAC5B,UAAI,cAAc,MAAM,OAAO,SAAS,GAAG,SAAS,GAAG,OAAO,QAAQ,UAAU,QAAQ,WAAW,MAAM;AAAA,WACpG;AACL,UAAI,WAAW,qBAAqB;AAClC,YAAI,wBAAwB,MAAM,OAAO,SAAS,GAAG,SAAS,GAAG,WAAW,QAAQ,GAAG,OAAO,WAAW,QAAQ,GAAG,QAAQ,UAAU,WAAW,QAAQ,GAAG;AAAA,aACvJ;AACL,YAAI,cAAc,MAAM,OAAO,SAAS,GAAG,SAAS,GAAG,UAAU,QAAQ,WAAW;AAAA;AAAA;AAGxF,QAAI,UAAU,KAAK,WAAW;AAC5B,UAAI,eAAe;AACrB,UAAM;AAAA;AAER,OAAK,yBAAyB,SAAS,WAAW,UAAU,YAAY,YAAY,QAAQ,GAAG;AAC7F,QAAI,MAAM,kBAAkB;AAC1B,cAAQ,KAAK;AACb;AAAA;AAEF,UAAM,QAAQ,UAAU,IAAI,IAAI,UAAU,IAAI,IAAI;AAClD,UAAM,SAAS,UAAU,IAAI,IAAI,UAAU,IAAI,IAAI;AACnD,UAAM,QAAQ,UAAU,IAAI,IAAI,UAAU,IAAI,IAAI;AAClD,UAAM,WAAW,MAAM,QAAQ,WAAW;AAC1C,UAAM,SAAS,MAAM,QAAQ,WAAW;AACxC,QAAI;AACJ,QAAI,WAAW,iBAAiB;AAC9B,eAAS,aAAa,YAAY;AAClC,iBAAW;AAAA,eACF,WAAW,sBAAsB;AAC1C,eAAS,kBAAkB,YAAY;AACvC,iBAAW;AAAA,WACN;AACL,cAAQ,KAAK;AACb;AAAA;AAEF,QAAI,YAAY,OAAO,WAAW;AAClC,QAAI,YAAY,OAAO,WAAW;AAClC,QAAI,YAAY,MAAM,WAAW;AACjC,UAAM,eAAe,IAAI,aAAa;AACtC,UAAM,oBAAoB,IAAI,aAAa;AAC3C,UAAM,mBAAmB,IAAI,aAAa;AAC1C,UAAM,iBAAiB,IAAI,aAAa;AACxC,UAAM,mBAAmB,IAAI,aAAa;AAC1C,UAAM,QAAQ,WAAW,sBAAsB,WAAW,QAAQ,KAAK,WAAW;AAClF,QAAI,YAAY,MAAM,MAAM;AAC5B,QAAI,YAAY,OAAO,MAAM;AAC7B,QAAI,YAAY,MAAM,UAAU,IAAI;AACpC,QAAI,YAAY,MAAM,UAAU,IAAI;AACpC,QAAI,YAAY,OAAO,UAAU,IAAI;AACrC,QAAI,WAAW,iBAAiB,WAAW,iBAAiB;AAC1D,UAAI,cAAc,UAAU,OAAO,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,QAAQ,OAAO,UAAU,QAAQ,MAAM;AAAA,WAChH;AACL,UAAI,WAAW,qBAAqB;AAClC,gBAAQ,KAAK;AACb,YAAI,wBAAwB,UAAU,OAAO,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,QAAQ,OAAO,UAAU,MAAM;AAAA,aAClH;AACL,YAAI,cAAc,UAAU,OAAO,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,QAAQ,OAAO,UAAU,QAAQ;AAAA;AAAA;AAGnH,QAAI,YAAY,MAAM;AACtB,QAAI,YAAY,OAAO;AACvB,QAAI,YAAY,MAAM;AACtB,QAAI,YAAY,MAAM;AACtB,QAAI,YAAY,OAAO;AACvB,QAAI,UAAU,KAAK,WAAW;AAC5B,UAAI,eAAe;AACrB,UAAM;AAAA;AAER,OAAK,cAAc,SAAS,SAAS;AACnC,aAAS,aAAa,SAAS;AAC/B,UAAM;AAAA;AAER,OAAK,aAAa,WAAW;AAC3B,6BAAyB;AACzB,gCAA4B;AAC5B,2BAAuB;AACvB,UAAM;AACN,kBAAc;AAAA;AAEhB,MAAI,OAAO,uBAAuB,aAAa;AAC7C,uBAAmB,cAAc,IAAI,YAAY,WAAW,EAAC,QAAQ;AAAA;AAAA;AAGzE,cAAc,UAAU,kBAAkB;AAC1C,mCAA6B,cAAc;AAAA;AAE3C,eAAe,UAAU,mBAAmB;AAC5C,oBAAc;AAAA,EACZ,YAAY,OAAO,UAAU,OAAO;AAClC,SAAK,OAAO;AACZ,SAAK,QAAQ,IAAI,MAAM;AACvB,SAAK,UAAU;AAAA;AAAA,EAEjB,QAAQ;AACN,WAAO,IAAI,QAAQ,KAAK,OAAO,KAAK;AAAA;AAAA,EAEtC,SAAS;AACP,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,KAAK,MAAM;AAAA,MAClB,SAAS,KAAK;AAAA;AAAA;AAAA;AAIpB,QAAQ,UAAU,YAAY;AAC9B,gBAAU;AAAA,EACR,YAAY,OAAO,OAAO,GAAG,MAAM,KAAK;AACtC,SAAK,OAAO;AACZ,SAAK,QAAQ,IAAI,MAAM;AACvB,SAAK,OAAO;AACZ,SAAK,MAAM;AAAA;AAAA,EAEb,QAAQ;AACN,WAAO,IAAI,IAAI,KAAK,OAAO,KAAK,MAAM,KAAK;AAAA;AAAA,EAE7C,SAAS;AACP,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,KAAK,MAAM;AAAA,MAClB,MAAM,KAAK;AAAA,MACX,KAAK,KAAK;AAAA;AAAA;AAAA;AAIhB,IAAI,UAAU,QAAQ;AACtB,0BAAoB,SAAS;AAAA,EAC3B,cAAc;AACZ;AACA,SAAK,OAAO;AACZ,SAAK,aAAa;AAClB,SAAK,cAAc;AACnB,SAAK,MAAM;AACX,SAAK,mBAAmB;AACxB,SAAK,aAAa;AAClB,QAAI,OAAO,uBAAuB,aAAa;AAC7C,yBAAmB,cAAc,IAAI,YAAY,WAAW,EAAC,QAAQ;AAAA;AAAA;AAAA,EAGzE,KAAK,QAAQ,WAAW;AACtB,UAAM,KAAK,QAAQ;AACnB,QAAI,OAAO,eAAe;AACxB,WAAK,aAAa,OAAO,WAAW;AACtC,QAAI,OAAO,gBAAgB;AACzB,WAAK,cAAc,OAAO,YAAY;AACxC,QAAI,OAAO,QAAQ;AACjB,WAAK,MAAM,OAAO,IAAI;AACxB,QAAI,OAAO,qBAAqB;AAC9B,WAAK,mBAAmB,OAAO,iBAAiB;AAClD,SAAK,aAAa,OAAO;AACzB,SAAK,mBAAmB,OAAO;AAC/B,WAAO;AAAA;AAAA,EAET,OAAO,OAAM;AACX,UAAM,QAAO,MAAM,OAAO;AAC1B,QAAI,KAAK,QAAQ;AACf,YAAK,OAAO,MAAM,KAAK,IAAI;AAC7B,WAAO;AAAA;AAAA;AAGX,MAAM,UAAU,UAAU;AAC1B,8BAAwB;AAAA,EACtB,YAAY,QAAO,QAAQ;AACzB,SAAK,QAAQ;AACb,SAAK,SAAS;AACd,SAAK,QAAQ,WAAU,SAAS,OAAM,SAAS,SAAS;AACxD,SAAK,QAAQ;AACb,SAAK,cAAc,EAAC,QAAQ,GAAG,OAAO;AACtC,SAAK,UAAU;AACf,SAAK,OAAO;AAAA;AAAA,EAEd,mBAAmB;AAAA;AAAA,MAEf,YAAY,OAAO;AACrB,QAAI,UAAU;AACZ,WAAK;AAAA;AAAA,EAET,SAAS,OAAO;AACd,SAAK,QAAQ;AACb,WAAO;AAAA;AAAA,EAET,KAAK,QAAQ;AACX,SAAK,QAAQ,IAAI,OAAO,MAAM,YAAY,OAAO;AACjD,SAAK,QAAQ,OAAO;AACpB,SAAK,SAAS,OAAO;AACrB,SAAK,QAAQ,OAAO;AACpB,WAAO;AAAA;AAAA,EAET,OAAO,QAAQ,WAAW,QAAQ;AAChC,cAAU,KAAK;AACf,cAAU,UAAU;AACpB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK;AAC3C,WAAK,MAAM,SAAS,KAAK,UAAU,MAAM,SAAS;AAAA;AAEpD,WAAO;AAAA;AAAA,EAET,IAAI,OAAO,UAAS,GAAG;AACrB,SAAK,MAAM,IAAI,OAAO;AACtB,WAAO;AAAA;AAAA,EAET,MAAM,OAAM;AACV,QAAI,MAAK,iBAAiB,QAAQ;AAChC,YAAK,eAAe;AAAA;AAEtB,QAAI,KAAK,MAAM,OAAO,UAAU,QAAQ;AACtC,WAAK,MAAM,OAAO,QAAQ;AAAA;AAE5B,QAAI,MAAK,aAAa,KAAK,MAAM,OAAO,WAAW,QAAQ;AACzD,YAAK,aAAa,KAAK,MAAM,OAAO,SAAS,KAAK,MAAM,MAAM,GAAG;AAAA;AAEnE,UAAM,SAAQ,IAAI,KAAK,MAAM,YAAY,MAAK,aAAa,KAAK,MAAM,OAAO;AAC7E,UAAM,KAAK,IAAI,KAAK,YAAY,QAAO,KAAK;AAC5C,OAAG,SAAS,KAAK;AACjB,WAAO;AAAA;AAAA,EAET,SAAS,UAAU;AACjB,SAAK,mBAAmB;AACxB,WAAO;AAAA;AAAA,EAET,OAAO,OAAM;AACX,QAAI,MAAK,iBAAiB,QAAQ;AAChC,YAAK,eAAe;AAAA;AAEtB,QAAI,KAAK,MAAM,OAAO,UAAU,QAAQ;AACtC,WAAK,MAAM,OAAO,QAAQ;AAAA;AAE5B,QAAI,MAAK,aAAa,KAAK,MAAM,OAAO,WAAW,QAAQ;AACzD,YAAK,aAAa,KAAK,MAAM,OAAO,SAAS,MAAM,UAAU,MAAM,KAAK,IAAI,YAAY,KAAK,MAAM;AAAA;AAErG,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK,MAAM,OAAO;AAAA,MAC1B,MAAM,KAAK,MAAM,YAAY;AAAA,MAC7B,QAAQ,KAAK;AAAA;AAAA;AAAA;AAInB,kBAAkB,UAAU,sBAAsB;AAClD,IAAM,YAA4B,oBAAI;AACtC,uCAAiC;AAAA,EAC/B,YAAY,mBAAmB,UAAU,SAAQ,aAAa,OAAO;AACnE,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,SAAS;AACd,SAAK,aAAa,eAAe;AAAA;AAAA,MAE/B,QAAQ;AACV,WAAO,KAAK,KAAK;AAAA;AAAA,MAEf,QAAQ;AACV,WAAO,KAAK,KAAK;AAAA;AAAA,MAEf,YAAY,OAAO;AACrB,SAAK,KAAK,cAAc;AAAA;AAAA,EAE1B,aAAa,GAAG;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK,OAAO,IAAI,GAAG,KAAK;AAC/C,gBAAU,IAAI,KAAK,KAAK;AACxB,gBAAU,IAAI,KAAK,KAAK;AACxB,gBAAU,IAAI,KAAK,KAAK;AACxB,gBAAU,aAAa;AACvB,WAAK,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU;AAAA;AAErD,WAAO;AAAA;AAAA,EAET,kBAAkB,GAAG;AACnB,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,IAAI,GAAG,KAAK;AAC1C,gBAAU,IAAI,KAAK,KAAK;AACxB,gBAAU,IAAI,KAAK,KAAK;AACxB,gBAAU,IAAI,KAAK,KAAK;AACxB,gBAAU,kBAAkB;AAC5B,WAAK,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU;AAAA;AAErD,WAAO;AAAA;AAAA,EAET,mBAAmB,GAAG;AACpB,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,IAAI,GAAG,KAAK;AAC1C,gBAAU,IAAI,KAAK,KAAK;AACxB,gBAAU,IAAI,KAAK,KAAK;AACxB,gBAAU,IAAI,KAAK,KAAK;AACxB,gBAAU,mBAAmB;AAC7B,WAAK,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU;AAAA;AAErD,WAAO;AAAA;AAAA,EAET,KAAK,QAAO,IAAG;AACb,SAAK,KAAK,MAAM,SAAQ,KAAK,KAAK,SAAS,KAAK,UAAU;AAC1D,WAAO;AAAA;AAAA,EAET,KAAK,QAAO,GAAG;AACb,SAAK,KAAK,MAAM,SAAQ,KAAK,KAAK,SAAS,KAAK,SAAS,KAAK;AAC9D,WAAO;AAAA;AAAA,EAET,KAAK,QAAO,GAAG;AACb,SAAK,KAAK,MAAM,SAAQ,KAAK,KAAK,SAAS,KAAK,SAAS,KAAK;AAC9D,WAAO;AAAA;AAAA,EAET,KAAK,QAAO,GAAG;AACb,SAAK,KAAK,MAAM,SAAQ,KAAK,KAAK,SAAS,KAAK,SAAS,KAAK;AAC9D,WAAO;AAAA;AAAA,EAET,KAAK,QAAO;AACV,WAAO,KAAK,KAAK,MAAM,SAAQ,KAAK,KAAK,SAAS,KAAK;AAAA;AAAA,EAEzD,KAAK,QAAO;AACV,WAAO,KAAK,KAAK,MAAM,SAAQ,KAAK,KAAK,SAAS,KAAK,SAAS;AAAA;AAAA,EAElE,KAAK,QAAO;AACV,WAAO,KAAK,KAAK,MAAM,SAAQ,KAAK,KAAK,SAAS,KAAK,SAAS;AAAA;AAAA,EAElE,KAAK,QAAO;AACV,WAAO,KAAK,KAAK,MAAM,SAAQ,KAAK,KAAK,SAAS,KAAK,SAAS;AAAA;AAAA,EAElE,MAAM,QAAO,IAAG,GAAG;AACjB,aAAQ,SAAQ,KAAK,KAAK,SAAS,KAAK;AACxC,SAAK,KAAK,MAAM,SAAQ,KAAK;AAC7B,SAAK,KAAK,MAAM,SAAQ,KAAK;AAC7B,WAAO;AAAA;AAAA,EAET,OAAO,QAAO,IAAG,GAAG,GAAG;AACrB,aAAQ,SAAQ,KAAK,KAAK,SAAS,KAAK;AACxC,SAAK,KAAK,MAAM,SAAQ,KAAK;AAC7B,SAAK,KAAK,MAAM,SAAQ,KAAK;AAC7B,SAAK,KAAK,MAAM,SAAQ,KAAK;AAC7B,WAAO;AAAA;AAAA,EAET,QAAQ,QAAO,IAAG,GAAG,GAAG,GAAG;AACzB,aAAQ,SAAQ,KAAK,KAAK,SAAS,KAAK;AACxC,SAAK,KAAK,MAAM,SAAQ,KAAK;AAC7B,SAAK,KAAK,MAAM,SAAQ,KAAK;AAC7B,SAAK,KAAK,MAAM,SAAQ,KAAK;AAC7B,SAAK,KAAK,MAAM,SAAQ,KAAK;AAC7B,WAAO;AAAA;AAAA,EAET,MAAM,OAAM;AACV,QAAI,UAAS,QAAQ;AACnB,cAAQ,IAAI;AACZ,YAAM,SAAQ;AACd,eAAS,IAAI,GAAG,IAAI,KAAK,OAAO,KAAK;AACnC,cAAM,SAAQ,IAAI,KAAK,KAAK,SAAS,KAAK;AAC1C,iBAAS,IAAI,GAAG,IAAI,KAAK,UAAU,KAAK;AACtC,iBAAM,KAAK,KAAK,KAAK,MAAM,SAAQ;AAAA;AAAA;AAGvC,aAAO,IAAI,gBAAgB,IAAI,KAAK,MAAM,YAAY,SAAQ,KAAK,UAAU,KAAK;AAAA,WAC7E;AACL,UAAI,MAAK,uBAAuB,QAAQ;AACtC,cAAK,qBAAqB;AAAA;AAE5B,UAAI,MAAK,mBAAmB,KAAK,KAAK,UAAU,QAAQ;AACtD,cAAK,mBAAmB,KAAK,KAAK,QAAQ,KAAK,KAAK,MAAM;AAAA;AAE5D,aAAO,IAAI,2BAA2B,MAAK,mBAAmB,KAAK,KAAK,OAAO,KAAK,UAAU,KAAK,QAAQ,KAAK;AAAA;AAAA;AAAA,EAGpH,OAAO,OAAM;AACX,QAAI,UAAS,QAAQ;AACnB,cAAQ,IAAI;AACZ,YAAM,SAAQ;AACd,eAAS,IAAI,GAAG,IAAI,KAAK,OAAO,KAAK;AACnC,cAAM,SAAQ,IAAI,KAAK,KAAK,SAAS,KAAK;AAC1C,iBAAS,IAAI,GAAG,IAAI,KAAK,UAAU,KAAK;AACtC,iBAAM,KAAK,KAAK,KAAK,MAAM,SAAQ;AAAA;AAAA;AAGvC,aAAO;AAAA,QACL,UAAU,KAAK;AAAA,QACf,MAAM,KAAK,MAAM,YAAY;AAAA,QAC7B;AAAA,QACA,YAAY,KAAK;AAAA;AAAA,WAEd;AACL,UAAI,MAAK,uBAAuB,QAAQ;AACtC,cAAK,qBAAqB;AAAA;AAE5B,UAAI,MAAK,mBAAmB,KAAK,KAAK,UAAU,QAAQ;AACtD,cAAK,mBAAmB,KAAK,KAAK,QAAQ,KAAK,KAAK,OAAO;AAAA;AAE7D,aAAO;AAAA,QACL,8BAA8B;AAAA,QAC9B,UAAU,KAAK;AAAA,QACf,MAAM,KAAK,KAAK;AAAA,QAChB,QAAQ,KAAK;AAAA,QACb,YAAY,KAAK;AAAA;AAAA;AAAA;AAAA;AAKzB,2BAA2B,UAAU,+BAA+B;AACpE,mCAA6B,SAAS;AAAA,EACpC,YAAY,YAAY;AACtB;AACA,SAAK,OAAO;AACZ,SAAK,QAAQ,IAAI,MAAM;AACvB,SAAK,MAAM;AACX,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,kBAAkB;AACvB,SAAK,cAAc;AACnB,SAAK,UAAU;AAAA;AAAA,EAEjB,KAAK,QAAQ;AACX,UAAM,KAAK;AACX,SAAK,MAAM,KAAK,OAAO;AACvB,SAAK,MAAM,OAAO;AAClB,SAAK,WAAW,OAAO;AACvB,SAAK,WAAW,OAAO;AACvB,SAAK,kBAAkB,OAAO;AAC9B,WAAO;AAAA;AAAA;AAGX,eAAe,UAAU,mBAAmB;AAC5C,IAAI;AACJ,IAAM,kBAAkC,oBAAI;AAC5C,IAAM,cAA8B,oBAAI;AACxC,IAAM,cAA8B,oBAAI;AACxC,IAAM,mBAAmC,oBAAI;AAC7C,IAAM,mBAAmC,oBAAI;AAC7C,IAAM,mBAAmC,oBAAI;AAC7C,IAAM,MAAsB,oBAAI;AAChC,IAAM,MAAsB,oBAAI;AAChC,IAAM,MAAsB,oBAAI;AAChC,IAAM,OAAuB,oBAAI;AACjC,IAAM,OAAuB,oBAAI;AACjC,IAAM,OAAuB,oBAAI;AACjC,2BAAqB,SAAS;AAAA,EAC5B,YAAY,UAAU;AACpB;AACA,SAAK,OAAO;AACZ,QAAI,cAAc,QAAQ;AACxB,kBAAY,IAAI;AAChB,YAAM,eAAe,IAAI,aAAa;AAAA,QACpC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAEF,YAAM,oBAAoB,IAAI,kBAAkB,cAAc;AAC9D,gBAAU,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;AACnC,gBAAU,aAAa,YAAY,IAAI,2BAA2B,mBAAmB,GAAG,GAAG;AAC3F,gBAAU,aAAa,MAAM,IAAI,2BAA2B,mBAAmB,GAAG,GAAG;AAAA;AAEvF,SAAK,WAAW;AAChB,SAAK,WAAW,aAAa,SAAS,WAAW,IAAI;AACrD,SAAK,SAAS,IAAI,QAAQ,KAAK;AAAA;AAAA,EAEjC,QAAQ,WAAW,cAAa;AAC9B,QAAI,UAAU,WAAW,MAAM;AAC7B,cAAQ,MAAM;AAAA;AAEhB,gBAAY,mBAAmB,KAAK;AACpC,qBAAiB,KAAK,UAAU,OAAO;AACvC,SAAK,gBAAgB,iBAAiB,UAAU,OAAO,oBAAoB,KAAK;AAChF,gBAAY,sBAAsB,KAAK;AACvC,QAAI,UAAU,OAAO,uBAAuB,KAAK,SAAS,oBAAoB,OAAO;AACnF,kBAAY,eAAe,CAAC,YAAY;AAAA;AAE1C,UAAM,WAAW,KAAK,SAAS;AAC/B,QAAI,KAAK;AACT,QAAI,aAAa,GAAG;AAClB,YAAM,KAAK,IAAI;AACf,YAAM,KAAK,IAAI;AAAA;AAEjB,UAAM,SAAS,KAAK;AACpB,oBAAgB,IAAI,IAAI,MAAM,MAAM,IAAI,aAAa,QAAQ,aAAa,KAAK;AAC/E,oBAAgB,IAAI,IAAI,KAAK,MAAM,IAAI,aAAa,QAAQ,aAAa,KAAK;AAC9E,oBAAgB,IAAI,IAAI,KAAK,KAAK,IAAI,aAAa,QAAQ,aAAa,KAAK;AAC7E,SAAK,IAAI,GAAG;AACZ,SAAK,IAAI,GAAG;AACZ,SAAK,IAAI,GAAG;AACZ,QAAI,YAAY,UAAU,IAAI,kBAAkB,KAAK,KAAK,KAAK,OAAO;AACtE,QAAI,cAAc,MAAM;AACtB,sBAAgB,IAAI,IAAI,MAAM,KAAK,IAAI,aAAa,QAAQ,aAAa,KAAK;AAC9E,WAAK,IAAI,GAAG;AACZ,kBAAY,UAAU,IAAI,kBAAkB,KAAK,KAAK,KAAK,OAAO;AAClE,UAAI,cAAc,MAAM;AACtB;AAAA;AAAA;AAGJ,UAAM,WAAW,UAAU,IAAI,OAAO,WAAW;AACjD,QAAI,WAAW,UAAU,QAAQ,WAAW,UAAU;AACpD;AACF,iBAAY,KAAK;AAAA,MACf;AAAA,MACA,OAAO,gBAAgB;AAAA,MACvB,IAAI,UAAS,MAAM,iBAAiB,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI;AAAA,MACzE,MAAM;AAAA,MACN,QAAQ;AAAA;AAAA;AAAA,EAGZ,KAAK,QAAQ;AACX,UAAM,KAAK;AACX,QAAI,OAAO,WAAW;AACpB,WAAK,OAAO,KAAK,OAAO;AAC1B,SAAK,WAAW,OAAO;AACvB,WAAO;AAAA;AAAA;AAGX,OAAO,UAAU,WAAW;AAC5B,yBAAyB,gBAAgB,YAAY,QAAQ,OAAO,KAAK,KAAK;AAC5E,mBAAiB,WAAW,gBAAgB,QAAQ,UAAU,KAAK,SAAS;AAC5E,MAAI,QAAQ,QAAQ;AAClB,qBAAiB,IAAI,MAAM,iBAAiB,IAAI,MAAM,iBAAiB;AACvE,qBAAiB,IAAI,MAAM,iBAAiB,IAAI,MAAM,iBAAiB;AAAA,SAClE;AACL,qBAAiB,KAAK;AAAA;AAExB,iBAAe,KAAK;AACpB,iBAAe,KAAK,iBAAiB;AACrC,iBAAe,KAAK,iBAAiB;AACrC,iBAAe,aAAa;AAAA;AAE9B,IAAM,QAAwB,oBAAI;AAClC,IAAM,QAAwB,oBAAI;AAClC,wBAAkB,SAAS;AAAA,EACzB,cAAc;AACZ;AACA,SAAK,gBAAgB;AACrB,SAAK,OAAO;AACZ,WAAO,iBAAiB,MAAM;AAAA,MAC5B,QAAQ;AAAA,QACN,YAAY;AAAA,QACZ,OAAO;AAAA;AAAA,MAET,OAAO;AAAA,QACL,OAAO;AAAA;AAAA;AAGX,SAAK,aAAa;AAAA;AAAA,EAEpB,KAAK,QAAQ;AACX,UAAM,KAAK,QAAQ;AACnB,UAAM,SAAS,OAAO;AACtB,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC7C,YAAM,QAAQ,OAAO;AACrB,WAAK,SAAS,MAAM,OAAO,SAAS,MAAM;AAAA;AAE5C,SAAK,aAAa,OAAO;AACzB,WAAO;AAAA;AAAA,EAET,SAAS,SAAQ,WAAW,GAAG;AAC7B,eAAW,KAAK,IAAI;AACpB,UAAM,SAAS,KAAK;AACpB,QAAI;AACJ,SAAK,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AAClC,UAAI,WAAW,OAAO,GAAG,UAAU;AACjC;AAAA;AAAA;AAGJ,WAAO,OAAO,GAAG,GAAG,EAAC,UAAU;AAC/B,SAAK,IAAI;AACT,WAAO;AAAA;AAAA,EAET,kBAAkB;AAChB,WAAO,KAAK;AAAA;AAAA,EAEd,qBAAqB,UAAU;AAC7B,UAAM,SAAS,KAAK;AACpB,QAAI,OAAO,SAAS,GAAG;AACrB,UAAI,GAAG;AACP,WAAK,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AACzC,YAAI,WAAW,OAAO,GAAG,UAAU;AACjC;AAAA;AAAA;AAGJ,aAAO,OAAO,IAAI,GAAG;AAAA;AAEvB,WAAO;AAAA;AAAA,EAET,QAAQ,WAAW,cAAa;AAC9B,UAAM,SAAS,KAAK;AACpB,QAAI,OAAO,SAAS,GAAG;AACrB,YAAM,sBAAsB,KAAK;AACjC,YAAM,WAAW,UAAU,IAAI,OAAO,WAAW;AACjD,WAAK,qBAAqB,UAAU,QAAQ,WAAW;AAAA;AAAA;AAAA,EAG3D,OAAO,QAAQ;AACb,UAAM,SAAS,KAAK;AACpB,QAAI,OAAO,SAAS,GAAG;AACrB,YAAM,sBAAsB,OAAO;AACnC,YAAM,sBAAsB,KAAK;AACjC,YAAM,WAAW,MAAM,WAAW,SAAS,OAAO;AAClD,aAAO,GAAG,OAAO,UAAU;AAC3B,UAAI,GAAG;AACP,WAAK,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AACzC,YAAI,YAAY,OAAO,GAAG,UAAU;AAClC,iBAAO,IAAI,GAAG,OAAO,UAAU;AAC/B,iBAAO,GAAG,OAAO,UAAU;AAAA,eACtB;AACL;AAAA;AAAA;AAGJ,WAAK,gBAAgB,IAAI;AACzB,aAAO,IAAI,GAAG,KAAK;AACjB,eAAO,GAAG,OAAO,UAAU;AAAA;AAAA;AAAA;AAAA,EAIjC,OAAO,OAAM;AACX,UAAM,QAAO,MAAM,OAAO;AAC1B,QAAI,KAAK,eAAe;AACtB,YAAK,OAAO,aAAa;AAC3B,UAAK,OAAO,SAAS;AACrB,UAAM,SAAS,KAAK;AACpB,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC7C,YAAM,QAAQ,OAAO;AACrB,YAAK,OAAO,OAAO,KAAK;AAAA,QACtB,QAAQ,MAAM,OAAO;AAAA,QACrB,UAAU,MAAM;AAAA;AAAA;AAGpB,WAAO;AAAA;AAAA;AAGX,IAAM,gBAAgC,oBAAI;AAC1C,IAAM,aAA6B,oBAAI;AACvC,IAAM,cAA8B,oBAAI;AACxC,IAAM,YAA4B,oBAAI;AACtC,IAAM,UAA0B,oBAAI;AACpC,gCAA0B,KAAK;AAAA,EAC7B,YAAY,UAAU,UAAU;AAC9B,UAAM,UAAU;AAChB,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,aAAa,IAAI;AACtB,SAAK,oBAAoB,IAAI;AAAA;AAAA,EAE/B,KAAK,QAAQ;AACX,UAAM,KAAK;AACX,SAAK,WAAW,OAAO;AACvB,SAAK,WAAW,KAAK,OAAO;AAC5B,SAAK,kBAAkB,KAAK,OAAO;AACnC,SAAK,WAAW,OAAO;AACvB,WAAO;AAAA;AAAA,EAET,KAAK,UAAU,YAAY;AACzB,SAAK,WAAW;AAChB,QAAI,eAAe,QAAQ;AACzB,WAAK,kBAAkB;AACvB,WAAK,SAAS;AACd,mBAAa,KAAK;AAAA;AAEpB,SAAK,WAAW,KAAK;AACrB,SAAK,kBAAkB,KAAK,YAAY;AAAA;AAAA,EAE1C,OAAO;AACL,SAAK,SAAS;AAAA;AAAA,EAEhB,uBAAuB;AACrB,UAAM,SAAS,IAAI;AACnB,UAAM,aAAa,KAAK,SAAS,WAAW;AAC5C,aAAS,IAAI,GAAG,IAAI,WAAW,OAAO,IAAI,GAAG,KAAK;AAChD,aAAO,IAAI,WAAW,KAAK;AAC3B,aAAO,IAAI,WAAW,KAAK;AAC3B,aAAO,IAAI,WAAW,KAAK;AAC3B,aAAO,IAAI,WAAW,KAAK;AAC3B,YAAM,QAAQ,IAAI,OAAO;AACzB,UAAI,UAAU,UAAU;AACtB,eAAO,eAAe;AAAA,aACjB;AACL,eAAO,IAAI,GAAG,GAAG,GAAG;AAAA;AAEtB,iBAAW,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO;AAAA;AAAA;AAAA,EAG/D,kBAAkB,OAAO;AACvB,UAAM,kBAAkB;AACxB,QAAI,KAAK,aAAa,YAAY;AAChC,WAAK,kBAAkB,KAAK,KAAK,aAAa;AAAA,eACrC,KAAK,aAAa,YAAY;AACvC,WAAK,kBAAkB,KAAK,KAAK,YAAY;AAAA,WACxC;AACL,cAAQ,KAAK,+CAA+C,KAAK;AAAA;AAAA;AAAA,EAGrE,cAAc,QAAO,QAAQ;AAC3B,UAAM,WAAW,KAAK;AACtB,UAAM,WAAW,KAAK;AACtB,eAAW,oBAAoB,SAAS,WAAW,WAAW;AAC9D,gBAAY,oBAAoB,SAAS,WAAW,YAAY;AAChE,kBAAc,KAAK,QAAQ,aAAa,KAAK;AAC7C,WAAO,IAAI,GAAG,GAAG;AACjB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAM,SAAS,YAAY,aAAa;AACxC,UAAI,WAAW,GAAG;AAChB,cAAM,YAAY,WAAW,aAAa;AAC1C,gBAAQ,iBAAiB,SAAS,MAAM,WAAW,aAAa,SAAS,aAAa;AACtF,eAAO,gBAAgB,UAAU,KAAK,eAAe,aAAa,UAAU;AAAA;AAAA;AAGhF,WAAO,OAAO,aAAa,KAAK;AAAA;AAAA;AAGpC,YAAY,UAAU,gBAAgB;AACtC,yBAAmB,SAAS;AAAA,EAC1B,cAAc;AACZ;AACA,SAAK,OAAO;AAAA;AAAA;AAGhB,KAAK,UAAU,SAAS;AACxB,gCAA0B,QAAQ;AAAA,EAChC,YAAY,QAAO,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,MAAM,SAAS,OAAO,OAAO,YAAY,eAAe,YAAY,eAAe,YAAY,UAAU;AAC/J,UAAM,MAAM,SAAS,OAAO,OAAO,WAAW,WAAW,QAAQ,MAAM,YAAY;AACnF,SAAK,QAAQ,EAAC,aAAM,OAAO;AAC3B,SAAK,YAAY;AACjB,SAAK,YAAY;AACjB,SAAK,kBAAkB;AACvB,SAAK,QAAQ;AACb,SAAK,kBAAkB;AACvB,SAAK,cAAc;AAAA;AAAA;AAGvB,YAAY,UAAU,gBAAgB;AACtC,IAAM,gBAAgC,oBAAI;AAC1C,IAAM,kBAAkC,oBAAI;AAC5C,qBAAe;AAAA,EACb,YAAY,QAAQ,IAAI,eAAe,IAAI;AACzC,SAAK,OAAO;AACZ,SAAK,QAAQ,MAAM,MAAM;AACzB,SAAK,eAAe;AACpB,SAAK,eAAe;AACpB,SAAK,cAAc;AACnB,SAAK,kBAAkB;AACvB,SAAK,QAAQ;AACb,SAAK;AAAA;AAAA,EAEP,OAAO;AACL,UAAM,QAAQ,KAAK;AACnB,UAAM,eAAe,KAAK;AAC1B,SAAK,eAAe,IAAI,aAAa,MAAM,SAAS;AACpD,QAAI,aAAa,WAAW,GAAG;AAC7B,WAAK;AAAA,WACA;AACL,UAAI,MAAM,WAAW,aAAa,QAAQ;AACxC,gBAAQ,KAAK;AACb,aAAK,eAAe;AACpB,iBAAS,IAAI,GAAG,KAAK,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AACnD,eAAK,aAAa,KAAK,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,EAKnC,oBAAoB;AAClB,SAAK,aAAa,SAAS;AAC3B,aAAS,IAAI,GAAG,KAAK,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AACnD,YAAM,UAAU,IAAI;AACpB,UAAI,KAAK,MAAM,IAAI;AACjB,gBAAQ,KAAK,KAAK,MAAM,GAAG,aAAa;AAAA;AAE1C,WAAK,aAAa,KAAK;AAAA;AAAA;AAAA,EAG3B,OAAO;AACL,aAAS,IAAI,GAAG,KAAK,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AACnD,YAAM,OAAO,KAAK,MAAM;AACxB,UAAI,MAAM;AACR,aAAK,YAAY,KAAK,KAAK,aAAa,IAAI;AAAA;AAAA;AAGhD,aAAS,IAAI,GAAG,KAAK,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AACnD,YAAM,OAAO,KAAK,MAAM;AACxB,UAAI,MAAM;AACR,YAAI,KAAK,UAAU,KAAK,OAAO,QAAQ;AACrC,eAAK,OAAO,KAAK,KAAK,OAAO,aAAa;AAC1C,eAAK,OAAO,SAAS,KAAK;AAAA,eACrB;AACL,eAAK,OAAO,KAAK,KAAK;AAAA;AAExB,aAAK,OAAO,UAAU,KAAK,UAAU,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA;AAAA,EAIjE,SAAS;AACP,UAAM,QAAQ,KAAK;AACnB,UAAM,eAAe,KAAK;AAC1B,UAAM,eAAe,KAAK;AAC1B,UAAM,cAAc,KAAK;AACzB,aAAS,IAAI,GAAG,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AAC9C,YAAM,SAAS,MAAM,KAAK,MAAM,GAAG,cAAc;AACjD,oBAAc,iBAAiB,QAAQ,aAAa;AACpD,oBAAc,QAAQ,cAAc,IAAI;AAAA;AAE1C,QAAI,gBAAgB,MAAM;AACxB,kBAAY,cAAc;AAAA;AAAA;AAAA,EAG9B,QAAQ;AACN,WAAO,IAAI,SAAS,KAAK,OAAO,KAAK;AAAA;AAAA,EAEvC,qBAAqB;AACnB,QAAI,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS;AACzC,WAAO,eAAe;AACtB,WAAO,KAAK,IAAI,MAAM;AACtB,UAAM,eAAe,IAAI,aAAa,OAAO,OAAO;AACpD,iBAAa,IAAI,KAAK;AACtB,UAAM,cAAc,IAAI,YAAY,cAAc,MAAM,MAAM,YAAY;AAC1E,SAAK,eAAe;AACpB,SAAK,cAAc;AACnB,SAAK,kBAAkB;AACvB,WAAO;AAAA;AAAA,EAET,cAAc,OAAM;AAClB,aAAS,IAAI,GAAG,KAAK,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AACnD,YAAM,OAAO,KAAK,MAAM;AACxB,UAAI,KAAK,SAAS,OAAM;AACtB,eAAO;AAAA;AAAA;AAGX,WAAO;AAAA;AAAA,EAET,UAAU;AACR,QAAI,KAAK,gBAAgB,MAAM;AAC7B,WAAK,YAAY;AACjB,WAAK,cAAc;AAAA;AAAA;AAAA,EAGvB,SAAS,MAAM,OAAO;AACpB,SAAK,OAAO,KAAK;AACjB,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,IAAI,GAAG,KAAK;AACjD,YAAM,OAAO,KAAK,MAAM;AACxB,UAAI,OAAO,MAAM;AACjB,UAAI,SAAS,QAAQ;AACnB,gBAAQ,KAAK,4CAA4C;AACzD,eAAO,IAAI;AAAA;AAEb,WAAK,MAAM,KAAK;AAChB,WAAK,aAAa,KAAK,IAAI,UAAU,UAAU,KAAK,aAAa;AAAA;AAEnE,SAAK;AACL,WAAO;AAAA;AAAA,EAET,SAAS;AACP,UAAM,QAAO;AAAA,MACX,UAAU;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,QACN,WAAW;AAAA;AAAA,MAEb,OAAO;AAAA,MACP,cAAc;AAAA;AAEhB,UAAK,OAAO,KAAK;AACjB,UAAM,QAAQ,KAAK;AACnB,UAAM,eAAe,KAAK;AAC1B,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,KAAK;AAC5C,YAAM,OAAO,MAAM;AACnB,YAAK,MAAM,KAAK,KAAK;AACrB,YAAM,cAAc,aAAa;AACjC,YAAK,aAAa,KAAK,YAAY;AAAA;AAErC,WAAO;AAAA;AAAA;AAGX,6CAAuC,gBAAgB;AAAA,EACrD,YAAY,QAAO,UAAU,YAAY,mBAAmB,GAAG;AAC7D,QAAI,OAAO,eAAe,UAAU;AAClC,yBAAmB;AACnB,mBAAa;AACb,cAAQ,MAAM;AAAA;AAEhB,UAAM,QAAO,UAAU;AACvB,SAAK,mBAAmB;AAAA;AAAA,EAE1B,KAAK,QAAQ;AACX,UAAM,KAAK;AACX,SAAK,mBAAmB,OAAO;AAC/B,WAAO;AAAA;AAAA,EAET,SAAS;AACP,UAAM,QAAO,MAAM;AACnB,UAAK,mBAAmB,KAAK;AAC7B,UAAK,6BAA6B;AAClC,WAAO;AAAA;AAAA;AAGX,yBAAyB,UAAU,6BAA6B;AAChE,IAAM,uBAAuC,oBAAI;AACjD,IAAM,uBAAuC,oBAAI;AACjD,IAAM,sBAAsB;AAC5B,IAAM,QAAwB,oBAAI;AAClC,kCAA4B,KAAK;AAAA,EAC/B,YAAY,UAAU,UAAU,OAAO;AACrC,UAAM,UAAU;AAChB,SAAK,iBAAiB,IAAI,yBAAyB,IAAI,aAAa,QAAQ,KAAK;AACjF,SAAK,gBAAgB;AACrB,SAAK,QAAQ;AACb,SAAK,gBAAgB;AAAA;AAAA,EAEvB,KAAK,QAAQ;AACX,UAAM,KAAK;AACX,SAAK,eAAe,KAAK,OAAO;AAChC,QAAI,OAAO,kBAAkB;AAC3B,WAAK,gBAAgB,OAAO,cAAc;AAC5C,SAAK,QAAQ,OAAO;AACpB,WAAO;AAAA;AAAA,EAET,WAAW,QAAO,OAAO;AACvB,UAAM,UAAU,KAAK,cAAc,OAAO,SAAQ;AAAA;AAAA,EAEpD,YAAY,QAAO,QAAQ;AACzB,WAAO,UAAU,KAAK,eAAe,OAAO,SAAQ;AAAA;AAAA,EAEtD,QAAQ,WAAW,cAAa;AAC9B,UAAM,cAAc,KAAK;AACzB,UAAM,eAAe,KAAK;AAC1B,UAAM,WAAW,KAAK;AACtB,UAAM,WAAW,KAAK;AACtB,QAAI,MAAM,aAAa;AACrB;AACF,aAAS,aAAa,GAAG,aAAa,cAAc,cAAc;AAChE,WAAK,YAAY,YAAY;AAC7B,2BAAqB,iBAAiB,aAAa;AACnD,YAAM,cAAc;AACpB,YAAM,QAAQ,WAAW;AACzB,eAAS,IAAI,GAAG,IAAI,oBAAoB,QAAQ,IAAI,GAAG,KAAK;AAC1D,cAAM,YAAY,oBAAoB;AACtC,kBAAU,aAAa;AACvB,kBAAU,SAAS;AACnB,qBAAY,KAAK;AAAA;AAEnB,0BAAoB,SAAS;AAAA;AAAA;AAAA,EAGjC,WAAW,QAAO,OAAO;AACvB,QAAI,KAAK,kBAAkB,MAAM;AAC/B,WAAK,gBAAgB,IAAI,yBAAyB,IAAI,aAAa,KAAK,eAAe,QAAQ,IAAI;AAAA;AAErG,UAAM,QAAQ,KAAK,cAAc,OAAO,SAAQ;AAAA;AAAA,EAElD,YAAY,QAAO,QAAQ;AACzB,WAAO,QAAQ,KAAK,eAAe,OAAO,SAAQ;AAAA;AAAA,EAEpD,qBAAqB;AAAA;AAAA,EAErB,UAAU;AACR,SAAK,cAAc,EAAC,MAAM;AAAA;AAAA;AAG9B,cAAc,UAAU,kBAAkB;AAC1C,sCAAgC,SAAS;AAAA,EACvC,YAAY,YAAY;AACtB;AACA,SAAK,OAAO;AACZ,SAAK,QAAQ,IAAI,MAAM;AACvB,SAAK,YAAY;AACjB,SAAK,UAAU;AACf,SAAK,WAAW;AAChB,SAAK,UAAU;AAAA;AAAA,EAEjB,KAAK,QAAQ;AACX,UAAM,KAAK;AACX,SAAK,MAAM,KAAK,OAAO;AACvB,SAAK,YAAY,OAAO;AACxB,SAAK,UAAU,OAAO;AACtB,SAAK,WAAW,OAAO;AACvB,WAAO;AAAA;AAAA;AAGX,kBAAkB,UAAU,sBAAsB;AAClD,IAAM,WAA2B,oBAAI;AACrC,IAAM,SAAyB,oBAAI;AACnC,IAAM,mBAAmC,oBAAI;AAC7C,IAAM,SAAyB,oBAAI;AACnC,IAAM,YAA4B,oBAAI;AACtC,yBAAmB,SAAS;AAAA,EAC1B,YAAY,WAAW,IAAI,kBAAkB,WAAW,IAAI,qBAAqB;AAC/E;AACA,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK;AAAA;AAAA,EAEP,KAAK,QAAQ;AACX,UAAM,KAAK;AACX,SAAK,WAAW,OAAO;AACvB,SAAK,WAAW,OAAO;AACvB,WAAO;AAAA;AAAA,EAET,uBAAuB;AACrB,UAAM,WAAW,KAAK;AACtB,QAAI,SAAS,kBAAkB;AAC7B,UAAI,SAAS,UAAU,MAAM;AAC3B,cAAM,oBAAoB,SAAS,WAAW;AAC9C,cAAM,gBAAgB,CAAC;AACvB,iBAAS,IAAI,GAAG,IAAI,kBAAkB,OAAO,IAAI,GAAG,KAAK;AACvD,mBAAS,oBAAoB,mBAAmB,IAAI;AACpD,iBAAO,oBAAoB,mBAAmB;AAC9C,wBAAc,KAAK,cAAc,IAAI;AACrC,wBAAc,MAAM,SAAS,WAAW;AAAA;AAE1C,iBAAS,aAAa,gBAAgB,IAAI,uBAAuB,eAAe;AAAA,aAC3E;AACL,gBAAQ,KAAK;AAAA;AAAA,eAEN,SAAS,YAAY;AAC9B,cAAQ,MAAM;AAAA;AAEhB,WAAO;AAAA;AAAA,EAET,QAAQ,WAAW,cAAa;AAC9B,UAAM,WAAW,KAAK;AACtB,UAAM,cAAc,KAAK;AACzB,UAAM,YAAY,UAAU,OAAO,KAAK;AACxC,UAAM,YAAY,SAAS;AAC3B,QAAI,SAAS,mBAAmB;AAC9B,eAAS;AACX,cAAU,KAAK,SAAS;AACxB,cAAU,aAAa;AACvB,cAAU,UAAU;AACpB,QAAI,UAAU,IAAI,iBAAiB,eAAe;AAChD;AACF,qBAAiB,KAAK,aAAa;AACnC,WAAO,KAAK,UAAU,KAAK,aAAa;AACxC,UAAM,iBAAiB,YAAc,OAAK,MAAM,IAAI,KAAK,MAAM,IAAI,KAAK,MAAM,KAAK;AACnF,UAAM,mBAAmB,iBAAiB;AAC1C,UAAM,SAAS,IAAI;AACnB,UAAM,OAAO,IAAI;AACjB,UAAM,eAAe,IAAI;AACzB,UAAM,WAAW,IAAI;AACrB,UAAM,OAAO,KAAK,iBAAiB,IAAI;AACvC,QAAI,SAAS,kBAAkB;AAC7B,YAAM,SAAQ,SAAS;AACvB,YAAM,aAAa,SAAS;AAC5B,YAAM,oBAAoB,WAAW;AACrC,UAAI,WAAU,MAAM;AAClB,cAAM,SAAQ,KAAK,IAAI,GAAG,UAAU;AACpC,cAAM,OAAM,KAAK,IAAI,OAAM,OAAO,UAAU,QAAQ,UAAU;AAC9D,iBAAS,IAAI,QAAO,IAAI,OAAM,GAAG,IAAI,GAAG,KAAK,MAAM;AACjD,gBAAM,IAAI,OAAM,KAAK;AACrB,gBAAM,IAAI,OAAM,KAAK,IAAI;AACzB,iBAAO,oBAAoB,mBAAmB;AAC9C,eAAK,oBAAoB,mBAAmB;AAC5C,gBAAM,SAAS,OAAO,oBAAoB,QAAQ,MAAM,UAAU;AAClE,cAAI,SAAS;AACX;AACF,mBAAS,aAAa,KAAK;AAC3B,gBAAM,WAAW,UAAU,IAAI,OAAO,WAAW;AACjD,cAAI,WAAW,UAAU,QAAQ,WAAW,UAAU;AACpD;AACF,uBAAY,KAAK;AAAA,YACf;AAAA,YACA,OAAO,aAAa,QAAQ,aAAa,KAAK;AAAA,YAC9C,OAAO;AAAA,YACP,MAAM;AAAA,YACN,WAAW;AAAA,YACX,QAAQ;AAAA;AAAA;AAAA,aAGP;AACL,cAAM,SAAQ,KAAK,IAAI,GAAG,UAAU;AACpC,cAAM,OAAM,KAAK,IAAI,kBAAkB,OAAO,UAAU,QAAQ,UAAU;AAC1E,iBAAS,IAAI,QAAO,IAAI,OAAM,GAAG,IAAI,GAAG,KAAK,MAAM;AACjD,iBAAO,oBAAoB,mBAAmB;AAC9C,eAAK,oBAAoB,mBAAmB,IAAI;AAChD,gBAAM,SAAS,OAAO,oBAAoB,QAAQ,MAAM,UAAU;AAClE,cAAI,SAAS;AACX;AACF,mBAAS,aAAa,KAAK;AAC3B,gBAAM,WAAW,UAAU,IAAI,OAAO,WAAW;AACjD,cAAI,WAAW,UAAU,QAAQ,WAAW,UAAU;AACpD;AACF,uBAAY,KAAK;AAAA,YACf;AAAA,YACA,OAAO,aAAa,QAAQ,aAAa,KAAK;AAAA,YAC9C,OAAO;AAAA,YACP,MAAM;AAAA,YACN,WAAW;AAAA,YACX,QAAQ;AAAA;AAAA;AAAA;AAAA,eAIL,SAAS,YAAY;AAC9B,cAAQ,MAAM;AAAA;AAAA;AAAA,EAGlB,qBAAqB;AACnB,UAAM,WAAW,KAAK;AACtB,QAAI,SAAS,kBAAkB;AAC7B,YAAM,kBAAkB,SAAS;AACjC,YAAM,QAAO,OAAO,KAAK;AACzB,UAAI,MAAK,SAAS,GAAG;AACnB,cAAM,iBAAiB,gBAAgB,MAAK;AAC5C,YAAI,mBAAmB,QAAQ;AAC7B,eAAK,wBAAwB;AAC7B,eAAK,wBAAwB;AAC7B,mBAAS,IAAI,GAAG,MAAK,eAAe,QAAQ,IAAI,KAAI,KAAK;AACvD,kBAAM,QAAO,eAAe,GAAG,QAAQ,OAAO;AAC9C,iBAAK,sBAAsB,KAAK;AAChC,iBAAK,sBAAsB,SAAQ;AAAA;AAAA;AAAA;AAAA,WAIpC;AACL,YAAM,eAAe,SAAS;AAC9B,UAAI,iBAAiB,UAAU,aAAa,SAAS,GAAG;AACtD,gBAAQ,MAAM;AAAA;AAAA;AAAA;AAAA;AAKtB,KAAK,UAAU,SAAS;AACxB,IAAM,SAAyB,oBAAI;AACnC,IAAM,OAAuB,oBAAI;AACjC,iCAA2B,KAAK;AAAA,EAC9B,YAAY,UAAU,UAAU;AAC9B,UAAM,UAAU;AAChB,SAAK,OAAO;AAAA;AAAA,EAEd,uBAAuB;AACrB,UAAM,WAAW,KAAK;AACtB,QAAI,SAAS,kBAAkB;AAC7B,UAAI,SAAS,UAAU,MAAM;AAC3B,cAAM,oBAAoB,SAAS,WAAW;AAC9C,cAAM,gBAAgB;AACtB,iBAAS,IAAI,GAAG,IAAI,kBAAkB,OAAO,IAAI,GAAG,KAAK,GAAG;AAC1D,iBAAO,oBAAoB,mBAAmB;AAC9C,eAAK,oBAAoB,mBAAmB,IAAI;AAChD,wBAAc,KAAK,MAAM,IAAI,IAAI,cAAc,IAAI;AACnD,wBAAc,IAAI,KAAK,cAAc,KAAK,OAAO,WAAW;AAAA;AAE9D,iBAAS,aAAa,gBAAgB,IAAI,uBAAuB,eAAe;AAAA,aAC3E;AACL,gBAAQ,KAAK;AAAA;AAAA,eAEN,SAAS,YAAY;AAC9B,cAAQ,MAAM;AAAA;AAEhB,WAAO;AAAA;AAAA;AAGX,aAAa,UAAU,iBAAiB;AACxC,6BAAuB,KAAK;AAAA,EAC1B,YAAY,UAAU,UAAU;AAC9B,UAAM,UAAU;AAChB,SAAK,OAAO;AAAA;AAAA;AAGhB,SAAS,UAAU,aAAa;AAChC,mCAA6B,SAAS;AAAA,EACpC,YAAY,YAAY;AACtB;AACA,SAAK,OAAO;AACZ,SAAK,QAAQ,IAAI,MAAM;AACvB,SAAK,MAAM;AACX,SAAK,WAAW;AAChB,SAAK,OAAO;AACZ,SAAK,kBAAkB;AACvB,SAAK,UAAU;AAAA;AAAA,EAEjB,KAAK,QAAQ;AACX,UAAM,KAAK;AACX,SAAK,MAAM,KAAK,OAAO;AACvB,SAAK,MAAM,OAAO;AAClB,SAAK,WAAW,OAAO;AACvB,SAAK,OAAO,OAAO;AACnB,SAAK,kBAAkB,OAAO;AAC9B,WAAO;AAAA;AAAA;AAGX,eAAe,UAAU,mBAAmB;AAC5C,IAAM,iBAAiC,oBAAI;AAC3C,IAAM,OAAuB,oBAAI;AACjC,IAAM,UAA0B,oBAAI;AACpC,IAAM,cAA8B,oBAAI;AACxC,2BAAqB,SAAS;AAAA,EAC5B,YAAY,WAAW,IAAI,kBAAkB,WAAW,IAAI,kBAAkB;AAC5E;AACA,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK;AAAA;AAAA,EAEP,KAAK,QAAQ;AACX,UAAM,KAAK;AACX,SAAK,WAAW,OAAO;AACvB,SAAK,WAAW,OAAO;AACvB,WAAO;AAAA;AAAA,EAET,QAAQ,WAAW,cAAa;AAC9B,UAAM,WAAW,KAAK;AACtB,UAAM,cAAc,KAAK;AACzB,UAAM,YAAY,UAAU,OAAO,OAAO;AAC1C,UAAM,YAAY,SAAS;AAC3B,QAAI,SAAS,mBAAmB;AAC9B,eAAS;AACX,YAAQ,KAAK,SAAS;AACtB,YAAQ,aAAa;AACrB,YAAQ,UAAU;AAClB,QAAI,UAAU,IAAI,iBAAiB,aAAa;AAC9C;AACF,mBAAe,KAAK,aAAa;AACjC,SAAK,KAAK,UAAU,KAAK,aAAa;AACtC,UAAM,iBAAiB,YAAc,OAAK,MAAM,IAAI,KAAK,MAAM,IAAI,KAAK,MAAM,KAAK;AACnF,UAAM,mBAAmB,iBAAiB;AAC1C,QAAI,SAAS,kBAAkB;AAC7B,YAAM,SAAQ,SAAS;AACvB,YAAM,aAAa,SAAS;AAC5B,YAAM,oBAAoB,WAAW;AACrC,UAAI,WAAU,MAAM;AAClB,cAAM,SAAQ,KAAK,IAAI,GAAG,UAAU;AACpC,cAAM,OAAM,KAAK,IAAI,OAAM,OAAO,UAAU,QAAQ,UAAU;AAC9D,iBAAS,IAAI,QAAO,KAAK,MAAK,IAAI,IAAI,KAAK;AACzC,gBAAM,IAAI,OAAM,KAAK;AACrB,sBAAY,oBAAoB,mBAAmB;AACnD,oBAAU,aAAa,GAAG,kBAAkB,aAAa,WAAW,cAAa;AAAA;AAAA,aAE9E;AACL,cAAM,SAAQ,KAAK,IAAI,GAAG,UAAU;AACpC,cAAM,OAAM,KAAK,IAAI,kBAAkB,OAAO,UAAU,QAAQ,UAAU;AAC1E,iBAAS,IAAI,QAAO,IAAI,MAAK,IAAI,GAAG,KAAK;AACvC,sBAAY,oBAAoB,mBAAmB;AACnD,oBAAU,aAAa,GAAG,kBAAkB,aAAa,WAAW,cAAa;AAAA;AAAA;AAAA,WAGhF;AACL,cAAQ,MAAM;AAAA;AAAA;AAAA,EAGlB,qBAAqB;AACnB,UAAM,WAAW,KAAK;AACtB,QAAI,SAAS,kBAAkB;AAC7B,YAAM,kBAAkB,SAAS;AACjC,YAAM,QAAO,OAAO,KAAK;AACzB,UAAI,MAAK,SAAS,GAAG;AACnB,cAAM,iBAAiB,gBAAgB,MAAK;AAC5C,YAAI,mBAAmB,QAAQ;AAC7B,eAAK,wBAAwB;AAC7B,eAAK,wBAAwB;AAC7B,mBAAS,IAAI,GAAG,MAAK,eAAe,QAAQ,IAAI,KAAI,KAAK;AACvD,kBAAM,QAAO,eAAe,GAAG,QAAQ,OAAO;AAC9C,iBAAK,sBAAsB,KAAK;AAChC,iBAAK,sBAAsB,SAAQ;AAAA;AAAA;AAAA;AAAA,WAIpC;AACL,YAAM,eAAe,SAAS;AAC9B,UAAI,iBAAiB,UAAU,aAAa,SAAS,GAAG;AACtD,gBAAQ,MAAM;AAAA;AAAA;AAAA;AAAA;AAKtB,OAAO,UAAU,WAAW;AAC5B,mBAAmB,OAAO,QAAO,kBAAkB,aAAa,WAAW,cAAa,SAAQ;AAC9F,QAAM,qBAAqB,KAAK,kBAAkB;AAClD,MAAI,qBAAqB,kBAAkB;AACzC,UAAM,iBAAiB,IAAI;AAC3B,SAAK,oBAAoB,OAAO;AAChC,mBAAe,aAAa;AAC5B,UAAM,WAAW,UAAU,IAAI,OAAO,WAAW;AACjD,QAAI,WAAW,UAAU,QAAQ,WAAW,UAAU;AACpD;AACF,iBAAY,KAAK;AAAA,MACf;AAAA,MACA,eAAe,KAAK,KAAK;AAAA,MACzB,OAAO;AAAA,MACP;AAAA,MACA,MAAM;AAAA,MACN;AAAA;AAAA;AAAA;AAIN,iCAA2B,QAAQ;AAAA,EACjC,YAAY,OAAO,SAAS,OAAO,OAAO,WAAW,WAAW,QAAQ,MAAM,YAAY;AACxF,UAAM,OAAO,SAAS,OAAO,OAAO,WAAW,WAAW,QAAQ,MAAM;AACxE,SAAK,SAAS,WAAW,SAAS,SAAS;AAC3C,SAAK,YAAY,cAAc,SAAS,YAAY;AACpD,SAAK,YAAY,cAAc,SAAS,YAAY;AACpD,SAAK,kBAAkB;AACvB,UAAM,QAAQ;AACd,2BAAuB;AACrB,YAAM,cAAc;AACpB,YAAM,0BAA0B;AAAA;AAElC,QAAI,+BAA+B,OAAO;AACxC,YAAM,0BAA0B;AAAA;AAAA;AAAA,EAGpC,QAAQ;AACN,WAAO,IAAI,KAAK,YAAY,KAAK,OAAO,KAAK;AAAA;AAAA,EAE/C,SAAS;AACP,UAAM,QAAQ,KAAK;AACnB,UAAM,wBAAwB,+BAA+B;AAC7D,QAAI,0BAA0B,SAAS,MAAM,cAAc,MAAM,mBAAmB;AAClF,WAAK,cAAc;AAAA;AAAA;AAAA;AAIzB,aAAa,UAAU,iBAAiB;AACxC,sCAAgC,QAAQ;AAAA,EACtC,YAAY,SAAS,OAAO,QAAQ,QAAQ,MAAM,SAAS,OAAO,OAAO,WAAW,WAAW,YAAY,UAAU;AACnH,UAAM,MAAM,SAAS,OAAO,OAAO,WAAW,WAAW,QAAQ,MAAM,YAAY;AACnF,SAAK,QAAQ,EAAC,OAAO;AACrB,SAAK,UAAU;AACf,SAAK,QAAQ;AACb,SAAK,kBAAkB;AAAA;AAAA;AAG3B,kBAAkB,UAAU,sBAAsB;AAClD,kCAA4B,QAAQ;AAAA,EAClC,YAAY,QAAQ,SAAS,OAAO,OAAO,WAAW,WAAW,QAAQ,MAAM,YAAY;AACzF,UAAM,QAAQ,SAAS,OAAO,OAAO,WAAW,WAAW,QAAQ,MAAM;AACzE,SAAK,cAAc;AAAA;AAAA;AAGvB,cAAc,UAAU,kBAAkB;AAC1C,mCAA6B,eAAe;AAAA,EAC1C,YAAY,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,KAAK,KAAK,GAAG;AAC/E;AACA,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAEF,eAAW,KAAK,IAAI,GAAG;AACvB,UAAM,UAAU;AAChB,UAAM,WAAW;AACjB,UAAM,UAAU;AAChB,UAAM,MAAM;AACZ,UAAM,WAAU,IAAI;AACpB,UAAM,KAAK,IAAI;AACf,aAAS,KAAK,GAAG,GAAG;AACpB,YAAQ,KAAK,GAAG,GAAG;AACnB,QAAI,KAAK,KAAK;AACd,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK,UAAU,KAAK,KAAK,GAAG;AACjD,YAAM,UAAU,aAAa,IAAI,WAAW;AAC5C,eAAQ,IAAI,SAAS,KAAK,IAAI;AAC9B,eAAQ,IAAI,SAAS,KAAK,IAAI;AAC9B,eAAS,KAAK,SAAQ,GAAG,SAAQ,GAAG,SAAQ;AAC5C,cAAQ,KAAK,GAAG,GAAG;AACnB,SAAG,IAAK,UAAS,KAAK,SAAS,KAAK;AACpC,SAAG,IAAK,UAAS,IAAI,KAAK,SAAS,KAAK;AACxC,UAAI,KAAK,GAAG,GAAG,GAAG;AAAA;AAEpB,aAAS,IAAI,GAAG,KAAK,UAAU,KAAK;AAClC,cAAQ,KAAK,GAAG,IAAI,GAAG;AAAA;AAEzB,SAAK,SAAS;AACd,SAAK,aAAa,YAAY,IAAI,uBAAuB,UAAU;AACnE,SAAK,aAAa,UAAU,IAAI,uBAAuB,SAAS;AAChE,SAAK,aAAa,MAAM,IAAI,uBAAuB,KAAK;AAAA;AAAA,SAEnD,SAAS,OAAM;AACpB,WAAO,IAAI,eAAe,MAAK,QAAQ,MAAK,UAAU,MAAK,YAAY,MAAK;AAAA;AAAA;AAGhF,qCAA+B,eAAe;AAAA,EAC5C,YAAY,YAAY,GAAG,eAAe,GAAG,SAAS,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,YAAY,OAAO,aAAa,GAAG,cAAc,KAAK,KAAK,GAAG;AAC7J;AACA,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAEF,UAAM,QAAQ;AACd,qBAAiB,KAAK,MAAM;AAC5B,qBAAiB,KAAK,MAAM;AAC5B,UAAM,UAAU;AAChB,UAAM,WAAW;AACjB,UAAM,UAAU;AAChB,UAAM,MAAM;AACZ,QAAI,SAAQ;AACZ,UAAM,aAAa;AACnB,UAAM,aAAa,SAAS;AAC5B,QAAI,aAAa;AACjB;AACA,QAAI,cAAc,OAAO;AACvB,UAAI,YAAY;AACd,oBAAY;AACd,UAAI,eAAe;AACjB,oBAAY;AAAA;AAEhB,SAAK,SAAS;AACd,SAAK,aAAa,YAAY,IAAI,uBAAuB,UAAU;AACnE,SAAK,aAAa,UAAU,IAAI,uBAAuB,SAAS;AAChE,SAAK,aAAa,MAAM,IAAI,uBAAuB,KAAK;AACxD,6BAAyB;AACvB,YAAM,SAAS,IAAI;AACnB,YAAM,WAAU,IAAI;AACpB,UAAI,aAAa;AACjB,YAAM,QAAS,gBAAe,aAAa;AAC3C,eAAS,IAAI,GAAG,KAAK,gBAAgB,KAAK;AACxC,cAAM,WAAW;AACjB,cAAM,IAAI,IAAI;AACd,cAAM,SAAS,IAAK,gBAAe,aAAa;AAChD,iBAAS,KAAI,GAAG,MAAK,gBAAgB,MAAK;AACxC,gBAAM,IAAI,KAAI;AACd,gBAAM,QAAQ,IAAI,cAAc;AAChC,gBAAM,WAAW,KAAK,IAAI;AAC1B,gBAAM,WAAW,KAAK,IAAI;AAC1B,mBAAQ,IAAI,SAAS;AACrB,mBAAQ,IAAI,CAAC,IAAI,SAAS;AAC1B,mBAAQ,IAAI,SAAS;AACrB,mBAAS,KAAK,SAAQ,GAAG,SAAQ,GAAG,SAAQ;AAC5C,iBAAO,IAAI,UAAU,OAAO,UAAU;AACtC,kBAAQ,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO;AACxC,cAAI,KAAK,GAAG,IAAI;AAChB,mBAAS,KAAK;AAAA;AAEhB,mBAAW,KAAK;AAAA;AAElB,eAAS,KAAI,GAAG,KAAI,gBAAgB,MAAK;AACvC,iBAAS,IAAI,GAAG,IAAI,gBAAgB,KAAK;AACvC,gBAAM,IAAI,WAAW,GAAG;AACxB,gBAAM,IAAI,WAAW,IAAI,GAAG;AAC5B,gBAAM,KAAI,WAAW,IAAI,GAAG,KAAI;AAChC,gBAAM,IAAI,WAAW,GAAG,KAAI;AAC5B,kBAAQ,KAAK,GAAG,GAAG;AACnB,kBAAQ,KAAK,GAAG,IAAG;AACnB,wBAAc;AAAA;AAAA;AAGlB,YAAM,SAAS,YAAY,YAAY;AACvC,oBAAc;AAAA;AAEhB,yBAAqB,MAAK;AACxB,YAAM,mBAAmB;AACzB,YAAM,KAAK,IAAI;AACf,YAAM,WAAU,IAAI;AACpB,UAAI,aAAa;AACjB,YAAM,SAAS,SAAQ,OAAO,YAAY;AAC1C,YAAM,SAAQ,SAAQ,OAAO,IAAI;AACjC,eAAS,KAAI,GAAG,MAAK,gBAAgB,MAAK;AACxC,iBAAS,KAAK,GAAG,aAAa,QAAO;AACrC,gBAAQ,KAAK,GAAG,QAAO;AACvB,YAAI,KAAK,KAAK;AACd;AAAA;AAEF,YAAM,iBAAiB;AACvB,eAAS,KAAI,GAAG,MAAK,gBAAgB,MAAK;AACxC,cAAM,IAAI,KAAI;AACd,cAAM,QAAQ,IAAI,cAAc;AAChC,cAAM,WAAW,KAAK,IAAI;AAC1B,cAAM,WAAW,KAAK,IAAI;AAC1B,iBAAQ,IAAI,SAAS;AACrB,iBAAQ,IAAI,aAAa;AACzB,iBAAQ,IAAI,SAAS;AACrB,iBAAS,KAAK,SAAQ,GAAG,SAAQ,GAAG,SAAQ;AAC5C,gBAAQ,KAAK,GAAG,QAAO;AACvB,WAAG,IAAI,WAAW,MAAM;AACxB,WAAG,IAAI,WAAW,MAAM,SAAQ;AAChC,YAAI,KAAK,GAAG,GAAG,GAAG;AAClB;AAAA;AAEF,eAAS,KAAI,GAAG,KAAI,gBAAgB,MAAK;AACvC,cAAM,KAAI,mBAAmB;AAC7B,cAAM,IAAI,iBAAiB;AAC3B,YAAI,SAAQ,MAAM;AAChB,kBAAQ,KAAK,GAAG,IAAI,GAAG;AAAA,eAClB;AACL,kBAAQ,KAAK,IAAI,GAAG,GAAG;AAAA;AAEzB,sBAAc;AAAA;AAEhB,YAAM,SAAS,YAAY,YAAY,SAAQ,OAAO,IAAI;AAC1D,oBAAc;AAAA;AAAA;AAAA,SAGX,SAAS,OAAM;AACpB,WAAO,IAAI,iBAAiB,MAAK,WAAW,MAAK,cAAc,MAAK,QAAQ,MAAK,gBAAgB,MAAK,gBAAgB,MAAK,WAAW,MAAK,YAAY,MAAK;AAAA;AAAA;AAGhK,iCAA2B,iBAAiB;AAAA,EAC1C,YAAY,SAAS,GAAG,SAAS,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,YAAY,OAAO,aAAa,GAAG,cAAc,KAAK,KAAK,GAAG;AACxI,UAAM,GAAG,QAAQ,QAAQ,gBAAgB,gBAAgB,WAAW,YAAY;AAChF,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA,SAGG,SAAS,OAAM;AACpB,WAAO,IAAI,aAAa,MAAK,QAAQ,MAAK,QAAQ,MAAK,gBAAgB,MAAK,gBAAgB,MAAK,WAAW,MAAK,YAAY,MAAK;AAAA;AAAA;AAGtI,uCAAiC,eAAe;AAAA,EAC9C,YAAY,WAAW,IAAI,UAAU,IAAI,SAAS,GAAG,SAAS,GAAG;AAC/D;AACA,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAEF,UAAM,eAAe;AACrB,UAAM,WAAW;AACjB,cAAU;AACV,gBAAY;AACZ;AACA,SAAK,aAAa,YAAY,IAAI,uBAAuB,cAAc;AACvE,SAAK,aAAa,UAAU,IAAI,uBAAuB,aAAa,SAAS;AAC7E,SAAK,aAAa,MAAM,IAAI,uBAAuB,UAAU;AAC7D,QAAI,WAAW,GAAG;AAChB,WAAK;AAAA,WACA;AACL,WAAK;AAAA;AAEP,uBAAmB,SAAS;AAC1B,YAAM,IAAI,IAAI;AACd,YAAM,IAAI,IAAI;AACd,YAAM,KAAI,IAAI;AACd,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAC1C,yBAAiB,QAAQ,IAAI,IAAI;AACjC,yBAAiB,QAAQ,IAAI,IAAI;AACjC,yBAAiB,QAAQ,IAAI,IAAI;AACjC,sBAAc,GAAG,GAAG,IAAG;AAAA;AAAA;AAG3B,2BAAuB,GAAG,GAAG,IAAG,SAAS;AACvC,YAAM,OAAO,UAAU;AACvB,YAAM,IAAI;AACV,eAAS,IAAI,GAAG,KAAK,MAAM,KAAK;AAC9B,UAAE,KAAK;AACP,cAAM,KAAK,EAAE,QAAQ,KAAK,IAAG,IAAI;AACjC,cAAM,KAAK,EAAE,QAAQ,KAAK,IAAG,IAAI;AACjC,cAAM,OAAO,OAAO;AACpB,iBAAS,IAAI,GAAG,KAAK,MAAM,KAAK;AAC9B,cAAI,MAAM,KAAK,MAAM,MAAM;AACzB,cAAE,GAAG,KAAK;AAAA,iBACL;AACL,cAAE,GAAG,KAAK,GAAG,QAAQ,KAAK,IAAI,IAAI;AAAA;AAAA;AAAA;AAIxC,eAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,iBAAS,IAAI,GAAG,IAAI,IAAK,QAAO,KAAK,GAAG,KAAK;AAC3C,gBAAM,KAAI,KAAK,MAAM,IAAI;AACzB,cAAI,IAAI,MAAM,GAAG;AACf,uBAAW,EAAE,GAAG,KAAI;AACpB,uBAAW,EAAE,IAAI,GAAG;AACpB,uBAAW,EAAE,GAAG;AAAA,iBACX;AACL,uBAAW,EAAE,GAAG,KAAI;AACpB,uBAAW,EAAE,IAAI,GAAG,KAAI;AACxB,uBAAW,EAAE,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA;AAK5B,yBAAqB,SAAS;AAC5B,YAAM,WAAU,IAAI;AACpB,eAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK,GAAG;AAC/C,iBAAQ,IAAI,aAAa,IAAI;AAC7B,iBAAQ,IAAI,aAAa,IAAI;AAC7B,iBAAQ,IAAI,aAAa,IAAI;AAC7B,iBAAQ,YAAY,eAAe;AACnC,qBAAa,IAAI,KAAK,SAAQ;AAC9B,qBAAa,IAAI,KAAK,SAAQ;AAC9B,qBAAa,IAAI,KAAK,SAAQ;AAAA;AAAA;AAGlC,2BAAuB;AACrB,YAAM,WAAU,IAAI;AACpB,eAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK,GAAG;AAC/C,iBAAQ,IAAI,aAAa,IAAI;AAC7B,iBAAQ,IAAI,aAAa,IAAI;AAC7B,iBAAQ,IAAI,aAAa,IAAI;AAC7B,cAAM,IAAI,QAAQ,YAAW,IAAI,KAAK,KAAK;AAC3C,cAAM,IAAI,YAAY,YAAW,KAAK,KAAK;AAC3C,iBAAS,KAAK,GAAG,IAAI;AAAA;AAEvB;AACA;AAAA;AAEF,2BAAuB;AACrB,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,GAAG;AAC3C,cAAM,KAAK,SAAS,IAAI;AACxB,cAAM,KAAK,SAAS,IAAI;AACxB,cAAM,KAAK,SAAS,IAAI;AACxB,cAAM,OAAM,KAAK,IAAI,IAAI,IAAI;AAC7B,cAAM,OAAM,KAAK,IAAI,IAAI,IAAI;AAC7B,YAAI,OAAM,OAAO,OAAM,KAAK;AAC1B,cAAI,KAAK;AACP,qBAAS,IAAI,MAAM;AACrB,cAAI,KAAK;AACP,qBAAS,IAAI,MAAM;AACrB,cAAI,KAAK;AACP,qBAAS,IAAI,MAAM;AAAA;AAAA;AAAA;AAI3B,wBAAoB,UAAS;AAC3B,mBAAa,KAAK,SAAQ,GAAG,SAAQ,GAAG,SAAQ;AAAA;AAElD,8BAA0B,QAAO,UAAS;AACxC,YAAM,SAAS,SAAQ;AACvB,eAAQ,IAAI,SAAS,SAAS;AAC9B,eAAQ,IAAI,SAAS,SAAS;AAC9B,eAAQ,IAAI,SAAS,SAAS;AAAA;AAEhC,0BAAsB;AACpB,YAAM,IAAI,IAAI;AACd,YAAM,IAAI,IAAI;AACd,YAAM,KAAI,IAAI;AACd,YAAM,WAAW,IAAI;AACrB,YAAM,MAAM,IAAI;AAChB,YAAM,MAAM,IAAI;AAChB,YAAM,MAAM,IAAI;AAChB,eAAS,IAAI,GAAG,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK,GAAG,KAAK,GAAG;AAC9D,UAAE,IAAI,aAAa,IAAI,IAAI,aAAa,IAAI,IAAI,aAAa,IAAI;AACjE,UAAE,IAAI,aAAa,IAAI,IAAI,aAAa,IAAI,IAAI,aAAa,IAAI;AACjE,WAAE,IAAI,aAAa,IAAI,IAAI,aAAa,IAAI,IAAI,aAAa,IAAI;AACjE,YAAI,IAAI,SAAS,IAAI,IAAI,SAAS,IAAI;AACtC,YAAI,IAAI,SAAS,IAAI,IAAI,SAAS,IAAI;AACtC,YAAI,IAAI,SAAS,IAAI,IAAI,SAAS,IAAI;AACtC,iBAAS,KAAK,GAAG,IAAI,GAAG,IAAI,IAAG,aAAa;AAC5C,cAAM,MAAM,QAAQ;AACpB,kBAAU,KAAK,IAAI,GAAG,GAAG;AACzB,kBAAU,KAAK,IAAI,GAAG,GAAG;AACzB,kBAAU,KAAK,IAAI,GAAG,IAAG;AAAA;AAAA;AAG7B,uBAAmB,IAAI,QAAQ,QAAQ,UAAU;AAC/C,UAAI,WAAW,KAAK,GAAG,MAAM,GAAG;AAC9B,iBAAS,UAAU,GAAG,IAAI;AAAA;AAE5B,UAAI,OAAO,MAAM,KAAK,OAAO,MAAM,GAAG;AACpC,iBAAS,UAAU,WAAW,IAAI,KAAK,KAAK;AAAA;AAAA;AAGhD,qBAAiB,QAAQ;AACvB,aAAO,KAAK,MAAM,OAAO,GAAG,CAAC,OAAO;AAAA;AAEtC,yBAAqB,QAAQ;AAC3B,aAAO,KAAK,MAAM,CAAC,OAAO,GAAG,KAAK,KAAK,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO;AAAA;AAAA;AAAA,SAG5E,SAAS,OAAM;AACpB,WAAO,IAAI,mBAAmB,MAAK,UAAU,MAAK,SAAS,MAAK,QAAQ,MAAK;AAAA;AAAA;AAGjF,yCAAmC,mBAAmB;AAAA,EACpD,YAAY,SAAS,GAAG,SAAS,GAAG;AAClC,UAAM,IAAK,KAAI,KAAK,KAAK,MAAM;AAC/B,UAAM,IAAI,IAAI;AACd,UAAM,WAAW;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD,CAAC;AAAA,MACD;AAAA,MACA,CAAC;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD,CAAC;AAAA,MACD;AAAA,MACA,CAAC;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD;AAAA,MACA,CAAC;AAAA,MACD;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD,CAAC;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAEF,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,M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AE,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAG,GAAE,EAAE,KAAI,KAAE,IAAE,IAAE,KAAE,IAAE,IAAE,KAAE,IAAE,KAAE,IAAE,IAAE,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAG,GAAE,EAAE,KAAI,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAE,IAAE,IAAE,KAAE,IAAE,IAAE,KAAE,IAAE,IAAE,MAAG,GAAE,EAAE,KAAG,KAAE,GAAE,EAAE,KAAI,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAE,IAAE,IAAE,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAG,GAAE,EAAE,KAAI,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAE,IAAE,IAAE,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAG,GAAE,EAAE,KAAI,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAE,IAAE,IAAE,KAAE,IAAE,IAAE,KAAE,IAAE,IAAE,MAAG,GAAE,EAAE,KAAG,IAAE,GAAE,EAAE,KAAI,KAAE,IAAE,IAAE,IAAE,KAAE,IAAE,IAAE,IAAE,KAAE,IAAE,KAAE,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAG,GAAE,EAAE,MAAK,KAAE,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAE,IAAE,KAAE,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAG,GAAE,EAAE,MAAK,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAE,IAAE,IAAE,KAAE,IAAE,IAAE,KAAE,IAAE,IAAE,MAAG,GAAE,EAAE,MAAI,IAAE,GAAE,EAAE,MAAK,KAAE,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAG,GAAE,EAAE,MAAK,KAAE,IAAE,IAAE,IAAE,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAG,GAAE,EAAE,MAAK,KAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IA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", "names": [] }