@zestyxyz/aframe-sdk 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -0
- package/dist/zesty-aframe-sdk.js +1 -0
- package/package.json +34 -0
package/README.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Zesty A-Frame Integration
|
|
2
|
+
|
|
3
|
+
This is the A-Frame SDK for Zesty Banner integration.
|
|
4
|
+
|
|
5
|
+
## Getting started
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
yarn
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
If you've run `yarn` at the top level, you don't need to run it here again.
|
|
12
|
+
|
|
13
|
+
## Local dev server
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
yarn serve
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Build
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
yarn build
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Prototyping with tunneling
|
|
26
|
+
|
|
27
|
+
If you'd like to test the changes you've made on a browser on a headset, the best way to do that is through tunnelling.
|
|
28
|
+
|
|
29
|
+
We use [`localtunnel`](https://localtunnel.github.io/www/).
|
|
30
|
+
|
|
31
|
+
Run the tunnel with:
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
lt --port 8080
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Using the aframe inspector
|
|
38
|
+
|
|
39
|
+
It's a really handy tool that allows you to drag and drop items into place and edit them without having specify everything with code.
|
|
40
|
+
|
|
41
|
+
Simply activate it with: `<ctrl> + <alt> + i`.
|
|
42
|
+
|
|
43
|
+
## Automatically saving from the inspector
|
|
44
|
+
|
|
45
|
+
You can automatically save things from the inspector to the files, just download `aframe-watcher`.
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
yarn global add aframe-watcher
|
|
49
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const aa="https://cdn.zesty.xyz/sdk/assets",ab={tall:{width:.75,height:1,style:{standard:`${aa}/zesty-banner-tall.png`,minimal:`${aa}/zesty-banner-tall-minimal.png`,transparent:`${aa}/zesty-banner-tall-transparent.png`}},wide:{width:4,height:1,style:{standard:`${aa}/zesty-banner-wide.png`,minimal:`${aa}/zesty-banner-wide-minimal.png`,transparent:`${aa}/zesty-banner-wide-transparent.png`}},square:{width:1,height:1,style:{standard:`${aa}/zesty-banner-square.png`,minimal:`${aa}/zesty-banner-square-minimal.png`,transparent:`${aa}/zesty-banner-square-transparent.png`}},"mobile-phone-interstitial":{width:.56,height:1,style:{standard:`${aa}/zesty-default-mobile-phone-interstitial.png`,minimal:`${aa}/zesty-default-mobile-phone-interstitial.png`,transparent:`${aa}/zesty-default-mobile-phone-interstitial.png`}},billboard:{width:3.88,height:1,style:{standard:`${aa}/zesty-default-billboard.png`,minimal:`${aa}/zesty-default-billboard.png`,transparent:`${aa}/zesty-default-billboard.png`}},"medium-rectangle":{width:1.2,height:1,style:{standard:`${aa}/zesty-default-medium-rectangle.png`,minimal:`${aa}/zesty-default-medium-rectangle.png`,transparent:`${aa}/zesty-default-medium-rectangle.png`}}},ac=2300,ad=2301,ae=2302,af="srgb",ag="srgb-linear",ah="display-p3",ai="display-p3-linear",aj="linear",ak="srgb",al="rec709",am=2e3,an=2001;class ao{addEventListener(aa,ab){void 0===this._listeners&&(this._listeners={});const ac=this._listeners;void 0===ac[aa]&&(ac[aa]=[]),-1===ac[aa].indexOf(ab)&&ac[aa].push(ab)}hasEventListener(aa,ab){if(void 0===this._listeners)return!1;const ac=this._listeners;return void 0!==ac[aa]&&-1!==ac[aa].indexOf(ab)}removeEventListener(aa,ab){if(void 0===this._listeners)return;const ac=this._listeners[aa];if(void 0!==ac){const aa=ac.indexOf(ab);-1!==aa&&ac.splice(aa,1)}}dispatchEvent(aa){if(void 0===this._listeners)return;const ab=this._listeners[aa.type];if(void 0!==ab){aa.target=this;const ac=ab.slice(0);for(let ab=0,ad=ac.length;ab<ad;ab++)ac[ab].call(this,aa);aa.target=null}}}const ap=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];function aq(){const aa=4294967295*Math.random()|0,ab=4294967295*Math.random()|0,ac=4294967295*Math.random()|0,ad=4294967295*Math.random()|0;return(ap[255&aa]+ap[aa>>8&255]+ap[aa>>16&255]+ap[aa>>24&255]+"-"+ap[255&ab]+ap[ab>>8&255]+"-"+ap[ab>>16&15|64]+ap[ab>>24&255]+"-"+ap[63&ac|128]+ap[ac>>8&255]+"-"+ap[ac>>16&255]+ap[ac>>24&255]+ap[255&ad]+ap[ad>>8&255]+ap[ad>>16&255]+ap[ad>>24&255]).toLowerCase()}function ar(aa,ab,ac){return Math.max(ab,Math.min(ac,aa))}function as(aa,ab,ac){return(1-ac)*aa+ac*ab}Math.PI,Math.PI;class at{constructor(aa=0,ab=0){at.prototype.isVector2=!0,this.x=aa,this.y=ab}get width(){return this.x}set width(aa){this.x=aa}get height(){return this.y}set height(aa){this.y=aa}set(aa,ab){return this.x=aa,this.y=ab,this}setScalar(aa){return this.x=aa,this.y=aa,this}setX(aa){return this.x=aa,this}setY(aa){return this.y=aa,this}setComponent(aa,ab){switch(aa){case 0:this.x=ab;break;case 1:this.y=ab;break;default:throw new Error("index is out of range: "+aa)}return this}getComponent(aa){switch(aa){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+aa)}}clone(){return new this.constructor(this.x,this.y)}copy(aa){return this.x=aa.x,this.y=aa.y,this}add(aa){return this.x+=aa.x,this.y+=aa.y,this}addScalar(aa){return this.x+=aa,this.y+=aa,this}addVectors(aa,ab){return this.x=aa.x+ab.x,this.y=aa.y+ab.y,this}addScaledVector(aa,ab){return this.x+=aa.x*ab,this.y+=aa.y*ab,this}sub(aa){return this.x-=aa.x,this.y-=aa.y,this}subScalar(aa){return this.x-=aa,this.y-=aa,this}subVectors(aa,ab){return this.x=aa.x-ab.x,this.y=aa.y-ab.y,this}multiply(aa){return this.x*=aa.x,this.y*=aa.y,this}multiplyScalar(aa){return this.x*=aa,this.y*=aa,this}divide(aa){return this.x/=aa.x,this.y/=aa.y,this}divideScalar(aa){return this.multiplyScalar(1/aa)}applyMatrix3(aa){const ab=this.x,ac=this.y,ad=aa.elements;return this.x=ad[0]*ab+ad[3]*ac+ad[6],this.y=ad[1]*ab+ad[4]*ac+ad[7],this}min(aa){return this.x=Math.min(this.x,aa.x),this.y=Math.min(this.y,aa.y),this}max(aa){return this.x=Math.max(this.x,aa.x),this.y=Math.max(this.y,aa.y),this}clamp(aa,ab){return this.x=Math.max(aa.x,Math.min(ab.x,this.x)),this.y=Math.max(aa.y,Math.min(ab.y,this.y)),this}clampScalar(aa,ab){return this.x=Math.max(aa,Math.min(ab,this.x)),this.y=Math.max(aa,Math.min(ab,this.y)),this}clampLength(aa,ab){const ac=this.length();return this.divideScalar(ac||1).multiplyScalar(Math.max(aa,Math.min(ab,ac)))}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=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(aa){return this.x*aa.x+this.y*aa.y}cross(aa){return this.x*aa.y-this.y*aa.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}angleTo(aa){const ab=Math.sqrt(this.lengthSq()*aa.lengthSq());if(0===ab)return Math.PI/2;const ac=this.dot(aa)/ab;return Math.acos(ar(ac,-1,1))}distanceTo(aa){return Math.sqrt(this.distanceToSquared(aa))}distanceToSquared(aa){const ab=this.x-aa.x,ac=this.y-aa.y;return ab*ab+ac*ac}manhattanDistanceTo(aa){return Math.abs(this.x-aa.x)+Math.abs(this.y-aa.y)}setLength(aa){return this.normalize().multiplyScalar(aa)}lerp(aa,ab){return this.x+=(aa.x-this.x)*ab,this.y+=(aa.y-this.y)*ab,this}lerpVectors(aa,ab,ac){return this.x=aa.x+(ab.x-aa.x)*ac,this.y=aa.y+(ab.y-aa.y)*ac,this}equals(aa){return aa.x===this.x&&aa.y===this.y}fromArray(aa,ab=0){return this.x=aa[ab],this.y=aa[ab+1],this}toArray(aa=[],ab=0){return aa[ab]=this.x,aa[ab+1]=this.y,aa}fromBufferAttribute(aa,ab){return this.x=aa.getX(ab),this.y=aa.getY(ab),this}rotateAround(aa,ab){const ac=Math.cos(ab),ad=Math.sin(ab),ae=this.x-aa.x,af=this.y-aa.y;return this.x=ae*ac-af*ad+aa.x,this.y=ae*ad+af*ac+aa.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class au{constructor(aa,ab,ac,ad,ae,af,ag,ah,ai){au.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==aa&&this.set(aa,ab,ac,ad,ae,af,ag,ah,ai)}set(aa,ab,ac,ad,ae,af,ag,ah,ai){const aj=this.elements;return aj[0]=aa,aj[1]=ad,aj[2]=ag,aj[3]=ab,aj[4]=ae,aj[5]=ah,aj[6]=ac,aj[7]=af,aj[8]=ai,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(aa){const ab=this.elements,ac=aa.elements;return ab[0]=ac[0],ab[1]=ac[1],ab[2]=ac[2],ab[3]=ac[3],ab[4]=ac[4],ab[5]=ac[5],ab[6]=ac[6],ab[7]=ac[7],ab[8]=ac[8],this}extractBasis(aa,ab,ac){return aa.setFromMatrix3Column(this,0),ab.setFromMatrix3Column(this,1),ac.setFromMatrix3Column(this,2),this}setFromMatrix4(aa){const ab=aa.elements;return this.set(ab[0],ab[4],ab[8],ab[1],ab[5],ab[9],ab[2],ab[6],ab[10]),this}multiply(aa){return this.multiplyMatrices(this,aa)}premultiply(aa){return this.multiplyMatrices(aa,this)}multiplyMatrices(aa,ab){const ac=aa.elements,ad=ab.elements,ae=this.elements,af=ac[0],ag=ac[3],ah=ac[6],ai=ac[1],aj=ac[4],ak=ac[7],al=ac[2],am=ac[5],an=ac[8],ao=ad[0],ap=ad[3],aq=ad[6],ar=ad[1],as=ad[4],at=ad[7],au=ad[2],av=ad[5],aw=ad[8];return ae[0]=af*ao+ag*ar+ah*au,ae[3]=af*ap+ag*as+ah*av,ae[6]=af*aq+ag*at+ah*aw,ae[1]=ai*ao+aj*ar+ak*au,ae[4]=ai*ap+aj*as+ak*av,ae[7]=ai*aq+aj*at+ak*aw,ae[2]=al*ao+am*ar+an*au,ae[5]=al*ap+am*as+an*av,ae[8]=al*aq+am*at+an*aw,this}multiplyScalar(aa){const ab=this.elements;return ab[0]*=aa,ab[3]*=aa,ab[6]*=aa,ab[1]*=aa,ab[4]*=aa,ab[7]*=aa,ab[2]*=aa,ab[5]*=aa,ab[8]*=aa,this}determinant(){const aa=this.elements,ab=aa[0],ac=aa[1],ad=aa[2],ae=aa[3],af=aa[4],ag=aa[5],ah=aa[6],ai=aa[7],aj=aa[8];return ab*af*aj-ab*ag*ai-ac*ae*aj+ac*ag*ah+ad*ae*ai-ad*af*ah}invert(){const aa=this.elements,ab=aa[0],ac=aa[1],ad=aa[2],ae=aa[3],af=aa[4],ag=aa[5],ah=aa[6],ai=aa[7],aj=aa[8],ak=aj*af-ag*ai,al=ag*ah-aj*ae,am=ai*ae-af*ah,an=ab*ak+ac*al+ad*am;if(0===an)return this.set(0,0,0,0,0,0,0,0,0);const ao=1/an;return aa[0]=ak*ao,aa[1]=(ad*ai-aj*ac)*ao,aa[2]=(ag*ac-ad*af)*ao,aa[3]=al*ao,aa[4]=(aj*ab-ad*ah)*ao,aa[5]=(ad*ae-ag*ab)*ao,aa[6]=am*ao,aa[7]=(ac*ah-ai*ab)*ao,aa[8]=(af*ab-ac*ae)*ao,this}transpose(){let aa;const ab=this.elements;return aa=ab[1],ab[1]=ab[3],ab[3]=aa,aa=ab[2],ab[2]=ab[6],ab[6]=aa,aa=ab[5],ab[5]=ab[7],ab[7]=aa,this}getNormalMatrix(aa){return this.setFromMatrix4(aa).invert().transpose()}transposeIntoArray(aa){const ab=this.elements;return aa[0]=ab[0],aa[1]=ab[3],aa[2]=ab[6],aa[3]=ab[1],aa[4]=ab[4],aa[5]=ab[7],aa[6]=ab[2],aa[7]=ab[5],aa[8]=ab[8],this}setUvTransform(aa,ab,ac,ad,ae,af,ag){const ah=Math.cos(ae),ai=Math.sin(ae);return this.set(ac*ah,ac*ai,-ac*(ah*af+ai*ag)+af+aa,-ad*ai,ad*ah,-ad*(-ai*af+ah*ag)+ag+ab,0,0,1),this}scale(aa,ab){return this.premultiply(av.makeScale(aa,ab)),this}rotate(aa){return this.premultiply(av.makeRotation(-aa)),this}translate(aa,ab){return this.premultiply(av.makeTranslation(aa,ab)),this}makeTranslation(aa,ab){return aa.isVector2?this.set(1,0,aa.x,0,1,aa.y,0,0,1):this.set(1,0,aa,0,1,ab,0,0,1),this}makeRotation(aa){const ab=Math.cos(aa),ac=Math.sin(aa);return this.set(ab,-ac,0,ac,ab,0,0,0,1),this}makeScale(aa,ab){return this.set(aa,0,0,0,ab,0,0,0,1),this}equals(aa){const ab=this.elements,ac=aa.elements;for(let aa=0;aa<9;aa++)if(ab[aa]!==ac[aa])return!1;return!0}fromArray(aa,ab=0){for(let ac=0;ac<9;ac++)this.elements[ac]=aa[ac+ab];return this}toArray(aa=[],ab=0){const ac=this.elements;return aa[ab]=ac[0],aa[ab+1]=ac[1],aa[ab+2]=ac[2],aa[ab+3]=ac[3],aa[ab+4]=ac[4],aa[ab+5]=ac[5],aa[ab+6]=ac[6],aa[ab+7]=ac[7],aa[ab+8]=ac[8],aa}clone(){return(new this.constructor).fromArray(this.elements)}}const av=new au;function aw(aa){return document.createElementNS("http://www.w3.org/1999/xhtml",aa)}Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array;const ax=(new au).set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),ay=(new au).set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),az={[ag]:{transfer:aj,primaries:al,toReference:aa=>aa,fromReference:aa=>aa},[af]:{transfer:ak,primaries:al,toReference:aa=>aa.convertSRGBToLinear(),fromReference:aa=>aa.convertLinearToSRGB()},[ai]:{transfer:aj,primaries:"p3",toReference:aa=>aa.applyMatrix3(ay),fromReference:aa=>aa.applyMatrix3(ax)},[ah]:{transfer:ak,primaries:"p3",toReference:aa=>aa.convertSRGBToLinear().applyMatrix3(ay),fromReference:aa=>aa.applyMatrix3(ax).convertLinearToSRGB()}},aba=new Set([ag,ai]),abb={enabled:!0,_workingColorSpace:ag,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(aa){if(!aba.has(aa))throw new Error(`Unsupported working color space, "${aa}".`);this._workingColorSpace=aa},convert:function(aa,ab,ac){if(!1===this.enabled||ab===ac||!ab||!ac)return aa;const ad=az[ab].toReference;return(0,az[ac].fromReference)(ad(aa))},fromWorkingColorSpace:function(aa,ab){return this.convert(aa,this._workingColorSpace,ab)},toWorkingColorSpace:function(aa,ab){return this.convert(aa,ab,this._workingColorSpace)},getPrimaries:function(aa){return az[aa].primaries},getTransfer:function(aa){return""===aa?aj:az[aa].transfer}};function abc(aa){return aa<.04045?.0773993808*aa:Math.pow(.9478672986*aa+.0521327014,2.4)}function abd(aa){return aa<.0031308?12.92*aa:1.055*Math.pow(aa,.41666)-.055}let abe;class abf{static getDataURL(aa){if(/^data:/i.test(aa.src))return aa.src;if("undefined"==typeof HTMLCanvasElement)return aa.src;let ab;if(aa instanceof HTMLCanvasElement)ab=aa;else{void 0===abe&&(abe=aw("canvas")),abe.width=aa.width,abe.height=aa.height;const ac=abe.getContext("2d");aa instanceof ImageData?ac.putImageData(aa,0,0):ac.drawImage(aa,0,0,aa.width,aa.height),ab=abe}return ab.width>2048||ab.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",aa),ab.toDataURL("image/jpeg",.6)):ab.toDataURL("image/png")}static sRGBToLinear(aa){if("undefined"!=typeof HTMLImageElement&&aa instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&aa instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&aa instanceof ImageBitmap){const ab=aw("canvas");ab.width=aa.width,ab.height=aa.height;const ac=ab.getContext("2d");ac.drawImage(aa,0,0,aa.width,aa.height);const ad=ac.getImageData(0,0,aa.width,aa.height),ae=ad.data;for(let aa=0;aa<ae.length;aa++)ae[aa]=255*abc(ae[aa]/255);return ac.putImageData(ad,0,0),ab}if(aa.data){const ab=aa.data.slice(0);for(let aa=0;aa<ab.length;aa++)ab instanceof Uint8Array||ab instanceof Uint8ClampedArray?ab[aa]=Math.floor(255*abc(ab[aa]/255)):ab[aa]=abc(ab[aa]);return{data:ab,width:aa.width,height:aa.height}}return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),aa}}let abg=0;class abh{constructor(aa=null){this.isSource=!0,Object.defineProperty(this,"id",{value:abg++}),this.uuid=aq(),this.data=aa,this.dataReady=!0,this.version=0}set needsUpdate(aa){!0===aa&&this.version++}toJSON(aa){const ab=void 0===aa||"string"==typeof aa;if(!ab&&void 0!==aa.images[this.uuid])return aa.images[this.uuid];const ac={uuid:this.uuid,url:""},ad=this.data;if(null!==ad){let aa;if(Array.isArray(ad)){aa=[];for(let ab=0,ac=ad.length;ab<ac;ab++)ad[ab].isDataTexture?aa.push(abi(ad[ab].image)):aa.push(abi(ad[ab]))}else aa=abi(ad);ac.url=aa}return ab||(aa.images[this.uuid]=ac),ac}}function abi(aa){return"undefined"!=typeof HTMLImageElement&&aa instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&aa instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&aa instanceof ImageBitmap?abf.getDataURL(aa):aa.data?{data:Array.from(aa.data),width:aa.width,height:aa.height,type:aa.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let abj=0;class abk extends ao{constructor(aa=abk.DEFAULT_IMAGE,ab=abk.DEFAULT_MAPPING,ac=1001,ad=1001,ae=1006,af=1008,ag=1023,ah=1009,ai=abk.DEFAULT_ANISOTROPY,aj=""){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:abj++}),this.uuid=aq(),this.name="",this.source=new abh(aa),this.mipmaps=[],this.mapping=ab,this.channel=0,this.wrapS=ac,this.wrapT=ad,this.magFilter=ae,this.minFilter=af,this.anisotropy=ai,this.format=ag,this.internalFormat=null,this.type=ah,this.offset=new at(0,0),this.repeat=new at(1,1),this.center=new at(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new au,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=aj,this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1,this.pmremVersion=0}get image(){return this.source.data}set image(aa=null){this.source.data=aa}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return(new this.constructor).copy(this)}copy(aa){return this.name=aa.name,this.source=aa.source,this.mipmaps=aa.mipmaps.slice(0),this.mapping=aa.mapping,this.channel=aa.channel,this.wrapS=aa.wrapS,this.wrapT=aa.wrapT,this.magFilter=aa.magFilter,this.minFilter=aa.minFilter,this.anisotropy=aa.anisotropy,this.format=aa.format,this.internalFormat=aa.internalFormat,this.type=aa.type,this.offset.copy(aa.offset),this.repeat.copy(aa.repeat),this.center.copy(aa.center),this.rotation=aa.rotation,this.matrixAutoUpdate=aa.matrixAutoUpdate,this.matrix.copy(aa.matrix),this.generateMipmaps=aa.generateMipmaps,this.premultiplyAlpha=aa.premultiplyAlpha,this.flipY=aa.flipY,this.unpackAlignment=aa.unpackAlignment,this.colorSpace=aa.colorSpace,this.userData=JSON.parse(JSON.stringify(aa.userData)),this.needsUpdate=!0,this}toJSON(aa){const ab=void 0===aa||"string"==typeof aa;if(!ab&&void 0!==aa.textures[this.uuid])return aa.textures[this.uuid];const ac={metadata:{version:4.6,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(aa).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(ac.userData=this.userData),ab||(aa.textures[this.uuid]=ac),ac}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(aa){if(300!==this.mapping)return aa;if(aa.applyMatrix3(this.matrix),aa.x<0||aa.x>1)switch(this.wrapS){case 1e3:aa.x=aa.x-Math.floor(aa.x);break;case 1001:aa.x=aa.x<0?0:1;break;case 1002:1===Math.abs(Math.floor(aa.x)%2)?aa.x=Math.ceil(aa.x)-aa.x:aa.x=aa.x-Math.floor(aa.x)}if(aa.y<0||aa.y>1)switch(this.wrapT){case 1e3:aa.y=aa.y-Math.floor(aa.y);break;case 1001:aa.y=aa.y<0?0:1;break;case 1002:1===Math.abs(Math.floor(aa.y)%2)?aa.y=Math.ceil(aa.y)-aa.y:aa.y=aa.y-Math.floor(aa.y)}return this.flipY&&(aa.y=1-aa.y),aa}set needsUpdate(aa){!0===aa&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(aa){!0===aa&&this.pmremVersion++}}abk.DEFAULT_IMAGE=null,abk.DEFAULT_MAPPING=300,abk.DEFAULT_ANISOTROPY=1,Symbol.iterator;class abl{constructor(aa=0,ab=0,ac=0,ad=1){this.isQuaternion=!0,this._x=aa,this._y=ab,this._z=ac,this._w=ad}static slerpFlat(aa,ab,ac,ad,ae,af,ag){let ah=ac[ad+0],ai=ac[ad+1],aj=ac[ad+2],ak=ac[ad+3];const al=ae[af+0],am=ae[af+1],an=ae[af+2],ao=ae[af+3];if(0===ag)return aa[ab+0]=ah,aa[ab+1]=ai,aa[ab+2]=aj,void(aa[ab+3]=ak);if(1===ag)return aa[ab+0]=al,aa[ab+1]=am,aa[ab+2]=an,void(aa[ab+3]=ao);if(ak!==ao||ah!==al||ai!==am||aj!==an){let aa=1-ag;const ab=ah*al+ai*am+aj*an+ak*ao,ac=ab>=0?1:-1,ad=1-ab*ab;if(ad>Number.EPSILON){const ae=Math.sqrt(ad),af=Math.atan2(ae,ab*ac);aa=Math.sin(aa*af)/ae,ag=Math.sin(ag*af)/ae}const ae=ag*ac;if(ah=ah*aa+al*ae,ai=ai*aa+am*ae,aj=aj*aa+an*ae,ak=ak*aa+ao*ae,aa===1-ag){const aa=1/Math.sqrt(ah*ah+ai*ai+aj*aj+ak*ak);ah*=aa,ai*=aa,aj*=aa,ak*=aa}}aa[ab]=ah,aa[ab+1]=ai,aa[ab+2]=aj,aa[ab+3]=ak}static multiplyQuaternionsFlat(aa,ab,ac,ad,ae,af){const ag=ac[ad],ah=ac[ad+1],ai=ac[ad+2],aj=ac[ad+3],ak=ae[af],al=ae[af+1],am=ae[af+2],an=ae[af+3];return aa[ab]=ag*an+aj*ak+ah*am-ai*al,aa[ab+1]=ah*an+aj*al+ai*ak-ag*am,aa[ab+2]=ai*an+aj*am+ag*al-ah*ak,aa[ab+3]=aj*an-ag*ak-ah*al-ai*am,aa}get x(){return this._x}set x(aa){this._x=aa,this._onChangeCallback()}get y(){return this._y}set y(aa){this._y=aa,this._onChangeCallback()}get z(){return this._z}set z(aa){this._z=aa,this._onChangeCallback()}get w(){return this._w}set w(aa){this._w=aa,this._onChangeCallback()}set(aa,ab,ac,ad){return this._x=aa,this._y=ab,this._z=ac,this._w=ad,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(aa){return this._x=aa.x,this._y=aa.y,this._z=aa.z,this._w=aa.w,this._onChangeCallback(),this}setFromEuler(aa,ab=!0){const ac=aa._x,ad=aa._y,ae=aa._z,af=aa._order,ag=Math.cos,ah=Math.sin,ai=ag(ac/2),aj=ag(ad/2),ak=ag(ae/2),al=ah(ac/2),am=ah(ad/2),an=ah(ae/2);switch(af){case"XYZ":this._x=al*aj*ak+ai*am*an,this._y=ai*am*ak-al*aj*an,this._z=ai*aj*an+al*am*ak,this._w=ai*aj*ak-al*am*an;break;case"YXZ":this._x=al*aj*ak+ai*am*an,this._y=ai*am*ak-al*aj*an,this._z=ai*aj*an-al*am*ak,this._w=ai*aj*ak+al*am*an;break;case"ZXY":this._x=al*aj*ak-ai*am*an,this._y=ai*am*ak+al*aj*an,this._z=ai*aj*an+al*am*ak,this._w=ai*aj*ak-al*am*an;break;case"ZYX":this._x=al*aj*ak-ai*am*an,this._y=ai*am*ak+al*aj*an,this._z=ai*aj*an-al*am*ak,this._w=ai*aj*ak+al*am*an;break;case"YZX":this._x=al*aj*ak+ai*am*an,this._y=ai*am*ak+al*aj*an,this._z=ai*aj*an-al*am*ak,this._w=ai*aj*ak-al*am*an;break;case"XZY":this._x=al*aj*ak-ai*am*an,this._y=ai*am*ak-al*aj*an,this._z=ai*aj*an+al*am*ak,this._w=ai*aj*ak+al*am*an;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+af)}return!0===ab&&this._onChangeCallback(),this}setFromAxisAngle(aa,ab){const ac=ab/2,ad=Math.sin(ac);return this._x=aa.x*ad,this._y=aa.y*ad,this._z=aa.z*ad,this._w=Math.cos(ac),this._onChangeCallback(),this}setFromRotationMatrix(aa){const ab=aa.elements,ac=ab[0],ad=ab[4],ae=ab[8],af=ab[1],ag=ab[5],ah=ab[9],ai=ab[2],aj=ab[6],ak=ab[10],al=ac+ag+ak;if(al>0){const aa=.5/Math.sqrt(al+1);this._w=.25/aa,this._x=(aj-ah)*aa,this._y=(ae-ai)*aa,this._z=(af-ad)*aa}else if(ac>ag&&ac>ak){const aa=2*Math.sqrt(1+ac-ag-ak);this._w=(aj-ah)/aa,this._x=.25*aa,this._y=(ad+af)/aa,this._z=(ae+ai)/aa}else if(ag>ak){const aa=2*Math.sqrt(1+ag-ac-ak);this._w=(ae-ai)/aa,this._x=(ad+af)/aa,this._y=.25*aa,this._z=(ah+aj)/aa}else{const aa=2*Math.sqrt(1+ak-ac-ag);this._w=(af-ad)/aa,this._x=(ae+ai)/aa,this._y=(ah+aj)/aa,this._z=.25*aa}return this._onChangeCallback(),this}setFromUnitVectors(aa,ab){let ac=aa.dot(ab)+1;return ac<Number.EPSILON?(ac=0,Math.abs(aa.x)>Math.abs(aa.z)?(this._x=-aa.y,this._y=aa.x,this._z=0,this._w=ac):(this._x=0,this._y=-aa.z,this._z=aa.y,this._w=ac)):(this._x=aa.y*ab.z-aa.z*ab.y,this._y=aa.z*ab.x-aa.x*ab.z,this._z=aa.x*ab.y-aa.y*ab.x,this._w=ac),this.normalize()}angleTo(aa){return 2*Math.acos(Math.abs(ar(this.dot(aa),-1,1)))}rotateTowards(aa,ab){const ac=this.angleTo(aa);if(0===ac)return this;const ad=Math.min(1,ab/ac);return this.slerp(aa,ad),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(aa){return this._x*aa._x+this._y*aa._y+this._z*aa._z+this._w*aa._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 aa=this.length();return 0===aa?(this._x=0,this._y=0,this._z=0,this._w=1):(aa=1/aa,this._x=this._x*aa,this._y=this._y*aa,this._z=this._z*aa,this._w=this._w*aa),this._onChangeCallback(),this}multiply(aa){return this.multiplyQuaternions(this,aa)}premultiply(aa){return this.multiplyQuaternions(aa,this)}multiplyQuaternions(aa,ab){const ac=aa._x,ad=aa._y,ae=aa._z,af=aa._w,ag=ab._x,ah=ab._y,ai=ab._z,aj=ab._w;return this._x=ac*aj+af*ag+ad*ai-ae*ah,this._y=ad*aj+af*ah+ae*ag-ac*ai,this._z=ae*aj+af*ai+ac*ah-ad*ag,this._w=af*aj-ac*ag-ad*ah-ae*ai,this._onChangeCallback(),this}slerp(aa,ab){if(0===ab)return this;if(1===ab)return this.copy(aa);const ac=this._x,ad=this._y,ae=this._z,af=this._w;let ag=af*aa._w+ac*aa._x+ad*aa._y+ae*aa._z;if(ag<0?(this._w=-aa._w,this._x=-aa._x,this._y=-aa._y,this._z=-aa._z,ag=-ag):this.copy(aa),ag>=1)return this._w=af,this._x=ac,this._y=ad,this._z=ae,this;const ah=1-ag*ag;if(ah<=Number.EPSILON){const aa=1-ab;return this._w=aa*af+ab*this._w,this._x=aa*ac+ab*this._x,this._y=aa*ad+ab*this._y,this._z=aa*ae+ab*this._z,this.normalize(),this}const ai=Math.sqrt(ah),aj=Math.atan2(ai,ag),ak=Math.sin((1-ab)*aj)/ai,al=Math.sin(ab*aj)/ai;return this._w=af*ak+this._w*al,this._x=ac*ak+this._x*al,this._y=ad*ak+this._y*al,this._z=ae*ak+this._z*al,this._onChangeCallback(),this}slerpQuaternions(aa,ab,ac){return this.copy(aa).slerp(ab,ac)}random(){const aa=2*Math.PI*Math.random(),ab=2*Math.PI*Math.random(),ac=Math.random(),ad=Math.sqrt(1-ac),ae=Math.sqrt(ac);return this.set(ad*Math.sin(aa),ad*Math.cos(aa),ae*Math.sin(ab),ae*Math.cos(ab))}equals(aa){return aa._x===this._x&&aa._y===this._y&&aa._z===this._z&&aa._w===this._w}fromArray(aa,ab=0){return this._x=aa[ab],this._y=aa[ab+1],this._z=aa[ab+2],this._w=aa[ab+3],this._onChangeCallback(),this}toArray(aa=[],ab=0){return aa[ab]=this._x,aa[ab+1]=this._y,aa[ab+2]=this._z,aa[ab+3]=this._w,aa}fromBufferAttribute(aa,ab){return this._x=aa.getX(ab),this._y=aa.getY(ab),this._z=aa.getZ(ab),this._w=aa.getW(ab),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(aa){return this._onChangeCallback=aa,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class abm{constructor(aa=0,ab=0,ac=0){abm.prototype.isVector3=!0,this.x=aa,this.y=ab,this.z=ac}set(aa,ab,ac){return void 0===ac&&(ac=this.z),this.x=aa,this.y=ab,this.z=ac,this}setScalar(aa){return this.x=aa,this.y=aa,this.z=aa,this}setX(aa){return this.x=aa,this}setY(aa){return this.y=aa,this}setZ(aa){return this.z=aa,this}setComponent(aa,ab){switch(aa){case 0:this.x=ab;break;case 1:this.y=ab;break;case 2:this.z=ab;break;default:throw new Error("index is out of range: "+aa)}return this}getComponent(aa){switch(aa){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+aa)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(aa){return this.x=aa.x,this.y=aa.y,this.z=aa.z,this}add(aa){return this.x+=aa.x,this.y+=aa.y,this.z+=aa.z,this}addScalar(aa){return this.x+=aa,this.y+=aa,this.z+=aa,this}addVectors(aa,ab){return this.x=aa.x+ab.x,this.y=aa.y+ab.y,this.z=aa.z+ab.z,this}addScaledVector(aa,ab){return this.x+=aa.x*ab,this.y+=aa.y*ab,this.z+=aa.z*ab,this}sub(aa){return this.x-=aa.x,this.y-=aa.y,this.z-=aa.z,this}subScalar(aa){return this.x-=aa,this.y-=aa,this.z-=aa,this}subVectors(aa,ab){return this.x=aa.x-ab.x,this.y=aa.y-ab.y,this.z=aa.z-ab.z,this}multiply(aa){return this.x*=aa.x,this.y*=aa.y,this.z*=aa.z,this}multiplyScalar(aa){return this.x*=aa,this.y*=aa,this.z*=aa,this}multiplyVectors(aa,ab){return this.x=aa.x*ab.x,this.y=aa.y*ab.y,this.z=aa.z*ab.z,this}applyEuler(aa){return this.applyQuaternion(abo.setFromEuler(aa))}applyAxisAngle(aa,ab){return this.applyQuaternion(abo.setFromAxisAngle(aa,ab))}applyMatrix3(aa){const ab=this.x,ac=this.y,ad=this.z,ae=aa.elements;return this.x=ae[0]*ab+ae[3]*ac+ae[6]*ad,this.y=ae[1]*ab+ae[4]*ac+ae[7]*ad,this.z=ae[2]*ab+ae[5]*ac+ae[8]*ad,this}applyNormalMatrix(aa){return this.applyMatrix3(aa).normalize()}applyMatrix4(aa){const ab=this.x,ac=this.y,ad=this.z,ae=aa.elements,af=1/(ae[3]*ab+ae[7]*ac+ae[11]*ad+ae[15]);return this.x=(ae[0]*ab+ae[4]*ac+ae[8]*ad+ae[12])*af,this.y=(ae[1]*ab+ae[5]*ac+ae[9]*ad+ae[13])*af,this.z=(ae[2]*ab+ae[6]*ac+ae[10]*ad+ae[14])*af,this}applyQuaternion(aa){const ab=this.x,ac=this.y,ad=this.z,ae=aa.x,af=aa.y,ag=aa.z,ah=aa.w,ai=2*(af*ad-ag*ac),aj=2*(ag*ab-ae*ad),ak=2*(ae*ac-af*ab);return this.x=ab+ah*ai+af*ak-ag*aj,this.y=ac+ah*aj+ag*ai-ae*ak,this.z=ad+ah*ak+ae*aj-af*ai,this}project(aa){return this.applyMatrix4(aa.matrixWorldInverse).applyMatrix4(aa.projectionMatrix)}unproject(aa){return this.applyMatrix4(aa.projectionMatrixInverse).applyMatrix4(aa.matrixWorld)}transformDirection(aa){const ab=this.x,ac=this.y,ad=this.z,ae=aa.elements;return this.x=ae[0]*ab+ae[4]*ac+ae[8]*ad,this.y=ae[1]*ab+ae[5]*ac+ae[9]*ad,this.z=ae[2]*ab+ae[6]*ac+ae[10]*ad,this.normalize()}divide(aa){return this.x/=aa.x,this.y/=aa.y,this.z/=aa.z,this}divideScalar(aa){return this.multiplyScalar(1/aa)}min(aa){return this.x=Math.min(this.x,aa.x),this.y=Math.min(this.y,aa.y),this.z=Math.min(this.z,aa.z),this}max(aa){return this.x=Math.max(this.x,aa.x),this.y=Math.max(this.y,aa.y),this.z=Math.max(this.z,aa.z),this}clamp(aa,ab){return this.x=Math.max(aa.x,Math.min(ab.x,this.x)),this.y=Math.max(aa.y,Math.min(ab.y,this.y)),this.z=Math.max(aa.z,Math.min(ab.z,this.z)),this}clampScalar(aa,ab){return this.x=Math.max(aa,Math.min(ab,this.x)),this.y=Math.max(aa,Math.min(ab,this.y)),this.z=Math.max(aa,Math.min(ab,this.z)),this}clampLength(aa,ab){const ac=this.length();return this.divideScalar(ac||1).multiplyScalar(Math.max(aa,Math.min(ab,ac)))}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=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(aa){return this.x*aa.x+this.y*aa.y+this.z*aa.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(aa){return this.normalize().multiplyScalar(aa)}lerp(aa,ab){return this.x+=(aa.x-this.x)*ab,this.y+=(aa.y-this.y)*ab,this.z+=(aa.z-this.z)*ab,this}lerpVectors(aa,ab,ac){return this.x=aa.x+(ab.x-aa.x)*ac,this.y=aa.y+(ab.y-aa.y)*ac,this.z=aa.z+(ab.z-aa.z)*ac,this}cross(aa){return this.crossVectors(this,aa)}crossVectors(aa,ab){const ac=aa.x,ad=aa.y,ae=aa.z,af=ab.x,ag=ab.y,ah=ab.z;return this.x=ad*ah-ae*ag,this.y=ae*af-ac*ah,this.z=ac*ag-ad*af,this}projectOnVector(aa){const ab=aa.lengthSq();if(0===ab)return this.set(0,0,0);const ac=aa.dot(this)/ab;return this.copy(aa).multiplyScalar(ac)}projectOnPlane(aa){return abn.copy(this).projectOnVector(aa),this.sub(abn)}reflect(aa){return this.sub(abn.copy(aa).multiplyScalar(2*this.dot(aa)))}angleTo(aa){const ab=Math.sqrt(this.lengthSq()*aa.lengthSq());if(0===ab)return Math.PI/2;const ac=this.dot(aa)/ab;return Math.acos(ar(ac,-1,1))}distanceTo(aa){return Math.sqrt(this.distanceToSquared(aa))}distanceToSquared(aa){const ab=this.x-aa.x,ac=this.y-aa.y,ad=this.z-aa.z;return ab*ab+ac*ac+ad*ad}manhattanDistanceTo(aa){return Math.abs(this.x-aa.x)+Math.abs(this.y-aa.y)+Math.abs(this.z-aa.z)}setFromSpherical(aa){return this.setFromSphericalCoords(aa.radius,aa.phi,aa.theta)}setFromSphericalCoords(aa,ab,ac){const ad=Math.sin(ab)*aa;return this.x=ad*Math.sin(ac),this.y=Math.cos(ab)*aa,this.z=ad*Math.cos(ac),this}setFromCylindrical(aa){return this.setFromCylindricalCoords(aa.radius,aa.theta,aa.y)}setFromCylindricalCoords(aa,ab,ac){return this.x=aa*Math.sin(ab),this.y=ac,this.z=aa*Math.cos(ab),this}setFromMatrixPosition(aa){const ab=aa.elements;return this.x=ab[12],this.y=ab[13],this.z=ab[14],this}setFromMatrixScale(aa){const ab=this.setFromMatrixColumn(aa,0).length(),ac=this.setFromMatrixColumn(aa,1).length(),ad=this.setFromMatrixColumn(aa,2).length();return this.x=ab,this.y=ac,this.z=ad,this}setFromMatrixColumn(aa,ab){return this.fromArray(aa.elements,4*ab)}setFromMatrix3Column(aa,ab){return this.fromArray(aa.elements,3*ab)}setFromEuler(aa){return this.x=aa._x,this.y=aa._y,this.z=aa._z,this}setFromColor(aa){return this.x=aa.r,this.y=aa.g,this.z=aa.b,this}equals(aa){return aa.x===this.x&&aa.y===this.y&&aa.z===this.z}fromArray(aa,ab=0){return this.x=aa[ab],this.y=aa[ab+1],this.z=aa[ab+2],this}toArray(aa=[],ab=0){return aa[ab]=this.x,aa[ab+1]=this.y,aa[ab+2]=this.z,aa}fromBufferAttribute(aa,ab){return this.x=aa.getX(ab),this.y=aa.getY(ab),this.z=aa.getZ(ab),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const aa=Math.random()*Math.PI*2,ab=2*Math.random()-1,ac=Math.sqrt(1-ab*ab);return this.x=ac*Math.cos(aa),this.y=ab,this.z=ac*Math.sin(aa),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const abn=new abm,abo=new abl;class abp{constructor(aa=new abm(1/0,1/0,1/0),ab=new abm(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=aa,this.max=ab}set(aa,ab){return this.min.copy(aa),this.max.copy(ab),this}setFromArray(aa){this.makeEmpty();for(let ab=0,ac=aa.length;ab<ac;ab+=3)this.expandByPoint(abr.fromArray(aa,ab));return this}setFromBufferAttribute(aa){this.makeEmpty();for(let ab=0,ac=aa.count;ab<ac;ab++)this.expandByPoint(abr.fromBufferAttribute(aa,ab));return this}setFromPoints(aa){this.makeEmpty();for(let ab=0,ac=aa.length;ab<ac;ab++)this.expandByPoint(aa[ab]);return this}setFromCenterAndSize(aa,ab){const ac=abr.copy(ab).multiplyScalar(.5);return this.min.copy(aa).sub(ac),this.max.copy(aa).add(ac),this}setFromObject(aa,ab=!1){return this.makeEmpty(),this.expandByObject(aa,ab)}clone(){return(new this.constructor).copy(this)}copy(aa){return this.min.copy(aa.min),this.max.copy(aa.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(aa){return this.isEmpty()?aa.set(0,0,0):aa.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(aa){return this.isEmpty()?aa.set(0,0,0):aa.subVectors(this.max,this.min)}expandByPoint(aa){return this.min.min(aa),this.max.max(aa),this}expandByVector(aa){return this.min.sub(aa),this.max.add(aa),this}expandByScalar(aa){return this.min.addScalar(-aa),this.max.addScalar(aa),this}expandByObject(aa,ab=!1){aa.updateWorldMatrix(!1,!1);const ac=aa.geometry;if(void 0!==ac){const ad=ac.getAttribute("position");if(!0===ab&&void 0!==ad&&!0!==aa.isInstancedMesh)for(let ab=0,ac=ad.count;ab<ac;ab++)!0===aa.isMesh?aa.getVertexPosition(ab,abr):abr.fromBufferAttribute(ad,ab),abr.applyMatrix4(aa.matrixWorld),this.expandByPoint(abr);else void 0!==aa.boundingBox?(null===aa.boundingBox&&aa.computeBoundingBox(),abs.copy(aa.boundingBox)):(null===ac.boundingBox&&ac.computeBoundingBox(),abs.copy(ac.boundingBox)),abs.applyMatrix4(aa.matrixWorld),this.union(abs)}const ad=aa.children;for(let aa=0,ac=ad.length;aa<ac;aa++)this.expandByObject(ad[aa],ab);return this}containsPoint(aa){return!(aa.x<this.min.x||aa.x>this.max.x||aa.y<this.min.y||aa.y>this.max.y||aa.z<this.min.z||aa.z>this.max.z)}containsBox(aa){return this.min.x<=aa.min.x&&aa.max.x<=this.max.x&&this.min.y<=aa.min.y&&aa.max.y<=this.max.y&&this.min.z<=aa.min.z&&aa.max.z<=this.max.z}getParameter(aa,ab){return ab.set((aa.x-this.min.x)/(this.max.x-this.min.x),(aa.y-this.min.y)/(this.max.y-this.min.y),(aa.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(aa){return!(aa.max.x<this.min.x||aa.min.x>this.max.x||aa.max.y<this.min.y||aa.min.y>this.max.y||aa.max.z<this.min.z||aa.min.z>this.max.z)}intersectsSphere(aa){return this.clampPoint(aa.center,abr),abr.distanceToSquared(aa.center)<=aa.radius*aa.radius}intersectsPlane(aa){let ab,ac;return aa.normal.x>0?(ab=aa.normal.x*this.min.x,ac=aa.normal.x*this.max.x):(ab=aa.normal.x*this.max.x,ac=aa.normal.x*this.min.x),aa.normal.y>0?(ab+=aa.normal.y*this.min.y,ac+=aa.normal.y*this.max.y):(ab+=aa.normal.y*this.max.y,ac+=aa.normal.y*this.min.y),aa.normal.z>0?(ab+=aa.normal.z*this.min.z,ac+=aa.normal.z*this.max.z):(ab+=aa.normal.z*this.max.z,ac+=aa.normal.z*this.min.z),ab<=-aa.constant&&ac>=-aa.constant}intersectsTriangle(aa){if(this.isEmpty())return!1;this.getCenter(abz),abca.subVectors(this.max,abz),abt.subVectors(aa.a,abz),abu.subVectors(aa.b,abz),abv.subVectors(aa.c,abz),abw.subVectors(abu,abt),abx.subVectors(abv,abu),aby.subVectors(abt,abv);let ab=[0,-abw.z,abw.y,0,-abx.z,abx.y,0,-aby.z,aby.y,abw.z,0,-abw.x,abx.z,0,-abx.x,aby.z,0,-aby.x,-abw.y,abw.x,0,-abx.y,abx.x,0,-aby.y,aby.x,0];return!!abcd(ab,abt,abu,abv,abca)&&(ab=[1,0,0,0,1,0,0,0,1],!!abcd(ab,abt,abu,abv,abca)&&(abcb.crossVectors(abw,abx),ab=[abcb.x,abcb.y,abcb.z],abcd(ab,abt,abu,abv,abca)))}clampPoint(aa,ab){return ab.copy(aa).clamp(this.min,this.max)}distanceToPoint(aa){return this.clampPoint(aa,abr).distanceTo(aa)}getBoundingSphere(aa){return this.isEmpty()?aa.makeEmpty():(this.getCenter(aa.center),aa.radius=.5*this.getSize(abr).length()),aa}intersect(aa){return this.min.max(aa.min),this.max.min(aa.max),this.isEmpty()&&this.makeEmpty(),this}union(aa){return this.min.min(aa.min),this.max.max(aa.max),this}applyMatrix4(aa){return this.isEmpty()||(abq[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(aa),abq[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(aa),abq[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(aa),abq[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(aa),abq[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(aa),abq[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(aa),abq[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(aa),abq[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(aa),this.setFromPoints(abq)),this}translate(aa){return this.min.add(aa),this.max.add(aa),this}equals(aa){return aa.min.equals(this.min)&&aa.max.equals(this.max)}}const abq=[new abm,new abm,new abm,new abm,new abm,new abm,new abm,new abm],abr=new abm,abs=new abp,abt=new abm,abu=new abm,abv=new abm,abw=new abm,abx=new abm,aby=new abm,abz=new abm,abca=new abm,abcb=new abm,abcc=new abm;function abcd(aa,ab,ac,ad,ae){for(let af=0,ag=aa.length-3;af<=ag;af+=3){abcc.fromArray(aa,af);const ag=ae.x*Math.abs(abcc.x)+ae.y*Math.abs(abcc.y)+ae.z*Math.abs(abcc.z),ah=ab.dot(abcc),ai=ac.dot(abcc),aj=ad.dot(abcc);if(Math.max(-Math.max(ah,ai,aj),Math.min(ah,ai,aj))>ag)return!1}return!0}const abce=new abp,abcf=new abm,abcg=new abm;class abch{constructor(aa=new abm,ab=-1){this.isSphere=!0,this.center=aa,this.radius=ab}set(aa,ab){return this.center.copy(aa),this.radius=ab,this}setFromPoints(aa,ab){const ac=this.center;void 0!==ab?ac.copy(ab):abce.setFromPoints(aa).getCenter(ac);let ad=0;for(let ab=0,ae=aa.length;ab<ae;ab++)ad=Math.max(ad,ac.distanceToSquared(aa[ab]));return this.radius=Math.sqrt(ad),this}copy(aa){return this.center.copy(aa.center),this.radius=aa.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(aa){return aa.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(aa){return aa.distanceTo(this.center)-this.radius}intersectsSphere(aa){const ab=this.radius+aa.radius;return aa.center.distanceToSquared(this.center)<=ab*ab}intersectsBox(aa){return aa.intersectsSphere(this)}intersectsPlane(aa){return Math.abs(aa.distanceToPoint(this.center))<=this.radius}clampPoint(aa,ab){const ac=this.center.distanceToSquared(aa);return ab.copy(aa),ac>this.radius*this.radius&&(ab.sub(this.center).normalize(),ab.multiplyScalar(this.radius).add(this.center)),ab}getBoundingBox(aa){return this.isEmpty()?(aa.makeEmpty(),aa):(aa.set(this.center,this.center),aa.expandByScalar(this.radius),aa)}applyMatrix4(aa){return this.center.applyMatrix4(aa),this.radius=this.radius*aa.getMaxScaleOnAxis(),this}translate(aa){return this.center.add(aa),this}expandByPoint(aa){if(this.isEmpty())return this.center.copy(aa),this.radius=0,this;abcf.subVectors(aa,this.center);const ab=abcf.lengthSq();if(ab>this.radius*this.radius){const aa=Math.sqrt(ab),ac=.5*(aa-this.radius);this.center.addScaledVector(abcf,ac/aa),this.radius+=ac}return this}union(aa){return aa.isEmpty()?this:this.isEmpty()?(this.copy(aa),this):(!0===this.center.equals(aa.center)?this.radius=Math.max(this.radius,aa.radius):(abcg.subVectors(aa.center,this.center).setLength(aa.radius),this.expandByPoint(abcf.copy(aa.center).add(abcg)),this.expandByPoint(abcf.copy(aa.center).sub(abcg))),this)}equals(aa){return aa.center.equals(this.center)&&aa.radius===this.radius}clone(){return(new this.constructor).copy(this)}}class abci{constructor(aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap){abci.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==aa&&this.set(aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap)}set(aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap){const aq=this.elements;return aq[0]=aa,aq[4]=ab,aq[8]=ac,aq[12]=ad,aq[1]=ae,aq[5]=af,aq[9]=ag,aq[13]=ah,aq[2]=ai,aq[6]=aj,aq[10]=ak,aq[14]=al,aq[3]=am,aq[7]=an,aq[11]=ao,aq[15]=ap,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 abci).fromArray(this.elements)}copy(aa){const ab=this.elements,ac=aa.elements;return ab[0]=ac[0],ab[1]=ac[1],ab[2]=ac[2],ab[3]=ac[3],ab[4]=ac[4],ab[5]=ac[5],ab[6]=ac[6],ab[7]=ac[7],ab[8]=ac[8],ab[9]=ac[9],ab[10]=ac[10],ab[11]=ac[11],ab[12]=ac[12],ab[13]=ac[13],ab[14]=ac[14],ab[15]=ac[15],this}copyPosition(aa){const ab=this.elements,ac=aa.elements;return ab[12]=ac[12],ab[13]=ac[13],ab[14]=ac[14],this}setFromMatrix3(aa){const ab=aa.elements;return this.set(ab[0],ab[3],ab[6],0,ab[1],ab[4],ab[7],0,ab[2],ab[5],ab[8],0,0,0,0,1),this}extractBasis(aa,ab,ac){return aa.setFromMatrixColumn(this,0),ab.setFromMatrixColumn(this,1),ac.setFromMatrixColumn(this,2),this}makeBasis(aa,ab,ac){return this.set(aa.x,ab.x,ac.x,0,aa.y,ab.y,ac.y,0,aa.z,ab.z,ac.z,0,0,0,0,1),this}extractRotation(aa){const ab=this.elements,ac=aa.elements,ad=1/abcj.setFromMatrixColumn(aa,0).length(),ae=1/abcj.setFromMatrixColumn(aa,1).length(),af=1/abcj.setFromMatrixColumn(aa,2).length();return ab[0]=ac[0]*ad,ab[1]=ac[1]*ad,ab[2]=ac[2]*ad,ab[3]=0,ab[4]=ac[4]*ae,ab[5]=ac[5]*ae,ab[6]=ac[6]*ae,ab[7]=0,ab[8]=ac[8]*af,ab[9]=ac[9]*af,ab[10]=ac[10]*af,ab[11]=0,ab[12]=0,ab[13]=0,ab[14]=0,ab[15]=1,this}makeRotationFromEuler(aa){const ab=this.elements,ac=aa.x,ad=aa.y,ae=aa.z,af=Math.cos(ac),ag=Math.sin(ac),ah=Math.cos(ad),ai=Math.sin(ad),aj=Math.cos(ae),ak=Math.sin(ae);if("XYZ"===aa.order){const aa=af*aj,ac=af*ak,ad=ag*aj,ae=ag*ak;ab[0]=ah*aj,ab[4]=-ah*ak,ab[8]=ai,ab[1]=ac+ad*ai,ab[5]=aa-ae*ai,ab[9]=-ag*ah,ab[2]=ae-aa*ai,ab[6]=ad+ac*ai,ab[10]=af*ah}else if("YXZ"===aa.order){const aa=ah*aj,ac=ah*ak,ad=ai*aj,ae=ai*ak;ab[0]=aa+ae*ag,ab[4]=ad*ag-ac,ab[8]=af*ai,ab[1]=af*ak,ab[5]=af*aj,ab[9]=-ag,ab[2]=ac*ag-ad,ab[6]=ae+aa*ag,ab[10]=af*ah}else if("ZXY"===aa.order){const aa=ah*aj,ac=ah*ak,ad=ai*aj,ae=ai*ak;ab[0]=aa-ae*ag,ab[4]=-af*ak,ab[8]=ad+ac*ag,ab[1]=ac+ad*ag,ab[5]=af*aj,ab[9]=ae-aa*ag,ab[2]=-af*ai,ab[6]=ag,ab[10]=af*ah}else if("ZYX"===aa.order){const aa=af*aj,ac=af*ak,ad=ag*aj,ae=ag*ak;ab[0]=ah*aj,ab[4]=ad*ai-ac,ab[8]=aa*ai+ae,ab[1]=ah*ak,ab[5]=ae*ai+aa,ab[9]=ac*ai-ad,ab[2]=-ai,ab[6]=ag*ah,ab[10]=af*ah}else if("YZX"===aa.order){const aa=af*ah,ac=af*ai,ad=ag*ah,ae=ag*ai;ab[0]=ah*aj,ab[4]=ae-aa*ak,ab[8]=ad*ak+ac,ab[1]=ak,ab[5]=af*aj,ab[9]=-ag*aj,ab[2]=-ai*aj,ab[6]=ac*ak+ad,ab[10]=aa-ae*ak}else if("XZY"===aa.order){const aa=af*ah,ac=af*ai,ad=ag*ah,ae=ag*ai;ab[0]=ah*aj,ab[4]=-ak,ab[8]=ai*aj,ab[1]=aa*ak+ae,ab[5]=af*aj,ab[9]=ac*ak-ad,ab[2]=ad*ak-ac,ab[6]=ag*aj,ab[10]=ae*ak+aa}return ab[3]=0,ab[7]=0,ab[11]=0,ab[12]=0,ab[13]=0,ab[14]=0,ab[15]=1,this}makeRotationFromQuaternion(aa){return this.compose(abcl,aa,abcm)}lookAt(aa,ab,ac){const ad=this.elements;return abcp.subVectors(aa,ab),0===abcp.lengthSq()&&(abcp.z=1),abcp.normalize(),abcn.crossVectors(ac,abcp),0===abcn.lengthSq()&&(1===Math.abs(ac.z)?abcp.x+=1e-4:abcp.z+=1e-4,abcp.normalize(),abcn.crossVectors(ac,abcp)),abcn.normalize(),abco.crossVectors(abcp,abcn),ad[0]=abcn.x,ad[4]=abco.x,ad[8]=abcp.x,ad[1]=abcn.y,ad[5]=abco.y,ad[9]=abcp.y,ad[2]=abcn.z,ad[6]=abco.z,ad[10]=abcp.z,this}multiply(aa){return this.multiplyMatrices(this,aa)}premultiply(aa){return this.multiplyMatrices(aa,this)}multiplyMatrices(aa,ab){const ac=aa.elements,ad=ab.elements,ae=this.elements,af=ac[0],ag=ac[4],ah=ac[8],ai=ac[12],aj=ac[1],ak=ac[5],al=ac[9],am=ac[13],an=ac[2],ao=ac[6],ap=ac[10],aq=ac[14],ar=ac[3],as=ac[7],at=ac[11],au=ac[15],av=ad[0],aw=ad[4],ax=ad[8],ay=ad[12],az=ad[1],aba=ad[5],abb=ad[9],abc=ad[13],abd=ad[2],abe=ad[6],abf=ad[10],abg=ad[14],abh=ad[3],abi=ad[7],abj=ad[11],abk=ad[15];return ae[0]=af*av+ag*az+ah*abd+ai*abh,ae[4]=af*aw+ag*aba+ah*abe+ai*abi,ae[8]=af*ax+ag*abb+ah*abf+ai*abj,ae[12]=af*ay+ag*abc+ah*abg+ai*abk,ae[1]=aj*av+ak*az+al*abd+am*abh,ae[5]=aj*aw+ak*aba+al*abe+am*abi,ae[9]=aj*ax+ak*abb+al*abf+am*abj,ae[13]=aj*ay+ak*abc+al*abg+am*abk,ae[2]=an*av+ao*az+ap*abd+aq*abh,ae[6]=an*aw+ao*aba+ap*abe+aq*abi,ae[10]=an*ax+ao*abb+ap*abf+aq*abj,ae[14]=an*ay+ao*abc+ap*abg+aq*abk,ae[3]=ar*av+as*az+at*abd+au*abh,ae[7]=ar*aw+as*aba+at*abe+au*abi,ae[11]=ar*ax+as*abb+at*abf+au*abj,ae[15]=ar*ay+as*abc+at*abg+au*abk,this}multiplyScalar(aa){const ab=this.elements;return ab[0]*=aa,ab[4]*=aa,ab[8]*=aa,ab[12]*=aa,ab[1]*=aa,ab[5]*=aa,ab[9]*=aa,ab[13]*=aa,ab[2]*=aa,ab[6]*=aa,ab[10]*=aa,ab[14]*=aa,ab[3]*=aa,ab[7]*=aa,ab[11]*=aa,ab[15]*=aa,this}determinant(){const aa=this.elements,ab=aa[0],ac=aa[4],ad=aa[8],ae=aa[12],af=aa[1],ag=aa[5],ah=aa[9],ai=aa[13],aj=aa[2],ak=aa[6],al=aa[10],am=aa[14];return aa[3]*(+ae*ah*ak-ad*ai*ak-ae*ag*al+ac*ai*al+ad*ag*am-ac*ah*am)+aa[7]*(+ab*ah*am-ab*ai*al+ae*af*al-ad*af*am+ad*ai*aj-ae*ah*aj)+aa[11]*(+ab*ai*ak-ab*ag*am-ae*af*ak+ac*af*am+ae*ag*aj-ac*ai*aj)+aa[15]*(-ad*ag*aj-ab*ah*ak+ab*ag*al+ad*af*ak-ac*af*al+ac*ah*aj)}transpose(){const aa=this.elements;let ab;return ab=aa[1],aa[1]=aa[4],aa[4]=ab,ab=aa[2],aa[2]=aa[8],aa[8]=ab,ab=aa[6],aa[6]=aa[9],aa[9]=ab,ab=aa[3],aa[3]=aa[12],aa[12]=ab,ab=aa[7],aa[7]=aa[13],aa[13]=ab,ab=aa[11],aa[11]=aa[14],aa[14]=ab,this}setPosition(aa,ab,ac){const ad=this.elements;return aa.isVector3?(ad[12]=aa.x,ad[13]=aa.y,ad[14]=aa.z):(ad[12]=aa,ad[13]=ab,ad[14]=ac),this}invert(){const aa=this.elements,ab=aa[0],ac=aa[1],ad=aa[2],ae=aa[3],af=aa[4],ag=aa[5],ah=aa[6],ai=aa[7],aj=aa[8],ak=aa[9],al=aa[10],am=aa[11],an=aa[12],ao=aa[13],ap=aa[14],aq=aa[15],ar=ak*ap*ai-ao*al*ai+ao*ah*am-ag*ap*am-ak*ah*aq+ag*al*aq,as=an*al*ai-aj*ap*ai-an*ah*am+af*ap*am+aj*ah*aq-af*al*aq,at=aj*ao*ai-an*ak*ai+an*ag*am-af*ao*am-aj*ag*aq+af*ak*aq,au=an*ak*ah-aj*ao*ah-an*ag*al+af*ao*al+aj*ag*ap-af*ak*ap,av=ab*ar+ac*as+ad*at+ae*au;if(0===av)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const aw=1/av;return aa[0]=ar*aw,aa[1]=(ao*al*ae-ak*ap*ae-ao*ad*am+ac*ap*am+ak*ad*aq-ac*al*aq)*aw,aa[2]=(ag*ap*ae-ao*ah*ae+ao*ad*ai-ac*ap*ai-ag*ad*aq+ac*ah*aq)*aw,aa[3]=(ak*ah*ae-ag*al*ae-ak*ad*ai+ac*al*ai+ag*ad*am-ac*ah*am)*aw,aa[4]=as*aw,aa[5]=(aj*ap*ae-an*al*ae+an*ad*am-ab*ap*am-aj*ad*aq+ab*al*aq)*aw,aa[6]=(an*ah*ae-af*ap*ae-an*ad*ai+ab*ap*ai+af*ad*aq-ab*ah*aq)*aw,aa[7]=(af*al*ae-aj*ah*ae+aj*ad*ai-ab*al*ai-af*ad*am+ab*ah*am)*aw,aa[8]=at*aw,aa[9]=(an*ak*ae-aj*ao*ae-an*ac*am+ab*ao*am+aj*ac*aq-ab*ak*aq)*aw,aa[10]=(af*ao*ae-an*ag*ae+an*ac*ai-ab*ao*ai-af*ac*aq+ab*ag*aq)*aw,aa[11]=(aj*ag*ae-af*ak*ae-aj*ac*ai+ab*ak*ai+af*ac*am-ab*ag*am)*aw,aa[12]=au*aw,aa[13]=(aj*ao*ad-an*ak*ad+an*ac*al-ab*ao*al-aj*ac*ap+ab*ak*ap)*aw,aa[14]=(an*ag*ad-af*ao*ad-an*ac*ah+ab*ao*ah+af*ac*ap-ab*ag*ap)*aw,aa[15]=(af*ak*ad-aj*ag*ad+aj*ac*ah-ab*ak*ah-af*ac*al+ab*ag*al)*aw,this}scale(aa){const ab=this.elements,ac=aa.x,ad=aa.y,ae=aa.z;return ab[0]*=ac,ab[4]*=ad,ab[8]*=ae,ab[1]*=ac,ab[5]*=ad,ab[9]*=ae,ab[2]*=ac,ab[6]*=ad,ab[10]*=ae,ab[3]*=ac,ab[7]*=ad,ab[11]*=ae,this}getMaxScaleOnAxis(){const aa=this.elements,ab=aa[0]*aa[0]+aa[1]*aa[1]+aa[2]*aa[2],ac=aa[4]*aa[4]+aa[5]*aa[5]+aa[6]*aa[6],ad=aa[8]*aa[8]+aa[9]*aa[9]+aa[10]*aa[10];return Math.sqrt(Math.max(ab,ac,ad))}makeTranslation(aa,ab,ac){return aa.isVector3?this.set(1,0,0,aa.x,0,1,0,aa.y,0,0,1,aa.z,0,0,0,1):this.set(1,0,0,aa,0,1,0,ab,0,0,1,ac,0,0,0,1),this}makeRotationX(aa){const ab=Math.cos(aa),ac=Math.sin(aa);return this.set(1,0,0,0,0,ab,-ac,0,0,ac,ab,0,0,0,0,1),this}makeRotationY(aa){const ab=Math.cos(aa),ac=Math.sin(aa);return this.set(ab,0,ac,0,0,1,0,0,-ac,0,ab,0,0,0,0,1),this}makeRotationZ(aa){const ab=Math.cos(aa),ac=Math.sin(aa);return this.set(ab,-ac,0,0,ac,ab,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(aa,ab){const ac=Math.cos(ab),ad=Math.sin(ab),ae=1-ac,af=aa.x,ag=aa.y,ah=aa.z,ai=ae*af,aj=ae*ag;return this.set(ai*af+ac,ai*ag-ad*ah,ai*ah+ad*ag,0,ai*ag+ad*ah,aj*ag+ac,aj*ah-ad*af,0,ai*ah-ad*ag,aj*ah+ad*af,ae*ah*ah+ac,0,0,0,0,1),this}makeScale(aa,ab,ac){return this.set(aa,0,0,0,0,ab,0,0,0,0,ac,0,0,0,0,1),this}makeShear(aa,ab,ac,ad,ae,af){return this.set(1,ac,ae,0,aa,1,af,0,ab,ad,1,0,0,0,0,1),this}compose(aa,ab,ac){const ad=this.elements,ae=ab._x,af=ab._y,ag=ab._z,ah=ab._w,ai=ae+ae,aj=af+af,ak=ag+ag,al=ae*ai,am=ae*aj,an=ae*ak,ao=af*aj,ap=af*ak,aq=ag*ak,ar=ah*ai,as=ah*aj,at=ah*ak,au=ac.x,av=ac.y,aw=ac.z;return ad[0]=(1-(ao+aq))*au,ad[1]=(am+at)*au,ad[2]=(an-as)*au,ad[3]=0,ad[4]=(am-at)*av,ad[5]=(1-(al+aq))*av,ad[6]=(ap+ar)*av,ad[7]=0,ad[8]=(an+as)*aw,ad[9]=(ap-ar)*aw,ad[10]=(1-(al+ao))*aw,ad[11]=0,ad[12]=aa.x,ad[13]=aa.y,ad[14]=aa.z,ad[15]=1,this}decompose(aa,ab,ac){const ad=this.elements;let ae=abcj.set(ad[0],ad[1],ad[2]).length();const af=abcj.set(ad[4],ad[5],ad[6]).length(),ag=abcj.set(ad[8],ad[9],ad[10]).length();this.determinant()<0&&(ae=-ae),aa.x=ad[12],aa.y=ad[13],aa.z=ad[14],abck.copy(this);const ah=1/ae,ai=1/af,aj=1/ag;return abck.elements[0]*=ah,abck.elements[1]*=ah,abck.elements[2]*=ah,abck.elements[4]*=ai,abck.elements[5]*=ai,abck.elements[6]*=ai,abck.elements[8]*=aj,abck.elements[9]*=aj,abck.elements[10]*=aj,ab.setFromRotationMatrix(abck),ac.x=ae,ac.y=af,ac.z=ag,this}makePerspective(aa,ab,ac,ad,ae,af,ag=2e3){const ah=this.elements,ai=2*ae/(ab-aa),aj=2*ae/(ac-ad),ak=(ab+aa)/(ab-aa),al=(ac+ad)/(ac-ad);let ao,ap;if(ag===am)ao=-(af+ae)/(af-ae),ap=-2*af*ae/(af-ae);else{if(ag!==an)throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+ag);ao=-af/(af-ae),ap=-af*ae/(af-ae)}return ah[0]=ai,ah[4]=0,ah[8]=ak,ah[12]=0,ah[1]=0,ah[5]=aj,ah[9]=al,ah[13]=0,ah[2]=0,ah[6]=0,ah[10]=ao,ah[14]=ap,ah[3]=0,ah[7]=0,ah[11]=-1,ah[15]=0,this}makeOrthographic(aa,ab,ac,ad,ae,af,ag=2e3){const ah=this.elements,ai=1/(ab-aa),aj=1/(ac-ad),ak=1/(af-ae),al=(ab+aa)*ai,ao=(ac+ad)*aj;let ap,aq;if(ag===am)ap=(af+ae)*ak,aq=-2*ak;else{if(ag!==an)throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+ag);ap=ae*ak,aq=-1*ak}return ah[0]=2*ai,ah[4]=0,ah[8]=0,ah[12]=-al,ah[1]=0,ah[5]=2*aj,ah[9]=0,ah[13]=-ao,ah[2]=0,ah[6]=0,ah[10]=aq,ah[14]=-ap,ah[3]=0,ah[7]=0,ah[11]=0,ah[15]=1,this}equals(aa){const ab=this.elements,ac=aa.elements;for(let aa=0;aa<16;aa++)if(ab[aa]!==ac[aa])return!1;return!0}fromArray(aa,ab=0){for(let ac=0;ac<16;ac++)this.elements[ac]=aa[ac+ab];return this}toArray(aa=[],ab=0){const ac=this.elements;return aa[ab]=ac[0],aa[ab+1]=ac[1],aa[ab+2]=ac[2],aa[ab+3]=ac[3],aa[ab+4]=ac[4],aa[ab+5]=ac[5],aa[ab+6]=ac[6],aa[ab+7]=ac[7],aa[ab+8]=ac[8],aa[ab+9]=ac[9],aa[ab+10]=ac[10],aa[ab+11]=ac[11],aa[ab+12]=ac[12],aa[ab+13]=ac[13],aa[ab+14]=ac[14],aa[ab+15]=ac[15],aa}}const abcj=new abm,abck=new abci,abcl=new abm(0,0,0),abcm=new abm(1,1,1),abcn=new abm,abco=new abm,abcp=new abm,abcq=new abci,abcr=new abl;class abcs{constructor(aa=0,ab=0,ac=0,ad=abcs.DEFAULT_ORDER){this.isEuler=!0,this._x=aa,this._y=ab,this._z=ac,this._order=ad}get x(){return this._x}set x(aa){this._x=aa,this._onChangeCallback()}get y(){return this._y}set y(aa){this._y=aa,this._onChangeCallback()}get z(){return this._z}set z(aa){this._z=aa,this._onChangeCallback()}get order(){return this._order}set order(aa){this._order=aa,this._onChangeCallback()}set(aa,ab,ac,ad=this._order){return this._x=aa,this._y=ab,this._z=ac,this._order=ad,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(aa){return this._x=aa._x,this._y=aa._y,this._z=aa._z,this._order=aa._order,this._onChangeCallback(),this}setFromRotationMatrix(aa,ab=this._order,ac=!0){const ad=aa.elements,ae=ad[0],af=ad[4],ag=ad[8],ah=ad[1],ai=ad[5],aj=ad[9],ak=ad[2],al=ad[6],am=ad[10];switch(ab){case"XYZ":this._y=Math.asin(ar(ag,-1,1)),Math.abs(ag)<.9999999?(this._x=Math.atan2(-aj,am),this._z=Math.atan2(-af,ae)):(this._x=Math.atan2(al,ai),this._z=0);break;case"YXZ":this._x=Math.asin(-ar(aj,-1,1)),Math.abs(aj)<.9999999?(this._y=Math.atan2(ag,am),this._z=Math.atan2(ah,ai)):(this._y=Math.atan2(-ak,ae),this._z=0);break;case"ZXY":this._x=Math.asin(ar(al,-1,1)),Math.abs(al)<.9999999?(this._y=Math.atan2(-ak,am),this._z=Math.atan2(-af,ai)):(this._y=0,this._z=Math.atan2(ah,ae));break;case"ZYX":this._y=Math.asin(-ar(ak,-1,1)),Math.abs(ak)<.9999999?(this._x=Math.atan2(al,am),this._z=Math.atan2(ah,ae)):(this._x=0,this._z=Math.atan2(-af,ai));break;case"YZX":this._z=Math.asin(ar(ah,-1,1)),Math.abs(ah)<.9999999?(this._x=Math.atan2(-aj,ai),this._y=Math.atan2(-ak,ae)):(this._x=0,this._y=Math.atan2(ag,am));break;case"XZY":this._z=Math.asin(-ar(af,-1,1)),Math.abs(af)<.9999999?(this._x=Math.atan2(al,ai),this._y=Math.atan2(ag,ae)):(this._x=Math.atan2(-aj,am),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+ab)}return this._order=ab,!0===ac&&this._onChangeCallback(),this}setFromQuaternion(aa,ab,ac){return abcq.makeRotationFromQuaternion(aa),this.setFromRotationMatrix(abcq,ab,ac)}setFromVector3(aa,ab=this._order){return this.set(aa.x,aa.y,aa.z,ab)}reorder(aa){return abcr.setFromEuler(this),this.setFromQuaternion(abcr,aa)}equals(aa){return aa._x===this._x&&aa._y===this._y&&aa._z===this._z&&aa._order===this._order}fromArray(aa){return this._x=aa[0],this._y=aa[1],this._z=aa[2],void 0!==aa[3]&&(this._order=aa[3]),this._onChangeCallback(),this}toArray(aa=[],ab=0){return aa[ab]=this._x,aa[ab+1]=this._y,aa[ab+2]=this._z,aa[ab+3]=this._order,aa}_onChange(aa){return this._onChangeCallback=aa,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}abcs.DEFAULT_ORDER="XYZ";class abct{constructor(){this.mask=1}set(aa){this.mask=1<<aa>>>0}enable(aa){this.mask|=1<<aa}enableAll(){this.mask=-1}toggle(aa){this.mask^=1<<aa}disable(aa){this.mask&=~(1<<aa)}disableAll(){this.mask=0}test(aa){return!!(this.mask&aa.mask)}isEnabled(aa){return!!(this.mask&1<<aa)}}let abcu=0;const abcv=new abm,abcw=new abl,abcx=new abci,abcy=new abm,abcz=new abm,abcda=new abm,abcdb=new abl,abcdc=new abm(1,0,0),abcdd=new abm(0,1,0),abcde=new abm(0,0,1),abcdf={type:"added"},abcdg={type:"removed"},abcdh={type:"childadded",child:null},abcdi={type:"childremoved",child:null};class abcdj extends ao{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:abcu++}),this.uuid=aq(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=abcdj.DEFAULT_UP.clone();const aa=new abm,ab=new abcs,ac=new abl,ad=new abm(1,1,1);ab._onChange((function(){ac.setFromEuler(ab,!1)})),ac._onChange((function(){ab.setFromQuaternion(ac,void 0,!1)})),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:aa},rotation:{configurable:!0,enumerable:!0,value:ab},quaternion:{configurable:!0,enumerable:!0,value:ac},scale:{configurable:!0,enumerable:!0,value:ad},modelViewMatrix:{value:new abci},normalMatrix:{value:new au}}),this.matrix=new abci,this.matrixWorld=new abci,this.matrixAutoUpdate=abcdj.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=abcdj.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new abct,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(aa){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(aa),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(aa){return this.quaternion.premultiply(aa),this}setRotationFromAxisAngle(aa,ab){this.quaternion.setFromAxisAngle(aa,ab)}setRotationFromEuler(aa){this.quaternion.setFromEuler(aa,!0)}setRotationFromMatrix(aa){this.quaternion.setFromRotationMatrix(aa)}setRotationFromQuaternion(aa){this.quaternion.copy(aa)}rotateOnAxis(aa,ab){return abcw.setFromAxisAngle(aa,ab),this.quaternion.multiply(abcw),this}rotateOnWorldAxis(aa,ab){return abcw.setFromAxisAngle(aa,ab),this.quaternion.premultiply(abcw),this}rotateX(aa){return this.rotateOnAxis(abcdc,aa)}rotateY(aa){return this.rotateOnAxis(abcdd,aa)}rotateZ(aa){return this.rotateOnAxis(abcde,aa)}translateOnAxis(aa,ab){return abcv.copy(aa).applyQuaternion(this.quaternion),this.position.add(abcv.multiplyScalar(ab)),this}translateX(aa){return this.translateOnAxis(abcdc,aa)}translateY(aa){return this.translateOnAxis(abcdd,aa)}translateZ(aa){return this.translateOnAxis(abcde,aa)}localToWorld(aa){return this.updateWorldMatrix(!0,!1),aa.applyMatrix4(this.matrixWorld)}worldToLocal(aa){return this.updateWorldMatrix(!0,!1),aa.applyMatrix4(abcx.copy(this.matrixWorld).invert())}lookAt(aa,ab,ac){aa.isVector3?abcy.copy(aa):abcy.set(aa,ab,ac);const ad=this.parent;this.updateWorldMatrix(!0,!1),abcz.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?abcx.lookAt(abcz,abcy,this.up):abcx.lookAt(abcy,abcz,this.up),this.quaternion.setFromRotationMatrix(abcx),ad&&(abcx.extractRotation(ad.matrixWorld),abcw.setFromRotationMatrix(abcx),this.quaternion.premultiply(abcw.invert()))}add(aa){if(arguments.length>1){for(let aa=0;aa<arguments.length;aa++)this.add(arguments[aa]);return this}return aa===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",aa),this):(aa&&aa.isObject3D?(aa.removeFromParent(),aa.parent=this,this.children.push(aa),aa.dispatchEvent(abcdf),abcdh.child=aa,this.dispatchEvent(abcdh),abcdh.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",aa),this)}remove(aa){if(arguments.length>1){for(let aa=0;aa<arguments.length;aa++)this.remove(arguments[aa]);return this}const ab=this.children.indexOf(aa);return-1!==ab&&(aa.parent=null,this.children.splice(ab,1),aa.dispatchEvent(abcdg),abcdi.child=aa,this.dispatchEvent(abcdi),abcdi.child=null),this}removeFromParent(){const aa=this.parent;return null!==aa&&aa.remove(this),this}clear(){return this.remove(...this.children)}attach(aa){return this.updateWorldMatrix(!0,!1),abcx.copy(this.matrixWorld).invert(),null!==aa.parent&&(aa.parent.updateWorldMatrix(!0,!1),abcx.multiply(aa.parent.matrixWorld)),aa.applyMatrix4(abcx),aa.removeFromParent(),aa.parent=this,this.children.push(aa),aa.updateWorldMatrix(!1,!0),aa.dispatchEvent(abcdf),abcdh.child=aa,this.dispatchEvent(abcdh),abcdh.child=null,this}getObjectById(aa){return this.getObjectByProperty("id",aa)}getObjectByName(aa){return this.getObjectByProperty("name",aa)}getObjectByProperty(aa,ab){if(this[aa]===ab)return this;for(let ac=0,ad=this.children.length;ac<ad;ac++){const ad=this.children[ac].getObjectByProperty(aa,ab);if(void 0!==ad)return ad}}getObjectsByProperty(aa,ab,ac=[]){this[aa]===ab&&ac.push(this);const ad=this.children;for(let ae=0,af=ad.length;ae<af;ae++)ad[ae].getObjectsByProperty(aa,ab,ac);return ac}getWorldPosition(aa){return this.updateWorldMatrix(!0,!1),aa.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(aa){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(abcz,aa,abcda),aa}getWorldScale(aa){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(abcz,abcdb,aa),aa}getWorldDirection(aa){this.updateWorldMatrix(!0,!1);const ab=this.matrixWorld.elements;return aa.set(ab[8],ab[9],ab[10]).normalize()}raycast(){}traverse(aa){aa(this);const ab=this.children;for(let ac=0,ad=ab.length;ac<ad;ac++)ab[ac].traverse(aa)}traverseVisible(aa){if(!1===this.visible)return;aa(this);const ab=this.children;for(let ac=0,ad=ab.length;ac<ad;ac++)ab[ac].traverseVisible(aa)}traverseAncestors(aa){const ab=this.parent;null!==ab&&(aa(ab),ab.traverseAncestors(aa))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(aa){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||aa)&&(!0===this.matrixWorldAutoUpdate&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,aa=!0);const ab=this.children;for(let ac=0,ad=ab.length;ac<ad;ac++)ab[ac].updateMatrixWorld(aa)}updateWorldMatrix(aa,ab){const ac=this.parent;if(!0===aa&&null!==ac&&ac.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),!0===this.matrixWorldAutoUpdate&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),!0===ab){const aa=this.children;for(let ab=0,ac=aa.length;ab<ac;ab++)aa[ab].updateWorldMatrix(!1,!0)}}toJSON(aa){const ab=void 0===aa||"string"==typeof aa,ac={};ab&&(aa={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},ac.metadata={version:4.6,type:"Object",generator:"Object3D.toJSON"});const ad={};function ae(ab,ac){return void 0===ab[ac.uuid]&&(ab[ac.uuid]=ac.toJSON(aa)),ac.uuid}if(ad.uuid=this.uuid,ad.type=this.type,""!==this.name&&(ad.name=this.name),!0===this.castShadow&&(ad.castShadow=!0),!0===this.receiveShadow&&(ad.receiveShadow=!0),!1===this.visible&&(ad.visible=!1),!1===this.frustumCulled&&(ad.frustumCulled=!1),0!==this.renderOrder&&(ad.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(ad.userData=this.userData),ad.layers=this.layers.mask,ad.matrix=this.matrix.toArray(),ad.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(ad.matrixAutoUpdate=!1),this.isInstancedMesh&&(ad.type="InstancedMesh",ad.count=this.count,ad.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(ad.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(ad.type="BatchedMesh",ad.perObjectFrustumCulled=this.perObjectFrustumCulled,ad.sortObjects=this.sortObjects,ad.drawRanges=this._drawRanges,ad.reservedRanges=this._reservedRanges,ad.visibility=this._visibility,ad.active=this._active,ad.bounds=this._bounds.map((aa=>({boxInitialized:aa.boxInitialized,boxMin:aa.box.min.toArray(),boxMax:aa.box.max.toArray(),sphereInitialized:aa.sphereInitialized,sphereRadius:aa.sphere.radius,sphereCenter:aa.sphere.center.toArray()}))),ad.maxInstanceCount=this._maxInstanceCount,ad.maxVertexCount=this._maxVertexCount,ad.maxIndexCount=this._maxIndexCount,ad.geometryInitialized=this._geometryInitialized,ad.geometryCount=this._geometryCount,ad.matricesTexture=this._matricesTexture.toJSON(aa),null!==this._colorsTexture&&(ad.colorsTexture=this._colorsTexture.toJSON(aa)),null!==this.boundingSphere&&(ad.boundingSphere={center:ad.boundingSphere.center.toArray(),radius:ad.boundingSphere.radius}),null!==this.boundingBox&&(ad.boundingBox={min:ad.boundingBox.min.toArray(),max:ad.boundingBox.max.toArray()})),this.isScene)this.background&&(this.background.isColor?ad.background=this.background.toJSON():this.background.isTexture&&(ad.background=this.background.toJSON(aa).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(ad.environment=this.environment.toJSON(aa).uuid);else if(this.isMesh||this.isLine||this.isPoints){ad.geometry=ae(aa.geometries,this.geometry);const ab=this.geometry.parameters;if(void 0!==ab&&void 0!==ab.shapes){const ac=ab.shapes;if(Array.isArray(ac))for(let ab=0,ad=ac.length;ab<ad;ab++){const ad=ac[ab];ae(aa.shapes,ad)}else ae(aa.shapes,ac)}}if(this.isSkinnedMesh&&(ad.bindMode=this.bindMode,ad.bindMatrix=this.bindMatrix.toArray(),void 0!==this.skeleton&&(ae(aa.skeletons,this.skeleton),ad.skeleton=this.skeleton.uuid)),void 0!==this.material)if(Array.isArray(this.material)){const ab=[];for(let ac=0,ad=this.material.length;ac<ad;ac++)ab.push(ae(aa.materials,this.material[ac]));ad.material=ab}else ad.material=ae(aa.materials,this.material);if(this.children.length>0){ad.children=[];for(let ab=0;ab<this.children.length;ab++)ad.children.push(this.children[ab].toJSON(aa).object)}if(this.animations.length>0){ad.animations=[];for(let ab=0;ab<this.animations.length;ab++){const ac=this.animations[ab];ad.animations.push(ae(aa.animations,ac))}}if(ab){const ab=af(aa.geometries),ad=af(aa.materials),ae=af(aa.textures),ag=af(aa.images),ah=af(aa.shapes),ai=af(aa.skeletons),aj=af(aa.animations),ak=af(aa.nodes);ab.length>0&&(ac.geometries=ab),ad.length>0&&(ac.materials=ad),ae.length>0&&(ac.textures=ae),ag.length>0&&(ac.images=ag),ah.length>0&&(ac.shapes=ah),ai.length>0&&(ac.skeletons=ai),aj.length>0&&(ac.animations=aj),ak.length>0&&(ac.nodes=ak)}return ac.object=ad,ac;function af(aa){const ab=[];for(const ac in aa){const ad=aa[ac];delete ad.metadata,ab.push(ad)}return ab}}clone(aa){return(new this.constructor).copy(this,aa)}copy(aa,ab=!0){if(this.name=aa.name,this.up.copy(aa.up),this.position.copy(aa.position),this.rotation.order=aa.rotation.order,this.quaternion.copy(aa.quaternion),this.scale.copy(aa.scale),this.matrix.copy(aa.matrix),this.matrixWorld.copy(aa.matrixWorld),this.matrixAutoUpdate=aa.matrixAutoUpdate,this.matrixWorldAutoUpdate=aa.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=aa.matrixWorldNeedsUpdate,this.layers.mask=aa.layers.mask,this.visible=aa.visible,this.castShadow=aa.castShadow,this.receiveShadow=aa.receiveShadow,this.frustumCulled=aa.frustumCulled,this.renderOrder=aa.renderOrder,this.animations=aa.animations.slice(),this.userData=JSON.parse(JSON.stringify(aa.userData)),!0===ab)for(let ab=0;ab<aa.children.length;ab++){const ac=aa.children[ab];this.add(ac.clone())}return this}}abcdj.DEFAULT_UP=new abm(0,1,0),abcdj.DEFAULT_MATRIX_AUTO_UPDATE=!0,abcdj.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const abcdk={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},abcdl={h:0,s:0,l:0},abcdm={h:0,s:0,l:0};function abcdn(aa,ab,ac){return ac<0&&(ac+=1),ac>1&&(ac-=1),ac<1/6?aa+6*(ab-aa)*ac:ac<.5?ab:ac<2/3?aa+6*(ab-aa)*(2/3-ac):aa}class abcdo{constructor(aa,ab,ac){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(aa,ab,ac)}set(aa,ab,ac){if(void 0===ab&&void 0===ac){const ab=aa;ab&&ab.isColor?this.copy(ab):"number"==typeof ab?this.setHex(ab):"string"==typeof ab&&this.setStyle(ab)}else this.setRGB(aa,ab,ac);return this}setScalar(aa){return this.r=aa,this.g=aa,this.b=aa,this}setHex(aa,ab=af){return aa=Math.floor(aa),this.r=(aa>>16&255)/255,this.g=(aa>>8&255)/255,this.b=(255&aa)/255,abb.toWorkingColorSpace(this,ab),this}setRGB(aa,ab,ac,ad=abb.workingColorSpace){return this.r=aa,this.g=ab,this.b=ac,abb.toWorkingColorSpace(this,ad),this}setHSL(aa,ab,ac,ad=abb.workingColorSpace){if(aa=(aa%(ae=1)+ae)%ae,ab=ar(ab,0,1),ac=ar(ac,0,1),0===ab)this.r=this.g=this.b=ac;else{const ad=ac<=.5?ac*(1+ab):ac+ab-ac*ab,ae=2*ac-ad;this.r=abcdn(ae,ad,aa+1/3),this.g=abcdn(ae,ad,aa),this.b=abcdn(ae,ad,aa-1/3)}var ae;return abb.toWorkingColorSpace(this,ad),this}setStyle(aa,ab=af){function ac(ab){void 0!==ab&&parseFloat(ab)<1&&console.warn("THREE.Color: Alpha component of "+aa+" will be ignored.")}let ad;if(ad=/^(\w+)\(([^\)]*)\)/.exec(aa)){let ae;const af=ad[1],ag=ad[2];switch(af){case"rgb":case"rgba":if(ae=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(ag))return ac(ae[4]),this.setRGB(Math.min(255,parseInt(ae[1],10))/255,Math.min(255,parseInt(ae[2],10))/255,Math.min(255,parseInt(ae[3],10))/255,ab);if(ae=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(ag))return ac(ae[4]),this.setRGB(Math.min(100,parseInt(ae[1],10))/100,Math.min(100,parseInt(ae[2],10))/100,Math.min(100,parseInt(ae[3],10))/100,ab);break;case"hsl":case"hsla":if(ae=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(ag))return ac(ae[4]),this.setHSL(parseFloat(ae[1])/360,parseFloat(ae[2])/100,parseFloat(ae[3])/100,ab);break;default:console.warn("THREE.Color: Unknown color model "+aa)}}else if(ad=/^\#([A-Fa-f\d]+)$/.exec(aa)){const ac=ad[1],ae=ac.length;if(3===ae)return this.setRGB(parseInt(ac.charAt(0),16)/15,parseInt(ac.charAt(1),16)/15,parseInt(ac.charAt(2),16)/15,ab);if(6===ae)return this.setHex(parseInt(ac,16),ab);console.warn("THREE.Color: Invalid hex color "+aa)}else if(aa&&aa.length>0)return this.setColorName(aa,ab);return this}setColorName(aa,ab=af){const ac=abcdk[aa.toLowerCase()];return void 0!==ac?this.setHex(ac,ab):console.warn("THREE.Color: Unknown color "+aa),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(aa){return this.r=aa.r,this.g=aa.g,this.b=aa.b,this}copySRGBToLinear(aa){return this.r=abc(aa.r),this.g=abc(aa.g),this.b=abc(aa.b),this}copyLinearToSRGB(aa){return this.r=abd(aa.r),this.g=abd(aa.g),this.b=abd(aa.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(aa=af){return abb.fromWorkingColorSpace(abcdp.copy(this),aa),65536*Math.round(ar(255*abcdp.r,0,255))+256*Math.round(ar(255*abcdp.g,0,255))+Math.round(ar(255*abcdp.b,0,255))}getHexString(aa=af){return("000000"+this.getHex(aa).toString(16)).slice(-6)}getHSL(aa,ab=abb.workingColorSpace){abb.fromWorkingColorSpace(abcdp.copy(this),ab);const ac=abcdp.r,ad=abcdp.g,ae=abcdp.b,af=Math.max(ac,ad,ae),ag=Math.min(ac,ad,ae);let ah,ai;const aj=(ag+af)/2;if(ag===af)ah=0,ai=0;else{const aa=af-ag;switch(ai=aj<=.5?aa/(af+ag):aa/(2-af-ag),af){case ac:ah=(ad-ae)/aa+(ad<ae?6:0);break;case ad:ah=(ae-ac)/aa+2;break;case ae:ah=(ac-ad)/aa+4}ah/=6}return aa.h=ah,aa.s=ai,aa.l=aj,aa}getRGB(aa,ab=abb.workingColorSpace){return abb.fromWorkingColorSpace(abcdp.copy(this),ab),aa.r=abcdp.r,aa.g=abcdp.g,aa.b=abcdp.b,aa}getStyle(aa=af){abb.fromWorkingColorSpace(abcdp.copy(this),aa);const ab=abcdp.r,ac=abcdp.g,ad=abcdp.b;return aa!==af?`color(${aa} ${ab.toFixed(3)} ${ac.toFixed(3)} ${ad.toFixed(3)})`:`rgb(${Math.round(255*ab)},${Math.round(255*ac)},${Math.round(255*ad)})`}offsetHSL(aa,ab,ac){return this.getHSL(abcdl),this.setHSL(abcdl.h+aa,abcdl.s+ab,abcdl.l+ac)}add(aa){return this.r+=aa.r,this.g+=aa.g,this.b+=aa.b,this}addColors(aa,ab){return this.r=aa.r+ab.r,this.g=aa.g+ab.g,this.b=aa.b+ab.b,this}addScalar(aa){return this.r+=aa,this.g+=aa,this.b+=aa,this}sub(aa){return this.r=Math.max(0,this.r-aa.r),this.g=Math.max(0,this.g-aa.g),this.b=Math.max(0,this.b-aa.b),this}multiply(aa){return this.r*=aa.r,this.g*=aa.g,this.b*=aa.b,this}multiplyScalar(aa){return this.r*=aa,this.g*=aa,this.b*=aa,this}lerp(aa,ab){return this.r+=(aa.r-this.r)*ab,this.g+=(aa.g-this.g)*ab,this.b+=(aa.b-this.b)*ab,this}lerpColors(aa,ab,ac){return this.r=aa.r+(ab.r-aa.r)*ac,this.g=aa.g+(ab.g-aa.g)*ac,this.b=aa.b+(ab.b-aa.b)*ac,this}lerpHSL(aa,ab){this.getHSL(abcdl),aa.getHSL(abcdm);const ac=as(abcdl.h,abcdm.h,ab),ad=as(abcdl.s,abcdm.s,ab),ae=as(abcdl.l,abcdm.l,ab);return this.setHSL(ac,ad,ae),this}setFromVector3(aa){return this.r=aa.x,this.g=aa.y,this.b=aa.z,this}applyMatrix3(aa){const ab=this.r,ac=this.g,ad=this.b,ae=aa.elements;return this.r=ae[0]*ab+ae[3]*ac+ae[6]*ad,this.g=ae[1]*ab+ae[4]*ac+ae[7]*ad,this.b=ae[2]*ab+ae[5]*ac+ae[8]*ad,this}equals(aa){return aa.r===this.r&&aa.g===this.g&&aa.b===this.b}fromArray(aa,ab=0){return this.r=aa[ab],this.g=aa[ab+1],this.b=aa[ab+2],this}toArray(aa=[],ab=0){return aa[ab]=this.r,aa[ab+1]=this.g,aa[ab+2]=this.b,aa}fromBufferAttribute(aa,ab){return this.r=aa.getX(ab),this.g=aa.getY(ab),this.b=aa.getZ(ab),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const abcdp=new abcdo;function abcdq(aa){const ab={};for(const ac in aa){ab[ac]={};for(const ad in aa[ac]){const ae=aa[ac][ad];ae&&(ae.isColor||ae.isMatrix3||ae.isMatrix4||ae.isVector2||ae.isVector3||ae.isVector4||ae.isTexture||ae.isQuaternion)?ae.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),ab[ac][ad]=null):ab[ac][ad]=ae.clone():Array.isArray(ae)?ab[ac][ad]=ae.slice():ab[ac][ad]=ae}}return ab}function abcdr(aa){const ab={};for(let ac=0;ac<aa.length;ac++){const ad=abcdq(aa[ac]);for(const aa in ad)ab[aa]=ad[aa]}return ab}abcdo.NAMES=abcdk;const abcds=new abm,abcdt=new abm,abcdu=new au;class abcdv{constructor(aa=new abm(1,0,0),ab=0){this.isPlane=!0,this.normal=aa,this.constant=ab}set(aa,ab){return this.normal.copy(aa),this.constant=ab,this}setComponents(aa,ab,ac,ad){return this.normal.set(aa,ab,ac),this.constant=ad,this}setFromNormalAndCoplanarPoint(aa,ab){return this.normal.copy(aa),this.constant=-ab.dot(this.normal),this}setFromCoplanarPoints(aa,ab,ac){const ad=abcds.subVectors(ac,ab).cross(abcdt.subVectors(aa,ab)).normalize();return this.setFromNormalAndCoplanarPoint(ad,aa),this}copy(aa){return this.normal.copy(aa.normal),this.constant=aa.constant,this}normalize(){const aa=1/this.normal.length();return this.normal.multiplyScalar(aa),this.constant*=aa,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(aa){return this.normal.dot(aa)+this.constant}distanceToSphere(aa){return this.distanceToPoint(aa.center)-aa.radius}projectPoint(aa,ab){return ab.copy(aa).addScaledVector(this.normal,-this.distanceToPoint(aa))}intersectLine(aa,ab){const ac=aa.delta(abcds),ad=this.normal.dot(ac);if(0===ad)return 0===this.distanceToPoint(aa.start)?ab.copy(aa.start):null;const ae=-(aa.start.dot(this.normal)+this.constant)/ad;return ae<0||ae>1?null:ab.copy(aa.start).addScaledVector(ac,ae)}intersectsLine(aa){const ab=this.distanceToPoint(aa.start),ac=this.distanceToPoint(aa.end);return ab<0&&ac>0||ac<0&&ab>0}intersectsBox(aa){return aa.intersectsPlane(this)}intersectsSphere(aa){return aa.intersectsPlane(this)}coplanarPoint(aa){return aa.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(aa,ab){const ac=ab||abcdu.getNormalMatrix(aa),ad=this.coplanarPoint(abcds).applyMatrix4(aa),ae=this.normal.applyMatrix3(ac).normalize();return this.constant=-ad.dot(ae),this}translate(aa){return this.constant-=aa.dot(this.normal),this}equals(aa){return aa.normal.equals(this.normal)&&aa.constant===this.constant}clone(){return(new this.constructor).copy(this)}}const abcdw=new abch,abcdx=new abm;class abcdy{constructor(aa=new abcdv,ab=new abcdv,ac=new abcdv,ad=new abcdv,ae=new abcdv,af=new abcdv){this.planes=[aa,ab,ac,ad,ae,af]}set(aa,ab,ac,ad,ae,af){const ag=this.planes;return ag[0].copy(aa),ag[1].copy(ab),ag[2].copy(ac),ag[3].copy(ad),ag[4].copy(ae),ag[5].copy(af),this}copy(aa){const ab=this.planes;for(let ac=0;ac<6;ac++)ab[ac].copy(aa.planes[ac]);return this}setFromProjectionMatrix(aa,ab=2e3){const ac=this.planes,ad=aa.elements,ae=ad[0],af=ad[1],ag=ad[2],ah=ad[3],ai=ad[4],aj=ad[5],ak=ad[6],al=ad[7],ao=ad[8],ap=ad[9],aq=ad[10],ar=ad[11],as=ad[12],at=ad[13],au=ad[14],av=ad[15];if(ac[0].setComponents(ah-ae,al-ai,ar-ao,av-as).normalize(),ac[1].setComponents(ah+ae,al+ai,ar+ao,av+as).normalize(),ac[2].setComponents(ah+af,al+aj,ar+ap,av+at).normalize(),ac[3].setComponents(ah-af,al-aj,ar-ap,av-at).normalize(),ac[4].setComponents(ah-ag,al-ak,ar-aq,av-au).normalize(),ab===am)ac[5].setComponents(ah+ag,al+ak,ar+aq,av+au).normalize();else{if(ab!==an)throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+ab);ac[5].setComponents(ag,ak,aq,au).normalize()}return this}intersectsObject(aa){if(void 0!==aa.boundingSphere)null===aa.boundingSphere&&aa.computeBoundingSphere(),abcdw.copy(aa.boundingSphere).applyMatrix4(aa.matrixWorld);else{const ab=aa.geometry;null===ab.boundingSphere&&ab.computeBoundingSphere(),abcdw.copy(ab.boundingSphere).applyMatrix4(aa.matrixWorld)}return this.intersectsSphere(abcdw)}intersectsSprite(aa){return abcdw.center.set(0,0,0),abcdw.radius=.7071067811865476,abcdw.applyMatrix4(aa.matrixWorld),this.intersectsSphere(abcdw)}intersectsSphere(aa){const ab=this.planes,ac=aa.center,ad=-aa.radius;for(let aa=0;aa<6;aa++)if(ab[aa].distanceToPoint(ac)<ad)return!1;return!0}intersectsBox(aa){const ab=this.planes;for(let ac=0;ac<6;ac++){const ad=ab[ac];if(abcdx.x=ad.normal.x>0?aa.max.x:aa.min.x,abcdx.y=ad.normal.y>0?aa.max.y:aa.min.y,abcdx.z=ad.normal.z>0?aa.max.z:aa.min.z,ad.distanceToPoint(abcdx)<0)return!1}return!0}containsPoint(aa){const ab=this.planes;for(let ac=0;ac<6;ac++)if(ab[ac].distanceToPoint(aa)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}}const abcdz="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}",abcdea="uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}",abcdeb="varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}",abcdec="#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nuniform mat3 backgroundRotation;\nvarying vec3 vWorldDirection;\n#include <cube_uv_reflection_fragment>\nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}",abcded="varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}",abcdee="uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}",abcdef="#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <skinbase_vertex>\n\t#include <morphinstance_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}",abcdeg="#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <clipping_planes_fragment>\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <logdepthbuf_fragment>\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}",abcdeh="#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <skinbase_vertex>\n\t#include <morphinstance_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}",abcdei="#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <clipping_planes_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",abcdej="varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}",abcdek="uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}",abcdel="uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include <common>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphcolor_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}",abcdem="uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",abcden="#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinbase_vertex>\n\t\t#include <skinnormal_vertex>\n\t\t#include <defaultnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <fog_vertex>\n}",abcdeo="uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <specularmap_fragment>\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, vLightMapUv );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include <aomap_fragment>\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include <envmap_fragment>\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",abcdep="#define LAMBERT\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",abcdeq="#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_lambert_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_lambert_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",abcder="#define MATCAP\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n\tvViewPosition = - mvPosition.xyz;\n}",abcdes="#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <normal_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\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 <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",abcdet="#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",abcdeu="#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include <packing>\n#include <uv_pars_fragment>\n#include <normal_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tgl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}",abcdev="#define PHONG\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",abcdew="#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_phong_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",abcdex="#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}",abcdey="#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define USE_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 USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_DISPERSION\n\tuniform float dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\tuniform vec2 anisotropyVector;\n\t#ifdef USE_ANISOTROPYMAP\n\t\tuniform sampler2D anisotropyMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <iridescence_fragment>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_physical_pars_fragment>\n#include <transmission_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <iridescence_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <roughnessmap_fragment>\n\t#include <metalnessmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include <transmission_fragment>\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 + sheenSpecularDirect + sheenSpecularIndirect;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n\t#endif\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",abcdez="#define TOON\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",abcdefa="#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <gradientmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_toon_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_toon_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",abcdefb="uniform float size;\nuniform float scale;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\n#ifdef USE_POINTS_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\nvoid main() {\n\t#ifdef USE_POINTS_UV\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\t#endif\n\t#include <color_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphcolor_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\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 <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n}",abcdefc="uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include <logdepthbuf_fragment>\n\t#include <map_particle_fragment>\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",abcdefd="#include <common>\n#include <batching_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <shadowmap_pars_vertex>\nvoid main() {\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",abcdefe="uniform vec3 color;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <logdepthbuf_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\nvoid main() {\n\t#include <logdepthbuf_fragment>\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n}",abcdeff="uniform float rotation;\nuniform vec2 center;\n#include <common>\n#include <uv_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\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 <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}",abcdefg="uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n}",abcdefh={common:{diffuse:{value:new abcdo(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new au},alphaMap:{value:null},alphaMapTransform:{value:new au},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new au}},envmap:{envMap:{value:null},envMapRotation:{value:new au},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new au}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new au}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new au},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new au},normalScale:{value:new at(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new au},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new au}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new au}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new au}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new abcdo(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,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 abcdo(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new au},alphaTest:{value:0},uvTransform:{value:new au}},sprite:{diffuse:{value:new abcdo(16777215)},opacity:{value:1},center:{value:new at(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new au},alphaMap:{value:null},alphaMapTransform:{value:new au},alphaTest:{value:0}}},abcdefi={basic:{uniforms:abcdr([abcdefh.common,abcdefh.specularmap,abcdefh.envmap,abcdefh.aomap,abcdefh.lightmap,abcdefh.fog]),vertexShader:abcden,fragmentShader:abcdeo},lambert:{uniforms:abcdr([abcdefh.common,abcdefh.specularmap,abcdefh.envmap,abcdefh.aomap,abcdefh.lightmap,abcdefh.emissivemap,abcdefh.bumpmap,abcdefh.normalmap,abcdefh.displacementmap,abcdefh.fog,abcdefh.lights,{emissive:{value:new abcdo(0)}}]),vertexShader:abcdep,fragmentShader:abcdeq},phong:{uniforms:abcdr([abcdefh.common,abcdefh.specularmap,abcdefh.envmap,abcdefh.aomap,abcdefh.lightmap,abcdefh.emissivemap,abcdefh.bumpmap,abcdefh.normalmap,abcdefh.displacementmap,abcdefh.fog,abcdefh.lights,{emissive:{value:new abcdo(0)},specular:{value:new abcdo(1118481)},shininess:{value:30}}]),vertexShader:abcdev,fragmentShader:abcdew},standard:{uniforms:abcdr([abcdefh.common,abcdefh.envmap,abcdefh.aomap,abcdefh.lightmap,abcdefh.emissivemap,abcdefh.bumpmap,abcdefh.normalmap,abcdefh.displacementmap,abcdefh.roughnessmap,abcdefh.metalnessmap,abcdefh.fog,abcdefh.lights,{emissive:{value:new abcdo(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:abcdex,fragmentShader:abcdey},toon:{uniforms:abcdr([abcdefh.common,abcdefh.aomap,abcdefh.lightmap,abcdefh.emissivemap,abcdefh.bumpmap,abcdefh.normalmap,abcdefh.displacementmap,abcdefh.gradientmap,abcdefh.fog,abcdefh.lights,{emissive:{value:new abcdo(0)}}]),vertexShader:abcdez,fragmentShader:abcdefa},matcap:{uniforms:abcdr([abcdefh.common,abcdefh.bumpmap,abcdefh.normalmap,abcdefh.displacementmap,abcdefh.fog,{matcap:{value:null}}]),vertexShader:abcder,fragmentShader:abcdes},points:{uniforms:abcdr([abcdefh.points,abcdefh.fog]),vertexShader:abcdefb,fragmentShader:abcdefc},dashed:{uniforms:abcdr([abcdefh.common,abcdefh.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:abcdel,fragmentShader:abcdem},depth:{uniforms:abcdr([abcdefh.common,abcdefh.displacementmap]),vertexShader:abcdef,fragmentShader:abcdeg},normal:{uniforms:abcdr([abcdefh.common,abcdefh.bumpmap,abcdefh.normalmap,abcdefh.displacementmap,{opacity:{value:1}}]),vertexShader:abcdet,fragmentShader:abcdeu},sprite:{uniforms:abcdr([abcdefh.sprite,abcdefh.fog]),vertexShader:abcdeff,fragmentShader:abcdefg},background:{uniforms:{uvTransform:{value:new au},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:abcdz,fragmentShader:abcdea},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new au}},vertexShader:abcdeb,fragmentShader:abcdec},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:abcded,fragmentShader:abcdee},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:abcdej,fragmentShader:abcdek},distanceRGBA:{uniforms:abcdr([abcdefh.common,abcdefh.displacementmap,{referencePosition:{value:new abm},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:abcdeh,fragmentShader:abcdei},shadow:{uniforms:abcdr([abcdefh.lights,abcdefh.fog,{color:{value:new abcdo(0)},opacity:{value:1}}]),vertexShader:abcdefd,fragmentShader:abcdefe}};function abcdefj(aa,ab,ac){return!aa||!ac&&aa.constructor===ab?aa:"number"==typeof ab.BYTES_PER_ELEMENT?new ab(aa):Array.prototype.slice.call(aa)}abcdefi.physical={uniforms:abcdr([abcdefi.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new au},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new au},clearcoatNormalScale:{value:new at(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new au},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new au},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new au},sheen:{value:0},sheenColor:{value:new abcdo(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new au},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new au},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new au},transmissionSamplerSize:{value:new at},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new au},attenuationDistance:{value:0},attenuationColor:{value:new abcdo(0)},specularColor:{value:new abcdo(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new au},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new au},anisotropyVector:{value:new at},anisotropyMap:{value:null},anisotropyMapTransform:{value:new au}}]),vertexShader:abcdex,fragmentShader:abcdey},Math.sqrt(5),new Float32Array(16),new Float32Array(9),new Float32Array(4),new Map;class abcdefk{constructor(aa,ab,ac,ad){this.parameterPositions=aa,this._cachedIndex=0,this.resultBuffer=void 0!==ad?ad:new ab.constructor(ac),this.sampleValues=ab,this.valueSize=ac,this.settings=null,this.DefaultSettings_={}}evaluate(aa){const ab=this.parameterPositions;let ac=this._cachedIndex,ad=ab[ac],ae=ab[ac-1];aa:{ab:{let af;ac:{ad:if(!(aa<ad)){for(let af=ac+2;;){if(void 0===ad){if(aa<ae)break ad;return ac=ab.length,this._cachedIndex=ac,this.copySampleValue_(ac-1)}if(ac===af)break;if(ae=ad,ad=ab[++ac],aa<ad)break ab}af=ab.length;break ac}if(aa>=ae)break aa;{const ag=ab[1];aa<ag&&(ac=2,ae=ag);for(let af=ac-2;;){if(void 0===ae)return this._cachedIndex=0,this.copySampleValue_(0);if(ac===af)break;if(ad=ae,ae=ab[--ac-1],aa>=ae)break ab}af=ac,ac=0}}for(;ac<af;){const ad=ac+af>>>1;aa<ab[ad]?af=ad:ac=ad+1}if(ad=ab[ac],ae=ab[ac-1],void 0===ae)return this._cachedIndex=0,this.copySampleValue_(0);if(void 0===ad)return ac=ab.length,this._cachedIndex=ac,this.copySampleValue_(ac-1)}this._cachedIndex=ac,this.intervalChanged_(ac,ae,ad)}return this.interpolate_(ac,ae,aa,ad)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(aa){const ab=this.resultBuffer,ac=this.sampleValues,ad=this.valueSize,ae=aa*ad;for(let aa=0;aa!==ad;++aa)ab[aa]=ac[ae+aa];return ab}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}}class abcdefl extends abcdefk{constructor(aa,ab,ac,ad){super(aa,ab,ac,ad),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:2400,endingEnd:2400}}intervalChanged_(aa,ab,ac){const ad=this.parameterPositions;let ae=aa-2,af=aa+1,ag=ad[ae],ah=ad[af];if(void 0===ag)switch(this.getSettings_().endingStart){case 2401:ae=aa,ag=2*ab-ac;break;case 2402:ae=ad.length-2,ag=ab+ad[ae]-ad[ae+1];break;default:ae=aa,ag=ac}if(void 0===ah)switch(this.getSettings_().endingEnd){case 2401:af=aa,ah=2*ac-ab;break;case 2402:af=1,ah=ac+ad[1]-ad[0];break;default:af=aa-1,ah=ab}const ai=.5*(ac-ab),aj=this.valueSize;this._weightPrev=ai/(ab-ag),this._weightNext=ai/(ah-ac),this._offsetPrev=ae*aj,this._offsetNext=af*aj}interpolate_(aa,ab,ac,ad){const ae=this.resultBuffer,af=this.sampleValues,ag=this.valueSize,ah=aa*ag,ai=ah-ag,aj=this._offsetPrev,ak=this._offsetNext,al=this._weightPrev,am=this._weightNext,an=(ac-ab)/(ad-ab),ao=an*an,ap=ao*an,aq=-al*ap+2*al*ao-al*an,ar=(1+al)*ap+(-1.5-2*al)*ao+(-.5+al)*an+1,as=(-1-am)*ap+(1.5+am)*ao+.5*an,at=am*ap-am*ao;for(let aa=0;aa!==ag;++aa)ae[aa]=aq*af[aj+aa]+ar*af[ai+aa]+as*af[ah+aa]+at*af[ak+aa];return ae}}class abcdefm extends abcdefk{constructor(aa,ab,ac,ad){super(aa,ab,ac,ad)}interpolate_(aa,ab,ac,ad){const ae=this.resultBuffer,af=this.sampleValues,ag=this.valueSize,ah=aa*ag,ai=ah-ag,aj=(ac-ab)/(ad-ab),ak=1-aj;for(let aa=0;aa!==ag;++aa)ae[aa]=af[ai+aa]*ak+af[ah+aa]*aj;return ae}}class abcdefn extends abcdefk{constructor(aa,ab,ac,ad){super(aa,ab,ac,ad)}interpolate_(aa){return this.copySampleValue_(aa-1)}}class abcdefo{constructor(aa,ab,ac,ad){if(void 0===aa)throw new Error("THREE.KeyframeTrack: track name is undefined");if(void 0===ab||0===ab.length)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+aa);this.name=aa,this.times=abcdefj(ab,this.TimeBufferType),this.values=abcdefj(ac,this.ValueBufferType),this.setInterpolation(ad||this.DefaultInterpolation)}static toJSON(aa){const ab=aa.constructor;let ac;if(ab.toJSON!==this.toJSON)ac=ab.toJSON(aa);else{ac={name:aa.name,times:abcdefj(aa.times,Array),values:abcdefj(aa.values,Array)};const ab=aa.getInterpolation();ab!==aa.DefaultInterpolation&&(ac.interpolation=ab)}return ac.type=aa.ValueTypeName,ac}InterpolantFactoryMethodDiscrete(aa){return new abcdefn(this.times,this.values,this.getValueSize(),aa)}InterpolantFactoryMethodLinear(aa){return new abcdefm(this.times,this.values,this.getValueSize(),aa)}InterpolantFactoryMethodSmooth(aa){return new abcdefl(this.times,this.values,this.getValueSize(),aa)}setInterpolation(aa){let ab;switch(aa){case ac:ab=this.InterpolantFactoryMethodDiscrete;break;case ad:ab=this.InterpolantFactoryMethodLinear;break;case ae:ab=this.InterpolantFactoryMethodSmooth}if(void 0===ab){const ab="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(void 0===this.createInterpolant){if(aa===this.DefaultInterpolation)throw new Error(ab);this.setInterpolation(this.DefaultInterpolation)}return console.warn("THREE.KeyframeTrack:",ab),this}return this.createInterpolant=ab,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return ac;case this.InterpolantFactoryMethodLinear:return ad;case this.InterpolantFactoryMethodSmooth:return ae}}getValueSize(){return this.values.length/this.times.length}shift(aa){if(0!==aa){const ab=this.times;for(let ac=0,ad=ab.length;ac!==ad;++ac)ab[ac]+=aa}return this}scale(aa){if(1!==aa){const ab=this.times;for(let ac=0,ad=ab.length;ac!==ad;++ac)ab[ac]*=aa}return this}trim(aa,ab){const ac=this.times,ad=ac.length;let ae=0,af=ad-1;for(;ae!==ad&&ac[ae]<aa;)++ae;for(;-1!==af&&ac[af]>ab;)--af;if(++af,0!==ae||af!==ad){ae>=af&&(af=Math.max(af,1),ae=af-1);const aa=this.getValueSize();this.times=ac.slice(ae,af),this.values=this.values.slice(ae*aa,af*aa)}return this}validate(){let aa=!0;const ab=this.getValueSize();ab-Math.floor(ab)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),aa=!1);const ac=this.times,ad=this.values,ae=ac.length;0===ae&&(console.error("THREE.KeyframeTrack: Track is empty.",this),aa=!1);let af=null;for(let ab=0;ab!==ae;ab++){const ad=ac[ab];if("number"==typeof ad&&isNaN(ad)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,ab,ad),aa=!1;break}if(null!==af&&af>ad){console.error("THREE.KeyframeTrack: Out of order keys.",this,ab,ad,af),aa=!1;break}af=ad}if(void 0!==ad&&(ag=ad,ArrayBuffer.isView(ag)&&!(ag instanceof DataView)))for(let ab=0,ac=ad.length;ab!==ac;++ab){const ac=ad[ab];if(isNaN(ac)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,ab,ac),aa=!1;break}}var ag;return aa}optimize(){const aa=this.times.slice(),ab=this.values.slice(),ac=this.getValueSize(),ad=this.getInterpolation()===ae,af=aa.length-1;let ag=1;for(let ae=1;ae<af;++ae){let af=!1;const ah=aa[ae];if(ah!==aa[ae+1]&&(1!==ae||ah!==aa[0]))if(ad)af=!0;else{const aa=ae*ac,ad=aa-ac,ag=aa+ac;for(let ae=0;ae!==ac;++ae){const ac=ab[aa+ae];if(ac!==ab[ad+ae]||ac!==ab[ag+ae]){af=!0;break}}}if(af){if(ae!==ag){aa[ag]=aa[ae];const ad=ae*ac,af=ag*ac;for(let aa=0;aa!==ac;++aa)ab[af+aa]=ab[ad+aa]}++ag}}if(af>0){aa[ag]=aa[af];for(let aa=af*ac,ad=ag*ac,ae=0;ae!==ac;++ae)ab[ad+ae]=ab[aa+ae];++ag}return ag!==aa.length?(this.times=aa.slice(0,ag),this.values=ab.slice(0,ag*ac)):(this.times=aa,this.values=ab),this}clone(){const aa=this.times.slice(),ab=this.values.slice(),ac=new(0,this.constructor)(this.name,aa,ab);return ac.createInterpolant=this.createInterpolant,ac}}abcdefo.prototype.TimeBufferType=Float32Array,abcdefo.prototype.ValueBufferType=Float32Array,abcdefo.prototype.DefaultInterpolation=ad;class abcdefp extends abcdefo{constructor(aa,ab,ac){super(aa,ab,ac)}}abcdefp.prototype.ValueTypeName="bool",abcdefp.prototype.ValueBufferType=Array,abcdefp.prototype.DefaultInterpolation=ac,abcdefp.prototype.InterpolantFactoryMethodLinear=void 0,abcdefp.prototype.InterpolantFactoryMethodSmooth=void 0;(class extends abcdefo{}).prototype.ValueTypeName="color";(class extends abcdefo{}).prototype.ValueTypeName="number";class abcdefq extends abcdefk{constructor(aa,ab,ac,ad){super(aa,ab,ac,ad)}interpolate_(aa,ab,ac,ad){const ae=this.resultBuffer,af=this.sampleValues,ag=this.valueSize,ah=(ac-ab)/(ad-ab);let ai=aa*ag;for(let aa=ai+ag;ai!==aa;ai+=4)abl.slerpFlat(ae,0,af,ai-ag,af,ai,ah);return ae}}class abcdefr extends abcdefo{InterpolantFactoryMethodLinear(aa){return new abcdefq(this.times,this.values,this.getValueSize(),aa)}}abcdefr.prototype.ValueTypeName="quaternion",abcdefr.prototype.InterpolantFactoryMethodSmooth=void 0;class abcdefs extends abcdefo{constructor(aa,ab,ac){super(aa,ab,ac)}}abcdefs.prototype.ValueTypeName="string",abcdefs.prototype.ValueBufferType=Array,abcdefs.prototype.DefaultInterpolation=ac,abcdefs.prototype.InterpolantFactoryMethodLinear=void 0,abcdefs.prototype.InterpolantFactoryMethodSmooth=void 0;(class extends abcdefo{}).prototype.ValueTypeName="vector";Error;const abcdeft="\\[\\]\\.:\\/",abcdefu=new RegExp("["+abcdeft+"]","g"),abcdefv="[^"+abcdeft+"]",abcdefw="[^"+abcdeft.replace("\\.","")+"]",abcdefx=new RegExp("^"+/((?:WC+[\/:])*)/.source.replace("WC",abcdefv)+/(WCOD+)?/.source.replace("WCOD",abcdefw)+/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",abcdefv)+/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",abcdefv)+"$"),abcdefy=["material","materials","bones","map"];class abcdefz{constructor(aa,ab,ac){this.path=ab,this.parsedPath=ac||abcdefz.parseTrackName(ab),this.node=abcdefz.findNode(aa,this.parsedPath.nodeName),this.rootNode=aa,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(aa,ab,ac){return aa&&aa.isAnimationObjectGroup?new abcdefz.Composite(aa,ab,ac):new abcdefz(aa,ab,ac)}static sanitizeNodeName(aa){return aa.replace(/\s/g,"_").replace(abcdefu,"")}static parseTrackName(aa){const ab=abcdefx.exec(aa);if(null===ab)throw new Error("PropertyBinding: Cannot parse trackName: "+aa);const ac={nodeName:ab[2],objectName:ab[3],objectIndex:ab[4],propertyName:ab[5],propertyIndex:ab[6]},ad=ac.nodeName&&ac.nodeName.lastIndexOf(".");if(void 0!==ad&&-1!==ad){const aa=ac.nodeName.substring(ad+1);-1!==abcdefy.indexOf(aa)&&(ac.nodeName=ac.nodeName.substring(0,ad),ac.objectName=aa)}if(null===ac.propertyName||0===ac.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+aa);return ac}static findNode(aa,ab){if(void 0===ab||""===ab||"."===ab||-1===ab||ab===aa.name||ab===aa.uuid)return aa;if(aa.skeleton){const ac=aa.skeleton.getBoneByName(ab);if(void 0!==ac)return ac}if(aa.children){const ac=function(aa){for(let ad=0;ad<aa.length;ad++){const ae=aa[ad];if(ae.name===ab||ae.uuid===ab)return ae;const af=ac(ae.children);if(af)return af}return null},ad=ac(aa.children);if(ad)return ad}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(aa,ab){aa[ab]=this.targetObject[this.propertyName]}_getValue_array(aa,ab){const ac=this.resolvedProperty;for(let ad=0,ae=ac.length;ad!==ae;++ad)aa[ab++]=ac[ad]}_getValue_arrayElement(aa,ab){aa[ab]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(aa,ab){this.resolvedProperty.toArray(aa,ab)}_setValue_direct(aa,ab){this.targetObject[this.propertyName]=aa[ab]}_setValue_direct_setNeedsUpdate(aa,ab){this.targetObject[this.propertyName]=aa[ab],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(aa,ab){this.targetObject[this.propertyName]=aa[ab],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(aa,ab){const ac=this.resolvedProperty;for(let ad=0,ae=ac.length;ad!==ae;++ad)ac[ad]=aa[ab++]}_setValue_array_setNeedsUpdate(aa,ab){const ac=this.resolvedProperty;for(let ad=0,ae=ac.length;ad!==ae;++ad)ac[ad]=aa[ab++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(aa,ab){const ac=this.resolvedProperty;for(let ad=0,ae=ac.length;ad!==ae;++ad)ac[ad]=aa[ab++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(aa,ab){this.resolvedProperty[this.propertyIndex]=aa[ab]}_setValue_arrayElement_setNeedsUpdate(aa,ab){this.resolvedProperty[this.propertyIndex]=aa[ab],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(aa,ab){this.resolvedProperty[this.propertyIndex]=aa[ab],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(aa,ab){this.resolvedProperty.fromArray(aa,ab)}_setValue_fromArray_setNeedsUpdate(aa,ab){this.resolvedProperty.fromArray(aa,ab),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(aa,ab){this.resolvedProperty.fromArray(aa,ab),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(aa,ab){this.bind(),this.getValue(aa,ab)}_setValue_unbound(aa,ab){this.bind(),this.setValue(aa,ab)}bind(){let aa=this.node;const ab=this.parsedPath,ac=ab.objectName,ad=ab.propertyName;let ae=ab.propertyIndex;if(aa||(aa=abcdefz.findNode(this.rootNode,ab.nodeName),this.node=aa),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!aa)return void console.warn("THREE.PropertyBinding: No target node found for track: "+this.path+".");if(ac){let ad=ab.objectIndex;switch(ac){case"materials":if(!aa.material)return void console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);if(!aa.material.materials)return void console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);aa=aa.material.materials;break;case"bones":if(!aa.skeleton)return void console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);aa=aa.skeleton.bones;for(let ab=0;ab<aa.length;ab++)if(aa[ab].name===ad){ad=ab;break}break;case"map":if("map"in aa){aa=aa.map;break}if(!aa.material)return void console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);if(!aa.material.map)return void console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);aa=aa.material.map;break;default:if(void 0===aa[ac])return void console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);aa=aa[ac]}if(void 0!==ad){if(void 0===aa[ad])return void console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,aa);aa=aa[ad]}}const af=aa[ad];if(void 0===af){const ac=ab.nodeName;return void console.error("THREE.PropertyBinding: Trying to update property for track: "+ac+"."+ad+" but it wasn't found.",aa)}let ag=this.Versioning.None;this.targetObject=aa,void 0!==aa.needsUpdate?ag=this.Versioning.NeedsUpdate:void 0!==aa.matrixWorldNeedsUpdate&&(ag=this.Versioning.MatrixWorldNeedsUpdate);let ah=this.BindingType.Direct;if(void 0!==ae){if("morphTargetInfluences"===ad){if(!aa.geometry)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);if(!aa.geometry.morphAttributes)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);void 0!==aa.morphTargetDictionary[ae]&&(ae=aa.morphTargetDictionary[ae])}ah=this.BindingType.ArrayElement,this.resolvedProperty=af,this.propertyIndex=ae}else void 0!==af.fromArray&&void 0!==af.toArray?(ah=this.BindingType.HasFromToArray,this.resolvedProperty=af):Array.isArray(af)?(ah=this.BindingType.EntireArray,this.resolvedProperty=af):this.propertyName=ad;this.getValue=this.GetterByBindingType[ah],this.setValue=this.SetterByBindingTypeAndVersioning[ah][ag]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}abcdefz.Composite=class{constructor(aa,ab,ac){const ad=ac||abcdefz.parseTrackName(ab);this._targetGroup=aa,this._bindings=aa.subscribe_(ab,ad)}getValue(aa,ab){this.bind();const ac=this._targetGroup.nCachedObjects_,ad=this._bindings[ac];void 0!==ad&&ad.getValue(aa,ab)}setValue(aa,ab){const ac=this._bindings;for(let ad=this._targetGroup.nCachedObjects_,ae=ac.length;ad!==ae;++ad)ac[ad].setValue(aa,ab)}bind(){const aa=this._bindings;for(let ab=this._targetGroup.nCachedObjects_,ac=aa.length;ab!==ac;++ab)aa[ab].bind()}unbind(){const aa=this._bindings;for(let ab=this._targetGroup.nCachedObjects_,ac=aa.length;ab!==ac;++ab)aa[ab].unbind()}},abcdefz.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},abcdefz.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},abcdefz.prototype.GetterByBindingType=[abcdefz.prototype._getValue_direct,abcdefz.prototype._getValue_array,abcdefz.prototype._getValue_arrayElement,abcdefz.prototype._getValue_toArray],abcdefz.prototype.SetterByBindingTypeAndVersioning=[[abcdefz.prototype._setValue_direct,abcdefz.prototype._setValue_direct_setNeedsUpdate,abcdefz.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[abcdefz.prototype._setValue_array,abcdefz.prototype._setValue_array_setNeedsUpdate,abcdefz.prototype._setValue_array_setMatrixWorldNeedsUpdate],[abcdefz.prototype._setValue_arrayElement,abcdefz.prototype._setValue_arrayElement_setNeedsUpdate,abcdefz.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[abcdefz.prototype._setValue_fromArray,abcdefz.prototype._setValue_fromArray_setNeedsUpdate,abcdefz.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]],new Float32Array(1),"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"166"}})),"undefined"!=typeof window&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__="166");const abcdefga=()=>{const aa=null!=window.XRHand&&null!=window.XRMediaBinding,ab=navigator.userAgent.includes("OculusBrowser"),ac=aa&&ab?"Full":aa||ab?"Partial":"None";return{match:"None"!==ac,confidence:ac}},abcdefgb=()=>{const aa=null!=window.mozInnerScreenX&&null==window.speechSynthesis,ab=navigator.userAgent.includes("Mobile VR")&&!navigator.userAgent.includes("OculusBrowser"),ac=aa&&ab?"Full":aa||ab?"Partial":"None";return{match:"None"!==ac,confidence:ac}},abcdefgc=async()=>{const aa=navigator.xr&&await navigator.xr.isSessionSupported("immersive-vr")&&await navigator.xr.isSessionSupported("immersive-ar"),ab=navigator.userAgent.includes("Pico Neo 3 Link"),ac=aa&&ab?"Full":aa||ab?"Partial":"None";return{match:"None"!==ac,confidence:ac}},abcdefgd=()=>{const aa=0===navigator.maxTouchPoints||0===navigator.msMaxTouchPoints,ab=!navigator.userAgent.includes("Android")&&!navigator.userAgent.includes("Mobile"),ac=aa&&ab?"Full":aa||ab?"Partial":"None";return{match:"None"!==ac,confidence:ac}},abcdefge=async()=>{let aa={platform:"",confidence:""};return aa=abcdefga().match?{platform:"Oculus",confidence:abcdefga().confidence}:abcdefgb().match?{platform:"Wolvic",confidence:abcdefgb().confidence}:await abcdefgc().match?{platform:"Pico",confidence:await abcdefgc().confidence}:abcdefgd().match?{platform:"Desktop",confidence:abcdefgd().confidence}:{platform:"Unknown",confidence:"None"},aa},abcdefgf=/^(?:[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,abcdefgg=function(aa){if(!function(aa){return"string"==typeof aa&&abcdefgf.test(aa)}(aa))throw TypeError("Invalid UUID");var ab,ac=new Uint8Array(16);return ac[0]=(ab=parseInt(aa.slice(0,8),16))>>>24,ac[1]=ab>>>16&255,ac[2]=ab>>>8&255,ac[3]=255&ab,ac[4]=(ab=parseInt(aa.slice(9,13),16))>>>8,ac[5]=255&ab,ac[6]=(ab=parseInt(aa.slice(14,18),16))>>>8,ac[7]=255&ab,ac[8]=(ab=parseInt(aa.slice(19,23),16))>>>8,ac[9]=255&ab,ac[10]=(ab=parseInt(aa.slice(24,36),16))/1099511627776&255,ac[11]=ab/4294967296&255,ac[12]=ab>>>24&255,ac[13]=ab>>>16&255,ac[14]=ab>>>8&255,ac[15]=255&ab,ac},abcdefgh="https://beacon2.zesty.market/zgraphql",abcdefgi="https://relay.zesty.xyz/",abcdefgj="DefaultCampaign",abcdefgk="https://api.zesty.market/api";let abcdefgl=!1;const abcdefgm={},abcdefgn={},abcdefgo={},abcdefgp={},abcdefgq={},abcdefgr={};new class{relay;specifiedName;specifiedDescription;specifiedUrl;specifiedImage;specifiedTags;browserContext="document"in globalThis;topLevelDocument=null;stripQueryParams=!0;constructor(aa,ab=null){this.browserContext?aa?(this.relay=aa,ab&&(this.specifiedName=ab.name??null,this.specifiedDescription=ab.description??null,this.specifiedUrl=ab.url??null,this.specifiedImage=ab.image??null,this.specifiedTags=ab.tags??null,this.stripQueryParams=ab.stripQueryParams??!0),this.sessionId=crypto&&"randomUUID"in crypto?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(aa){const ab=Math.floor(16*Math.random());return("x"==aa?ab:3&ab|8).toString(16)}))):console.error("You must specify a relay URL for the beacon to connect to!"):console.error("This beacon can only be used in a browser context!")}getUrl(){if(this.specifiedUrl)return this.specifiedUrl;const aa=this.topLevelDocument??window.document,ab=aa.head.querySelector('meta[property="og:url"]'),ac=aa.head.querySelector("meta[data-canonical-url]");if(ab)return ab.getAttribute("content");if(ac)return ac.getAttribute("data-canonical-url");{const aa=this.topLevelDocument?window.top.location:window.document.location;return this.stripQueryParams?aa.protocol+"//"+aa.host+aa.pathname:aa.href}}getName(){if(this.specifiedName)return this.specifiedName;const aa=this.topLevelDocument??window.document,ab=aa.head.querySelector('meta[name="application-name"]');return ab?ab.getAttribute("content"):aa.title}getDescription(){if(this.specifiedDescription)return this.specifiedDescription;const aa=this.topLevelDocument??window.document,ab=aa.head.querySelector('meta[name="description"]'),ac=aa.head.querySelector('meta[property="og:description"]');return ab&&ab.hasAttribute("description")?ab.getAttribute("description"):ab?ab.getAttribute("content"):ac?ac.getAttribute("content"):""}async getImage(){if(this.specifiedImage)return this.specifiedImage;const aa=this.topLevelDocument??window.document,ab=aa.head.querySelector('meta[property="og:image"]');await new Promise((aa=>setTimeout(aa,5e3)));const ac=aa.querySelector("a-scene")?.components.screenshot;if(ab){let aa=ab.getAttribute("content");return 0===aa.length?"#":aa.startsWith("http")?aa:new URL(aa,this.getUrl()).href}if(ac){const ab=aa.querySelector("a-scene");let ad=ac.width,ae=ac.height;ab.setAttribute("screenshot","width: 2048; height: 1024;");const af=ac.getCanvas("perspective").toDataURL();return ab.setAttribute("screenshot",`width: ${ad}; height: ${ae};`),af}return"#"}isAdult(){const aa=(this.topLevelDocument??window.document).head.querySelector('meta[name="rating"]');if(aa){const ab="adult"===aa.getAttribute("content"),ac="RTA-5042-1996-1400-1577-RTA"===aa.getAttribute("content");return ab||ac}return!1}getTags(){if(this.specifiedTags)return this.specifiedTags;const aa=(this.topLevelDocument??window.document).head.querySelector('meta[name="keywords"]');return aa?aa.getAttribute("content"):""}async signal(){if(!this.browserContext)return void console.error("This beacon can only be used in a browser context!");if(!this.relay)return void console.error("You must specify a relay URL for the beacon to connect to!");if("complete"!==document.readyState&&await new Promise((aa=>document.addEventListener("DOMContentLoaded",aa))),window.self!==window.top)try{this.topLevelDocument=window.top.document}catch{return void console.error("Cannot get URL of cross-origin frame, aborting.")}const aa=this.getUrl(),ab=this.getName(),ac=this.getDescription(),ad=await this.getImage(),ae=this.isAdult(),af=this.getTags();if(!(aa&&ab&&ac&&ad))return void console.error("Missing required metadata! Check your <meta> tags for the following attributes: data-canonical-url, name=application-name, name=description, og:image");const ag={url:aa,name:ab,description:ac,active:!0,image:ad,adult:ae,tags:af};await fetch(`${this.relay}/beacon`,{method:"PUT",body:JSON.stringify(ag),headers:{"Content-Type":"application/json"}});const ah=setInterval((async()=>{try{await fetch(`${this.relay}/session`,{method:"POST",body:JSON.stringify({session_id:this.sessionId,url:aa,timestamp:Date.now()}),headers:{"Content-Type":"application/json"}})}catch{console.error("Failed to send heartbeat signal! Relay server is not reachable."),clearInterval(ah)}}),5e3)}}("https://relay.zesty.xyz").signal();const abcdefgs=new(URLSearchParams||Map)(globalThis.location?.search),abcdefgt="true"===abcdefgs.get("debug"),abcdefgu="true"===abcdefgs.get("staging"),abcdefgv="localhost"===globalThis.location?.hostname||"127.0.0.1"===globalThis.location?.hostname;function abcdefgw(aa,ab){const ac=document.createElement("div");ac.id=`zesty-div-${aa}`,ac.style.height="250px",ac.style.width="300px",ac.style.position="fixed",ac.style.top="0",ac.style.zIndex="-2","medium-rectangle"==ab?abcdefgp[aa]="pb-slot-right-1":"billboard"==ab?(abcdefgp[aa]="pb-slot-billboard",ac.style.width="728px",ac.style.height="90px"):"mobile-phone-interstitial"==ab&&(abcdefgp[aa]="pb-slot-interstitial",ac.style.width="1080px",ac.style.height="1920px"),abcdefgo[aa]=ac.id,document.body.appendChild(ac),abcdefgr[aa]=setInterval((()=>{let ab=document.getElementById(`zesty-div-${aa}`);const ac=ab?.querySelector('iframe:not([title*="prpb"])');if(ac){let ab=function(aa){if(!aa.contentDocument)return;const ab=aa.contentDocument.querySelectorAll("img"),ac=Array.prototype.filter.call(ab,(aa=>aa.height>1));return 0!=ac.length?{asset_url:ac[0].src,cta_url:ac[0].parentElement.href}:void 0}(ac);if(ab){const{asset_url:ac,cta_url:ad}=ab;ac===abcdefgn[aa].asset_url&&ad===abcdefgn[aa].cta_url||(abcdefgn[aa]={asset_url:ac,cta_url:ad},abcdefgq[aa]={asset_url:ac,cta_url:ad})}}}),1e3)}const abcdefgx=[{id:"4902864a-5531-496b-8d4d-ec7b9849e8e1",format:"medium-rectangle",oldFormat:"tall",absoluteWidth:.75,absoluteHeight:.625}],abcdefgy=aa=>abcdefgx.find((ab=>ab.id===aa))||{},abcdefgz=(aa,ac="standard",ad=!1,ae=null,af=null,ag=null)=>({Ads:[{asset_url:af?.length>0?af:ab[ad?ae:aa].style[ac],cta_url:ag?.length>0?ag:abcdefgi}],CampaignId:abcdefgj}),abcdefgha=async(aa,ab,ac,ad,ae,af=null,ag=null)=>{try{const ah=encodeURI(window.location.href).replace(/\/$/,""),ai=await fetch(`${abcdefgk}/ad?ad_unit_id=${aa}&url=${ah}`);return 200==ai.status?await ai.json():abcdefgz(ab,ac,ad,ae?.format,af,ag)}catch(aa){return console.warn("Error retrieving campaign banner. Using default."),abcdefgz(ab,ac,ad,ae?.format,af,ag)}},abcdefghb=async(aa,ab=null)=>{const{platform:ac,confidence:ad}=await abcdefge();try{await fetch(abcdefgh,{method:"POST",body:JSON.stringify({query:`mutation { increment(eventType: clicks, spaceId: "${aa}", campaignId: "${ab}", platform: { name: ${ac}, confidence: ${ad} }) { message } }`}),headers:{"Content-Type":"application/json"}})}catch(aa){console.log("Failed to emit onclick event",aa.message)}},abcdefghc=async(aa,ab)=>{const{platform:ac,confidence:ad}=await abcdefge();try{await fetch(abcdefgh,{method:"POST",body:JSON.stringify({query:`mutation { increment(eventType: session, spaceId: "${aa}", campaignId: "${ab}", platform: { name: ${ac}, confidence: ${ad} }) { message } }`}),headers:{"Content-Type":"application/json"}})}catch(aa){console.log("Failed to emit session analytics",aa.message)}};function abcdefghd(aa){const ab=document.querySelector("[camera]");ab&&ab.components&&ab.components.camera&&ab.components.camera.camera?aa(ab.components.camera.camera):setTimeout((function(){abcdefghd(aa)}),2e3)}console.log("Zesty SDK Version: ","3.2.1");const abcdefghe=async function(){return new Promise((aa=>{abcdefghd((ab=>{aa(ab)}))}))}();let abcdefghf=!1,abcdefghg={};AFRAME.registerComponent("zesty-banner",{data:{},schema:{adUnit:{type:"string"},format:{type:"string",oneOf:["tall","wide","square"]},style:{type:"string",default:"standard",oneOf:["standard","minimal"]},height:{type:"float",default:1},beacon:{type:"boolean",default:!0},prebid:{type:"boolean",default:!0},customDefaultImage:{type:"string"},customDefaultCtaUrl:{type:"string"},modalTrigger:{type:"string"},modalDelay:{type:"number",default:0},modalBackground:{type:"boolean",default:!1}},init:function(){this.loadedFirstAd=!1,this.lastVisible=null,this.durationThreshold=1e4,abcdefghe.then((aa=>{this.camera=aa})),this.object=this.el.object3D,this.sceneEl=document.querySelector("a-scene"),this.scene=this.sceneEl.object3D,this.canvasTexture=null,this.canvasIframe=null,this.canvas=null,this.canvasInterval=null,this.tick=AFRAME.utils.throttleTick(this.tick,3e4,this),this.registerEntity()},registerEntity:function(){const aa=this.data.adUnit,ac=this.data.format||"medium-rectangle";!async function(aa,ac,ad,ae,af,ag,ah=!0,ai="",aj="",ak="",al=!1,am=0){let an=abcdefgy(ac),ao=an?.format&&ad!==an.format;const ap=ao?an.format:ad,aq=ao?an.absoluteWidth:ab[ap].width*af,ar=ao?an.absoluteHeight:af,as=document.querySelector("a-scene");let at=as.querySelector("a-assets");at||(at=document.createElement("a-assets"),as.appendChild(at));const au=ai.length>0?ai:ab[ap].style[ae],av=document.createElement("a-plane");av.setAttribute("src",au),av.setAttribute("width",aq),av.setAttribute("height",ar),av.setAttribute("transparent","true"),av.setAttribute("shader","flat"),av.setAttribute("side","double"),av.setAttribute("class","clickable"),aa.appendChild(av);const aw=()=>{const af=aa.object3D.getObjectByProperty("isMesh",!0);af&&af.geometry.computeBoundingBox();const{min:an,max:ao}=(new THREE.Box3).setFromObject(aa.object3D),aq=aa.components["zesty-banner"].camera;if(aa.components["zesty-banner"].loadedFirstAd){if(!((aa,ab,ac,ad)=>{const ae=new abp((new abm).fromArray(aa),(new abm).fromArray(ab)),af=(new abcdy).setFromProjectionMatrix((new abci).fromArray(ac));return af.planes.forEach((aa=>aa.applyMatrix4((new abci).fromArray(ad)))),af.intersectsBox(ae)})([an.x,an.y,an.z],[ao.x,ao.y,ao.z],aq.projectionMatrix.toArray(),aq.matrixWorld.toArray()))return}else aa.components["zesty-banner"].loadedFirstAd=!0;const as=async function(aa,ab,ac,ad,ae=!0,af="",ag=""){const ah=await(async(aa,ab="tall",ac="standard",ad=!0,ae=null,af=null)=>{if(["tall","wide","square"].includes(ab)&&console.warn("The old Zesty banner formats (tall, wide, and square) are being deprecated and will be removed in a future version. Please update to one of the new IAB formats (mobile-phone-interstitial, billboard, and medium-rectangle).\nCheck https://docs.zesty.xyz/guides/developers/ad-units for more information."),abcdefgt)return new Promise((aa=>aa((aa=>({Ads:[{asset_url:`${abcdefgu?"https://api-staging.zesty.market/api":abcdefgk}/ad/sample?format=${aa}×tamp=${Date.now()}`,cta_url:abcdefgi}],CampaignId:abcdefgj}))(ab))));try{abcdefgg(aa)}catch(ad){return console.warn(`Ad unit ID ${aa} is not a valid UUID.`),new Promise((aa=>aa(abcdefgz(ab,ac,!1,null,ae,af))))}let ag=abcdefgy(aa),ah=(ag?.oldFormat&&ab==ag?.oldFormat)??!1;if(!aa)return new Promise((aa=>aa(abcdefgz(ab,ac,ah,ag.format,ae,af))));if(!ad)return abcdefgha(aa,ab,ac,ah,ag,ae,af);if(abcdefgl)abcdefgq[aa]=null,abcdefgm[aa]=0,abcdefgn[aa]={asset_url:null,cta_url:null},abcdefgo[aa]||abcdefgw(aa,ab),abcdefgv||tude.cmd.push((function(){tude.refreshAdsViaDivMappings([{divId:abcdefgo[aa],baseDivId:abcdefgp[aa]}])}));else{const ac=ah?ag.format:ab;abcdefgm[aa]=0,abcdefgn[aa]={asset_url:null,cta_url:null},((aa,ab)=>{if(abcdefgt)return console.log("Debug mode enabled, skipping Prebid initialization."),void(abcdefgl=!0);if(abcdefgw(aa,ab),!abcdefgv){const ab=document.createElement("link");ab.href="https://www.googletagservices.com/tag/js/gpt.js",ab.rel="preload",ab.as="script",document.head.appendChild(ab);const ac=document.createElement("script");ac.src="https://dn0qt3r0xannq.cloudfront.net/zesty-ig89tpzq8N/zesty-longform/prebid-load.js",ac.async=!0,document.head.appendChild(ac);const ad=document.createElement("script");ad.src="https://cdn.jsdelivr.net/npm/gifler@0.1.0/gifler.min.js",document.head.appendChild(ad),window.Raven=window.Raven||{cmd:[]},window.Raven.cmd.push((({config:ab})=>{ab.setCustom({param1:aa})}))}window.tude=window.tude||{cmd:[]},abcdefgv||tude.cmd.push((function(){tude.refreshAdsViaDivMappings([{divId:`zesty-div-${aa}`,baseDivId:abcdefgp[aa]}])})),abcdefgl=!0})(aa,ac)}return new Promise(((ad,ai)=>{!async function ai(){if(abcdefgq[aa]?.asset_url&&abcdefgq[aa]?.cta_url){const{asset_url:ab,cta_url:ac}=abcdefgq[aa];if(ab.startsWith("canvas://")){const aa=document.createElement("iframe");aa.id="zesty-canvas-iframe",document.body.appendChild(aa),aa.contentDocument.open(),aa.contentDocument.write(ab.split("canvas://")[1]),aa.contentDocument.close()}ad({Ads:[{asset_url:ab,cta_url:ac}],CampaignId:"Prebid"})}else if(abcdefgm[aa]++,5==abcdefgm[aa]){const ai=await abcdefgha(aa,ab,ac,ah,ag,ae,af);abcdefgm[aa]=0,ad(ai)}else setTimeout(ai,1e3)}()}))})(aa,ab,ac,ae,af,ag),{asset_url:ai,cta_url:aj}=ah.Ads[0],ak=document.createElement("img");return ak.setAttribute("id",aa+Math.random()),ak.setAttribute("crossorigin",""),ai?ai.includes("canvas://")?new Promise((ab=>{ab({img:{src:ai},uri:aa,url:aj,campaignId:ah.CampaignId})})):(ak.setAttribute("src",ai),new Promise(((ab,ac)=>{ak.onload=()=>ab({img:ak,uri:aa,url:aj,campaignId:ah.CampaignId}),ak.onerror=()=>ac(new Error("img load error"))}))):{id:"blank"}}(ac,ad,ae,0,ah,ai,aj).then((aa=>(aa.img&&"string"!=typeof aa.img&&at.appendChild(aa.img),aa)));as.then((ad=>async function(aa,ac,ad,ae,af,ag,ah,ai,aj,ak,al){let am=abcdefgy(ae),an=am?.format&&af!==am.oldFormat;if(ad.components["zesty-banner"].canvasInterval&&(clearInterval(ad.components["zesty-banner"].canvasInterval),ad.components["zesty-banner"].canvasInterval=null),ad.components["zesty-banner"].canvasTexture&&(ad.components["zesty-banner"].canvasTexture.dispose(),ad.components["zesty-banner"].canvasTexture=null),ad.components["zesty-banner"].canvasIframe&&(document.body.removeChild(ad.components["zesty-banner"].canvasIframe),ad.components["zesty-banner"].canvasIframe=null),ad.components["zesty-banner"].canvas&&(document.body.removeChild(ad.components["zesty-banner"].canvas),ad.components["zesty-banner"].canvas=null),!1!==ad.getAttribute("visible")){if(aa.img){if(aa.img.src.includes("canvas://")){const aa=document.querySelector("#zesty-canvas-iframe"),ab=await new Promise((ab=>{let ac=setInterval((()=>{const ad=aa.contentDocument.querySelector("canvas");ad&&(clearInterval(ac),ab(ad))}),25)}));ab.id="zestyCanvas",ab.style.zIndex=-3,document.body.appendChild(ab),ad.components["zesty-banner"].canvas=ab,ad.components["zesty-banner"].canvasIframe=aa,ad.components["zesty-banner"].canvasInterval=setInterval((()=>{ad.components["zesty-banner"].updateCanvasTexture()}),25)}else if(aa.img.src.includes(".gif")){const ab=document.createElement("canvas");ab.id="zestyCanvas",ab.style.zIndex=-3,document.body.appendChild(ab),ad.components["zesty-banner"].canvas=ab,gifler(aa.img.src).animate("#zestyCanvas"),ad.components["zesty-banner"].canvasInterval=setInterval((()=>{ad.components["zesty-banner"].updateCanvasTexture()}),100)}else ac.setAttribute("src",`#${aa.img.id}`);ac.setAttribute("width",an?am.absoluteWidth:ab[af].width*ah),ac.setAttribute("height",an?am.absoluteHeight:ah),ac.setAttribute("transparent","true"),ac.setAttribute("shader","flat")}ai&&!abcdefghf&&((async(aa,ab=null)=>{const{platform:ac,confidence:ad}=await abcdefge();try{await fetch(abcdefgh,{method:"POST",body:JSON.stringify({query:`mutation { increment(eventType: visits, spaceId: "${aa}", campaignId: "${ab}", platform: { name: ${ac}, confidence: ${ad} }) { message } }`}),headers:{"Content-Type":"application/json"}})}catch(aa){console.log("Failed to emit onload event",aa.message)}})(ae,aa.campaignId),abcdefghf=!0),ac.onclick=async()=>{const ab=document.querySelector("a-scene");await ab.exitVR(),aa.url&&((aa=>{if(aa){if(abcdefga().match){if(aa.includes("https://www.meta.com/experiences/"))return void setTimeout((()=>{window.open(aa,"_blank")}),1e3)}else if(abcdefgb().match){const ab=document.createElement("div"),ac=document.createElement("div"),ad=document.createElement("p"),ae=document.createElement("button"),af=document.createElement("button");return ab.style.backgroundColor="rgb(0, 0, 0, 0.75)",ab.style.color="white",ab.style.textAlign="center",ab.style.position="fixed",ab.style.top="50%",ab.style.left="50%",ab.style.padding="5%",ab.style.borderRadius="5%",ab.style.transform="translate(-50%, -50%)",ad.innerHTML=`<b>This billboard leads to ${aa}. Continue?</b>`,ae.innerText="Move cursor back into window.",ae.style.width="100vw",ae.style.height="100vh",ae.onmouseenter=()=>{ae.style.width="auto",ae.style.height="auto",ae.innerText="Yes"},ae.onclick=()=>{window.open(aa,"_blank"),ab.remove()},af.innerText="No",af.onclick=()=>{ab.remove()},ab.append(ac),ac.append(ad),ac.append(ae),ac.append(af),void document.body.append(ab)}window.open(aa,"_blank")}})(aa.url),ai&&abcdefghb(ae,aa.campaignId))},ad.bannerURI=aa.uri,ad.imgSrc=aa.img.src,ad.url=aa.url,aj&&(abcdefghg[ae]&&document.removeEventListener(aj,abcdefghg[ae]),abcdefghg[ae]=()=>{let ab=((aa,ab,ac,ad,ae,af,ag=0)=>{const ah=document.createElement("div");let ai;ah.setAttribute("popover","manual"),ah.id="ad-popover-"+Date.now(),af&&(ai=document.createElement("div"),ai.style.position="fixed",ai.style.top="0",ai.style.left="0",ai.style.width="100%",ai.style.height="100%",ai.style.backgroundColor="rgba(0, 0, 0, 0.75)",ai.style.zIndex="2147483646"),Object.assign(ah.style,{borderRadius:"16px",backgroundColor:"#444343",border:"2px solid #F4801E",display:"flex",flexDirection:"column",padding:"1em",margin:"auto",position:"relative",boxSizing:"border-box",zIndex:"2147483647",pointerEvents:"auto"});const aj=document.createElement("h1");aj.innerText="Ad",aj.style.textAlign="center",aj.style.font="normal 32px sans-serif",aj.style.color="#F4801E",aj.style.marginTop="0";const ak=document.createElement("img");let al,am;switch(ak.src=ad,ac){case"medium-rectangle":default:al=300,am=250;break;case"billboard":al=970,am=250;break;case"mobile-phone-interstitial":al=320,am=480}ak.width=al,ak.height=am,ak.style.display="block";const an=document.createElement("a");an.href=ae,an.target="_blank",an.style.cursor="pointer",an.addEventListener("click",(()=>{try{abcdefghb(aa,ab)}catch(aa){}})),an.appendChild(ak);const ao=document.createElement("div");Object.assign(ao.style,{display:"flex",justifyContent:"flex-end",marginBottom:"0.5em",pointerEvents:"auto",zIndex:"2"});const ap=document.createElement("button");return ap.textContent="✕",ap.type="button",ap.setAttribute("aria-label","Close"),ap.style.display="none",setTimeout((()=>{ap.style.display="block",aj.style.marginTop="-1.4em"}),ag),Object.assign(ap.style,{fontFamily:'system-ui, -apple-system, "Segoe UI", Arial, sans-serif',cursor:"pointer",backgroundColor:"#575656",borderRadius:"16px",fontSize:"1.2em",color:"#F4801E",padding:"0.5em",border:"2px solid #575656",outline:"none"}),ap.addEventListener("click",(aa=>{aa.stopPropagation(),(()=>{try{"function"==typeof ah.hidePopover&&ah.hidePopover()}catch(aa){}ah.parentElement&&ah.parentElement.removeChild(ah),ai&&document.body.removeChild(ai)})()})),ai&&document.body.appendChild(ai),ao.appendChild(ap),ah.appendChild(ao),ah.appendChild(aj),ah.appendChild(an),document.body.appendChild(ah),"function"==typeof ah.showPopover?setTimeout((()=>{try{ah.showPopover()}catch(aa){ah.style.position="fixed",ah.style.left="50%",ah.style.top="50%",ah.style.transform="translate(-50%,-50%)"}}),0):setTimeout((()=>{ah.style.position="fixed",ah.style.left="50%",ah.style.top="50%",ah.style.transform="translate(-50%,-50%)"}),0),ah})(ae,aa.campaignId,af,aa.img.src,aa.url,ak,al);document.body.appendChild(ab)},document.addEventListener(aj,abcdefghg[ae]))}}(ad,av,aa,ac,ap,0,ar,ag,ak,al,am)))};aw(),setInterval(aw,3e4)}(this.el,aa,ac,this.data.style,this.data.height,this.data.beacon,this.data.prebid,this.data.customDefaultImage,this.data.customDefaultCtaUrl,this.data.modalTrigger,this.data.modalBackground,this.data.modalDelay)},tick:function(){this.data.adUnit&&abcdefghc(this.data.adUnit,null)},sendSessionAnalytics:function(){this.data.adUnit&&abcdefghc(this.data.adUnit,null)},updateCanvasTexture:function(){!this.canvasTexture&&this.canvas.hasAttribute("width")?(this.canvasTexture=new THREE.CanvasTexture(this.canvas),this.el.children[0].setAttribute("material","src",this.canvasTexture)):this.canvasTexture&&(this.canvasTexture.needsUpdate=!0)}}),AFRAME.registerPrimitive("a-zesty",{defaultComponents:{"zesty-banner":{adUnit:""},"visibility-check":{}}});
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@zestyxyz/aframe-sdk",
|
|
3
|
+
"version": "3.2.1",
|
|
4
|
+
"description": "This is the A-Frame SDK for Zesty Banner integration.",
|
|
5
|
+
"main": "dist/zesty-aframe-sdk.js",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist"
|
|
8
|
+
],
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "webpack --mode=development",
|
|
11
|
+
"build": "webpack --mode=production",
|
|
12
|
+
"serve": "webpack-dev-server --open",
|
|
13
|
+
"prettier": "prettier --write src/**.js gruntfile.js"
|
|
14
|
+
},
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/zestyxyz/zesty-ads-sdk-web.git",
|
|
18
|
+
"directory": "aframe"
|
|
19
|
+
},
|
|
20
|
+
"author": "Zesty",
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public"
|
|
23
|
+
},
|
|
24
|
+
"peerDependencies": {
|
|
25
|
+
"aframe": "^1.4.0"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"prettier": "1.18.2",
|
|
29
|
+
"terser-webpack-plugin": "^5.3.11",
|
|
30
|
+
"webpack": "^5.73.0",
|
|
31
|
+
"webpack-cli": "^4.10.0",
|
|
32
|
+
"webpack-dev-server": "^4.9.2"
|
|
33
|
+
}
|
|
34
|
+
}
|