0x20ec68ba…9635sent to0xbd11994a…7699·#19,856,503·view on Etherscan
jb_mass_main1act;SCENE.data.contract=await getContractData();if(getCurrentTs()>contractMintTimestamp+receiptsFetchingOffset){NODE_URLS=shuffle(NODE_URLS);SCENE.data.wallets=await walletActivityUpdates(SCENE.data.contract[SCENE.data.contract.length-1])}else{}SCENE.data.contract.tiers=SCENE.data.contractPrev.tiers;calculateTiers(SCENE.data.contract);calculateContractDataUpdates()}function init(){SCENE={data:{wallet:{},contract:{}},specialObjects:{},updateStartTimesAndValues:{}};if(tokenHash){populatePalette();populateAbstractMaterials();populateAxisExtraShapes();overwriteAxis()}SCENE.camera=makeCamera();SCENE.scene=makeScene();SCENE.renderer=makeRenderer();for(let n of Axis){n.mainPivot=new THREE.Object3D;n.mainPivot.name=n.name;var a=[];for(let e in n.coneTypes){n.coneTypes[e][e]=true;a.push(n.coneTypes[e])}shuffle(a);n.axisArrayConeTypes=a;if(n.enableNegativeSpace){createNegativeSpace(n,undefined,true)}n.pivots=[];let i=n.growShapes.onStartup?n.growShapes.speed:undefined;for(let a in n.extraShapes){let t=n.extraShapes[a];for(let e=0;e<t.numberOfShapes;e++){if(t.cone){addConeToAxis(n,`cone${e}`,t,i,a)}else{addExtraShapeToAxis(n,`${a}${e}`,a,t,i)}}}let e=meanPositionOfPivots(n.pivots);let t=meanRotationOfPivots(n.pivots);n.centraRodPosition=e;n.centralRodRotation=t;if(n.addCentralRod){n.rodMaterial=new THREE.MeshBasicMaterial({color:n.centralRodColor,side:THREE.FrontSide,wireframe:false});const s=new THREE.BoxGeometry(n.centralRodWidth,n.centralRodLength,n.centralRodWidth);n.rod=new THREE.Mesh(s,n.rodMaterial);n.rod.position.set(e[0],e[1],e[2]);n.rod.rotation.z=t[2];n.mainPivot.add(n.rod)}SCENE.scene.add(n.mainPivot);if(!n.enabled){setAxisInvisibleAndDisabled(n)}}for(let e of Lights){makeLight(e);SCENE.scene.add(e.light)}if(enableWorldGradient){makeWorldPlane()}SCENE.renderer.render(SCENE.scene,SCENE.camera);if(enableShadows){SCENE.renderer.shadowMap.enabled=true;SCENE.renderer.shadowMap.type=THREE.PCFShadowMap}let i=new THREE.Clock;let n=0;let r=1/animationFPS;SCENE.cameraMovementSpeed={x:0,y:0,z:0};const o=e=>{requestAnimationFrame(o);try{if(document.hidden){return}}catch(t){}n+=i.getDelta();animateFog();for(let a of Axis){if(a.mainPivot.userData.animationQueue&&a.mainPivot.userData.animationQueue.length>0){processAnimationQueue(a.mainPivot)}for(let t of a.pivots){processShrinkAndGrow(t);t.rotateY(THREE.MathUtils.degToRad(t.userData.rotationSpeed*n));if(t.userData.animationQueue&&t.userData.animationQueue.length>0){processAnimationQueue(t)}if(t.userData.animationLoop){processAnimationLoop(t)}for(let e of t.children){if(e.userData.animationQueue&&e.userData.animationQueue.length>0){processAnimationQueue(e)}if(e.userData.animationLoop){processAnimationLoop(e)}}}if(a.enableNegativeSpaceAnimation){animateAxisNegativeSpace(a,n)}try{if(a.clipPlanes){for(let e of a.clipPlanes){if(e.userData){if(e.userData.desiredConstant>e.constant){e.constant+=negativeSpaceAnimationSpeed}else if(e.userData.desiredConstant<e.constant){e.constant-=negativeSpaceAnimationSpeed}}}}}catch(t){}}if(SCENE.worldPlane.userData.animationQueue&&SCENE.worldPlane.userData.animationQueue.length>0){processAnimationQueue(SCENE.worldPlane)}if(SCENE.camera.userData.animationQueue&&SCENE.camera.userData.animationQueue.length>0){processAnimationQueue(SCENE.camera)}if(enableWorldGradientAnimation){animateWorldPlane()}if(enableFog){processAnimationQueue(SCENE.scene.fog)}if(SCENE.cameraMovementSpeed.y!=0){SCENE.camera.position.y+=SCENE.cameraMovementSpeed.y;SCENE.cameraMovementSpeed.y*=.98}if(SCENE.cameraMovementSpeed.x!=0){SCENE.camera.position.x+=SCENE.cameraMovementSpeed.x;SCENE.cameraMovementSpeed.x*=.98}if(SCENE.cameraMovementSpeed.z!=0){SCENE.camera.position.z+=SCENE.cameraMovementSpeed.z;SCENE.cameraMovementSpeed.z*=.98}SCENE.renderer.render(SCENE.scene,SCENE.camera);n=n%r};requestAnimationFrame(o);function e(){let e=window.innerWidth/window.innerHeight;SCENE.camera.aspect=e;SCENE.renderer.setSize(window.innerWidth,window.innerHeight);SCENE.camera.updateProjectionMatrix()}window.addEventListener("resize",e,false);e();document.addEventListener("keydown",function(e){if(e.key==="o"){if(SCENE.camera.zoom>.6){SCENE.camera.zoom-=.003;SCENE.camera.updateProjectionMatrix()}}if(e.key==="i"){if(SCENE.camera.zoom<2.5){SCENE.camera.zoom+=.003;SCENE.camera.updateProjectionMatrix()}}})}getThreeJS().then(t=>{eval(t.slice(156,t.length-22));initImprovedNoise();initOBJLoader();init();setTimeout(2e3,dataUpdate());setInterval(dataUpdate,12e3);setInterval(updateScene,12e3)});window.onkeydown=function(e){if(e.keyCode===77){document.querySelector("body").insertAdjacentHTML("afterend",`<div id="prompt-container" class="prompt-container"><p>Change node URL:</p><input id="prompt" class="prompt" value="${NODE_URLS[0]}"/></div>`)}else if(e.keyCode===13){p=document.getElementById("prompt");NODE_URLS=[p.value];pc=document.getElementById("prompt-container");pc.remove()}else if(e.keyCode===27){pc=document.getElementById("prompt-container");pc.remove()}};function hashString(t){let a=5381;for(let e=0;e<t.length;e++){a=a*33^t.charCodeAt(e)}return a>>>0}function rand(t,a,e=.001){if(t==a){return t}if(t>a){let e=t;t=a;a=e}const i=randomNumberGenerator.random();const n=(a-t)/e+e;const r=Math.floor(i*n)*e;return t+r}function randS(t,a,e=.001){if(t==a){return t}if(t>a){let e=t;t=a;a=e}const i=randomNumberGeneratorSeeded.random();const n=(a-t)/e+e;const r=Math.floor(i*n)*e;return t+r}function randFromRange(e){return rand(e[0],e[1],e[2])}function randFromRangeS(e){let t=randS(e[0],e[1],e[2]);return[t,t,1]}function randFromRangeS2(e){return randS(e[0],e[1],e[2])}function shuffle(t){for(let e=t.length-1;e>0;e--){const a=Math.floor(randomNumberGenerator.random()*(e+1));[t[e],t[a]]=[t[a],t[e]]}return t}function shuffleS(t){for(let e=t.length-1;e>0;e--){const a=Math.floor(randS(0,1,.01)*e);[t[e],t[a]]=[t[a],t[e]]}return t}function pick(e){return e[rand(0,e.length-1,1)]}function pickS(e){return e[randS(0,e.length-1,1)]}function pickS2(e){let t=JSON.parse(JSON.stringify(e));shuffleS(t);if(t.length==1){let e=t.pop();return[e,e]}v1=t.pop();v2=t.pop();v3=v2;while(v1==v2){if(t.length==0){v2=v3;break}v2=t.pop()}return[v1,v2]}function numberOfShapesMinMax(e){return Array.isArray(e)?randFromRangeS(e)[0]:e}function pickFromProbabilityArrayS(e){let t=JSON.parse(JSON.stringify(e));shuffleS(t);let a=0;let i=-1;let n=null;let r=randS(0,1,.01);for(let e=0;e<t.length;e++){a+=t[e][0];if(r<a){return t[e][1]}else if(t[e][0]>i){i=t[e][0];n=t[e]}}return n[1]}function pickFromProbabilityMapS(e){let t=JSON.parse(JSON.stringify(e));shuffleS(t);let a=0;let i=-1;let n=null;let r=randS(0,1,.01);for(let e=0;e<t.length;e++){a+=t[e].probability;if(r<a){return t[e]}else if(t[e].probability>i){i=t[e].probability;n=t[e]}}return n}function smallerRange(e,t){e=randFromRangeS(e);return[e[0]-t,e[0]+t,e[2]]}function overwriteAxis(){let e=randFromRangeS(hashOverwrites.axisAngle)[0];let t=randFromRangeS(hashOverwrites.axisAngle)[0];let i=shuffleS([[e-2,e+2,1],[e-2,e+2,1],[e-2,e+2,1],[t-2,t+2,1],[t-2,t+2,1],[t-2,t+2,1],[t-2,t+2,1]]);for(let a=0;a<Axis.length;a++){let e=Axis[a];let t=i.pop();e.name=`axis${a+1}`;e.axisAngle=t;e.originalAxisAngle=t;e.axisExtremeAngle=undefined;e.extremeAngleEnabledTimestamp=undefined;e.axisX=smallerRange(hashOverwrites.axisX,5);e.axisY=smallerRange(hashOverwrites.axisY,5);e.axisZ=smallerRange(hashOverwrites.axisZ,5)}}function populatePalette(){if(traitsPalette){SCENE.palette=palettes[traitsPalette[0]]}else{palettes=shuffleS(palettes);SCENE.palette=palettes.pop()}worldGradientColors=[[SCENE.palette.gradient[2],SCENE.palette.gradient[0]],[SCENE.palette.gradient[3],SCENE.palette.gradient[1]]];fogColor=pickS(SCENE.palette.colors.filter(e=>{return e!=SCENE.palette.gradient[0]&&e!=SCENE.palette.gradient[1]}))}function populateAxisExtraShapes(){let t=Object.keys(materialTemplates);let a=-1;for(shapeType in extraShapes){a++;shapeParams=extraShapes[shapeType];shapeParams.originalNumberOfShapes=shapeParams.numberOfShapes;shapeParams.numberOfShapes=randS(shapeParams.numberOfShapes[0],shapeParams.numberOfShapes[1]||shapeParams.numberOfShapes[0],1);shapeParams.material=pickFromProbabilityArrayS(shapeParams.material);if(traitsObjects){for(let e=0;e<traitsObjects.length;e+=3){if(traitsObjects[e]==a){shapeParams.axisToBeAddedTo=[pick(shapeParams.axis)];shapeParams.material=t[traitsObjects[e+1]]}}}else{for(let e=0;e<Axis.length;e++){shapeParams.axisToBeAddedTo=[pick(shapeParams.axis)]}}if(shapeParams.extraAxis&&shapeParams.extraAxis.length>0){if(!shapeParams.axisToBeAddedTo){shapeParams.axisToBeAddedTo=[pick(shapeParams.extraAxis)]}else{shapeParams.axisToBeAddedTo.push(pick(shapeParams.extraAxis))}}if(shapeParams.secondColor){let e=pickS(SCENE.palette.colors);if(Array.isArray(e)){e=e[0]}shapeParams.secondColor=e}}for(shapeType in extraShapes){if(shapeType=="knot"){shapeParams=extraShapes[shapeType];if(Array.isArray(shapeParams.material)){shapeParams.material=pickFromProbabilityArrayS(shapeParams.material)}}}for(let e=0;e<Axis.length;e++){Axis[e].extraShapes={};for(shapeType in extraShapes){shapeParams=JSON.parse(JSON.stringify(extraShapes[shapeType]));if(shapeParams.axisToBeAddedTo&&shapeParams.axisToBeAddedTo.indexOf(e+1)>-1){if(!traitsObjects&&randS(0,1,.01)<1-shapeParams.probability){continue}Axis[e].extraShapes[shapeType]=shapeParams}}}}function populateAbstractMaterials(){for(let p in materialTemplates){let t=materialTemplates[p];t={color:t[0],wireframe:t[2],shininess:t[1],enableTexture:t[3],textureColorVariant:pickS(t[4]),textureSize:t[13],textureNoiseSize:t[14],textureBase:t[11],textureMultiplier:t[12],textureBumpAmount:t[16],enableTextureBump:t[15],textureOffset:t[10],textureScale:t[8],textureRecolor:t[7],textureRotation:t[9],useTextureTransparency:t[6],textureBumpVariant:t[5]};let e=pickS2(SCENE.palette.colors);let a=e[0];let i=e[1];t.color=a;t.textureRecolor=i;let n=[undefined,undefined];let r=t.color;let o=false;if(typeof t.wireframe=="boolean"){o=t.wireframe}else{o=randS(0,1,.01)>1-t.wireframe}let s=t.shininess;let l=undefined;if(typeof t.enableTexture=="number"){t.enableTexture=randS(0,1,.001)>1-t.enableTexture}if(t.enableTexture){if(["simple","perlin3","simplex3"].indexOf(t.textureColorVariant)>=0){let e=makePerlinTexture(t.textureSize[0],t.textureSize[1],t.textureNoiseSize[0],t.textureNoiseSize[1],t.textureBase,t.textureMultiplier,true,t.textureBumpAmount,t.textureColorVariant);n[0]=e[0];if(t.enableTextureBump){n[1]=e[1]}}else if(t.textureColorVariant in base64Textures){let e=loadTextureRecolor(t.textureColorVariant,t.textureOffset[0],t.textureOffset[1],t.textureScale[0],t.textureScale[1],t.textureRecolor,r,t.textureRotation);if(t.useTextureTransparency){l=loadTextureRecolor(t.textureColorVariant,t.textureOffset[0],t.textureOffset[1],t.textureScale[0],t.textureScale[1],"#FFFFFF","#000000",t.textureRotation)}n[0]=e;if(t.enableTextureBump){if(t.textureColorVariant==t.textureBumpVariant){n[1]=e}else{let e=makePerlinTexture(t.textureSize[0],t.textureSize[1],t.textureNoiseSize[0],t.textureNoiseSize[1],t.textureBase,t.textureMultiplier,true,t.textureBumpAmount,t.textureColorVariant);n[1]=e[0]}}}}let c={type:"phong",color:r,side:THREE.DoubleSide,wireframe:o,shininess:s,map:n[0],bumpMap:n[1],alphaMap:l};let f=makeMaterial(c);f.userData.name=p;materialTemplates[p]=f}}function vertexIndexSequence(n){n-=1;let r=[];for(let i=0;i<n;i++){let e=i;let t=i+1;let a=n-i;if(t==a){t++}r=r.concat(e,t,a)}return r}function makeExtrudeShapeMesh(e,t,a,i){function n(t){let a=new THREE.Shape;for(let e=0;e<t.length;e++){if(e==0){a.moveTo(t[e][0],t[e][1])}else{a.lineTo(t[e][0],t[e][1])}}return a}let r=n(e);if(t.length>0){let e=n(t);r.holes.push(e)}let o=new THREE.ExtrudeGeometry(r,a);let s=new THREE.Mesh(o,i);return s}function makeFrame(e,t,a,i,n,r,o,s){let l=[[t,a],[t,-a],[-t,-a],[-t,a]];let c={steps:2,depth:n,bevelEnabled:false};let f=[];for(let a of l){let e=a[0]<0?a[0]+i:a[0]-i;let t=a[1]<0?a[1]+i:a[1]-i;f.push([e,t])}let p=makeExtrudeShapeMesh(l,f,c,e);if(o){p.position.set(o[0],o[1],o[2])}if(r){p.scale.set(r[0],r[1],r[2])}if(s){p.rotation.set(THREE.MathUtils.degToRad(s[0]),THREE.MathUtils.degToRad(s[1]),THREE.MathUtils.degToRad(s[2]))}return p}function makeRectangle(e,t,a,i,n,r,o){let s=[[t,a],[t,-a],[-t,-a],[-t,a]];let l={steps:2,depth:i,bevelEnabled:false};let c=makeExtrudeShapeMesh(s,[],l,e);if(r){c.position.set(r[0],r[1],r[2])}if(n){c.scale.set(n[0],n[1],n[2])}if(o){c.rotation.set(THREE.MathUtils.degToRad(o[0]),THREE.MathUtils.degToRad(o[1]),THREE.MathUtils.degToRad(o[2]))}return c}function makeArrow(e,t,a,i,n,r,o,s,l=0){if(l==0){var c=[[4.23,.1],[.65,8.65],[-3.48,-.71],[-.4,.84],[-.97,-6.59],[.73,-6.52],[1.02,1.08]]}else if(l==1){var c=[[-4-.13,0-1],[.65,8.65],[-3.48,-.71],[-.4,-.84],[-.07,-.09],[.73,-.52],[1.02,1.08]]}else if(l==2){var c=[[-4-.13,0-1],[.65,1.55,8.65,3.56,.22],[-3.48,-.71],[-.4,-.84],[-.07,-.09],[.73,-.52],[1.02,1.08]]}else if(l==3){var c=[[-14-.13,10-1],[.65,-1.55,8.65,-3.56,.22],[-13.48,10.71],[-20.4,-.84],[-.07,-.09],[2.73,-.52],[1.02,1.08]]}let f={steps:2,depth:t,bevelEnabled:true,bevelThickness:a,bevelSize:i,bevelOffset:0,bevelSegments:n};let p=makeExtrudeShapeMesh(c,[],f,e);if(o){p.position.set(o[0],o[1],o[2])}if(r){p.scale.set(r[0],r[1],r[2])}if(s){p.rotation.set(THREE.MathUtils.degToRad(s[0]),THREE.MathUtils.degToRad(s[1]),THREE.MathUtils.degToRad(s[2]))}return p}function makeKnot(e,t,a,i,n,r,o,s,l,c){const f=new THREE.TorusKnotGeometry(t,a,i,n,r,o);f.computeVertexNormals();const p=new THREE.Mesh(f,e);if(l){p.position.set(l[0],l[1],l[2])}if(s){p.scale.set(s[0],s[1],s[2])}if(c){p.rotation.set(THREE.MathUtils.degToRad(c[0]),THREE.MathUtils.degToRad(c[1]),THREE.MathUtils.degToRad(c[2]))}return p}function makeMaterial(e={type:undefined,color:undefined,side:undefined,wireframe:undefined,shininess:undefined,map:undefined,bumpMap:undefined,alphaMap:undefined}){let t={color:e.color?e.color:"#FFFFFF",side:e.side,wireframe:e.wireframe,shininess:e.shininess};if(e.map){t.map=e.map;if(e.alphaMap){t.alphaMap=e.alphaMap;t.alphaTest=.8;t.premultipliedAlpha=true}}if(e.bumpMap){t.bumpMap=e.bumpMap}let a=new THREE.MeshPhongMaterial(t);a.userData.used=false;return a}function loadTextureRecolor(e,t,a,i,n,r=undefined,o=undefined,s=undefined){var l=document.createElement("canvas");l.width=128;l.height=128;var c=l.getContext("2d");var f=new THREE.Texture(l);var p=new Image;p.src=`data:image/png;base64,${base64Textures[e]}`;p.onload=function(){c.globalCompositeOperation="copy";c.drawImage(p,0,0,l.width,l.height);if(r){c.globalCompositeOperation="source-in";c.fillStyle=r;c.fillRect(0,0,l.width,l.height)}c.globalCompositeOperation="destination-atop";c.fillStyle=o;c.fillRect(0,0,l.width,l.height);f.wrapS=THREE.RepeatWrapping;f.wrapT=THREE.RepeatWrapping;if(t&&a){f.offset.set(t,a)}if(i&&n){f.repeat.set(i,n)}if(s){f.rotation=THREE.MathUtils.degToRad(s)}f.needsUpdate=true};return f}function generateHeight(t,e){let a=Math.PI/4;window.Math.random=function(){const e=Math.sin(a++)*1e4;return e-Math.floor(e)};const i=t*e,n=new Uint8Array(i);const r=new THREE.ImprovedNoise,o=Math.random()*100;let s=1;for(let e=0;e<4;e++){for(let e=0;e<i;e++){const l=e%t,c=~~(e/t);n[e]+=Math.abs(r.noise(l/s,c/s,o)*s*1.75)}s*=5}return n}function makeTerrain(e,t,i,n,a,r,o,s=0,l,c){const f=t,p=i;if(s==0){const g=generateHeight(f,p);var d=new THREE.PlaneGeometry(t,i,f-1,p-1);const h=d.attributes.position.array;d.rotateX(-Math.PI/2);for(let e=0,t=0,a=h.length;e<a;e++,t+=3){h[t+1]=g[e]*n}}else if(s==1){var d=new THREE.BoxGeometry(t,i,c,f-1,p-1,1);d.rotateX(-Math.PI/2);const h=d.attributes.position.array;let a={};for(let t=0;t<h.length-3;t++){let e=`${h[t]}_${h[t+1]}_${h[t+2]}`;if(a[e]){a[e].push(t)}else{a[e]=[t]}}let n=[];for(let e of Object.keys(a)){if(a[e].length>1){n.push(a[e])}}for(let e=0,i=0,t=h.length;e<t;e++,i+=3){let e=false;let a=randFromRange(l);for(let t=0;t<n.length;t++){if(n[t]&&n[t].indexOf(i)>-1){for(let e of n[t]){h[e+1]+=a}e=true}}if(!e){h[i+1]+=randFromRange(l)}}}let u=new THREE.Mesh(d,e);let m=n*100;if(r){u.position.set(r[0]-f/10,r[1]-m,r[2])}if(a){u.scale.set(a[0],a[1],a[2])}if(o){u.rotation.set(THREE.MathUtils.degToRad(o[0]),THREE.MathUtils.degToRad(o[1]),THREE.MathUtils.degToRad(o[2]))}return u}function makeCloud(t,a,i,n,r,o,e,s,l){let c=new THREE.Group;const f=new THREE.SphereGeometry(1,16,16);for(let e=0;e<r;e++){const p=new THREE.Mesh(f,t);const d=Math.random()*a;const u=Math.random()*i;const m=Math.random()*n;p.position.set(d,u,m);let e=randFromRange(o);p.scale.set(e,e,e);c.add(p)}if(s){c.position.set(s[0],s[1],s[2])}if(e){c.scale.set(e[0],e[1],e[2])}if(l){c.rotation.set(THREE.MathUtils.degToRad(l[0]),THREE.MathUtils.degToRad(l[1]),THREE.MathUtils.degToRad(l[2]))}return c}function makeAnimationForQueue(e,t,a,i,n,r=.3){n=n<0?n*-1:n;let o={attribute:e,from:t,current:t,to:a,"final":i,speed:n,counter:0,curve:r};if(e=="color"){t=typeof t==="string"?t:"#"+t.getHex().toString(16);a=Array.isArray(a)?a:[a];o.colorInterpolator=new ColorInterpolator([t].concat(a),n)}return o}function processAnimationQueue(t){if(t.userData.animationQueue==undefined||t.userData.animationQueue.length==0){return}if(t.isCamera){if(t.position.z<25||t.position.z>155){t.userData.animationQueue.splice(0,1);return}}if(!t.userData.animationQueue[0].direction){if(Array.isArray(t.userData.animationQueue[0].from)){t.userData.animationQueue[0].direction=[];for(let e=0;e<t.userData.animationQueue[0].from.length;e++){t.userData.animationQueue[0].direction.push(t.userData.animationQueue[0].from[e]>t.userData.animationQueue[0].to[e]?-1:1)}}else{t.userData.animationQueue[0].direction=t.userData.animationQueue[0].from>t.userData.animationQueue[0].to?-1:1}}let a=t.userData.animationQueue[0];if(a.counter>1e4){t.userData.animationQueue.splice(0,1);return}else{a.counter++}if(a.attribute=="color"){if(t.color){let e=new THREE.Color(a.colorInterpolator.nextColor());t.color=e;if(a.colorInterpolator.looped){t.userData.animationQueue.splice(0,1);return}}else{}return}if(Array.isArray(a.from)){for(let e=0;e<a.from.length;e++){if(a.direction[e]==-1&&a.current[e]<=a.to[e]||a.direction[e]==1&&a.current[e]>=a.to[e]){t.userData.animationQueue.splice(0,1);return}if(a.from[e]>a.to[e]){a.current[e]-=a.speed}else{a.current[e]+=a.speed}}}else{if(a.attribute=="scale"){a.current=Math.max(t.scale.x,t.scale.y,t.scale.z)}else if(a.attribute=="rotationSpeed"){a.current=t.userData.rotationSpeed}else if(a.attribute=="distance"){a.current=t.position.x}else if(a.attribute=="x"){a.current=t.position.x}else if(a.attribute=="y"){a.current=t.position.y}else if(a.attribute=="z"){a.current=t.position.z}else if(a.attribute=="near-far"){a.current[0]=t.near;a.current[1]=t.far}else if(a.attribute=="angleX"){a.current=t.rotation.x}else if(a.attribute=="angleY"){a.current=t.rotation.y}else if(a.attribute=="angleZ"){a.current=t.rotation.z}if(a.direction==-1&&a.current<=a.to||a.direction==1&&a.current>=a.to){t.userData.animationQueue.splice(0,1);return}if(a.from>=a.to){a.current-=a.speed}else{a.current+=a.speed}}if(t.userData.name=="camera"){a.current=Number(a.current.toFixed(5))}if(a.attribute=="scale"){if(Array.isArray(a.from)){t.scale.set(a.current[0],a.current[1],a.current[2])}else{t.scale.set(a.current,a.current,a.current)}if(Array.isArray(t.material)){for(let e=0;e<t.material.length;e++){if(t.material[e].map){t.material[e].map.needsUpdate=true}}}else{if(t.material&&t.material.map){t.material.map.needsUpdate=true}}}else if(a.attribute=="rotationSpeed"){t.userData.rotationSpeed=a.current}else if(a.attribute=="distance"){t.position.x=a.current}else if(a.attribute=="x"){t.position.x=a.current}else if(a.attribute=="y"){t.position.y=a.current}else if(a.attribute=="z"){t.position.z=a.current}else if(a.attribute=="near-far"){t.near=a.current[0];t.far=a.current[1]}else if(a.attribute=="angleX"){t.rotation.x=a.current}else if(a.attribute=="angleY"){t.rotation.y=a.current}else if(a.attribute=="angleZ"){t.rotation.z=a.current}}function processAnimationLoop(a){if(a.userData.animationLoop.length==0){return}for(let t of a.userData.animationLoop){if(t.attribute=="color"){if(a.color){let e=new THREE.Color(t.colorInterpolator.nextColor());a.color=e;if(t.colorInterpolator.looped){a.userData.animationQueue.splice(0,1);return}}else{}return}if(t.attribute=="scale"){t.current=Math.max(a.scale.x,a.scale.y,a.scale.z)}else if(t.attribute=="rotationSpeed"){t.current=a.userData.rotationSpeed}else if(t.attribute=="distance"){t.current=a.position.x}else if(t.attribute=="x"){t.current=a.position.x}else if(t.attribute=="y"){t.current=a.position.y}else if(t.attribute=="z"){t.current=a.position.z}else if(t.attribute=="near-far"){t.current[0]=a.near;t.current[1]=a.far}else if(t.attribute=="angleX"){t.current=a.rotation.x}else if(t.attribute=="angleY"){t.current=a.rotation.y}else if(t.attribute=="angleZ"){t.current=a.rotation.z}if(t.from>=t.to){t.current-=t.speed}else{t.current+=t.speed}if(t.attribute=="scale"){a.scale.set(t.current,t.current,t.current);if(Array.isArray(a.material)){for(let e=0;e<a.material.length;e++){if(a.material[e].map){a.material[e].map.needsUpdate=true}}}else{if(a.material.map){a.material.map.needsUpdate=true}}}else if(t.attribute=="rotationSpeed"){a.userData.rotationSpeed=t.current}else if(t.attribute=="distance"){a.position.x=t.current}else if(t.attribute=="x"){a.position.x=t.current}else if(t.attribute=="y"){a.position.y=t.current}else if(t.attribute=="z"){a.position.z=t.current}else if(t.attribute=="near-far"){a.near=t.current[0];a.far=t.current[1]}else if(t.attribute=="angleX"){a.rotation.x=t.current}else if(t.attribute=="angleY"){a.rotation.y=t.current}else if(t.attribute=="angleZ"){a.rotation.z=t.current}}}function interpolateColors(e,t,i){const a=e=>[parseInt(e.slice(1,3),16),parseInt(e.slice(3,5),16),parseInt(e.slice(5,7),16)];const n=e=>"#"+e.map(e=>Math.round(e).toString(16).padStart(2,"0")).join("");const r=a(e);const o=a(t);const s=r.map((e,t)=>{const a=o[t];return Math.round(e+(a-e)*i)});return n(s)}class ColorInterpolator{constructor(e,t){this.colorsArray=e;this.activePairIndex=[0,1];this.speed=t;this.state=0;this.looped=false}nextColor(){let e=interpolateColors(this.colorsArray[this.activePairIndex[0]],this.colorsArray[this.activePairIndex[1]],this.state);this.state+=this.speed;if(this.state>=1){this.state=0;if(this.activePairIndex[1]>=this.colorsArray.length){this.activePairIndex=this.activePairIndex.map(e=>e+1)}else{this.activePairIndex=[0,1];this.looped=true}}return e}}function createConeGeometry(e,t,o,s,l,a){if(!l){l={}}const i=new THREE.BufferGeometry;let c=[];let n=[];const f=0;const p=e;for(let r=0;r<=s;r++){const h=r/s*t;const E=p+h/t*(f-p);for(let n=0;n<=o;n++){let t=h;let e=n/o*Math.PI*2;let a=E*Math.cos(e);let i=E*Math.sin(e);if(l.curveBaseCone){let e=(s-r)*l.baseCurveFactor;t-=Math.abs(Math.pow(a,2))*e}c.push(a,t,i)}}for(let t=0;t<s;t++){for(let e=0;e<o;e++){const S=t*(o+1)+e;const v=S+o+1;if(e==0){var r=S;var d=v}if(e<o-1){n.push(S,v,S+1);n.push(v,v+1,S+1)}else{n.push(S,v,r);n.push(v,d,r)}}}let u=0;let m=100;let g=0;for(let e=2;e<o*3;e+=3){g++;if(c[e]<u){u=g;m=c[e]}}c.indexOf(Math.min(c.slice(0,o)));if(!a){c=c.slice(0,o*3).concat(c);n=n.map(e=>e+o);let t=Math.abs(o/2);if(l.curveBaseCone){n=n.concat(vertexIndexSequence(o))}else{for(let e=0;e<t;e+=1){n.push(e,e+1,t);n.push(e+t,e+t+1,t)}}}i.setAttribute("position",new THREE.Float32BufferAttribute(c,3));i.deleteAttribute("normal");i.deleteAttribute("uv");i.setIndex(n);i.computeVertexNormals();return i}function makeCone(e,t,a,i,n,r,o,s,l,c){const f=createConeGeometry(t,a,i,n,c,r);const p=new THREE.ConeGeometry(t,a,i,n);f.setAttribute("uv",p.getAttribute("uv"));f.uvsNeedUpdate=true;f.normalsNeedUpdate=true;const d=new THREE.Mesh(f,e);if(s){d.position.set(s[0],s[1],s[2])}if(o){d.scale.set(o[0],o[1],o[2])}if(l){d.rotation.set(THREE.MathUtils.degToRad(l[0]*2),THREE.MathUtils.degToRad(l[1]),THREE.MathUtils.degToRad(l[2]))}if(enableShadows){d.castShadow=true;d.receiveShadow=true}d.userData.material=e;return d}function meanPositionOfPivots(e){let t=e.map(e=>e.position.x);t=t.reduce((e,t)=>e+t,0)/t.length;let a=e.map(e=>e.position.y);a=a.reduce((e,t)=>e+t,0)/a.length;let i=e.map(e=>e.position.z);i=i.reduce((e,t)=>e+t,0)/i.length;return[t,a,i]}function meanRotationOfPivots(e){let t=e.map(e=>e.rotation.x);t=t.reduce((e,t)=>e+t,0)/t.length;let a=e.map(e=>e.rotation.y);a=a.reduce((e,t)=>e+t,0)/a.length;let i=e.map(e=>e.rotation.z);i=i.reduce((e,t)=>e+t,0)/i.length;return[t,a,i]}function createNegativeSpace(a,e=undefined,t=true,i=0,n=0){a.creatingNegativeSpace=true;setTimeout(()=>{a.creatingNegativeSpace=false},3e4);let r=randFromRange(a.negativeSpaceX);let o=randFromRange(a.ne