0xda84…244c

All memos sent from and to 0xda84…244c.

p3.y) * p3.z);\n}\n\n`);let v=`\nif (sin(vIndex * ${i.random_dec(1.5,4).toPrecision(5)}) > ${i.random_dec(-1,0).toPrecision(5)} && gl_FrontFacing)\n{\ni1 += 1; i2 += 1;\n}`;$.doubleSided||(v="");let f="\nfloat padRatX = 0.03;\nfloat padRatY = 0.03;\nfloat padX = canvasSize.y * padRatX;\nfloat padY = canvasSize.y * padRatY;\nfloat fadeSize = canvasSize.y * 0.06 * 3.0;\nif ((gl_FragCoord.x < padX || gl_FragCoord.x > canvasSize.x - padX || gl_FragCoord.y < padY || gl_FragCoord.y > canvasSize.y - padY))\n{\nif (sin(type*PI) > 0.0)\n{\nvec2 size = canvasSize - (vec2(padX, padY * 1.12) * 2.0);\nfloat box = clamp(roundedBoxSDF(gl_FragCoord.xy - (canvasSize * .5), size * .5, 0.0) / fadeSize, 0.0, 1.0);\nbox *= 3.5;\nbox += .3;\nbox -= .0 + (cnoise(vec3((gl_FragCoord.xy / canvasSize) * 8.4, 0.0)) * .4);\nbox = clamp(box, 0.0, 1.0);\nif (n2 < (1.0 - pow(1.0 - box, 4.0)))\n{\ndiscard;\nreturn;\n}\nelse\n{\nfloat b = (gl_FragColor.r + gl_FragColor.b + gl_FragColor.g ) / 3.0;\ngl_FragColor *= 0.9;\ngl_FragColor += (1.0 - b) * .1;\n}\n}\nelse\n{\n}\n}\n";return $.border||(f=""),d=d.replace("#include <fog_fragment>",`\ngl_FragColor.a = 1.0;\nfloat n2 = hash12(gl_FragCoord.xy / canvasSize * 1230.3);\nfloat zoomOffset = 1.0 - ${$.zoomLevelRat.toPrecision(5)};\nzoomOffset = pow(zoomOffset, 2.0);\nzoomOffset *= .5;\nfloat zOffset = ${(3*(Math.abs($.xRotation)-.55)).toPrecision(5)} + zoomOffset;\nfloat divider = 3.0 - zOffset;\nfloat z = .35 + vPosition.z - (zOffset * .35);\nif (z < 0.0) divider = 20.0;\nfloat b = pow(clamp(z / divider, -1.0, 1.0), 2.0);\nb = clamp(b, 0.0, 1.0) * 4.0;\ngl_FragColor = gl_FragColor * b;\nfloat h = (gl_FragColor.r + gl_FragColor.g + gl_FragColor.b) / 3.0;\nif (round(vTypeIndex) == 2.0 && vPosition.z > -1.5)\n{\nfloat ss = 1.5;\nfloat xs = ${a($.nSteps,700,1300,2.2,4,!1).toPrecision(5)};\nfloat cut = cnoise(vec3(lengthRadCircular * ss * xs, (vPosition.z + 123.3) * 1.0 * ss, (indexRat * 12.3) + (time * .01)));\nfloat hr = clamp((heightRat - .95), 0.0, 1.0) / .05;\nhr = clamp(hr, 0.0, 1.0);\nfloat cutThreshold = vHoleThreshold;\nfloat cutTimeOffset = .1;\nfloat cutRat = 1.0 - pow(1.0 - clamp(-cutTimeOffset + (time * 0.1), 0.0, 1.0), 3.0);\ncutRat = 1.0 - (cutRat * cutThreshold);\ncut *= clamp((z + 1.5) / 3.0, 0.0, 1.0) * 1.4;\nif (cut > cutRat)\n{\ndiscard;\nreturn;\n}\n}\n${f}\nfloat bri = (gl_FragColor.r + gl_FragColor.g + gl_FragColor.b) / 3.0;\nfloat n = hash12((gl_FragCoord.xy / canvasSize ) * 1000.0);\ngl_FragColor = gl_FragColor * .95 + vec4(n, n, n, 1.0) * .08 * (1.0 - bri) * noiseStrength;\ngl_FragColor += vec4(n, n, n, 1.0) * ((.013 + (bri * .12))) * noiseStrength * 2.0;\ngl_FragColor.rgb += clamp(1.0 - noiseStrength, 0.0, 1.0) * .05;\ngl_FragColor = clamp(gl_FragColor, vec4(0.0), vec4(1.0));\nbri = (gl_FragColor.r + gl_FragColor.g + gl_FragColor.b) / 3.0;\nint i1 = int(floor(gradientIndex + 0.0001));\nint i2 = int(floor(gradientIndex2 + 0.0001));\n${v}\nif (i1 > numGradients-1) i1 = 0;\nif (i2 > numGradients-1) i2 = 0;\nint ic1 = i1 * 5;\nvec4 c1 = colors[ic1];\nvec4 c2 = colors[ic1+1];\nvec4 c3 = colors[ic1+2];\nvec4 c4 = colors[ic1+3];\nvec4 c5 = colors[ic1+4];\nfloat s1 = stops[ic1];\nfloat s2 = stops[ic1+1];\nfloat s3 = stops[ic1+2];\nfloat s4 = stops[ic1+3];\nfloat s5 = stops[ic1+4];\nint ic2 = i2 * 5;\nvec4 c6 = colors[ic2];\nvec4 c7 = colors[ic2+1];\nvec4 c8 = colors[ic2+2];\nvec4 c9 = colors[ic2+3];\nvec4 c10 = colors[ic2+4];\nfloat s6 = stops[ic2];\nfloat s7 = stops[ic2+1];\nfloat s8 = stops[ic2+2];\nfloat s9 = stops[ic2+3];\nfloat s10 = stops[ic2+4];\nvec4 bw = gl_FragColor;\nbw.rgb += vec3(vValueShift);\nvec4 grad1 = gradient(c1, s1, c2, s2, c3, s3, c4, s4, c5, s5, 1.0 - bri);\nvec4 grad2 = gradient(c6, s6, c7, s7, c8, s8, c9, s9, c10, s10, 1.0 - bri);\nfloat dB1 = dBes[i1];\nfloat dB2 = dBes[i2];\nfloat sinScale = ${i.random_num(2,3).toPrecision(5)};\nsinScale = 2.0;\nfloat rat = (1.0 + sin(((lengthRadCircular * 3.14 * sinScale) + ((time * .2) + (vIndex))) + ${i.random_num(0,200).toPrecision(5)})) / 2.0;\ngl_FragColor = mix(grad1, grad2, rat);\nfloat satRat = .5 + (clamp(sin(lengthRadCircular * 8.0), 0.0, 1.0) * .5);\nsatRat *= vSatIncrease;\nfloat dR1 = dRs[i1];\nfloat dR2 = dRs[i2];\nfloat dR = pow((1.0 + cnoise(((vec3(vPosition.xy * 1.3, vPosition.y * .5)) + vec3(${i.random_num(10.2,345.3).toPrecision(5)})) * .5)) / 2.0, 2.0) * 3.0;\ndR = clamp(dR, 0.0, 1.0);\ndR *= 1.0 - mix(dR1, dR2, rat);\nvec2 satPos = gl_FragCoord.xy;\nvec2 satPosC = vec2((canvasSize.x * .5), (canvasSize.y * .5));\nsatPosC.x += ${i.random_num(-.3,.3).toPrecision(5)} * canvasSize.x;\nsatPosC.y += ${i.random_num(-.3,.3).toPrecision(5)} * canvasSize.y;\nsatPos.x += sin(satPos.x * 0.002) * canvasSize.x * .1;\nsatPos.y += sin(satPos.y * 0.0021) * canvasSize.x * .1;\nfloat satRat2 = 1.0 - (length(satPos - satPosC) / (canvasSize.x * .6));\nsatRat2 = pow(clamp(satRat2, 0.0, 1.0), 2.0);\ndR -= (satRat2 * dR) * 1.0;\ndR = clamp(dR, 0.0, 1.0);\nfloat desatB = mix(dB1, dB2, rat);\ngl_FragColor = mix(gl_FragColor, bw + desatB, dR);\nfloat sIndex = ${i.random_int(0,2).toPrecision(5)};\nif (vIndex >= sIndex && vIndex <= sIndex + (${i.random_int(1,1).toPrecision(5)}))\n{\nvec4 c = mix(colors[ic1+1], colors[ic1+3], clamp(vPosition.z, 0.0, 1.0));\ngl_FragColor = mix(c, c + (vec4(.12, .12, .12, 0.0) * noiseStrength), n);\n}\nvec3 hsv = rgb2hsv(gl_FragColor.rgb);\nvec3 saturated = hsv;\nhsv.r += -.02 + ((1.0 + sin(type * .1)) / 2.0 * .04);\ngl_FragColor.rgb = hsv2rgb(hsv);\nsaturated.g = clamp((saturated.g + .1), 0.0, .8);\nif (z < 0.0) gl_FragColor.rgb *= 1.0 - clamp(abs(clamp(z + 1.5, -1000.0, 0.0)) / 2.5, 0.0, 1.0);\nfloat fadeFactor = clamp(z - 1.0 + (time * (animRat*3.0)), 0.0, 1.0);\ngl_FragColor.rgb = mix(bgCol, gl_FragColor.rgb, fadeFactor);\n#include <fog_fragment>\n`),new M.ShaderMaterial({uniforms:l,vertexShader:g,side:M.DoubleSide,wireframe:!1,fragmentShader:d,lights:!0,fog:!0,name:"custom-material",depthWrite:!0})}(Ae,$e,2,Qe(),e);be=new q.InstancedMesh(n,r,$e);let s=[],c=[],l=[],g=[],d=[],v=[],f=[],u=[],x=i.random_int(0,$e-1),m=0;for(let e=0;e<$e;e++){s.push(e);let n=Be[e],t=n-1,o=0;1==$.colorDistributionType&&(t=i.random_int(0,Ne.gradients.length)),t>Ne.gradients.length-1&&(t=Ne.gradients.length-1),e==x&&(o=Ne.gradients[t].sI);let r=t;if(i.random_bool(.8)&&Ne.gradients.length>1)for(r=i.random_int(0,Ne.gradients.length-1);r==t;)r=i.random_int(0,Ne.gradients.length-1);let a=0,y=2.99;n>3&&(y=2.99),a=1==n||2==n?Math.floor(i.random_num(2,y)):Math.floor(i.random_num(1,y)),$.allHoles&&(a=2),n>1&&n<4&&i.random_dec()>.8&&(a=0),2==a&&($.zoomLevel<=4&&m>=5?a=1:m++);let p=Ne.gradients[t].dB,h=i.random_num($.minHoleThreshold,$.maxHoleThreshold),w=(1+Math.sin(20*e))/2;w*=Ne.gradients[t].vS,u.push(p),g.push(a),c.push(t),l.push(r),d.push(o),v.push(h),f.push(w)}be.geometry.setAttribute("indexAttr",new THREE.InstancedBufferAttribute(new Int32Array(s),1,!1)),be.geometry.setAttribute("gradientIndexAttr",new THREE.InstancedBufferAttribute(new Int32Array(c),1,!1)),be.geometry.setAttribute("gradientIndexAttr2",new THREE.InstancedBufferAttribute(new Int32Array(l),1,!1)),be.geometry.setAttribute("typeIndex",new THREE.InstancedBufferAttribute(new Int32Array(g),1,!1)),be.geometry.setAttribute("sIrease",new THREE.InstancedBufferAttribute(new Float32Array(d),1,!1)),be.geometry.setAttribute("vS",new THREE.InstancedBufferAttribute(new Float32Array(f),1,!1)),be.geometry.setAttribute("holeThreshold",new THREE.InstancedBufferAttribute(new Float32Array(v),1,!1)),be.geometry.setAttribute("dB",new THREE.InstancedBufferAttribute(new Float32Array(u),1,!1)),pe.add(be)}(),function(){var e=q.ShaderLib.basic.vertexShader,n=function(e){return`\nuniform sampler2D map;\nuniform sampler2D debugMap;\nuniform float time;\nuniform float width;\nuniform float height;\nuniform float noiseStrength;\n${t}\n${o}\nfloat rand(vec2 co){\nreturn fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);\n}\nfloat sSin(float x)\n{\nreturn (1.0 + sin(x)) / 2.0;\n}\nfloat hash12(vec2 p)\n{\nvec3 p3 = fract(vec3(p.xyx) * .1031);\np3 += dot(p3, p3.yzx + 33.33);\nreturn fract((p3.x + p3.y) * p3.z);\n}\nvoid main ()\n{\nfloat pixR = ${e.toPrecision(6)};\nvec2 fc = gl_FragCoord.xy;\nvec2 uv = fc / vec2(width * pixR, height * pixR);\nvec2 uv2 = fc / vec2(width * pixR, height * pixR);\n${V}\n${O}\nvec4 c = texture2D( map, uv);\nfloat n = hash12(gl_FragCoord.xy);\ngl_FragColor = c;\nfloat bri = (gl_FragColor.r + gl_FragColor.g + gl_FragColor.b) / 3.0;\nfloat g = (pow(uv2.y, 2.5)) * 0.12;\ngl_FragColor += (g * .5) + (g * n * .5);\n}`}(X),r=q.UniformsUtils.merge([q.ShaderLib.basic.uniforms,{time:{value:0}},{width:{value:le}},{height:{value:ce}},{noiseStrength:{value:1}}]);Pe=new q.ShaderMaterial({uniforms:r,vertexShader:e,fragmentShader:n,name:"filter-material"}),he=new q.Scene,he.background=new q.Color(0,0,0),we=new q.OrthographicCamera(le/-2,le/2,ce/2,ce/-2,-10,10),we.position.z=1,ze=new q.Mesh(new q.PlaneBufferGeometry(1,1),Pe),ze.scale.x=le,ze.scale.y=ce,he.add(ze),ke=new q.Scene,ke.background=new q.Color(0,0,0),qe=new q.Object3D;let a=1/3,i=[];i.push(W.getCurrentRenderTarget(Z).texture),i.push(W.getCurrentRenderTarget(J).texture),i.push(W.getCurrentRenderTarget(ne).texture),i.push(W.getCurrentRenderTarget(oe).texture),i.push(W.getCurrentRenderTarget(ae).texture),i.push(W.getCurrentRenderTarget(se).texture);let s=0;for(let e=0;e<2;e++)for(let n=0;n<3;n++){let t=new q.Mesh(new q.PlaneBufferGeometry(a,.5),new q.MeshBasicMaterial);0==s?t.material.color=new q.Color(15,15,15,0):1==s&&(t.material.color=new q.Color(5,5,5,0)),t.position.x=-.5*(1-a)+a*n,t.position.y=.25-.5*e,t.material.map=i[s],t.material.map.offset=new q.Vector2(1/Ae*2,0),qe.add(t),s++}qe.position.x=-.5,qe.position.y=.5,qe.scale.x=le,qe.scale.y=ce,ke.add(qe)}(),function e(){var n=en();ve+=(n-ue)/1e3;let t=1/30;de+=t,ue=n;let o=Math.round(_e/60);(Le||o<1)&&(o=1);if(Te>=30)Te%o==0&&nn(t),Ye||Le&&Re-2<=Ve?xe.domElement.toBlob((function(e){Ye=!1,function(e,n){var t=document.createElement("a");document.body.appendChild(t),t.style="display: none";let o=window.URL.createObjectURL(e);t.href=o,t.download=n,t.click(),window.URL.revokeObjectURL(o),t.remove()}(e,tokenData.hash+"-"+(Re-2).toString()+".png"),r()})):r(),31==Te&&document.body.appendChild(xe.domElement);else if(29==Te){_e=1/(ve/30),de=0,r()}else r();function r(){requestAnimationFrame(e),Te++}}(),nn(0),tn(),window.addEventListener("resize",(e=>{tn()})),document.addEventListener("keydown",(e=>{"Space"==e.code?Fe=!Fe:"KeyS"==e.code?Ye=!0:"KeyW"==e.code&&(Me=!Me)}));let on=function(){let e=A($.gradientIndices),n=[];c.forEach((e=>{n.push(A(e))})),n=[...new Set(n)],void 0!==window&&(window.schemeNames=n);let t="";switch($.zoomLevel){case 3:t="lowest";break;case 4:t="low";break;case 5:t="medium";break;case 6:t="high";break;case 6.5:t="ultra high"}let o=Math.abs($.swirlStrength),r="low";return o>.15?r="high":o>.05&&(r="medium"),{fidelity:t,fluidity:r,"color scheme":e,angle:$.angleIndex,direction:$.flipY?"downwards":"upwards",frame:$.border,"double sided":$.doubleSided}}();console.log("Features ------");for(const[e,n]of Object.entries(on))console.log(`${e}: ${n}`)}();
Date).getTime()}function nn(e){Fe||(fe+=e,W.compute()),fe=Re*(1/30);let n=r(fe/5,0,1);n=1-Math.pow(1-n,2),Ge.copy(Xe),Ge.lerp(Oe,n),me.background=Ge,ne.material.uniforms.time={value:fe},ne.material.uniforms.frame={value:Re},J.material.uniforms.time={value:fe},J.material.uniforms.repulsors={value:He},Z.material.uniforms.time={value:fe};let t=Ze(),o=Qe(),a=Re<=Ae?Re:Ae,i=be.material.uniforms;if(i.noiseStrength={value:ge},i.numSteps={value:a},i.time={value:fe},i.posTex={value:W.getCurrentRenderTarget(ne).texture},i.xDirTex={value:W.getCurrentRenderTarget(ae).texture},i.yDirTex={value:W.getCurrentRenderTarget(se).texture},i.tanTex={value:W.getCurrentRenderTarget(oe).texture},i.colors={value:o},i.stops={value:t.stops},i.dBes={value:t.dB},i.dRs={value:t.dR},i.bgCol={value:Ge},i.numGradients={value:Ne.gradients.length},i.canvasSize={value:new q.Vector2(le*X,ce*X)},be.material.wireframe=Me,j&&Re>=500||!j){let e=xe.getRenderTarget();xe.setRenderTarget(Se),xe.render(me,ye),ze.material.uniforms.map.value=Se.texture,ze.material.uniforms.time.value=de,ze.material.uniforms.width.value=N,ze.material.uniforms.height.value=U,ze.material.uniforms.noiseStrength.value=Ye?.6:.8,xe.setRenderTarget(e),xe.render(he,we)}Fe||Re++}function tn(){ce=window.innerHeight;ge=a(ce*Ie,500,2e3,.4,1,!0),ge*=H.noiseStrength,le=ce/G,le*=2,ce*=2,N=le,U=ce,ye.aspect=le/ce,ye.updateProjectionMatrix(),xe.setSize(le,ce),xe.domElement.style.width=window.innerHeight/G+"px",xe.domElement.style.height=window.innerHeight+"px",ce<1800&&(ce=1800,!j&&X<=1&&(ce*=2)),le=ce/G,we=new q.OrthographicCamera(le/-2,le/2,ce/2,ce/-2,-1e4,1e4),we.updateProjectionMatrix(),Se=new q.WebGLRenderTarget(le*Ie,ce*Ie,{depthBuffer:!0}),ze.scale.x=le,ze.scale.y=ce,qe.scale.x=le,qe.scale.y=ce}Je.getHSL(Ke),Je.setHSL(Ke.h,.3*Ke.s,1*Ke.l),document.body.style.backgroundColor=Je.getHexString(),Xe=We.clone(),console.log('tokenData.hash = "'+tokenData.hash+'";'),function(){let e=$.zoomLevel;G<1&&(e*=1.2*G);let n=e/G;ye=new q.OrthographicCamera(-n/2,n/2,e/2,-e/2,-50,50),ye.position.z=10.5,ye.position.z,ye.position.z,me=new q.Scene,me.background=Xe,me.add(ye),xe=new q.WebGLRenderer({antialias:!0,sortObjects:!1}),xe.setPixelRatio(X),xe.setSize(le,ce),xe.domElement.style.width=le/2+"px",xe.domElement.style.height=ce/2+"px",pe=new q.Object3D,pe.rotation.x=$.xRotation,pe.rotation.y=$.yRotation,me.add(pe),xe.domElement.setAttribute("id","scene")}(),function(){const e=new q.DirectionalLight(16777215,1.3),n=new q.DirectionalLight(16777215,.6),t=new q.PointLight(16777215,.5);e.position.set(2,2,-3),n.position.set(8,-12,7),t.position.set(-2,2,-6),me.add(e),me.add(n),me.add(t)}(),function(){let e=[],n=0,t=$.nLines;if(0==$.circleDistroAlgo){for(;n<t;)o(e,0);function o(e,r){r<3&&(e.push([]),n++);let a=.01+r/3,s=5-r;if(e.length<s&&i.random_dec()>a&&n<t){(function(e){let n=0;function t(e){for(let o=0;o<e.length;o++)e[o].length&&t(e[o]),n++}return t(e),n})(e=e[i.random_int(0,e.length-1)])<3&&o(e,r+1)}}}else{e=[];let n=i.random_int(3,$.nLines/2);i.random_bool(.03)&&(n=2);let t=$.nLines-n;for(let o=0;o<n;o++){let r=[],a=i.random_int(0,t<6?t:6);o==n-1&&(a=t),t-=a;let s=r;for(let e=0;e<a;e++){let e=[];s.push(e),s=e}e.push(r)}}let o=new THREE.Vector3,r=0;!function e(n,t,o,a){if(r>0){Ce.push(t),De.push(o),Be.push(a);let e=1.4;$.smallFolds&&a<2&&i.random_bool(.3)&&(e=.6),Ee.push(e)}r++,a++;let s=n.length;if(1==s)o*=.6,e(n[0],t,o,a);else if(s>1){let r=2*Math.PI/s,c=i.random_num(-Math.PI,Math.PI),l=o/(s+1);for(let s=0;s<n.length;s++){let g=t.clone(),d=.55*o;a<2&&(d+=i.random_num(0,.3*o)),g.y+=Math.sin(c+r*s)*d,g.x+=Math.cos(c+r*s)*d,e(n[s],g,l,a)}}}(e,o,$.startRadius,0)}(),function(){W=new e(Ae,$e,xe),ee=W.createTexture(),ne=W.addVariable("texturePosition",`\nuniform float time;\nuniform int frame;\nuniform vec3 startPos[${$.nLines}];\nuniform float startRad[${$.nLines}];\n${t}\n#define PI 3.1415926538\n\nfloat fbm(vec3 x, int numOctaves) {\nfloat v = 0.0;\nfloat a = 0.5;\nvec3 shift = vec3(100);\nfor (int i = 0; i < numOctaves; ++i) {\nv += a * cnoise(x);\nx = x * 2.0 + shift;\na *= 0.5;\n}\nreturn v;\n}\n\nvoid main () {\nvec4 pos;\nvec2 uv = gl_FragCoord.xy / resolution.xy;\nvec4 acc = texture2D(textureAcc, uv);\nif (frame == 0)\n{\nint i = int(gl_FragCoord.y);\nfloat rad = startRad[i];\nfloat ang = uv.x * PI * 2.0;\npos = vec4(cos(ang) * rad, sin(ang) * rad, 0.0, 1.0);\npos.xyz += startPos[i];\nfloat fbmScale = .3;\nint octaves = 1;\nfloat scale = 1.5;\nvec3 p = pos.xyz;\np.x += ${i.random_dec(0,1e3)};\np.y += ${i.random_dec(0,1e3)};\n}\nelse if (frame == 1)\n{\nint nX = ${$.nSteps};\nint nY = ${$.nLines};\nint nTotal = nX * nY;\nvec2 offset;\nfor (int y = 0; y < nY; y++)\n{\nfor (int x = 0; x < nX; x++)\n{\nvec2 uv2 = vec2(float(x) + 0.001, float(y) + 0.001) / resolution.xy;\nvec4 pos2 = texture2D(texturePosition, uv2);\noffset += pos2.xy;\n}\n}\noffset /= float(nTotal);\npos = texture2D(texturePosition, uv);\npos.xy -= offset;\npos.x += ${i.random_dec(-.2,.2).toPrecision(5)};\nvec4 vel = texture2D(textureVel, uv);\nif (${H.applyVelocity}) pos.xyz += vel.xyz;\npos.w = vel.w;\n}\nelse\n{\nvec4 vel = texture2D(textureVel, uv);\npos = texture2D(texturePosition, uv);\nif (${H.applyVelocity}) pos.xyz += vel.xyz;\npos.w = vel.w;\n}\ngl_FragColor = pos;\n}`,ee),ne.material.uniforms.time={value:0},ne.material.uniforms.frame={value:Re},ne.material.uniforms.startPos={value:Ce},ne.material.uniforms.startRad={value:De},K=W.createTexture(),J=W.addVariable("textureAcc",`\n${t}\nuniform float maxAcc;\nuniform float time;\nuniform float foldSize[${$.nLines}];\nuniform int levels[${$.nLines}];\nvoid main () \n{\nvec2 c0 = gl_FragCoord.xy - vec2(1.0, 0.0);\nvec2 c1 = gl_FragCoord.xy;\nvec2 c2 = gl_FragCoord.xy + vec2(1.0, 0.0);\nint level = levels[int(gl_FragCoord.y)];\nif (c1.x < 1.0) c0 = vec2(resolution.x - 1.0, gl_FragCoord.y);\nif (c1.x > resolution.x - 1.0) c2 = vec2(0.0, gl_FragCoord.y);\nvec2 uv0 = c0 / resolution.xy;\nvec2 uv1 = c1 / resolution.xy;\nvec2 uv2 = c2 / resolution.xy;\nvec3 p0 = texture2D(texturePosition, uv0).xyz;\nvec3 p1 = texture2D(texturePosition, uv1).xyz;\nvec3 p2 = texture2D(texturePosition, uv2).xyz;\nfloat type = gl_FragCoord.y;\nvec3 acc = vec3(0.0, 0.0, 0.0);\nfloat segmentLength = .0001;\nfloat internalForceStrength = 1.0;\ninternalForceStrength = foldSize[int(gl_FragCoord.y)];\nvec3 pull1 = p0 - p1;\nvec3 pull2 = p2 - p1;\nvec3 pullToPoint = p0 + ((p2 - p0) * .5);\nvec3 pull3 = p1 - pullToPoint;\npull1 = normalize(pull1) * (length(pull1) - segmentLength);\npull2 = normalize(pull2) * (length(pull2) - segmentLength);\nfloat minDistMin = .4;\nfloat minDistMultiplierMax = .9;\nfloat minDistMultiplier = clamp(time * .5, 0.0, minDistMultiplierMax);\nfloat minDist = minDistMin + ((1.0 + (cnoise(vec3(p1.x * 1.3, p1.y * 1.3, 0.0))) / 2.0) * minDistMultiplier);\nvec2 uv4;\nvec3 p4;\nfloat bendStrength = ${$.bendStrength.toPrecision(5)};\nfloat globalForceStrength = bendStrength;\nif (time > 0.0)\n{\nacc += pull1 * internalForceStrength;\nacc += pull2 * internalForceStrength;\nfloat swirlSize = cnoise(p1 * .5);\nswirlSize = ${$.swirlSize.toPrecision(5)};\nfloat nStrength = ${$.swirlStrength.toPrecision(5)} * (1.0 - clamp((time - 5.0) / 10.0, 0.0, 1.0));\nvec3 np1 = (p1 * swirlSize) + ${i.random_num(100,300).toPrecision(5)};\nvec3 np2 = (p2 * swirlSize) + ${i.random_num(100,300).toPrecision(5)};\nnp1.z += ${i.random_num(0,1e3).toPrecision(5)};\nnp2.z += ${i.random_num(0,1e3).toPrecision(5)};\nacc.x += cnoise(np1) * nStrength;\nacc.y += cnoise(np2) * nStrength;\nvec3 attrPos = vec3(${i.random_num(-2,2).toPrecision(5)}, ${i.random_num(-2,2).toPrecision(5)}, 0.0);\nvec3 attract = p1 - attrPos;\nattract = normalize(attract) * (1.0 - clamp(length(attract) / 3.5, 0.0, 1.0));\nvec3 repulse = p1 - attrPos;\nrepulse = normalize(repulse) * (1.0 - clamp(length(repulse) / .5, 0.0, 1.0));\nacc -= attract * ${$.attrStrength.toPrecision(5)};\nacc += repulse * ${$.attrStrength.toPrecision(5)};\nfor (int i = 0; i < ${$.nLines}; i++)\n{\nfor (int j = 0; j < ${$.nSteps}; j++)\n{\nuv4 = vec2(float(j) + 0.001, float(i) + 0.001) / resolution.xy;\np4 = texture2D(texturePosition, uv4).xyz;\nif (p1 != p4)\n{\nvec3 dist = p4 - p1;\nvec3 pull3 = normalize(dist) * (length(dist) - minDist);\nvec3 push2 = normalize(dist) * clamp((length(dist) - minDist), 0.0, 10.0);\nacc += pull3 * globalForceStrength;\nacc += push2 * -globalForceStrength;\n}\n}\n}\n}\nacc *= 1.0 - pow(clamp((time - 0.0) / 11.1, 0.0, 1.0), 3.0);\ngl_FragColor = vec4(acc, type);\n}`,K),J.material.uniforms.time={value:0},J.material.uniforms.foldSize={value:Ee},J.material.uniforms.levels={value:Be},Q=W.createTexture(),Z=W.addVariable("textureVel","\nuniform float time;\nvoid main () {\nvec2 uv = gl_FragCoord.xy / resolution.xy;\nvec4 pos = texture2D(texturePosition, uv);\nvec4 acc = texture2D(textureAcc, uv);\nvec4 vel = texture2D(textureVel, uv);\nvel.xyz *= 0.95;\nvel.xyz += acc.xyz;\nvel.xyz *= .05 + (.05 * (1.0 - pow(clamp((time-3.0) / 4.0, 0.0, 1.0), 2.0)));\ngl_FragColor = vec4(vel.xyz, acc.w);\n}",Q),Z.material.uniforms.time={value:0},te=W.createTexture(),oe=W.addVariable("textureTangent","\nvoid main () \n{\nvec3 pos = texture2D(texturePosition, gl_FragCoord.xy / resolution.xy).xyz;\nvec3 prevPos = texture2D(texturePosition, (gl_FragCoord.xy + vec2(1.0, 0.0)) / resolution.xy).xyz;\nvec3 nextPos = texture2D(texturePosition, (gl_FragCoord.xy - vec2(1.0, 0.0)) / resolution.xy).xyz;\nvec3 tangent = normalize(nextPos - pos);\ngl_FragColor = vec4(tangent.xyz, 1.0);\n}",te),ie=W.createTexture(),se=W.addVariable("textureYDir","\nvoid main () \n{\nvec3 tan = texture2D(textureTangent, gl_FragCoord.xy / resolution.xy).xyz;\nvec3 nextTan = texture2D(textureTangent, (gl_FragCoord.xy - vec2(1.0, 0.0)) / resolution.xy).xyz;\nvec3 yDir = tan;\nyDir = normalize(-yDir);\ngl_FragColor = vec4(yDir.xyz, 1.0);\n}",ie),re=W.createTexture(),ae=W.addVariable("textureXDir","\nvoid main () \n{\nvec3 tan = texture2D(textureTangent, gl_FragCoord.xy / resolution.xy).xyz;\nvec3 yDir = texture2D(textureYDir, gl_FragCoord.xy / resolution.xy).xyz;\nvec3 xDir = normalize(cross(tan, yDir));\ngl_FragColor = vec4(xDir.xyz, 1.0);\n}",re),W.setVariableDependencies(J,[ne]),W.setVariableDependencies(Z,[ne,J,Z]),W.setVariableDependencies(ne,[ne,J,Z]),W.setVariableDependencies(oe,[ne]),W.setVariableDependencies(se,[ne,oe]),W.setVariableDependencies(ae,[ne,oe,se]),Se=new q.WebGLRenderTarget(le*Ie,ce*Ie,{depthBuffer:!0});var n=W.init();null!==n&&console.error(n)}(),function(){let e=Ze(),n=function(e,n){let t=new q.PlaneBufferGeometry(.005,.5,1,n);{t=new THREE.BufferGeometry;let o=[],r=[];for(let t=0;t<n;t++)for(let a=0;a<e;a++)if(o.push(0,0,0),a<e-1)if(t<n-1){let n=t*e+a,o=n+e;r.push(n,n+1,o),r.push(n+1,o+1,o)}else{let n=t*e+a;r.push(n,n+1,a),r.push(n+1,a+1,a)}t.setIndex(r),t.setAttribute("position",new THREE.BufferAttribute(new Float32Array(o),3))}return t}(2,Ae),r=function(e,n,r,s,c){let l=M.UniformsUtils.merge([M.ShaderLib.phong.uniforms,{diffuse:{value:new M.Color(16777215)}},{time:{value:0}},{numSteps:{value:0}},{nSides:{value:r}},{posTex:{type:L}},{xDirTex:{value:L}},{yDirTex:{value:L}},{tanTex:{value:L}},{colors:{value:s}},{stops:{value:c.stops}},{dBes:{value:c.dB}},{vSs:{value:c.dB}},{dRs:{value:c.dR}},{numGradients:{value:1}},{canvasSize:{value:new M.Vector2(100,100)}},{bgCol:{value:new M.Color(16777215)}}]),g=M.ShaderLib.phong.vertexShader,d=M.ShaderLib.phong.fragmentShader;g=g.replace("#include <common>",`\n\nvec3 rotAxis(vec3 v, vec3 axis, float angle)\n{\nreturn (1.0 - cos(angle)) * dot(v, axis) * axis + cos(angle) * v + sin(angle) * cross(axis, v);\n}\n\nvec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}\nvec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}\nvec4 fade(vec4 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}\nfloat cnoise(vec4 P){\nvec4 Pi0 = floor(P);\nvec4 Pi1 = Pi0 + 1.0;\nPi0 = mod(Pi0, 289.0);\nPi1 = mod(Pi1, 289.0);\nvec4 Pf0 = fract(P);\nvec4 Pf1 = Pf0 - 1.0;\nvec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\nvec4 iy = vec4(Pi0.yy, Pi1.yy);\nvec4 iz0 = vec4(Pi0.zzzz);\nvec4 iz1 = vec4(Pi1.zzzz);\nvec4 iw0 = vec4(Pi0.wwww);\nvec4 iw1 = vec4(Pi1.wwww);\nvec4 ixy = permute(permute(ix) + iy);\nvec4 ixy0 = permute(ixy + iz0);\nvec4 ixy1 = permute(ixy + iz1);\nvec4 ixy00 = permute(ixy0 + iw0);\nvec4 ixy01 = permute(ixy0 + iw1);\nvec4 ixy10 = permute(ixy1 + iw0);\nvec4 ixy11 = permute(ixy1 + iw1);\nvec4 gx00 = ixy00 / 7.0;\nvec4 gy00 = floor(gx00) / 7.0;\nvec4 gz00 = floor(gy00) / 6.0;\ngx00 = fract(gx00) - 0.5;\ngy00 = fract(gy00) - 0.5;\ngz00 = fract(gz00) - 0.5;\nvec4 gw00 = vec4(0.75) - abs(gx00) - abs(gy00) - abs(gz00);\nvec4 sw00 = step(gw00, vec4(0.0));\ngx00 -= sw00 * (step(0.0, gx00) - 0.5);\ngy00 -= sw00 * (step(0.0, gy00) - 0.5);\nvec4 gx01 = ixy01 / 7.0;\nvec4 gy01 = floor(gx01) / 7.0;\nvec4 gz01 = floor(gy01) / 6.0;\ngx01 = fract(gx01) - 0.5;\ngy01 = fract(gy01) - 0.5;\ngz01 = fract(gz01) - 0.5;\nvec4 gw01 = vec4(0.75) - abs(gx01) - abs(gy01) - abs(gz01);\nvec4 sw01 = step(gw01, vec4(0.0));\ngx01 -= sw01 * (step(0.0, gx01) - 0.5);\ngy01 -= sw01 * (step(0.0, gy01) - 0.5);\nvec4 gx10 = ixy10 / 7.0;\nvec4 gy10 = floor(gx10) / 7.0;\nvec4 gz10 = floor(gy10) / 6.0;\ngx10 = fract(gx10) - 0.5;\ngy10 = fract(gy10) - 0.5;\ngz10 = fract(gz10) - 0.5;\nvec4 gw10 = vec4(0.75) - abs(gx10) - abs(gy10) - abs(gz10);\nvec4 sw10 = step(gw10, vec4(0.0));\ngx10 -= sw10 * (step(0.0, gx10) - 0.5);\ngy10 -= sw10 * (step(0.0, gy10) - 0.5);\nvec4 gx11 = ixy11 / 7.0;\nvec4 gy11 = floor(gx11) / 7.0;\nvec4 gz11 = floor(gy11) / 6.0;\ngx11 = fract(gx11) - 0.5;\ngy11 = fract(gy11) - 0.5;\ngz11 = fract(gz11) - 0.5;\nvec4 gw11 = vec4(0.75) - abs(gx11) - abs(gy11) - abs(gz11);\nvec4 sw11 = step(gw11, vec4(0.0));\ngx11 -= sw11 * (step(0.0, gx11) - 0.5);\ngy11 -= sw11 * (step(0.0, gy11) - 0.5);\nvec4 g0000 = vec4(gx00.x,gy00.x,gz00.x,gw00.x);\nvec4 g1000 = vec4(gx00.y,gy00.y,gz00.y,gw00.y);\nvec4 g0100 = vec4(gx00.z,gy00.z,gz00.z,gw00.z);\nvec4 g1100 = vec4(gx00.w,gy00.w,gz00.w,gw00.w);\nvec4 g0010 = vec4(gx10.x,gy10.x,gz10.x,gw10.x);\nvec4 g1010 = vec4(gx10.y,gy10.y,gz10.y,gw10.y);\nvec4 g0110 = vec4(gx10.z,gy10.z,gz10.z,gw10.z);\nvec4 g1110 = vec4(gx10.w,gy10.w,gz10.w,gw10.w);\nvec4 g0001 = vec4(gx01.x,gy01.x,gz01.x,gw01.x);\nvec4 g1001 = vec4(gx01.y,gy01.y,gz01.y,gw01.y);\nvec4 g0101 = vec4(gx01.z,gy01.z,gz01.z,gw01.z);\nvec4 g1101 = vec4(gx01.w,gy01.w,gz01.w,gw01.w);\nvec4 g0011 = vec4(gx11.x,gy11.x,gz11.x,gw11.x);\nvec4 g1011 = vec4(gx11.y,gy11.y,gz11.y,gw11.y);\nvec4 g0111 = vec4(gx11.z,gy11.z,gz11.z,gw11.z);\nvec4 g1111 = vec4(gx11.w,gy11.w,gz11.w,gw11.w);\nvec4 norm00 = taylorInvSqrt(vec4(dot(g0000, g0000), dot(g0100, g0100), dot(g1000, g1000), dot(g1100, g1100)));\ng0000 *= norm00.x;\ng0100 *= norm00.y;\ng1000 *= norm00.z;\ng1100 *= norm00.w;\nvec4 norm01 = taylorInvSqrt(vec4(dot(g0001, g0001), dot(g0101, g0101), dot(g1001, g1001), dot(g1101, g1101)));\ng0001 *= norm01.x;\ng0101 *= norm01.y;\ng1001 *= norm01.z;\ng1101 *= norm01.w;\nvec4 norm10 = taylorInvSqrt(vec4(dot(g0010, g0010), dot(g0110, g0110), dot(g1010, g1010), dot(g1110, g1110)));\ng0010 *= norm10.x;\ng0110 *= norm10.y;\ng1010 *= norm10.z;\ng1110 *= norm10.w;\nvec4 norm11 = taylorInvSqrt(vec4(dot(g0011, g0011), dot(g0111, g0111), dot(g1011, g1011), dot(g1111, g1111)));\ng0011 *= norm11.x;\ng0111 *= norm11.y;\ng1011 *= norm11.z;\ng1111 *= norm11.w;\nfloat n0000 = dot(g0000, Pf0);\nfloat n1000 = dot(g1000, vec4(Pf1.x, Pf0.yzw));\nfloat n0100 = dot(g0100, vec4(Pf0.x, Pf1.y, Pf0.zw));\nfloat n1100 = dot(g1100, vec4(Pf1.xy, Pf0.zw));\nfloat n0010 = dot(g0010, vec4(Pf0.xy, Pf1.z, Pf0.w));\nfloat n1010 = dot(g1010, vec4(Pf1.x, Pf0.y, Pf1.z, Pf0.w));\nfloat n0110 = dot(g0110, vec4(Pf0.x, Pf1.yz, Pf0.w));\nfloat n1110 = dot(g1110, vec4(Pf1.xyz, Pf0.w));\nfloat n0001 = dot(g0001, vec4(Pf0.xyz, Pf1.w));\nfloat n1001 = dot(g1001, vec4(Pf1.x, Pf0.yz, Pf1.w));\nfloat n0101 = dot(g0101, vec4(Pf0.x, Pf1.y, Pf0.z, Pf1.w));\nfloat n1101 = dot(g1101, vec4(Pf1.xy, Pf0.z, Pf1.w));\nfloat n0011 = dot(g0011, vec4(Pf0.xy, Pf1.zw));\nfloat n1011 = dot(g1011, vec4(Pf1.x, Pf0.y, Pf1.zw));\nfloat n0111 = dot(g0111, vec4(Pf0.x, Pf1.yzw));\nfloat n1111 = dot(g1111, Pf1);\nvec4 fade_xyzw = fade(Pf0);\nvec4 n_0w = mix(vec4(n0000, n1000, n0100, n1100), vec4(n0001, n1001, n0101, n1101), fade_xyzw.w);\nvec4 n_1w = mix(vec4(n0010, n1010, n0110, n1110), vec4(n0011, n1011, n0111, n1111), fade_xyzw.w);\nvec4 n_zw = mix(n_0w, n_1w, fade_xyzw.z);\nvec2 n_yzw = mix(n_zw.xy, n_zw.zw, fade_xyzw.y);\nfloat n_xyzw = mix(n_yzw.x, n_yzw.y, fade_xyzw.x);\nreturn 2.2 * n_xyzw;\n}\n${o}\n\nfloat fbm(vec4 x, int numOctaves) {\nfloat v = 0.0;\nfloat a = 0.5;\nvec4 shift = vec4(100);\nfor (int i = 0; i < numOctaves; ++i) {\nv += a * cnoise(x);\nx = x * 2.0 + shift;\na *= 0.5;\n}\nreturn v;\n}\n\n#include <common>\nuniform float time;\nuniform int numSteps;\nuniform int nSides;\nattribute int indexAttr;\nattribute int gradientIndexAttr;\nattribute int gradientIndexAttr2;\nattribute int typeIndex;\nattribute float sIrease;\nattribute float vS;\nattribute float holeThreshold;\nattribute float dB;\nuniform sampler2D posTex;\nuniform sampler2D xDirTex;\nuniform sampler2D yDirTex;\nuniform sampler2D tanTex;\nuniform float mouseRat;\nuniform vec2 canvasSize;\nvarying vec4 vPosition;\nvarying vec4 mvPosition;\nvarying vec3 color;\nvarying float type;\nvarying float indexRat;\nvarying float lengthRad;\nvarying float lengthRadCircular;\nvarying float heightRat;\nvarying float vIndex;\nvarying float gradientIndex;\nvarying float gradientIndex2;\nvarying float animRat;\nvarying float vTypeIndex;\nvarying float vSatIncrease;\nvarying float vHoleThreshold;\nvarying float vDesatBrightness;\nvarying float vValueShift;\n`),g=g.replace("#include <project_vertex>",`\nfloat i = float(indexAttr);\nfloat nX = ${e.toPrecision(5)};\nfloat nY = ${n.toPrecision(5)};\nvTypeIndex = float(typeIndex);\nvSatIncrease = sIrease;\nvHoleThreshold = holeThreshold;\nvDesatBrightness = dB;\nvValueShift = vS;\nfloat y = i + .001;\nint stepIndex = (gl_VertexID / nSides) + 1;\nfloat x = float(stepIndex) + .001;\ngradientIndex = float(gradientIndexAttr);\ngradientIndex2 = float(gradientIndexAttr2);\nindexRat = y / nY;\nfloat yRat = y / nY;\nvec2 uv = vec2(x / nX, yRat);\nvec2 uv2 = vec2(((x + 1.0) / nX), yRat);\nvec4 pos = texture2D(posTex, uv);\nvec4 prevPos = texture2D(posTex, uv2);\nvec4 tan = texture2D(tanTex, uv);\nvec4 xDir = texture2D(xDirTex, uv);\nvec4 yDir = texture2D(yDirTex, uv);\ntype = pos.w;\nvec4 position = vec4( transformed, 1.0 );\nposition = vec4(pos.xyz, 1.0);\nfloat distortFactor = 2.0;\nvec2 distort;\ndistort.x = (1.0 + pow(cnoise(vec4((vec3(position.xy, time * .04) * 0.5) + ${i.random_num(200,400)}, time * .0)), 1.0)) / 2.0;\ndistort.y = (1.0 + pow(cnoise(vec4((vec3(position.xy, time * .04) * 0.5) + ${i.random_num(200,400)}, time * .0)), 1.0)) / 2.0;\nposition.xy *= .7 + (.6 * distort);\nlengthRad = x / nX;\nlengthRadCircular = sin(lengthRad * PI);\nfloat shapePow = 1.0;\nint shapeType = 0;\nvNormal = yDir.xyz;\nfloat offsetMax = .5;\nfloat offset = pow((1.0 + sin(indexRat * 213.3)) / 2.0, 3.0) * offsetMax;\noffset -= pow(1.0 + cnoise(vec4(pos.xy * .8, uv.y, time * .1)) / 2.0, 3.0) * .40;\nanimRat = 1.0 - pow(clamp(.7 - offset - (time * .2), 0.0, 1.0), 3.0);\nfloat noise = cnoise(vec4(position.x * ${$.heightNoiseScale}, position.y * ${$.heightNoiseScale}, time * .03, ${i.random_num(0,1e3).toPrecision(5)}));\nfloat topPos = (1.0 - ${$.heightNoiseAmp}) - .0 + (noise * ${$.heightNoiseAmp});\nfloat bottomPos = -10.0;\nheightRat = 1.0 - (float(gl_VertexID % nSides) / float(nSides));\nif (${H.fadeIn}) topPos -= pow(1.0 - animRat, 2.0) * 3.0;\nposition.z = mix(bottomPos, topPos, heightRat);\nif (typeIndex == 0) position.z -= .35;\nvIndex = y;\nvPosition = position;\nmvPosition = modelViewMatrix * position;\ngl_Position = projectionMatrix * mvPosition;\n`),d=d.replace("#include <common>",`\n#include <common>\nuniform float time;\nuniform vec4 colors[${s.length}];\nuniform float stops[${s.length}];\nuniform float dBes[${c.dB.length}];\nuniform float dRs[${c.dR.length}];\nuniform int numGradients;\nuniform vec2 canvasSize;\nuniform vec3 bgCol;\nuniform float noiseStrength;\nvarying float vIndex;\nvarying vec4 vPosition;\nvarying vec4 mvPosition;\nvarying vec3 color;\nvarying float type;\nvarying float indexRat;\nvarying float lengthRad;\nvarying float lengthRadCircular;\nvarying float animRat;\nvarying float heightRat;\nvarying float gradientIndex;\nvarying float gradientIndex2;\nvarying float vTypeIndex;\nvarying float vSatIncrease;\nvarying float vHoleThreshold;\nvarying float vDesatBrightness;\nvarying float vValueShift;\nfloat roundedBoxSDF(vec2 CenterPosition, vec2 Size, float Radius) \n{\nreturn length(max(abs(CenterPosition)-Size+Radius,0.0))-Radius;\n}\nvec4 gradient(vec4 c1, float s1, vec4 c2, float s2, vec4 c3, float s3, vec4 c4, float s4, float rat)\n{\nvec4 c = mix(c1, c2, smoothstep(s1, s2, rat));\nc = mix(c, c3, smoothstep(s2, s3, rat));\nc = mix(c, c4, smoothstep(s3, s4, rat));\nreturn c;\n}\nvec4 gradient(vec4 c1, float s1, vec4 c2, float s2, vec4 c3, float s3, vec4 c4, float s4, vec4 c5, float s5, float rat)\n{\nvec4 c = mix(c1, c2, smoothstep(s1, s2, rat));\nc = mix(c, c3, smoothstep(s2, s3, rat));\nc = mix(c, c4, smoothstep(s3, s4, rat));\nc = mix(c, c5, smoothstep(s4, s5, rat));\nreturn c;\n}\n${t}\n\nvec3 hsv2rgb(vec3 c)\n{\nvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\nvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\nreturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\n\nvec3 rgb2hsv(vec3 c)\n{\nvec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\nvec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\nvec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\nfloat d = q.x - min(q.w, q.y);\nfloat e = 1.0e-10;\nreturn vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n}\n\n${o}\n\nfloat hash12(vec2 p)\n{\nvec3 p3 = fract(vec3(p.xyx) * .1031);\np3 += dot(p3, p3.yzx + 33.33);\nreturn fract((p3.x +
!function(){"use strict";class e{constructor(e,n,t){this.variables=[],this.currentTextureIndex=0;let o=THREE.FloatType;const r=new THREE.Scene,a=new THREE.Camera;a.position.z=1;const i={passThruTexture:{value:null}},s=g("uniform sampler2D passThruTexture;\n\nvoid main() {\n\n vec2 uv = gl_FragCoord.xy / resolution.xy;\n\n gl_FragColor = texture2D( passThruTexture, uv );\n\n}\n",i),c=new THREE.Mesh(new THREE.PlaneGeometry(2,2),s);function l(t){t.defines.resolution="vec2( "+e.toFixed(1)+", "+n.toFixed(1)+" )"}function g(e,n){n=n||{};const t=new THREE.ShaderMaterial({uniforms:n,vertexShader:"void main() {\n\n gl_Position = vec4( position, 1.0 );\n\n}\n",fragmentShader:e});return l(t),t}r.add(c),this.setDataType=function(e){return o=e,this},this.addVariable=function(e,n,t){const o={name:e,initialValueTexture:t,material:this.createShaderMaterial(n),dependencies:null,renderTargets:[],wrapS:null,wrapT:null,minFilter:THREE.NearestFilter,magFilter:THREE.NearestFilter};return this.variables.push(o),o},this.setVariableDependencies=function(e,n){e.dependencies=n},this.init=function(){if(!1===t.capabilities.isWebGL2&&!1===t.extensions.has("OES_texture_float"))return"No OES_texture_float support for float textures.";if(0===t.capabilities.maxVertexTextures)return"No support for vertex shader textures.";for(let t=0;t<this.variables.length;t++){const o=this.variables[t];o.renderTargets[0]=this.createRenderTarget(e,n,o.wrapS,o.wrapT,o.minFilter,o.magFilter),o.renderTargets[1]=this.createRenderTarget(e,n,o.wrapS,o.wrapT,o.minFilter,o.magFilter),this.renderTexture(o.initialValueTexture,o.renderTargets[0]),this.renderTexture(o.initialValueTexture,o.renderTargets[1]);const r=o.material,a=r.uniforms;if(null!==o.dependencies)for(let e=0;e<o.dependencies.length;e++){const n=o.dependencies[e];if(n.name!==o.name){let e=!1;for(let t=0;t<this.variables.length;t++)if(n.name===this.variables[t].name){e=!0;break}if(!e)return"Variable dependency not found. Variable="+o.name+", dependency="+n.name}a[n.name]={value:null},r.fragmentShader="\nuniform sampler2D "+n.name+";\n"+r.fragmentShader}}return this.currentTextureIndex=0,null},this.compute=function(){const e=this.currentTextureIndex,n=0===this.currentTextureIndex?1:0;for(let t=0,o=this.variables.length;t<o;t++){const o=this.variables[t];if(null!==o.dependencies){const n=o.material.uniforms;for(let t=0,r=o.dependencies.length;t<r;t++){const r=o.dependencies[t];n[r.name].value=r.renderTargets[e].texture}}this.doRenderTarget(o.material,o.renderTargets[n])}this.currentTextureIndex=n},this.getCurrentRenderTarget=function(e){return e.renderTargets[this.currentTextureIndex]},this.getAlternateRenderTarget=function(e){return e.renderTargets[0===this.currentTextureIndex?1:0]},this.addResolutionDefine=l,this.createShaderMaterial=g,this.createRenderTarget=function(t,r,a,i,s,c){t=t||e,r=r||n,a=a||THREE.ClampToEdgeWrapping,i=i||THREE.ClampToEdgeWrapping,s=s||THREE.NearestFilter,c=c||THREE.NearestFilter;return new THREE.WebGLRenderTarget(t,r,{wrapS:a,wrapT:i,minFilter:s,magFilter:c,format:THREE.RGBAFormat,type:o,depthBuffer:!1})},this.createTexture=function(){const t=new Float32Array(e*n*4);return new THREE.DataTexture(t,e,n,THREE.RGBAFormat,THREE.FloatType)},this.renderTexture=function(e,n){i.passThruTexture.value=e,this.doRenderTarget(s,n),i.passThruTexture.value=null},this.doRenderTarget=function(e,n){const o=t.getRenderTarget();c.material=e,t.setRenderTarget(n),t.render(r,a),c.material=s,t.setRenderTarget(o)}}}var n=THREE;let t="\nvec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}\nvec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}\nvec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}\nfloat cnoise(vec3 P){\nvec3 Pi0 = floor(P);\nvec3 Pi1 = Pi0 + vec3(1.0);\nPi0 = mod(Pi0, 289.0);\nPi1 = mod(Pi1, 289.0);\nvec3 Pf0 = fract(P);\nvec3 Pf1 = Pf0 - vec3(1.0);\nvec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\nvec4 iy = vec4(Pi0.yy, Pi1.yy);\nvec4 iz0 = Pi0.zzzz;\nvec4 iz1 = Pi1.zzzz;\nvec4 ixy = permute(permute(ix) + iy);\nvec4 ixy0 = permute(ixy + iz0);\nvec4 ixy1 = permute(ixy + iz1);\nvec4 gx0 = ixy0 / 7.0;\nvec4 gy0 = fract(floor(gx0) / 7.0) - 0.5;\ngx0 = fract(gx0);\nvec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\nvec4 sz0 = step(gz0, vec4(0.0));\ngx0 -= sz0 * (step(0.0, gx0) - 0.5);\ngy0 -= sz0 * (step(0.0, gy0) - 0.5);\nvec4 gx1 = ixy1 / 7.0;\nvec4 gy1 = fract(floor(gx1) / 7.0) - 0.5;\ngx1 = fract(gx1);\nvec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\nvec4 sz1 = step(gz1, vec4(0.0));\ngx1 -= sz1 * (step(0.0, gx1) - 0.5);\ngy1 -= sz1 * (step(0.0, gy1) - 0.5);\nvec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\nvec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\nvec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\nvec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\nvec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\nvec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\nvec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\nvec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\nvec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\ng000 *= norm0.x;\ng010 *= norm0.y;\ng100 *= norm0.z;\ng110 *= norm0.w;\nvec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\ng001 *= norm1.x;\ng011 *= norm1.y;\ng101 *= norm1.z;\ng111 *= norm1.w;\nfloat n000 = dot(g000, Pf0);\nfloat n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\nfloat n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\nfloat n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\nfloat n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\nfloat n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\nfloat n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\nfloat n111 = dot(g111, Pf1);\nvec3 fade_xyz = fade(Pf0);\nvec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\nvec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\nfloat n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x); \nreturn 2.2 * n_xyz;\n}";t="\nvec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}\nvec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}\nvec4 fade(vec4 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}\nfloat cnoise(vec3 P2){\nvec4 P = vec4(P2 * 1.28, 0.0);\nvec4 Pi0 = floor(P);\nvec4 Pi1 = Pi0 + 1.0;\nPi0 = mod(Pi0, 289.0);\nPi1 = mod(Pi1, 289.0);\nvec4 Pf0 = fract(P);\nvec4 Pf1 = Pf0 - 1.0;\nvec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\nvec4 iy = vec4(Pi0.yy, Pi1.yy);\nvec4 iz0 = vec4(Pi0.zzzz);\nvec4 iz1 = vec4(Pi1.zzzz);\nvec4 iw0 = vec4(Pi0.wwww);\nvec4 iw1 = vec4(Pi1.wwww);\nvec4 ixy = permute(permute(ix) + iy);\nvec4 ixy0 = permute(ixy + iz0);\nvec4 ixy1 = permute(ixy + iz1);\nvec4 ixy00 = permute(ixy0 + iw0);\nvec4 ixy01 = permute(ixy0 + iw1);\nvec4 ixy10 = permute(ixy1 + iw0);\nvec4 ixy11 = permute(ixy1 + iw1);\nvec4 gx00 = ixy00 / 7.0;\nvec4 gy00 = floor(gx00) / 7.0;\nvec4 gz00 = floor(gy00) / 6.0;\ngx00 = fract(gx00) - 0.5;\ngy00 = fract(gy00) - 0.5;\ngz00 = fract(gz00) - 0.5;\nvec4 gw00 = vec4(0.75) - abs(gx00) - abs(gy00) - abs(gz00);\nvec4 sw00 = step(gw00, vec4(0.0));\ngx00 -= sw00 * (step(0.0, gx00) - 0.5);\ngy00 -= sw00 * (step(0.0, gy00) - 0.5);\nvec4 gx01 = ixy01 / 7.0;\nvec4 gy01 = floor(gx01) / 7.0;\nvec4 gz01 = floor(gy01) / 6.0;\ngx01 = fract(gx01) - 0.5;\ngy01 = fract(gy01) - 0.5;\ngz01 = fract(gz01) - 0.5;\nvec4 gw01 = vec4(0.75) - abs(gx01) - abs(gy01) - abs(gz01);\nvec4 sw01 = step(gw01, vec4(0.0));\ngx01 -= sw01 * (step(0.0, gx01) - 0.5);\ngy01 -= sw01 * (step(0.0, gy01) - 0.5);\nvec4 gx10 = ixy10 / 7.0;\nvec4 gy10 = floor(gx10) / 7.0;\nvec4 gz10 = floor(gy10) / 6.0;\ngx10 = fract(gx10) - 0.5;\ngy10 = fract(gy10) - 0.5;\ngz10 = fract(gz10) - 0.5;\nvec4 gw10 = vec4(0.75) - abs(gx10) - abs(gy10) - abs(gz10);\nvec4 sw10 = step(gw10, vec4(0.0));\ngx10 -= sw10 * (step(0.0, gx10) - 0.5);\ngy10 -= sw10 * (step(0.0, gy10) - 0.5);\nvec4 gx11 = ixy11 / 7.0;\nvec4 gy11 = floor(gx11) / 7.0;\nvec4 gz11 = floor(gy11) / 6.0;\ngx11 = fract(gx11) - 0.5;\ngy11 = fract(gy11) - 0.5;\ngz11 = fract(gz11) - 0.5;\nvec4 gw11 = vec4(0.75) - abs(gx11) - abs(gy11) - abs(gz11);\nvec4 sw11 = step(gw11, vec4(0.0));\ngx11 -= sw11 * (step(0.0, gx11) - 0.5);\ngy11 -= sw11 * (step(0.0, gy11) - 0.5);\nvec4 g0000 = vec4(gx00.x,gy00.x,gz00.x,gw00.x);\nvec4 g1000 = vec4(gx00.y,gy00.y,gz00.y,gw00.y);\nvec4 g0100 = vec4(gx00.z,gy00.z,gz00.z,gw00.z);\nvec4 g1100 = vec4(gx00.w,gy00.w,gz00.w,gw00.w);\nvec4 g0010 = vec4(gx10.x,gy10.x,gz10.x,gw10.x);\nvec4 g1010 = vec4(gx10.y,gy10.y,gz10.y,gw10.y);\nvec4 g0110 = vec4(gx10.z,gy10.z,gz10.z,gw10.z);\nvec4 g1110 = vec4(gx10.w,gy10.w,gz10.w,gw10.w);\nvec4 g0001 = vec4(gx01.x,gy01.x,gz01.x,gw01.x);\nvec4 g1001 = vec4(gx01.y,gy01.y,gz01.y,gw01.y);\nvec4 g0101 = vec4(gx01.z,gy01.z,gz01.z,gw01.z);\nvec4 g1101 = vec4(gx01.w,gy01.w,gz01.w,gw01.w);\nvec4 g0011 = vec4(gx11.x,gy11.x,gz11.x,gw11.x);\nvec4 g1011 = vec4(gx11.y,gy11.y,gz11.y,gw11.y);\nvec4 g0111 = vec4(gx11.z,gy11.z,gz11.z,gw11.z);\nvec4 g1111 = vec4(gx11.w,gy11.w,gz11.w,gw11.w);\nvec4 norm00 = taylorInvSqrt(vec4(dot(g0000, g0000), dot(g0100, g0100), dot(g1000, g1000), dot(g1100, g1100)));\ng0000 *= norm00.x;\ng0100 *= norm00.y;\ng1000 *= norm00.z;\ng1100 *= norm00.w;\nvec4 norm01 = taylorInvSqrt(vec4(dot(g0001, g0001), dot(g0101, g0101), dot(g1001, g1001), dot(g1101, g1101)));\ng0001 *= norm01.x;\ng0101 *= norm01.y;\ng1001 *= norm01.z;\ng1101 *= norm01.w;\nvec4 norm10 = taylorInvSqrt(vec4(dot(g0010, g0010), dot(g0110, g0110), dot(g1010, g1010), dot(g1110, g1110)));\ng0010 *= norm10.x;\ng0110 *= norm10.y;\ng1010 *= norm10.z;\ng1110 *= norm10.w;\nvec4 norm11 = taylorInvSqrt(vec4(dot(g0011, g0011), dot(g0111, g0111), dot(g1011, g1011), dot(g1111, g1111)));\ng0011 *= norm11.x;\ng0111 *= norm11.y;\ng1011 *= norm11.z;\ng1111 *= norm11.w;\nfloat n0000 = dot(g0000, Pf0);\nfloat n1000 = dot(g1000, vec4(Pf1.x, Pf0.yzw));\nfloat n0100 = dot(g0100, vec4(Pf0.x, Pf1.y, Pf0.zw));\nfloat n1100 = dot(g1100, vec4(Pf1.xy, Pf0.zw));\nfloat n0010 = dot(g0010, vec4(Pf0.xy, Pf1.z, Pf0.w));\nfloat n1010 = dot(g1010, vec4(Pf1.x, Pf0.y, Pf1.z, Pf0.w));\nfloat n0110 = dot(g0110, vec4(Pf0.x, Pf1.yz, Pf0.w));\nfloat n1110 = dot(g1110, vec4(Pf1.xyz, Pf0.w));\nfloat n0001 = dot(g0001, vec4(Pf0.xyz, Pf1.w));\nfloat n1001 = dot(g1001, vec4(Pf1.x, Pf0.yz, Pf1.w));\nfloat n0101 = dot(g0101, vec4(Pf0.x, Pf1.y, Pf0.z, Pf1.w));\nfloat n1101 = dot(g1101, vec4(Pf1.xy, Pf0.z, Pf1.w));\nfloat n0011 = dot(g0011, vec4(Pf0.xy, Pf1.zw));\nfloat n1011 = dot(g1011, vec4(Pf1.x, Pf0.y, Pf1.zw));\nfloat n0111 = dot(g0111, vec4(Pf0.x, Pf1.yzw));\nfloat n1111 = dot(g1111, Pf1);\nvec4 fade_xyzw = fade(Pf0);\nvec4 n_0w = mix(vec4(n0000, n1000, n0100, n1100), vec4(n0001, n1001, n0101, n1101), fade_xyzw.w);\nvec4 n_1w = mix(vec4(n0010, n1010, n0110, n1110), vec4(n0011, n1011, n0111, n1111), fade_xyzw.w);\nvec4 n_zw = mix(n_0w, n_1w, fade_xyzw.z);\nvec2 n_yzw = mix(n_zw.xy, n_zw.zw, fade_xyzw.y);\nfloat n_xyzw = mix(n_yzw.x, n_yzw.y, fade_xyzw.x);\nreturn 2.2 * n_xyzw * .7;\n}";let o="const mat2 myt = mat2(.12121212, .13131313, -.13131313, .12121212);\nconst vec2 mys = vec2(1e4, 1e6);\nvec2 rhash(vec2 uv) {\nuv *= myt;\nuv *= mys;\nreturn fract(fract(uv / mys) * uv);\n}\nvec3 hash(vec3 p) {\nreturn fract(sin(vec3(dot(p, vec3(1.0, 57.0, 113.0)),\ndot(p, vec3(57.0, 113.0, 1.0)),\ndot(p, vec3(113.0, 1.0, 57.0)))) *\n43758.5453);\n}\nfloat voronoiNoise(const in vec2 point) {\nvec2 p = floor(point);\nvec2 f = fract(point);\nfloat res = 0.0;\nfor (int j = -1; j <= 1; j++) {\nfor (int i = -1; i <= 1; i++) {\nvec2 b = vec2(i, j);\nvec2 r = vec2(b) - f + rhash(p + b);\nres += 1. / pow(dot(r, r), 8.);\n}\n}\nreturn pow(1. / res, 0.0625);\n}\n";function r(e,n,t){return e<n&&(e=n),e>t&&(e=t),e}function a(e,n,t,o,a,i=!1){let s=o+(a-o)*(e-n)/(t-n);return i&&(s=r(s,o,a)),s}let i=new class{constructor(){this.useA=!1;let e=function(e){let n=parseInt(e.substring(0,8),16),t=parseInt(e.substring(8,16),16),o=parseInt(e.substring(16,24),16),r=parseInt(e.substring(24,32),16);return function(){n|=0,t|=0,o|=0,r|=0;let e=(n+t|0)+r|0;return r=r+1|0,n=t^t>>>9,t=o+(o<<3)|0,o=o<<21|o>>>11,o=o+e|0,(e>>>0)/4294967296}};this.prngA=new e(tokenData.hash.substring(2,34)),this.prngB=new e(tokenData.hash.substring(34,66));for(let e=0;e<1e6;e+=2)this.prngA(),this.prngB()}random_dec(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}random_num(e,n){return e+(n-e)*this.random_dec()}random_int(e,n){return Math.floor(this.random_num(e,n+1))}random_bool(e){return this.random_dec()<e}random_choice(e){return e[this.random_int(0,e.length-1)]}},s=[{dB:-.04000000000000015,dR:.51,vS:-.1,sI:.5,name:"coal",colors:["#4f4f4f","#333333","#151619","#090b0f","#020203"],stops:[26020852139652106e-33,.15000000000000002,.31999999999999995,.4900000000000001,1]},{dB:-.02000000000000006,dR:.24,vS:.05,sI:.2,name:"carbon",colors:["#bfbfbf","#a5a5a5","#7f8489","#171b23","#010203"],stops:[26020852139652106e-33,.12,.24,.76,1]},{dB:-.13000000000000003,dR:.45000000000000007,vS:-.2,sI:0,name:"bone",colors:["#FFFFFF","#ebe7e5","#bfbaba","#6d767f","#444b5c"],stops:[1214306433183765e-32,.25999999999999995,.5400000000000001,.9500000000000001,1]},{dB:-.09000000000000001,dR:.4299999999999999,vS:0,sI:.3,name:"gold",colors:["#fff6ea","#e8c098","#8f623f","#6c4035","#000000"],stops:[0,.2600000000000001,.75,.87,1]},{dB:-.16999999999999998,dR:.37999999999999995,vS:.03,sI:0,name:"fire",colors:["#f8a393","#ef6d6d","#db4d41","#a5343e","#460310"],stops:[0,.08,.29000000000000004,.6,1]},{dB:-.07000000000000002,dR:.42000000000000004,vS:-.05,sI:.2,name:"rose",colors:["#ffd2d2","#ebb2c6","#a85562","#853c3c","#62162c"],stops:[0,.24000000000000007,.7899999999999999,.9,1]},{dB:.43,dR:.44999999999999996,vS:-.1,sI:.1,name:"lavender",colors:["#fbf3f1","#fbf1f0","#e2c1ba","#d2a0aa","#c58484"],stops:[3469446951953614e-33,.36000000000000004,.82,.9500000000000001,1]},{dB:.020000000000000066,dR:.29000000000000004,vS:-.2,sI:.4,name:"blush",colors:["#f8e2d0","#fba3a3","#9c405a","#661935","#4c1015"],stops:[0,.26,.7599999999999999,.93,1]},{dB:-.04000000000000007,dR:.37999999999999995,vS:-.1,sI:.3,name:"gill",colors:["#eae4eb","#cfc6c4","#9f9391","#8c7159","#8c6244"],stops:[.3400000000000001,.66,.8899999999999999,.98,1]},{dB:-.11,dR:.36000000000000004,vS:-.05,sI:.1,name:"moss",colors:["#dbffc0","#8ea26e","#627955","#122c1c","#010605"],stops:[0,.25999999999999995,.48,.86,1]},{dB:-.07000000000000006,dR:.39,vS:-.1,sI:.1,name:"leaf",colors:["#c7e2af","#96af9b","#43624d","#1d392f","#091c1c"],stops:[0,.20000000000000004,.5700000000000002,.7300000000000001,1]},{dB:-.03999999999999994,dR:.36000000000000004,vS:-.2,sI:.3,name:"neon",colors:["#badfd3","#87cfb8","#6cc29b","#20695d","#123630"],stops:[0,.23999999999999996,.33,.97,1]},{dB:-.16999999999999993,dR:.31999999999999995,vS:0,sI:.2,name:"shore",colors:["#acc6d8","#6395b2","#305372","#152b3f","#121929"],stops:[1734723475976807e-33,.33,.5800000000000001,.8200000000000001,1]},{dB:-.16999999999999996,dR:.52,vS:0,sI:.2,name:"space",colors:["#b7d2e2","#597282","#385366","#121c2c","#040516"],stops:[1734723475976807e-33,.37,.6000000000000001,.87,1]},{dB:-.07000000000000002,dR:.41000000000000003,vS:-.2,sI:.2,name:"grape",colors:["#9286ac","#4b4e82","#3b3969","#141739","#0b0e1f"],stops:[0,.11000000000000001,.29,.84,1]},{dB:-.03999999999999996,dR:.35,vS:-.1,sI:.2,name:"plum",colors:["#ba95db","#9d88db","#363077","#100c3c","#0d0f1f"],stops:[0,.15999999999999998,.5400000000000001,.79,1]},{dB:.76,dR:.51,vS:-.1,sI:.3,name:"haze",colors:["#c3b2df","#585c95","#242a5c","#000033","#020026"],stops:[0,.36999999999999994,.64,.91,1]},{dB:.09000000000000007,dR:.37999999999999995,vS:0,sI:.3,name:"peach",colors:["#ffd3a4","#f8bc99","#fb8353","#fb5149","#c52b25"],stops:[26020852139652106e-33,.21,.46,.8300000000000001,1]},{dB:-.24,dR:.42999999999999994,vS:0,sI:.3,name:"depth",colors:["#7f95a5","#567d92","#223649","#112236","#02121f"],stops:[0,.32000000000000006,.71,.87,1]},{dB:-.13000000000000003,dR:.29000000000000004,vS:.05,sI:.3,name:"wine",colors:["#f57979","#bf354b","#6f162c","#3f030b","#190008"],stops:[0,.17,.54,.8200000000000001,1]},{dB:-.11000000000000006,dR:.36000000000000004,vS:.05,sI:.3,name:"wood",colors:["#6f6559","#464240","#292827","#161311","#191215"],stops:[26020852139652106e-33,.25,.41,.63,1]},{dB:.12999999999999995,dR:.4899999999999999,vS:.05,sI:.3,name:"honey",colors:["#fffdfa","#fbeccb","#fbda90","#bc8d51","#a75128"],stops:[22551405187698492e-33,.16000000000000003,.51,.87,1]},{dB:.27999999999999997,dR:.3999999999999999,vS:.05,sI:.3,name:"pale",colors:["#fffdfa","#fbeccb","#ffe7b4","#c89859","#d87f42"],stops:[22551405187698492e-33,.12000000000000002,.44999999999999996,.9500000000000001,1]},{dB:.27999999999999997,dR:.3999999999999999,vS:.05,sI:.3,name:"sun",colors:["#fffdfa","#ffe09d","#ffd16f","#eb9543","#cf6a42"],stops:[22551405187698492e-33,.12000000000000002,.44999999999999996,.9500000000000001,1]},{dB:-.12999999999999995,dR:.41000000000000003,vS:-.1,sI:.2,name:"berry",colors:["#a5d8fb","#298ebf","#0063b5","#0e336c","#001a56"],stops:[1734723475976807e-33,.14,.4600000000000001,.8,1]},{dB:-.25999999999999995,dR:.29,vS:.03,sI:0,name:"blood",colors:["#ff2145","#ff6d6d","#d52836","#821526","#16040f"],stops:[0,.22,.49000000000000005,.75,1]}],c=[[0,1],[0,1],[0,1,2],[1,2],[2,3,5],[1,2,8],[2,1],[2,3,8],[2,3],[8,9],[2,25],[4,19,17,19],[3,3,3,22,4],[3,22],[4,19],[3,8],[0,2],[19,18,6],[19,19,6,7],[19,5],[6,6,5],[19,2],[2,19],[2,2,18],[19,19,8],[5,7,8],[6,7,5],[5,8],[6,5,0],[6,2],[9,10,9,10,11],[2,9,10],[2],[18],[18,24],[9,10,11,17],[9,19,11],[10,9,9,10,8],[8,7,6],[9,10],[8,18],[8,22,21,23],[16],[12,13,8,18],[5,7,22,6],[21,22,23],[20,1],[4,2,7],[0,1,8,20]],l=i.random_int(0,c.length-1),g=c[l],d=[];for(let e=0;e<g.length;e++){let n=1;n=i.random_int(1,5);for(let t=0;t<n;t++)d.push(g[e])}g=d;let v=i.random_dec(),f=a(v,0,1,.4,.2);v=a(v,0,1,.9,2);let u=[[-.55,.2],[-.55,.3],[-.55,0],[-.75,0],[-.75,.3],[-.75,-.3]],x=i.random_int(8,13),m=i.random_bool(.8)?1:0,y=12;x>10&&(y-=x-10);let p=100*Math.round(i.random_int(8,y)),h=i.random_int(0,u.length-1),w=u[h],z=w[0],P=w[1],b=1-i.random_dec();b=1-Math.pow(1-b,1);let _=[4,5,6];x<11&&(_=_.slice(0,_.length-1));let S=_[Math.floor(b*_.length)];x<12&&i.random_bool(.2)&&(b=0,S=3);let R,T=a(b,0,1,.3,.6),I=a(b,0,1,.8,1);R=0!=w[1]&&i.random_bool(.6);let F=!1;g.length>1&&(F=i.random_bool(.5));let C=8e-4,D=i.random_bool(.5),E=i.random_bool(.25),B=i.random_num(.07,.18);S==_[0]&&(E=!1),b>.8&&(b=1,S=6.5,C=.0015,B*=.5);let H={};H={fadeIn:!0,applyVelocity:!0,applyHoles:!0,noiseStrength:.9};let $={angle:w.toString(),angleIndex:h,border:R,schemeIndex:l,gradientIndices:g,nLines:x,circleDistroAlgo:m,nSteps:p,startRadius:3,hideLines:!0,smallFolds:i.random_bool(.3),zoomLevelRat:b,zoomLevel:S,xRotation:z,yRotation:P,doubleSided:F,swirlSize:i.random_num(.05,.6),swirlStrength:i.random_num(-.2,.2),flipX:D,flipY:E,numCols:g.length,gradientIndices:g,multipleGradientProb:.5*i.random_int(0,2),colorDistributionType:i.random_int(0,2),heightNoiseScale:v,heightNoiseAmp:f,minHoleThreshold:T,maxHoleThreshold:I,allHoles:i.random_bool(.5),bendStrength:C,attrStrength:B};function A(e){let n="",t={};return e.forEach((e=>{let n=s[e].name;t[n]=n})),Object.keys(t).forEach((e=>{""!=n&&(n+=","),n+=e})),n}Math.floor(parseInt(tokenData.tokenId)/1e6);parseInt(tokenData.tokenId);let M=THREE,L=new M.Texture;$.gradientType=2;let V="uv.x = 1.0 - uv.x;",O="uv.y = 1.0 - uv.y;";$.flipX||(V=""),$.flipY||(O="");let k=new Proxy(new URLSearchParams(window.location.search),{get:(e,n)=>e.get(n)}),q=THREE,Y=window,j=/\bHeadlessChrome/.test(navigator.userAgent);new class{_rotVel=new n.Vector3;_posVel;_prevMousePos;_isMouseDown;constructor(){this._posVel=new n.Vector3,this._prevMousePos={x:0,y:0},this._isMouseDown=!1,window.addEventListener("touchstart",this._mouseDownHandler.bind(this)),window.addEventListener("touchend",this._mouseUpHandler.bind(this)),window.addEventListener("touchmove",this._mouseMoveHandler.bind(this)),window.addEventListener("mousedown",this._mouseDownHandler.bind(this)),window.addEventListener("mouseup",this._mouseUpHandler.bind(this)),window.addEventListener("mousemove",this._mouseMoveHandler.bind(this)),window.addEventListener("wheel",this._mouseWheelHandler.bind(this),{passive:!1})}update(e){e=e||.9;this._posVel.multiplyScalar(e),this._rotVel.multiplyScalar(e)}getRotationVelocity(){return this._rotVel}getPositionVelocity(){return this._posVel}_mouseDownHandler(e){this._prevMousePos={x:e.pageX,y:e.pageY},this._isMouseDown=!0}_mouseUpHandler(e){this._isMouseDown=!1}_mouseMoveHandler(e){if(this._isMouseDown){var n={x:e.pageX-this._prevMousePos.x,y:e.pageY-this._prevMousePos.y};this._prevMousePos={x:e.pageX,y:e.pageY},this._rotVel.x=n.y/200,this._rotVel.y=n.x/200}e.preventDefault()}_mouseWheelHandler(e){var n=e.deltaY;this._posVel.z+=n/5e3,e.preventDefault()}},new q.Vector3(i.random_num(-.6,.6),i.random_num(-1,1),0).normalize(),window.matchMedia("only screen and (max-width: 1024px)").matches;let X=Y.devicePixelRatio?Y.devicePixelRatio:1,G=16/9;k.aspectRatio&&(G=k.aspectRatio);let N,U,W,K,J,Q,Z,ee,ne,te,oe,re,ae,ie,se,ce=Y.innerHeight,le=ce/G,ge=H.noiseStrength,de=0,ve=0,fe=0,ue=en();en();let xe,me,ye,pe,he,we,ze,Pe,be,_e,Se,Re=0,Te=0,Ie=1,Fe=!1,Ce=[],De=[],Ee=[],Be=[],He=[],$e=$.nLines,Ae=$.nSteps,Me=!1,Le=!1;k.record&&1==k.record&&(Le=!0);let Ve=1e6;k.toFrame&&(Ve=parseInt(k.toFrame));let Oe,ke,qe,Ye=!1,je=new q.Color(0),Xe=je,Ge=je;Ie*=X;le*=2,ce*=2;let Ne={gradients:[]};$.gradientIndices.forEach((e=>{Ne.gradients.push(s[e])}));let Ue=[...Qe()];Ue.sort(((e,n)=>{let t={},o={};e.getHSL(t),n.getHSL(o);let r=Math.abs(.5-t.l)/.5,a=Math.abs(.5-o.l)/.5;return r-=.5*t.s,a-=.5*o.s,r>a?1:r<a?-1:0})),Ue.forEach((e=>{e.getHSL({})}));let We=new q.Color(Ue[0]),Ke={};We.getHSL(Ke),We.setHSL(Ke.h,.3*Ke.s,.2*Ke.l),Oe=We.clone();let Je=We.clone();function Qe(){let e=[];for(let n=0;n<Ne.gradients.length;n++)for(let t=0;t<Ne.gradients[n].colors.length;t++)e.push(new THREE.Color(Ne.gradients[n].colors[t]));return e}function Ze(){let e={};for(let n=0;n<Ne.gradients.length;n++){let t=Ne.gradients[n];for(const[n,o]of Object.entries(t))e.hasOwnProperty(n)||(e[n]=[]),Array.isArray(o)?e[n].push(...o):e[n].push(o)}return e}function en(){return(new
(gl_FragCoord.x < padX || gl_FragCoord.x > canvasSize.x - padX || gl_FragCoord.y < padY || gl_FragCoord.y > canvasSize.y - padY))\n{\nif (sin(type*PI) > 0.0)\n{\nvec2 size = canvasSize - (vec2(padX, padY * 1.12) * 2.0);\nfloat box = clamp(roundedBoxSDF(gl_FragCoord.xy - (canvasSize * .5), size * .5, 0.0) / fadeSize, 0.0, 1.0);\nbox *= 3.5;\nbox += .3;\nbox -= .0 + (cnoise(vec3((gl_FragCoord.xy / canvasSize) * 8.4, 0.0)) * .4);\nbox = clamp(box, 0.0, 1.0);\nif (n2 < (1.0 - pow(1.0 - box, 4.0)))\n{\ndiscard;\nreturn;\n}\nelse\n{\nfloat b = (gl_FragColor.r + gl_FragColor.b + gl_FragColor.g ) / 3.0;\ngl_FragColor *= 0.9;\ngl_FragColor += (1.0 - b) * .1;\n}\n}\nelse\n{\n}\n}\n";return $.border||(f=""),d=d.replace("#include <fog_fragment>",`\ngl_FragColor.a = 1.0;\nfloat n2 = hash12(gl_FragCoord.xy / canvasSize * 1230.3);\nfloat zoomOffset = 1.0 - ${$.zoomLevelRat.toPrecision(5)};\nzoomOffset = pow(zoomOffset, 2.0);\nzoomOffset *= .5;\nfloat zOffset = ${(3*(Math.abs($.xRotation)-.55)).toPrecision(5)} + zoomOffset;\nfloat divider = 3.0 - zOffset;\nfloat z = .35 + vPosition.z - (zOffset * .35);\nif (z < 0.0) divider = 20.0;\nfloat b = pow(clamp(z / divider, -1.0, 1.0), 2.0);\nb = clamp(b, 0.0, 1.0) * 4.0;\ngl_FragColor = gl_FragColor * b;\nfloat h = (gl_FragColor.r + gl_FragColor.g + gl_FragColor.b) / 3.0;\nif (round(vTypeIndex) == 2.0 && vPosition.z > -1.5)\n{\nfloat ss = 1.5;\nfloat xs = ${a($.nSteps,700,1300,2.2,4,!1).toPrecision(5)};\nfloat cut = cnoise(vec3(lengthRadCircular * ss * xs, (vPosition.z + 123.3) * 1.0 * ss, (indexRat * 12.3) + (time * .01)));\nfloat hr = clamp((heightRat - .95), 0.0, 1.0) / .05;\nhr = clamp(hr, 0.0, 1.0);\nfloat cutThreshold = vHoleThreshold;\nfloat cutTimeOffset = .1;\nfloat cutRat = 1.0 - pow(1.0 - clamp(-cutTimeOffset + (time * 0.1), 0.0, 1.0), 3.0);\ncutRat = 1.0 - (cutRat * cutThreshold);\ncut *= clamp((z + 1.5) / 3.0, 0.0, 1.0) * 1.4;\nif (cut > cutRat)\n{\ndiscard;\nreturn;\n}\n}\n${f}\nfloat bri = (gl_FragColor.r + gl_FragColor.g + gl_FragColor.b) / 3.0;\nfloat n = hash12((gl_FragCoord.xy / canvasSize ) * 1000.0);\ngl_FragColor = gl_FragColor * .95 + vec4(n, n, n, 1.0) * .08 * (1.0 - bri) * noiseStrength;\ngl_FragColor += vec4(n, n, n, 1.0) * ((.013 + (bri * .12))) * noiseStrength * 2.0;\ngl_FragColor.rgb += clamp(1.0 - noiseStrength, 0.0, 1.0) * .05;\ngl_FragColor = clamp(gl_FragColor, vec4(0.0), vec4(1.0));\nbri = (gl_FragColor.r + gl_FragColor.g + gl_FragColor.b) / 3.0;\nint i1 = int(floor(gradientIndex + 0.0001));\nint i2 = int(floor(gradientIndex2 + 0.0001));\n${v}\nif (i1 > numGradients-1) i1 = 0;\nif (i2 > numGradients-1) i2 = 0;\nint ic1 = i1 * 5;\nvec4 c1 = colors[ic1];\nvec4 c2 = colors[ic1+1];\nvec4 c3 = colors[ic1+2];\nvec4 c4 = colors[ic1+3];\nvec4 c5 = colors[ic1+4];\nfloat s1 = stops[ic1];\nfloat s2 = stops[ic1+1];\nfloat s3 = stops[ic1+2];\nfloat s4 = stops[ic1+3];\nfloat s5 = stops[ic1+4];\nint ic2 = i2 * 5;\nvec4 c6 = colors[ic2];\nvec4 c7 = colors[ic2+1];\nvec4 c8 = colors[ic2+2];\nvec4 c9 = colors[ic2+3];\nvec4 c10 = colors[ic2+4];\nfloat s6 = stops[ic2];\nfloat s7 = stops[ic2+1];\nfloat s8 = stops[ic2+2];\nfloat s9 = stops[ic2+3];\nfloat s10 = stops[ic2+4];\nvec4 bw = gl_FragColor;\nbw.rgb += vec3(vValueShift);\nvec4 grad1 = gradient(c1, s1, c2, s2, c3, s3, c4, s4, c5, s5, 1.0 - bri);\nvec4 grad2 = gradient(c6, s6, c7, s7, c8, s8, c9, s9, c10, s10, 1.0 - bri);\nfloat dB1 = dBes[i1];\nfloat dB2 = dBes[i2];\nfloat sinScale = ${i.random_num(2,3).toPrecision(5)};\nsinScale = 2.0;\nfloat rat = (1.0 + sin(((lengthRadCircular * 3.14 * sinScale) + ((time * .2) + (vIndex))) + ${i.random_num(0,200).toPrecision(5)})) / 2.0;\ngl_FragColor = mix(grad1, grad2, rat);\nfloat satRat = .5 + (clamp(sin(lengthRadCircular * 8.0), 0.0, 1.0) * .5);\nsatRat *= vSatIncrease;\nfloat dR1 = dRs[i1];\nfloat dR2 = dRs[i2];\nfloat dR = pow((1.0 + cnoise(((vec3(vPosition.xy * 1.3, vPosition.y * .5)) + vec3(${i.random_num(10.2,345.3).toPrecision(5)})) * .5)) / 2.0, 2.0) * 3.0;\ndR = clamp(dR, 0.0, 1.0);\ndR *= 1.0 - mix(dR1, dR2, rat);\nvec2 satPos = gl_FragCoord.xy;\nvec2 satPosC = vec2((canvasSize.x * .5), (canvasSize.y * .5));\nsatPosC.x += ${i.random_num(-.3,.3).toPrecision(5)} * canvasSize.x;\nsatPosC.y += ${i.random_num(-.3,.3).toPrecision(5)} * canvasSize.y;\nsatPos.x += sin(satPos.x * 0.002) * canvasSize.x * .1;\nsatPos.y += sin(satPos.y * 0.0021) * canvasSize.x * .1;\nfloat satRat2 = 1.0 - (length(satPos - satPosC) / (canvasSize.x * .6));\nsatRat2 = pow(clamp(satRat2, 0.0, 1.0), 2.0);\ndR -= (satRat2 * dR) * 1.0;\ndR = clamp(dR, 0.0, 1.0);\nfloat desatB = mix(dB1, dB2, rat);\ngl_FragColor = mix(gl_FragColor, bw + desatB, dR);\nfloat sIndex = ${i.random_int(0,2).toPrecision(5)};\nif (vIndex >= sIndex && vIndex <= sIndex + (${i.random_int(1,1).toPrecision(5)}))\n{\nvec4 c = mix(colors[ic1+1], colors[ic1+3], clamp(vPosition.z, 0.0, 1.0));\ngl_FragColor = mix(c, c + (vec4(.12, .12, .12, 0.0) * noiseStrength), n);\n}\nvec3 hsv = rgb2hsv(gl_FragColor.rgb);\nvec3 saturated = hsv;\nhsv.r += -.02 + ((1.0 + sin(type * .1)) / 2.0 * .04);\ngl_FragColor.rgb = hsv2rgb(hsv);\nsaturated.g = clamp((saturated.g + .1), 0.0, .8);\nif (z < 0.0) gl_FragColor.rgb *= 1.0 - clamp(abs(clamp(z + 1.5, -1000.0, 0.0)) / 2.5, 0.0, 1.0);\nfloat fadeFactor = clamp(z - 1.0 + (time * (animRat*3.0)), 0.0, 1.0);\ngl_FragColor.rgb = mix(bgCol, gl_FragColor.rgb, fadeFactor);\n#include <fog_fragment>\n`),new M.ShaderMaterial({uniforms:l,vertexShader:g,side:M.DoubleSide,wireframe:!1,fragmentShader:d,lights:!0,fog:!0,name:"custom-material",depthWrite:!0})}(Le,Me,2,We(),e);Pe=new q.InstancedMesh(n,r,Me);let s=[],c=[],l=[],g=[],d=[],v=[],f=[],u=[],x=i.random_int(0,Me-1),m=0;for(let e=0;e<Me;e++){s.push(e);let n=$e[e],t=n-1,o=0;1==$.colorDistributionType&&(t=i.random_int(0,je.gradients.length)),t>je.gradients.length-1&&(t=je.gradients.length-1),e==x&&(o=je.gradients[t].sI);let r=t;if(i.random_bool(.8)&&je.gradients.length>1)for(r=i.random_int(0,je.gradients.length-1);r==t;)r=i.random_int(0,je.gradients.length-1);let a=0,y=2.99;n>3&&(y=2.99),a=1==n||2==n?Math.floor(i.random_num(2,y)):Math.floor(i.random_num(1,y)),$.allHoles&&(a=2),n>1&&n<4&&i.random_dec()>.8&&(a=0),2==a&&($.zoomLevel<=4&&m>=5?a=1:m++);let p=je.gradients[t].dB,h=i.random_num($.minHoleThreshold,$.maxHoleThreshold),w=(1+Math.sin(20*e))/2;w*=je.gradients[t].vS,u.push(p),g.push(a),c.push(t),l.push(r),d.push(o),v.push(h),f.push(w)}Pe.geometry.setAttribute("indexAttr",new THREE.InstancedBufferAttribute(new Int32Array(s),1,!1)),Pe.geometry.setAttribute("gradientIndexAttr",new THREE.InstancedBufferAttribute(new Int32Array(c),1,!1)),Pe.geometry.setAttribute("gradientIndexAttr2",new THREE.InstancedBufferAttribute(new Int32Array(l),1,!1)),Pe.geometry.setAttribute("typeIndex",new THREE.InstancedBufferAttribute(new Int32Array(g),1,!1)),Pe.geometry.setAttribute("sIrease",new THREE.InstancedBufferAttribute(new Float32Array(d),1,!1)),Pe.geometry.setAttribute("vS",new THREE.InstancedBufferAttribute(new Float32Array(f),1,!1)),Pe.geometry.setAttribute("holeThreshold",new THREE.InstancedBufferAttribute(new Float32Array(v),1,!1)),Pe.geometry.setAttribute("dB",new THREE.InstancedBufferAttribute(new Float32Array(u),1,!1)),ye.add(Pe)}(),function(){var e=q.ShaderLib.basic.vertexShader,n=function(e){return`\nuniform sampler2D map;\nuniform sampler2D debugMap;\nuniform float time;\nuniform float width;\nuniform float height;\nuniform float noiseStrength;\n${t}\n${o}\nfloat rand(vec2 co){\nreturn fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);\n}\nfloat sSin(float x)\n{\nreturn (1.0 + sin(x)) / 2.0;\n}\nfloat hash12(vec2 p)\n{\nvec3 p3 = fract(vec3(p.xyx) * .1031);\np3 += dot(p3, p3.yzx + 33.33);\nreturn fract((p3.x + p3.y) * p3.z);\n}\nvoid main ()\n{\nfloat pixR = ${e.toPrecision(6)};\nvec2 fc = gl_FragCoord.xy;\nvec2 uv = fc / vec2(width * pixR, height * pixR);\nvec2 uv2 = fc / vec2(width * pixR, height * pixR);\n${V}\n${O}\nvec4 c = texture2D( map, uv);\nfloat n = hash12(gl_FragCoord.xy);\ngl_FragColor = c;\nfloat bri = (gl_FragColor.r + gl_FragColor.g + gl_FragColor.b) / 3.0;\nfloat g = (pow(uv2.y, 2.5)) * 0.15;\ngl_FragColor += (g * .5) + (g * n * .5);\n}`}(ae),r=q.UniformsUtils.merge([q.ShaderLib.basic.uniforms,{time:{value:0}},{width:{value:ce}},{height:{value:se}},{noiseStrength:{value:1}}]);ze=new q.ShaderMaterial({uniforms:r,vertexShader:e,fragmentShader:n,name:"filter-material"}),pe=new q.Scene,pe.background=new q.Color(0,0,0),he=new q.OrthographicCamera(ce/-2,ce/2,se/2,se/-2,-10,10),he.position.z=1,we=new q.Mesh(new q.PlaneBufferGeometry(1,1),ze),we.scale.x=ce,we.scale.y=se,pe.add(we),Re=new q.Scene,Re.background=new q.Color(0,0,0),Te=new q.Object3D;let a=1/3,i=[];i.push(G.getCurrentRenderTarget(K).texture),i.push(G.getCurrentRenderTarget(U).texture),i.push(G.getCurrentRenderTarget(Q).texture),i.push(G.getCurrentRenderTarget(ee).texture),i.push(G.getCurrentRenderTarget(te).texture),i.push(G.getCurrentRenderTarget(re).texture);let s=0;for(let e=0;e<2;e++)for(let n=0;n<3;n++){let t=new q.Mesh(new q.PlaneBufferGeometry(a,.5),new q.MeshBasicMaterial);0==s?t.material.color=new q.Color(15,15,15,0):1==s&&(t.material.color=new q.Color(5,5,5,0)),t.position.x=-.5*(1-a)+a*n,t.position.y=.25-.5*e,t.material.map=i[s],t.material.map.offset=new q.Vector2(1/Le*2,0),Te.add(t),s++}Te.position.x=-.5,Te.position.y=.5,Te.scale.x=ce,Te.scale.y=se,Re.add(Te)}(),function e(){var n=Je();de+=(n-fe)/1e3;let t=1/30;ge+=t,fe=n;let o=Math.round(be/60);o<1&&(o=1);if(Fe>=30)Fe%o==0&&Qe(t),Oe?ue.domElement.toBlob((function(e){Oe=!1,function(e,n){var t=document.createElement("a");document.body.appendChild(t),t.style="display: none";let o=window.URL.createObjectURL(e);t.href=o,t.download=n,t.click(),window.URL.revokeObjectURL(o),t.remove()}(e,"frame"+Ie.toString()+".png"),r()})):r(),31==Fe&&document.body.appendChild(ue.domElement);else if(29==Fe){be=1/(de/30),ge=0,r()}else r();function r(){requestAnimationFrame(e),Fe++}}(),Qe(0),Ze(),window.addEventListener("resize",(e=>{Ze()})),document.addEventListener("keydown",(e=>{"Space"==e.code?De=!De:"KeyS"==e.code?Oe=!0:"KeyW"==e.code&&(Ve=!Ve)}));let en=function(){let e=A($.gradientIndices),n=[];c.forEach((e=>{n.push(A(e))})),n=[...new Set(n)],void 0!==window&&(window.schemeNames=n);let t="";switch($.zoomLevel){case 3:t="lowest";break;case 4:t="low";break;case 5:t="medium";break;case 6:t="high";break;case 6.5:t="ultra high"}let o=Math.abs($.swirlStrength),r="low";return o>.15?r="high":o>.05&&(r="medium"),{fidelity:t,fluidity:r,"color scheme":e,angle:$.angleIndex,direction:$.flipY?"downwards":"upwards",frame:$.border,"double sided":$.doubleSided}}();console.log("Features ------");for(const[e,n]of Object.entries(en))console.log(`${e}: ${n}`)}();
a=Ie<=Le?Ie:Le,i=Pe.material.uniforms;if(i.noiseStrength={value:le},i.numSteps={value:a},i.time={value:ve},i.posTex={value:G.getCurrentRenderTarget(Q).texture},i.xDirTex={value:G.getCurrentRenderTarget(te).texture},i.yDirTex={value:G.getCurrentRenderTarget(re).texture},i.tanTex={value:G.getCurrentRenderTarget(ee).texture},i.colors={value:o},i.stops={value:t.stops},i.dBes={value:t.dB},i.dRs={value:t.dR},i.bgCol={value:Ye},i.numGradients={value:je.gradients.length},i.canvasSize={value:new q.Vector2(ce*ae,se*ae)},Pe.material.wireframe=Ve,Y&&Ie>=500||!Y){let e=ue.getRenderTarget();ue.setRenderTarget(_e),ue.render(xe,me),we.material.uniforms.map.value=_e.texture,we.material.uniforms.time.value=ge,we.material.uniforms.width.value=j,we.material.uniforms.height.value=X,we.material.uniforms.noiseStrength.value=Oe?.6:.8,ue.setRenderTarget(e),ue.render(pe,he)}De||Ie++}function Ze(){se=window.innerHeight;le=a(se*Ce,500,2e3,.4,1,!0),le*=H.noiseStrength,ce=se/ie,ce*=2,se*=2,j=ce,X=se,me.aspect=ce/se,me.updateProjectionMatrix(),ue.setSize(ce,se),ue.domElement.style.width=window.innerHeight/ie+"px",ue.domElement.style.height=window.innerHeight+"px",se<1800&&(se=1800,!Y&&ae<=1&&(se*=2)),ce=se/ie,he=new q.OrthographicCamera(ce/-2,ce/2,se/2,se/-2,-1e4,1e4),he.updateProjectionMatrix(),_e=new q.WebGLRenderTarget(ce*Ce,se*Ce,{depthBuffer:!0}),we.scale.x=ce,we.scale.y=se,Te.scale.x=ce,Te.scale.y=se}Ue.getHSL(Ne),Ue.setHSL(Ne.h,.3*Ne.s,.8*Ne.l),document.body.style.backgroundColor=Ue.getHexString(),ke=Ue.clone(),console.log('tokenData.hash = "'+tokenData.hash+'";'),function(){let e=$.zoomLevel,n=e/ie;me=new q.OrthographicCamera(-n/2,n/2,e/2,-e/2,-50,50),me.position.z=10.5,me.position.z,me.position.z,xe=new q.Scene,xe.background=ke,xe.add(me),ue=new q.WebGLRenderer({antialias:!0,sortObjects:!1}),ue.setPixelRatio(ae),ue.setSize(ce,se),ue.domElement.style.width=ce/2+"px",ue.domElement.style.height=se/2+"px",ye=new q.Object3D,ye.rotation.x=$.xRotation,ye.rotation.y=$.yRotation,xe.add(ye),ue.domElement.setAttribute("id","scene")}(),function(){const e=new q.DirectionalLight(16777215,1.3),n=new q.DirectionalLight(16777215,.6),t=new q.DirectionalLight(16777215,.5);e.position.set(2,2,-3),n.position.set(8,-12,7),t.position.set(-2,2,-6),xe.add(e),xe.add(n),xe.add(t)}(),function(){let e=[],n=0,t=$.nLines;if(0==$.circleDistroAlgo){for(;n<t;)o(e,0);function o(e,r){r<3&&(e.push([]),n++);let a=.01+r/3,s=5-r;if(e.length<s&&i.random_dec()>a&&n<t){(function(e){let n=0;function t(e){for(let o=0;o<e.length;o++)e[o].length&&t(e[o]),n++}return t(e),n})(e=e[i.random_int(0,e.length-1)])<3&&o(e,r+1)}}}else{e=[];let n=i.random_int(3,$.nLines/2);i.random_bool(.03)&&(n=2);let t=$.nLines-n;for(let o=0;o<n;o++){let r=[],a=i.random_int(0,t<6?t:6);o==n-1&&(a=t),t-=a;let s=r;for(let e=0;e<a;e++){let e=[];s.push(e),s=e}e.push(r)}}let o=new THREE.Vector3,r=0;!function e(n,t,o,a){if(r>0){Ee.push(t),Be.push(o),$e.push(a);let e=1.4;$.smallFolds&&a<2&&i.random_bool(.3)&&(e=.6),He.push(e)}r++,a++;let s=n.length;if(1==s)o*=.6,e(n[0],t,o,a);else if(s>1){let r=2*Math.PI/s,c=i.random_num(-Math.PI,Math.PI),l=o/(s+1);for(let s=0;s<n.length;s++){let g=t.clone(),d=.55*o;a<2&&(d+=i.random_num(0,.3*o)),g.y+=Math.sin(c+r*s)*d,g.x+=Math.cos(c+r*s)*d,e(n[s],g,l,a)}}}(e,o,$.startRadius,0)}(),function(){G=new e(Le,Me,ue),J=G.createTexture(),Q=G.addVariable("texturePosition",`\nuniform float time;\nuniform int frame;\nuniform vec3 startPos[${$.nLines}];\nuniform float startRad[${$.nLines}];\n${t}\n#define PI 3.1415926538\n\nfloat fbm(vec3 x, int numOctaves) {\nfloat v = 0.0;\nfloat a = 0.5;\nvec3 shift = vec3(100);\nfor (int i = 0; i < numOctaves; ++i) {\nv += a * cnoise(x);\nx = x * 2.0 + shift;\na *= 0.5;\n}\nreturn v;\n}\n\nvoid main () {\nvec4 pos;\nvec2 uv = gl_FragCoord.xy / resolution.xy;\nvec4 acc = texture2D(textureAcc, uv);\nif (frame == 0)\n{\nint i = int(gl_FragCoord.y);\nfloat rad = startRad[i];\nfloat ang = uv.x * PI * 2.0;\npos = vec4(cos(ang) * rad, sin(ang) * rad, 0.0, 1.0);\npos.xyz += startPos[i];\nfloat fbmScale = .3;\nint octaves = 1;\nfloat scale = 1.5;\nvec3 p = pos.xyz;\np.x += ${i.random_dec(0,1e3)};\np.y += ${i.random_dec(0,1e3)};\n}\nelse if (frame == 1)\n{\nint nX = ${$.nSteps};\nint nY = ${$.nLines};\nint nTotal = nX * nY;\nvec2 offset;\nfor (int y = 0; y < nY; y++)\n{\nfor (int x = 0; x < nX; x++)\n{\nvec2 uv2 = vec2(float(x) + 0.001, float(y) + 0.001) / resolution.xy;\nvec4 pos2 = texture2D(texturePosition, uv2);\noffset += pos2.xy;\n}\n}\noffset /= float(nTotal);\npos = texture2D(texturePosition, uv);\npos.xy -= offset;\npos.x += ${i.random_dec(-.2,.2).toPrecision(5)};\nvec4 vel = texture2D(textureVel, uv);\nif (${H.applyVelocity}) pos.xyz += vel.xyz;\npos.w = vel.w;\n}\nelse\n{\nvec4 vel = texture2D(textureVel, uv);\npos = texture2D(texturePosition, uv);\nif (${H.applyVelocity}) pos.xyz += vel.xyz;\npos.w = vel.w;\n}\ngl_FragColor = pos;\n}`,J),Q.material.uniforms.time={value:0},Q.material.uniforms.frame={value:Ie},Q.material.uniforms.startPos={value:Ee},Q.material.uniforms.startRad={value:Be},N=G.createTexture(),U=G.addVariable("textureAcc",`\n${t}\nuniform float maxAcc;\nuniform float time;\nuniform float foldSize[${$.nLines}];\nuniform int levels[${$.nLines}];\nvoid main () \n{\nvec2 c0 = gl_FragCoord.xy - vec2(1.0, 0.0);\nvec2 c1 = gl_FragCoord.xy;\nvec2 c2 = gl_FragCoord.xy + vec2(1.0, 0.0);\nint level = levels[int(gl_FragCoord.y)];\nif (c1.x < 1.0) c0 = vec2(resolution.x - 1.0, gl_FragCoord.y);\nif (c1.x > resolution.x - 1.0) c2 = vec2(0.0, gl_FragCoord.y);\nvec2 uv0 = c0 / resolution.xy;\nvec2 uv1 = c1 / resolution.xy;\nvec2 uv2 = c2 / resolution.xy;\nvec3 p0 = texture2D(texturePosition, uv0).xyz;\nvec3 p1 = texture2D(texturePosition, uv1).xyz;\nvec3 p2 = texture2D(texturePosition, uv2).xyz;\nfloat type = gl_FragCoord.y;\nvec3 acc = vec3(0.0, 0.0, 0.0);\nfloat segmentLength = .0001;\nfloat internalForceStrength = 1.0;\ninternalForceStrength = foldSize[int(gl_FragCoord.y)];\nvec3 pull1 = p0 - p1;\nvec3 pull2 = p2 - p1;\nvec3 pullToPoint = p0 + ((p2 - p0) * .5);\nvec3 pull3 = p1 - pullToPoint;\npull1 = normalize(pull1) * (length(pull1) - segmentLength);\npull2 = normalize(pull2) * (length(pull2) - segmentLength);\nfloat minDistMin = .4;\nfloat minDistMultiplierMax = .9;\nfloat minDistMultiplier = clamp(time * .5, 0.0, minDistMultiplierMax);\nfloat minDist = minDistMin + ((1.0 + (cnoise(vec3(p1.x * 1.3, p1.y * 1.3, 0.0))) / 2.0) * minDistMultiplier);\nvec2 uv4;\nvec3 p4;\nfloat bendStrength = ${$.bendStrength.toPrecision(5)};\nfloat globalForceStrength = bendStrength;\nif (time > 0.0)\n{\nacc += pull1 * internalForceStrength;\nacc += pull2 * internalForceStrength;\nfloat swirlSize = cnoise(p1 * .5);\nswirlSize = ${$.swirlSize.toPrecision(5)};\nfloat nStrength = ${$.swirlStrength.toPrecision(5)} * (1.0 - clamp((time - 5.0) / 10.0, 0.0, 1.0));\nvec3 np1 = (p1 * swirlSize) + ${i.random_num(100,300).toPrecision(5)};\nvec3 np2 = (p2 * swirlSize) + ${i.random_num(100,300).toPrecision(5)};\nnp1.z += ${i.random_num(0,1e3).toPrecision(5)};\nnp2.z += ${i.random_num(0,1e3).toPrecision(5)};\nacc.x += cnoise(np1) * nStrength;\nacc.y += cnoise(np2) * nStrength;\nvec3 attrPos = vec3(${i.random_num(-2,2).toPrecision(5)}, ${i.random_num(-2,2).toPrecision(5)}, 0.0);\nvec3 attract = p1 - attrPos;\nattract = normalize(attract) * (1.0 - clamp(length(attract) / 3.5, 0.0, 1.0));\nvec3 repulse = p1 - attrPos;\nrepulse = normalize(repulse) * (1.0 - clamp(length(repulse) / .5, 0.0, 1.0));\nacc -= attract * ${$.attrStrength.toPrecision(5)};\nacc += repulse * ${$.attrStrength.toPrecision(5)};\nfor (int i = 0; i < ${$.nLines}; i++)\n{\nfor (int j = 0; j < ${$.nSteps}; j++)\n{\nuv4 = vec2(float(j) + 0.001, float(i) + 0.001) / resolution.xy;\np4 = texture2D(texturePosition, uv4).xyz;\nif (p1 != p4)\n{\nvec3 dist = p4 - p1;\nvec3 pull3 = normalize(dist) * (length(dist) - minDist);\nvec3 push2 = normalize(dist) * clamp((length(dist) - minDist), 0.0, 10.0);\nacc += pull3 * globalForceStrength;\nacc += push2 * -globalForceStrength;\n}\n}\n}\n}\nacc *= 1.0 - pow(clamp((time - 0.0) / 11.1, 0.0, 1.0), 3.0);\ngl_FragColor = vec4(acc, type);\n}`,N),U.material.uniforms.time={value:0},U.material.uniforms.foldSize={value:He},U.material.uniforms.levels={value:$e},W=G.createTexture(),K=G.addVariable("textureVel","\nuniform float time;\nvoid main () {\nvec2 uv = gl_FragCoord.xy / resolution.xy;\nvec4 pos = texture2D(texturePosition, uv);\nvec4 acc = texture2D(textureAcc, uv);\nvec4 vel = texture2D(textureVel, uv);\nvel.xyz *= 0.95;\nvel.xyz += acc.xyz;\nvel.xyz *= .05 + (.05 * (1.0 - pow(clamp((time-3.0) / 4.0, 0.0, 1.0), 2.0)));\ngl_FragColor = vec4(vel.xyz, acc.w);\n}",W),K.material.uniforms.time={value:0},Z=G.createTexture(),ee=G.addVariable("textureTangent","\nvoid main () \n{\nvec3 pos = texture2D(texturePosition, gl_FragCoord.xy / resolution.xy).xyz;\nvec3 prevPos = texture2D(texturePosition, (gl_FragCoord.xy + vec2(1.0, 0.0)) / resolution.xy).xyz;\nvec3 nextPos = texture2D(texturePosition, (gl_FragCoord.xy - vec2(1.0, 0.0)) / resolution.xy).xyz;\nvec3 tangent = normalize(nextPos - pos);\ngl_FragColor = vec4(tangent.xyz, 1.0);\n}",Z),oe=G.createTexture(),re=G.addVariable("textureYDir","\nvoid main () \n{\nvec3 tan = texture2D(textureTangent, gl_FragCoord.xy / resolution.xy).xyz;\nvec3 nextTan = texture2D(textureTangent, (gl_FragCoord.xy - vec2(1.0, 0.0)) / resolution.xy).xyz;\nvec3 yDir = tan;\nyDir = normalize(-yDir);\ngl_FragColor = vec4(yDir.xyz, 1.0);\n}",oe),ne=G.createTexture(),te=G.addVariable("textureXDir","\nvoid main () \n{\nvec3 tan = texture2D(textureTangent, gl_FragCoord.xy / resolution.xy).xyz;\nvec3 yDir = texture2D(textureYDir, gl_FragCoord.xy / resolution.xy).xyz;\nvec3 xDir = normalize(cross(tan, yDir));\ngl_FragColor = vec4(xDir.xyz, 1.0);\n}",ne),G.setVariableDependencies(U,[Q]),G.setVariableDependencies(K,[Q,U,K]),G.setVariableDependencies(Q,[Q,U,K]),G.setVariableDependencies(ee,[Q]),G.setVariableDependencies(re,[Q,ee]),G.setVariableDependencies(te,[Q,ee,re]),_e=new q.WebGLRenderTarget(ce*Ce,se*Ce,{depthBuffer:!0});var n=G.init();null!==n&&console.error(n)}(),function(){let e=Ke(),n=function(e,n){let t=new q.PlaneBufferGeometry(.005,.5,1,n);{t=new THREE.BufferGeometry;let o=[],r=[];for(let t=0;t<n;t++)for(let a=0;a<e;a++)if(o.push(0,0,0),a<e-1)if(t<n-1){let n=t*e+a,o=n+e;r.push(n,n+1,o),r.push(n+1,o+1,o)}else{let n=t*e+a;r.push(n,n+1,a),r.push(n+1,a+1,a)}t.setIndex(r),t.setAttribute("position",new THREE.BufferAttribute(new Float32Array(o),3))}return t}(2,Le),r=function(e,n,r,s,c){let l=M.UniformsUtils.merge([M.ShaderLib.phong.uniforms,{diffuse:{value:new M.Color(16777215)}},{time:{value:0}},{numSteps:{value:0}},{nSides:{value:r}},{posTex:{type:L}},{xDirTex:{value:L}},{yDirTex:{value:L}},{tanTex:{value:L}},{colors:{value:s}},{stops:{value:c.stops}},{dBes:{value:c.dB}},{vSs:{value:c.dB}},{dRs:{value:c.dR}},{numGradients:{value:1}},{canvasSize:{value:new M.Vector2(100,100)}},{bgCol:{value:new M.Color(16777215)}}]),g=M.ShaderLib.phong.vertexShader,d=M.ShaderLib.phong.fragmentShader;g=g.replace("#include <common>",`\n\nvec3 rotAxis(vec3 v, vec3 axis, float angle)\n{\nreturn (1.0 - cos(angle)) * dot(v, axis) * axis + cos(angle) * v + sin(angle) * cross(axis, v);\n}\n\nvec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}\nvec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}\nvec4 fade(vec4 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}\nfloat cnoise(vec4 P){\nvec4 Pi0 = floor(P);\nvec4 Pi1 = Pi0 + 1.0;\nPi0 = mod(Pi0, 289.0);\nPi1 = mod(Pi1, 289.0);\nvec4 Pf0 = fract(P);\nvec4 Pf1 = Pf0 - 1.0;\nvec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\nvec4 iy = vec4(Pi0.yy, Pi1.yy);\nvec4 iz0 = vec4(Pi0.zzzz);\nvec4 iz1 = vec4(Pi1.zzzz);\nvec4 iw0 = vec4(Pi0.wwww);\nvec4 iw1 = vec4(Pi1.wwww);\nvec4 ixy = permute(permute(ix) + iy);\nvec4 ixy0 = permute(ixy + iz0);\nvec4 ixy1 = permute(ixy + iz1);\nvec4 ixy00 = permute(ixy0 + iw0);\nvec4 ixy01 = permute(ixy0 + iw1);\nvec4 ixy10 = permute(ixy1 + iw0);\nvec4 ixy11 = permute(ixy1 + iw1);\nvec4 gx00 = ixy00 / 7.0;\nvec4 gy00 = floor(gx00) / 7.0;\nvec4 gz00 = floor(gy00) / 6.0;\ngx00 = fract(gx00) - 0.5;\ngy00 = fract(gy00) - 0.5;\ngz00 = fract(gz00) - 0.5;\nvec4 gw00 = vec4(0.75) - abs(gx00) - abs(gy00) - abs(gz00);\nvec4 sw00 = step(gw00, vec4(0.0));\ngx00 -= sw00 * (step(0.0, gx00) - 0.5);\ngy00 -= sw00 * (step(0.0, gy00) - 0.5);\nvec4 gx01 = ixy01 / 7.0;\nvec4 gy01 = floor(gx01) / 7.0;\nvec4 gz01 = floor(gy01) / 6.0;\ngx01 = fract(gx01) - 0.5;\ngy01 = fract(gy01) - 0.5;\ngz01 = fract(gz01) - 0.5;\nvec4 gw01 = vec4(0.75) - abs(gx01) - abs(gy01) - abs(gz01);\nvec4 sw01 = step(gw01, vec4(0.0));\ngx01 -= sw01 * (step(0.0, gx01) - 0.5);\ngy01 -= sw01 * (step(0.0, gy01) - 0.5);\nvec4 gx10 = ixy10 / 7.0;\nvec4 gy10 = floor(gx10) / 7.0;\nvec4 gz10 = floor(gy10) / 6.0;\ngx10 = fract(gx10) - 0.5;\ngy10 = fract(gy10) - 0.5;\ngz10 = fract(gz10) - 0.5;\nvec4 gw10 = vec4(0.75) - abs(gx10) - abs(gy10) - abs(gz10);\nvec4 sw10 = step(gw10, vec4(0.0));\ngx10 -= sw10 * (step(0.0, gx10) - 0.5);\ngy10 -= sw10 * (step(0.0, gy10) - 0.5);\nvec4 gx11 = ixy11 / 7.0;\nvec4 gy11 = floor(gx11) / 7.0;\nvec4 gz11 = floor(gy11) / 6.0;\ngx11 = fract(gx11) - 0.5;\ngy11 = fract(gy11) - 0.5;\ngz11 = fract(gz11) - 0.5;\nvec4 gw11 = vec4(0.75) - abs(gx11) - abs(gy11) - abs(gz11);\nvec4 sw11 = step(gw11, vec4(0.0));\ngx11 -= sw11 * (step(0.0, gx11) - 0.5);\ngy11 -= sw11 * (step(0.0, gy11) - 0.5);\nvec4 g0000 = vec4(gx00.x,gy00.x,gz00.x,gw00.x);\nvec4 g1000 = vec4(gx00.y,gy00.y,gz00.y,gw00.y);\nvec4 g0100 = vec4(gx00.z,gy00.z,gz00.z,gw00.z);\nvec4 g1100 = vec4(gx00.w,gy00.w,gz00.w,gw00.w);\nvec4 g0010 = vec4(gx10.x,gy10.x,gz10.x,gw10.x);\nvec4 g1010 = vec4(gx10.y,gy10.y,gz10.y,gw10.y);\nvec4 g0110 = vec4(gx10.z,gy10.z,gz10.z,gw10.z);\nvec4 g1110 = vec4(gx10.w,gy10.w,gz10.w,gw10.w);\nvec4 g0001 = vec4(gx01.x,gy01.x,gz01.x,gw01.x);\nvec4 g1001 = vec4(gx01.y,gy01.y,gz01.y,gw01.y);\nvec4 g0101 = vec4(gx01.z,gy01.z,gz01.z,gw01.z);\nvec4 g1101 = vec4(gx01.w,gy01.w,gz01.w,gw01.w);\nvec4 g0011 = vec4(gx11.x,gy11.x,gz11.x,gw11.x);\nvec4 g1011 = vec4(gx11.y,gy11.y,gz11.y,gw11.y);\nvec4 g0111 = vec4(gx11.z,gy11.z,gz11.z,gw11.z);\nvec4 g1111 = vec4(gx11.w,gy11.w,gz11.w,gw11.w);\nvec4 norm00 = taylorInvSqrt(vec4(dot(g0000, g0000), dot(g0100, g0100), dot(g1000, g1000), dot(g1100, g1100)));\ng0000 *= norm00.x;\ng0100 *= norm00.y;\ng1000 *= norm00.z;\ng1100 *= norm00.w;\nvec4 norm01 = taylorInvSqrt(vec4(dot(g0001, g0001), dot(g0101, g0101), dot(g1001, g1001), dot(g1101, g1101)));\ng0001 *= norm01.x;\ng0101 *= norm01.y;\ng1001 *= norm01.z;\ng1101 *= norm01.w;\nvec4 norm10 = taylorInvSqrt(vec4(dot(g0010, g0010), dot(g0110, g0110), dot(g1010, g1010), dot(g1110, g1110)));\ng0010 *= norm10.x;\ng0110 *= norm10.y;\ng1010 *= norm10.z;\ng1110 *= norm10.w;\nvec4 norm11 = taylorInvSqrt(vec4(dot(g0011, g0011), dot(g0111, g0111), dot(g1011, g1011), dot(g1111, g1111)));\ng0011 *= norm11.x;\ng0111 *= norm11.y;\ng1011 *= norm11.z;\ng1111 *= norm11.w;\nfloat n0000 = dot(g0000, Pf0);\nfloat n1000 = dot(g1000, vec4(Pf1.x, Pf0.yzw));\nfloat n0100 = dot(g0100, vec4(Pf0.x, Pf1.y, Pf0.zw));\nfloat n1100 = dot(g1100, vec4(Pf1.xy, Pf0.zw));\nfloat n0010 = dot(g0010, vec4(Pf0.xy, Pf1.z, Pf0.w));\nfloat n1010 = dot(g1010, vec4(Pf1.x, Pf0.y, Pf1.z, Pf0.w));\nfloat n0110 = dot(g0110, vec4(Pf0.x, Pf1.yz, Pf0.w));\nfloat n1110 = dot(g1110, vec4(Pf1.xyz, Pf0.w));\nfloat n0001 = dot(g0001, vec4(Pf0.xyz, Pf1.w));\nfloat n1001 = dot(g1001, vec4(Pf1.x, Pf0.yz, Pf1.w));\nfloat n0101 = dot(g0101, vec4(Pf0.x, Pf1.y, Pf0.z, Pf1.w));\nfloat n1101 = dot(g1101, vec4(Pf1.xy, Pf0.z, Pf1.w));\nfloat n0011 = dot(g0011, vec4(Pf0.xy, Pf1.zw));\nfloat n1011 = dot(g1011, vec4(Pf1.x, Pf0.y, Pf1.zw));\nfloat n0111 = dot(g0111, vec4(Pf0.x, Pf1.yzw));\nfloat n1111 = dot(g1111, Pf1);\nvec4 fade_xyzw = fade(Pf0);\nvec4 n_0w = mix(vec4(n0000, n1000, n0100, n1100), vec4(n0001, n1001, n0101, n1101), fade_xyzw.w);\nvec4 n_1w = mix(vec4(n0010, n1010, n0110, n1110), vec4(n0011, n1011, n0111, n1111), fade_xyzw.w);\nvec4 n_zw = mix(n_0w, n_1w, fade_xyzw.z);\nvec2 n_yzw = mix(n_zw.xy, n_zw.zw, fade_xyzw.y);\nfloat n_xyzw = mix(n_yzw.x, n_yzw.y, fade_xyzw.x);\nreturn 2.2 * n_xyzw;\n}\n${o}\n\nfloat fbm(vec4 x, int numOctaves) {\nfloat v = 0.0;\nfloat a = 0.5;\nvec4 shift = vec4(100);\nfor (int i = 0; i < numOctaves; ++i) {\nv += a * cnoise(x);\nx = x * 2.0 + shift;\na *= 0.5;\n}\nreturn v;\n}\n\n#include <common>\nuniform float time;\nuniform int numSteps;\nuniform int nSides;\nattribute int indexAttr;\nattribute int gradientIndexAttr;\nattribute int gradientIndexAttr2;\nattribute int typeIndex;\nattribute float sIrease;\nattribute float vS;\nattribute float holeThreshold;\nattribute float dB;\nuniform sampler2D posTex;\nuniform sampler2D xDirTex;\nuniform sampler2D yDirTex;\nuniform sampler2D tanTex;\nuniform float mouseRat;\nuniform vec2 canvasSize;\nvarying vec4 vPosition;\nvarying vec4 mvPosition;\nvarying vec3 color;\nvarying float type;\nvarying float indexRat;\nvarying float lengthRad;\nvarying float lengthRadCircular;\nvarying float heightRat;\nvarying float vIndex;\nvarying float gradientIndex;\nvarying float gradientIndex2;\nvarying float animRat;\nvarying float vTypeIndex;\nvarying float vSatIncrease;\nvarying float vHoleThreshold;\nvarying float vDesatBrightness;\nvarying float vValueShift;\n`),g=g.replace("#include <project_vertex>",`\nfloat i = float(indexAttr);\nfloat nX = ${e.toPrecision(5)};\nfloat nY = ${n.toPrecision(5)};\nvTypeIndex = float(typeIndex);\nvSatIncrease = sIrease;\nvHoleThreshold = holeThreshold;\nvDesatBrightness = dB;\nvValueShift = vS;\nfloat y = i + .001;\nint stepIndex = (gl_VertexID / nSides) + 1;\nfloat x = float(stepIndex) + .001;\ngradientIndex = float(gradientIndexAttr);\ngradientIndex2 = float(gradientIndexAttr2);\nindexRat = y / nY;\nfloat yRat = y / nY;\nvec2 uv = vec2(x / nX, yRat);\nvec2 uv2 = vec2(((x + 1.0) / nX), yRat);\nvec4 pos = texture2D(posTex, uv);\nvec4 prevPos = texture2D(posTex, uv2);\nvec4 tan = texture2D(tanTex, uv);\nvec4 xDir = texture2D(xDirTex, uv);\nvec4 yDir = texture2D(yDirTex, uv);\ntype = pos.w;\nvec4 position = vec4( transformed, 1.0 );\nposition = vec4(pos.xyz, 1.0);\nfloat distortFactor = 2.0;\nvec2 distort;\ndistort.x = (1.0 + pow(cnoise(vec4((vec3(position.xy, time * .04) * 0.5) + ${i.random_num(200,400)}, time * .0)), 1.0)) / 2.0;\ndistort.y = (1.0 + pow(cnoise(vec4((vec3(position.xy, time * .04) * 0.5) + ${i.random_num(200,400)}, time * .0)), 1.0)) / 2.0;\nposition.xy *= .7 + (.6 * distort);\nlengthRad = x / nX;\nlengthRadCircular = sin(lengthRad * PI);\nfloat shapePow = 1.0;\nint shapeType = 0;\nvNormal = yDir.xyz;\nfloat offsetMax = .5;\nfloat offset = pow((1.0 + sin(indexRat * 213.3)) / 2.0, 3.0) * offsetMax;\noffset -= pow(1.0 + cnoise(vec4(pos.xy * .8, uv.y, time * .1)) / 2.0, 3.0) * .40;\nanimRat = 1.0 - pow(clamp(.7 - offset - (time * .2), 0.0, 1.0), 3.0);\nfloat noise = cnoise(vec4(position.x * ${$.heightNoiseScale}, position.y * ${$.heightNoiseScale}, time * .03, ${i.random_num(0,1e3).toPrecision(5)}));\nfloat topPos = (1.0 - ${$.heightNoiseAmp}) - .0 + (noise * ${$.heightNoiseAmp});\nfloat bottomPos = -10.0;\nheightRat = 1.0 - (float(gl_VertexID % nSides) / float(nSides));\nif (${H.fadeIn}) topPos -= pow(1.0 - animRat, 2.0) * 3.0;\nposition.z = mix(bottomPos, topPos, heightRat);\nif (typeIndex == 0) position.z -= .35;\nvIndex = y;\nvPosition = position;\nmvPosition = modelViewMatrix * position;\ngl_Position = projectionMatrix * mvPosition;\n`),d=d.replace("#include <common>",`\n#include <common>\nuniform float time;\nuniform vec4 colors[${s.length}];\nuniform float stops[${s.length}];\nuniform float dBes[${c.dB.length}];\nuniform float dRs[${c.dR.length}];\nuniform int numGradients;\nuniform vec2 canvasSize;\nuniform vec3 bgCol;\nuniform float noiseStrength;\nvarying float vIndex;\nvarying vec4 vPosition;\nvarying vec4 mvPosition;\nvarying vec3 color;\nvarying float type;\nvarying float indexRat;\nvarying float lengthRad;\nvarying float lengthRadCircular;\nvarying float animRat;\nvarying float heightRat;\nvarying float gradientIndex;\nvarying float gradientIndex2;\nvarying float vTypeIndex;\nvarying float vSatIncrease;\nvarying float vHoleThreshold;\nvarying float vDesatBrightness;\nvarying float vValueShift;\nfloat roundedBoxSDF(vec2 CenterPosition, vec2 Size, float Radius) \n{\nreturn length(max(abs(CenterPosition)-Size+Radius,0.0))-Radius;\n}\nvec4 gradient(vec4 c1, float s1, vec4 c2, float s2, vec4 c3, float s3, vec4 c4, float s4, float rat)\n{\nvec4 c = mix(c1, c2, smoothstep(s1, s2, rat));\nc = mix(c, c3, smoothstep(s2, s3, rat));\nc = mix(c, c4, smoothstep(s3, s4, rat));\nreturn c;\n}\nvec4 gradient(vec4 c1, float s1, vec4 c2, float s2, vec4 c3, float s3, vec4 c4, float s4, vec4 c5, float s5, float rat)\n{\nvec4 c = mix(c1, c2, smoothstep(s1, s2, rat));\nc = mix(c, c3, smoothstep(s2, s3, rat));\nc = mix(c, c4, smoothstep(s3, s4, rat));\nc = mix(c, c5, smoothstep(s4, s5, rat));\nreturn c;\n}\n${t}\n\nvec3 hsv2rgb(vec3 c)\n{\nvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\nvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\nreturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\n\nvec3 rgb2hsv(vec3 c)\n{\nvec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\nvec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\nvec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\nfloat d = q.x - min(q.w, q.y);\nfloat e = 1.0e-10;\nreturn vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n}\n\n${o}\n\nfloat hash12(vec2 p)\n{\nvec3 p3 = fract(vec3(p.xyx) * .1031);\np3 += dot(p3, p3.yzx + 33.33);\nreturn fract((p3.x + p3.y) * p3.z);\n}\n\n`);let v=`\nif (sin(vIndex * ${i.random_dec(1.5,4).toPrecision(5)}) > ${i.random_dec(-1,0).toPrecision(5)} && gl_FrontFacing)\n{\ni1 += 1; i2 += 1;\n}`;$.doubleSided||(v="");let f="\nfloat padRatX = 0.03;\nfloat padRatY = 0.03;\nfloat padX = canvasSize.y * padRatX;\nfloat padY = canvasSize.y * padRatY;\nfloat fadeSize = canvasSize.y * 0.06 * 3.0;\nif (
!function(){"use strict";class e{constructor(e,n,t){this.variables=[],this.currentTextureIndex=0;let o=THREE.FloatType;const r=new THREE.Scene,a=new THREE.Camera;a.position.z=1;const i={passThruTexture:{value:null}},s=g("uniform sampler2D passThruTexture;\n\nvoid main() {\n\n vec2 uv = gl_FragCoord.xy / resolution.xy;\n\n gl_FragColor = texture2D( passThruTexture, uv );\n\n}\n",i),c=new THREE.Mesh(new THREE.PlaneGeometry(2,2),s);function l(t){t.defines.resolution="vec2( "+e.toFixed(1)+", "+n.toFixed(1)+" )"}function g(e,n){n=n||{};const t=new THREE.ShaderMaterial({uniforms:n,vertexShader:"void main() {\n\n gl_Position = vec4( position, 1.0 );\n\n}\n",fragmentShader:e});return l(t),t}r.add(c),this.setDataType=function(e){return o=e,this},this.addVariable=function(e,n,t){const o={name:e,initialValueTexture:t,material:this.createShaderMaterial(n),dependencies:null,renderTargets:[],wrapS:null,wrapT:null,minFilter:THREE.NearestFilter,magFilter:THREE.NearestFilter};return this.variables.push(o),o},this.setVariableDependencies=function(e,n){e.dependencies=n},this.init=function(){if(!1===t.capabilities.isWebGL2&&!1===t.extensions.has("OES_texture_float"))return"No OES_texture_float support for float textures.";if(0===t.capabilities.maxVertexTextures)return"No support for vertex shader textures.";for(let t=0;t<this.variables.length;t++){const o=this.variables[t];o.renderTargets[0]=this.createRenderTarget(e,n,o.wrapS,o.wrapT,o.minFilter,o.magFilter),o.renderTargets[1]=this.createRenderTarget(e,n,o.wrapS,o.wrapT,o.minFilter,o.magFilter),this.renderTexture(o.initialValueTexture,o.renderTargets[0]),this.renderTexture(o.initialValueTexture,o.renderTargets[1]);const r=o.material,a=r.uniforms;if(null!==o.dependencies)for(let e=0;e<o.dependencies.length;e++){const n=o.dependencies[e];if(n.name!==o.name){let e=!1;for(let t=0;t<this.variables.length;t++)if(n.name===this.variables[t].name){e=!0;break}if(!e)return"Variable dependency not found. Variable="+o.name+", dependency="+n.name}a[n.name]={value:null},r.fragmentShader="\nuniform sampler2D "+n.name+";\n"+r.fragmentShader}}return this.currentTextureIndex=0,null},this.compute=function(){const e=this.currentTextureIndex,n=0===this.currentTextureIndex?1:0;for(let t=0,o=this.variables.length;t<o;t++){const o=this.variables[t];if(null!==o.dependencies){const n=o.material.uniforms;for(let t=0,r=o.dependencies.length;t<r;t++){const r=o.dependencies[t];n[r.name].value=r.renderTargets[e].texture}}this.doRenderTarget(o.material,o.renderTargets[n])}this.currentTextureIndex=n},this.getCurrentRenderTarget=function(e){return e.renderTargets[this.currentTextureIndex]},this.getAlternateRenderTarget=function(e){return e.renderTargets[0===this.currentTextureIndex?1:0]},this.addResolutionDefine=l,this.createShaderMaterial=g,this.createRenderTarget=function(t,r,a,i,s,c){t=t||e,r=r||n,a=a||THREE.ClampToEdgeWrapping,i=i||THREE.ClampToEdgeWrapping,s=s||THREE.NearestFilter,c=c||THREE.NearestFilter;return new THREE.WebGLRenderTarget(t,r,{wrapS:a,wrapT:i,minFilter:s,magFilter:c,format:THREE.RGBAFormat,type:o,depthBuffer:!1})},this.createTexture=function(){const t=new Float32Array(e*n*4);return new THREE.DataTexture(t,e,n,THREE.RGBAFormat,THREE.FloatType)},this.renderTexture=function(e,n){i.passThruTexture.value=e,this.doRenderTarget(s,n),i.passThruTexture.value=null},this.doRenderTarget=function(e,n){const o=t.getRenderTarget();c.material=e,t.setRenderTarget(n),t.render(r,a),c.material=s,t.setRenderTarget(o)}}}var n=THREE;let t="\nvec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}\nvec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}\nvec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}\nfloat cnoise(vec3 P){\nvec3 Pi0 = floor(P);\nvec3 Pi1 = Pi0 + vec3(1.0);\nPi0 = mod(Pi0, 289.0);\nPi1 = mod(Pi1, 289.0);\nvec3 Pf0 = fract(P);\nvec3 Pf1 = Pf0 - vec3(1.0);\nvec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\nvec4 iy = vec4(Pi0.yy, Pi1.yy);\nvec4 iz0 = Pi0.zzzz;\nvec4 iz1 = Pi1.zzzz;\nvec4 ixy = permute(permute(ix) + iy);\nvec4 ixy0 = permute(ixy + iz0);\nvec4 ixy1 = permute(ixy + iz1);\nvec4 gx0 = ixy0 / 7.0;\nvec4 gy0 = fract(floor(gx0) / 7.0) - 0.5;\ngx0 = fract(gx0);\nvec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\nvec4 sz0 = step(gz0, vec4(0.0));\ngx0 -= sz0 * (step(0.0, gx0) - 0.5);\ngy0 -= sz0 * (step(0.0, gy0) - 0.5);\nvec4 gx1 = ixy1 / 7.0;\nvec4 gy1 = fract(floor(gx1) / 7.0) - 0.5;\ngx1 = fract(gx1);\nvec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\nvec4 sz1 = step(gz1, vec4(0.0));\ngx1 -= sz1 * (step(0.0, gx1) - 0.5);\ngy1 -= sz1 * (step(0.0, gy1) - 0.5);\nvec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\nvec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\nvec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\nvec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\nvec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\nvec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\nvec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\nvec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\nvec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\ng000 *= norm0.x;\ng010 *= norm0.y;\ng100 *= norm0.z;\ng110 *= norm0.w;\nvec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\ng001 *= norm1.x;\ng011 *= norm1.y;\ng101 *= norm1.z;\ng111 *= norm1.w;\nfloat n000 = dot(g000, Pf0);\nfloat n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\nfloat n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\nfloat n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\nfloat n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\nfloat n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\nfloat n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\nfloat n111 = dot(g111, Pf1);\nvec3 fade_xyz = fade(Pf0);\nvec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\nvec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\nfloat n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x); \nreturn 2.2 * n_xyz;\n}";t="\nvec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}\nvec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}\nvec4 fade(vec4 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}\nfloat cnoise(vec3 P2){\nvec4 P = vec4(P2 * 1.28, 0.0);\nvec4 Pi0 = floor(P);\nvec4 Pi1 = Pi0 + 1.0;\nPi0 = mod(Pi0, 289.0);\nPi1 = mod(Pi1, 289.0);\nvec4 Pf0 = fract(P);\nvec4 Pf1 = Pf0 - 1.0;\nvec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\nvec4 iy = vec4(Pi0.yy, Pi1.yy);\nvec4 iz0 = vec4(Pi0.zzzz);\nvec4 iz1 = vec4(Pi1.zzzz);\nvec4 iw0 = vec4(Pi0.wwww);\nvec4 iw1 = vec4(Pi1.wwww);\nvec4 ixy = permute(permute(ix) + iy);\nvec4 ixy0 = permute(ixy + iz0);\nvec4 ixy1 = permute(ixy + iz1);\nvec4 ixy00 = permute(ixy0 + iw0);\nvec4 ixy01 = permute(ixy0 + iw1);\nvec4 ixy10 = permute(ixy1 + iw0);\nvec4 ixy11 = permute(ixy1 + iw1);\nvec4 gx00 = ixy00 / 7.0;\nvec4 gy00 = floor(gx00) / 7.0;\nvec4 gz00 = floor(gy00) / 6.0;\ngx00 = fract(gx00) - 0.5;\ngy00 = fract(gy00) - 0.5;\ngz00 = fract(gz00) - 0.5;\nvec4 gw00 = vec4(0.75) - abs(gx00) - abs(gy00) - abs(gz00);\nvec4 sw00 = step(gw00, vec4(0.0));\ngx00 -= sw00 * (step(0.0, gx00) - 0.5);\ngy00 -= sw00 * (step(0.0, gy00) - 0.5);\nvec4 gx01 = ixy01 / 7.0;\nvec4 gy01 = floor(gx01) / 7.0;\nvec4 gz01 = floor(gy01) / 6.0;\ngx01 = fract(gx01) - 0.5;\ngy01 = fract(gy01) - 0.5;\ngz01 = fract(gz01) - 0.5;\nvec4 gw01 = vec4(0.75) - abs(gx01) - abs(gy01) - abs(gz01);\nvec4 sw01 = step(gw01, vec4(0.0));\ngx01 -= sw01 * (step(0.0, gx01) - 0.5);\ngy01 -= sw01 * (step(0.0, gy01) - 0.5);\nvec4 gx10 = ixy10 / 7.0;\nvec4 gy10 = floor(gx10) / 7.0;\nvec4 gz10 = floor(gy10) / 6.0;\ngx10 = fract(gx10) - 0.5;\ngy10 = fract(gy10) - 0.5;\ngz10 = fract(gz10) - 0.5;\nvec4 gw10 = vec4(0.75) - abs(gx10) - abs(gy10) - abs(gz10);\nvec4 sw10 = step(gw10, vec4(0.0));\ngx10 -= sw10 * (step(0.0, gx10) - 0.5);\ngy10 -= sw10 * (step(0.0, gy10) - 0.5);\nvec4 gx11 = ixy11 / 7.0;\nvec4 gy11 = floor(gx11) / 7.0;\nvec4 gz11 = floor(gy11) / 6.0;\ngx11 = fract(gx11) - 0.5;\ngy11 = fract(gy11) - 0.5;\ngz11 = fract(gz11) - 0.5;\nvec4 gw11 = vec4(0.75) - abs(gx11) - abs(gy11) - abs(gz11);\nvec4 sw11 = step(gw11, vec4(0.0));\ngx11 -= sw11 * (step(0.0, gx11) - 0.5);\ngy11 -= sw11 * (step(0.0, gy11) - 0.5);\nvec4 g0000 = vec4(gx00.x,gy00.x,gz00.x,gw00.x);\nvec4 g1000 = vec4(gx00.y,gy00.y,gz00.y,gw00.y);\nvec4 g0100 = vec4(gx00.z,gy00.z,gz00.z,gw00.z);\nvec4 g1100 = vec4(gx00.w,gy00.w,gz00.w,gw00.w);\nvec4 g0010 = vec4(gx10.x,gy10.x,gz10.x,gw10.x);\nvec4 g1010 = vec4(gx10.y,gy10.y,gz10.y,gw10.y);\nvec4 g0110 = vec4(gx10.z,gy10.z,gz10.z,gw10.z);\nvec4 g1110 = vec4(gx10.w,gy10.w,gz10.w,gw10.w);\nvec4 g0001 = vec4(gx01.x,gy01.x,gz01.x,gw01.x);\nvec4 g1001 = vec4(gx01.y,gy01.y,gz01.y,gw01.y);\nvec4 g0101 = vec4(gx01.z,gy01.z,gz01.z,gw01.z);\nvec4 g1101 = vec4(gx01.w,gy01.w,gz01.w,gw01.w);\nvec4 g0011 = vec4(gx11.x,gy11.x,gz11.x,gw11.x);\nvec4 g1011 = vec4(gx11.y,gy11.y,gz11.y,gw11.y);\nvec4 g0111 = vec4(gx11.z,gy11.z,gz11.z,gw11.z);\nvec4 g1111 = vec4(gx11.w,gy11.w,gz11.w,gw11.w);\nvec4 norm00 = taylorInvSqrt(vec4(dot(g0000, g0000), dot(g0100, g0100), dot(g1000, g1000), dot(g1100, g1100)));\ng0000 *= norm00.x;\ng0100 *= norm00.y;\ng1000 *= norm00.z;\ng1100 *= norm00.w;\nvec4 norm01 = taylorInvSqrt(vec4(dot(g0001, g0001), dot(g0101, g0101), dot(g1001, g1001), dot(g1101, g1101)));\ng0001 *= norm01.x;\ng0101 *= norm01.y;\ng1001 *= norm01.z;\ng1101 *= norm01.w;\nvec4 norm10 = taylorInvSqrt(vec4(dot(g0010, g0010), dot(g0110, g0110), dot(g1010, g1010), dot(g1110, g1110)));\ng0010 *= norm10.x;\ng0110 *= norm10.y;\ng1010 *= norm10.z;\ng1110 *= norm10.w;\nvec4 norm11 = taylorInvSqrt(vec4(dot(g0011, g0011), dot(g0111, g0111), dot(g1011, g1011), dot(g1111, g1111)));\ng0011 *= norm11.x;\ng0111 *= norm11.y;\ng1011 *= norm11.z;\ng1111 *= norm11.w;\nfloat n0000 = dot(g0000, Pf0);\nfloat n1000 = dot(g1000, vec4(Pf1.x, Pf0.yzw));\nfloat n0100 = dot(g0100, vec4(Pf0.x, Pf1.y, Pf0.zw));\nfloat n1100 = dot(g1100, vec4(Pf1.xy, Pf0.zw));\nfloat n0010 = dot(g0010, vec4(Pf0.xy, Pf1.z, Pf0.w));\nfloat n1010 = dot(g1010, vec4(Pf1.x, Pf0.y, Pf1.z, Pf0.w));\nfloat n0110 = dot(g0110, vec4(Pf0.x, Pf1.yz, Pf0.w));\nfloat n1110 = dot(g1110, vec4(Pf1.xyz, Pf0.w));\nfloat n0001 = dot(g0001, vec4(Pf0.xyz, Pf1.w));\nfloat n1001 = dot(g1001, vec4(Pf1.x, Pf0.yz, Pf1.w));\nfloat n0101 = dot(g0101, vec4(Pf0.x, Pf1.y, Pf0.z, Pf1.w));\nfloat n1101 = dot(g1101, vec4(Pf1.xy, Pf0.z, Pf1.w));\nfloat n0011 = dot(g0011, vec4(Pf0.xy, Pf1.zw));\nfloat n1011 = dot(g1011, vec4(Pf1.x, Pf0.y, Pf1.zw));\nfloat n0111 = dot(g0111, vec4(Pf0.x, Pf1.yzw));\nfloat n1111 = dot(g1111, Pf1);\nvec4 fade_xyzw = fade(Pf0);\nvec4 n_0w = mix(vec4(n0000, n1000, n0100, n1100), vec4(n0001, n1001, n0101, n1101), fade_xyzw.w);\nvec4 n_1w = mix(vec4(n0010, n1010, n0110, n1110), vec4(n0011, n1011, n0111, n1111), fade_xyzw.w);\nvec4 n_zw = mix(n_0w, n_1w, fade_xyzw.z);\nvec2 n_yzw = mix(n_zw.xy, n_zw.zw, fade_xyzw.y);\nfloat n_xyzw = mix(n_yzw.x, n_yzw.y, fade_xyzw.x);\nreturn 2.2 * n_xyzw * .7;\n}";let o="const mat2 myt = mat2(.12121212, .13131313, -.13131313, .12121212);\nconst vec2 mys = vec2(1e4, 1e6);\nvec2 rhash(vec2 uv) {\nuv *= myt;\nuv *= mys;\nreturn fract(fract(uv / mys) * uv);\n}\nvec3 hash(vec3 p) {\nreturn fract(sin(vec3(dot(p, vec3(1.0, 57.0, 113.0)),\ndot(p, vec3(57.0, 113.0, 1.0)),\ndot(p, vec3(113.0, 1.0, 57.0)))) *\n43758.5453);\n}\nfloat voronoiNoise(const in vec2 point) {\nvec2 p = floor(point);\nvec2 f = fract(point);\nfloat res = 0.0;\nfor (int j = -1; j <= 1; j++) {\nfor (int i = -1; i <= 1; i++) {\nvec2 b = vec2(i, j);\nvec2 r = vec2(b) - f + rhash(p + b);\nres += 1. / pow(dot(r, r), 8.);\n}\n}\nreturn pow(1. / res, 0.0625);\n}\n";function r(e,n,t){return e<n&&(e=n),e>t&&(e=t),e}function a(e,n,t,o,a,i=!1){let s=o+(a-o)*(e-n)/(t-n);return i&&(s=r(s,o,a)),s}let i=new class{constructor(){this.useA=!1;let e=function(e){let n=parseInt(e.substring(0,8),16),t=parseInt(e.substring(8,16),16),o=parseInt(e.substring(16,24),16),r=parseInt(e.substring(24,32),16);return function(){n|=0,t|=0,o|=0,r|=0;let e=(n+t|0)+r|0;return r=r+1|0,n=t^t>>>9,t=o+(o<<3)|0,o=o<<21|o>>>11,o=o+e|0,(e>>>0)/4294967296}};this.prngA=new e(tokenData.hash.substring(2,34)),this.prngB=new e(tokenData.hash.substring(34,66));for(let e=0;e<1e6;e+=2)this.prngA(),this.prngB()}random_dec(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}random_num(e,n){return e+(n-e)*this.random_dec()}random_int(e,n){return Math.floor(this.random_num(e,n+1))}random_bool(e){return this.random_dec()<e}random_choice(e){return e[this.random_int(0,e.length-1)]}},s=[{dB:-.07000000000000015,dR:.67,vS:-.1,sI:.5,name:"coal",colors:["#828282","#3f3f3f","#282b2f","#121519","#050609"],stops:[26020852139652106e-33,.35000000000000003,.49999999999999994,.6600000000000001,1]},{dB:-.07000000000000006,dR:.24,vS:.05,sI:.2,name:"carbon",colors:["#bfbfbf","#a5a5a5","#7f8489","#1d1d23","#101219"],stops:[26020852139652106e-33,.12,.24,.76,1]},{dB:.019999999999999983,dR:.55,vS:-.2,sI:0,name:"bone",colors:["#FFFFFF","#f2eae7","#d2d1d1","#7b8a99","#58627c"],stops:[1214306433183765e-32,.31999999999999995,.5700000000000001,.9500000000000001,1]},{dB:-.020000000000000018,dR:.4899999999999999,vS:0,sI:.3,name:"gold",colors:["#f5dcb6","#eebc8b","#8c5e3b","#6c4137","#000000"],stops:[22551405187698492e-33,.2700000000000001,.77,.87,1]},{dB:-.08999999999999997,dR:.36,vS:.03,sI:0,name:"fire",colors:["#f8a393","#ef6d6d","#db5441","#c82835","#460303"],stops:[0,.08,.29000000000000004,.6,1]},{dB:-.11000000000000001,dR:.55,vS:-.05,sI:.2,name:"rose",colors:["#ffd2d2","#ebb2c6","#a24755","#752424","#592030"],stops:[0,.4000000000000001,.9299999999999999,.98,1]},{dB:.35,dR:.48,vS:-.1,sI:.1,name:"lavender",colors:["#fbf3f1","#fbf1f0","#e2c1ba","#e599a9","#995e5e"],stops:[3469446951953614e-33,.20000000000000004,.6699999999999999,.98,1]},{dB:.020000000000000066,dR:.49,vS:-.2,sI:.4,name:"blush",colors:["#f8e2d0","#fba3a3","#ac3557","#7c143a","#4c1015"],stops:[0,.26,.84,.93,1]},{dB:-.04000000000000007,dR:.59,vS:-.1,sI:.3,name:"gill",colors:["#eae4eb","#c2b3b0","#9f9391","#8c6e54","#996138"],stops:[.3400000000000001,.8200000000000001,.9299999999999999,.97,1]},{dB:-5204170427930421e-33,dR:.38,vS:-.05,sI:.1,name:"moss",colors:["#dbffc0","#81a562","#546f42","#0d2c19","#061c1a"],stops:[0,.29,.63,.86,1]},{dB:-745931094670027e-31,dR:.41000000000000003,vS:-.1,sI:.1,name:"leaf",colors:["#c7e2af","#79a275","#4d895b","#153c2b","#12131f"],stops:[0,.41000000000000003,.5400000000000001,.86,1]},{dB:.09000000000000007,dR:.38,vS:-.2,sI:.3,name:"neon",colors:["#c0efe0","#87cfb8","#6cc29b","#30676f","#123630"],stops:[0,.39999999999999997,.52,.97,1]},{dB:-.16999999999999993,dR:.61,vS:-0,sI:.2,name:"shore",colors:["#a5d8fb","#5076a2","#305372","#152b3f","#121929"],stops:[1734723475976807e-33,.49,.6800000000000002,.86,1]},{dB:-.27999999999999997,dR:.27999999999999997,vS:0,sI:.2,name:"space",colors:["#8fcffb","#3d638f","#2d415f","#121e2c","#111528"],stops:[1734723475976807e-33,.49,.6800000000000002,.86,1]},{dB:-.07000000000000002,dR:.53,vS:-.2,sI:.2,name:"grape",colors:["#9286ac","#4b4e82","#3b3969","#141739","#0b0e1f"],stops:[0,.11000000000000001,.29,.84,1]},{dB:-.03999999999999996,dR:.45999999999999996,vS:-.1,sI:.2,name:"plum",colors:["#ba95db","#8890db","#303e78","#1e1956","#0c1136"],stops:[0,.15999999999999998,.5400000000000001,.79,1]},{dB:.78,dR:.51,vS:-.1,sI:.3,name:"haze",colors:["#c8adf5","#585c95","#1f2756","#04053f","#020026"],stops:[0,.42,.64,.91,1]},{dB:.09000000000000007,dR:.6,vS:0,sI:.3,name:"peach",colors:["#ffd3a4","#f8bc99","#fb8353","#fb5149","#c52b25"],stops:[26020852139652106e-33,.27,.46,.8300000000000001,1]},{dB:-.22,dR:.48,vS:0,sI:.3,name:"depth",colors:["#577285","#2c475c","#152c3f","#0f1823","#02121f"],stops:[0,.5800000000000001,.77,.9,1]},{dB:-.04000000000000003,dR:.55,vS:.05,sI:.3,name:"wine",colors:["#f57979","#bf3535","#7f102b","#3f030b","#17011f"],stops:[0,.17,.54,.87,1]},{dB:-.11000000000000006,dR:.36000000000000004,vS:.05,sI:.3,name:"wood",colors:["#6f6559","#464240","#2c2827","#161311","#191412"],stops:[26020852139652106e-33,.25,.41,.63,1]},{dB:.14999999999999997,dR:.4299999999999999,vS:.05,sI:.3,name:"honey",colors:["#fffdfa","#fbeccb","#fbda90","#db9438","#c8631e"],stops:[22551405187698492e-33,.29000000000000004,.59,.9500000000000001,1]},{dB:.27999999999999997,dR:.3999999999999999,vS:.05,sI:.3,name:"pale",colors:["#fffdfa","#fbeccb","#ffe7b4","#c89859","#d87f42"],stops:[22551405187698492e-33,.12000000000000002,.44999999999999996,.9500000000000001,1]},{dB:.27999999999999997,dR:.3999999999999999,vS:.05,sI:.3,name:"sun",colors:["#fffdfa","#ffe09d","#ffd16f","#ef8f35","#e26635"],stops:[22551405187698492e-33,.12000000000000002,.44999999999999996,.9500000000000001,1]},{dB:-.27999999999999997,dR:.65,vS:-.1,sI:.2,name:"berry",colors:["#a5d8fb","#1b6aff","#0063b5","#172f95","#001a56"],stops:[1734723475976807e-33,.14,.4600000000000001,.8,1]},{dB:-.01999999999999997,dR:.58,vS:.03,sI:0,name:"blood",colors:["#ff2145","#ff4444","#ff0000","#c20c29","#920017"],stops:[0,.22,.49000000000000005,.8300000000000001,1]}],c=[[0,1],[0,1],[0,1,2],[1,2],[2,3,5],[1,2,8],[2,1],[2,3,8],[2,3],[3,8,9],[2,25],[4,19,17,25,19],[3,3,3,22,25],[3,22],[4,19],[4,19,23],[0,2],[19,18,19,18,6],[19,19,6,7],[19,5],[6,6,6,5],[19,2],[2,19],[2,2,18],[19,19,8],[5,7,8],[6,7,5],[5,8],[20,6,5,0],[6,2],[9,10,11],[2,9,10],[2],[18],[18,18,18,24],[9,10,11,17],[17,22,23],[10,9,9,10,8],[8,7,6],[9,10],[2,18],[8,22,21,23],[16],[12,13,8,18],[5,7,22,6],[21,22,23],[20,1],[4,2,7],[0,1,8,20]],l=i.random_int(0,c.length-1),g=c[l],d=[];for(let e=0;e<g.length;e++){let n=1;n=i.random_int(1,5);for(let t=0;t<n;t++)d.push(g[e])}g=d;let v=i.random_dec(),f=a(v,0,1,.4,.2);v=a(v,0,1,.9,2);let u=[[-.55,.2],[-.55,.3],[-.55,0],[-.75,0],[-.75,.3],[-.75,-.3]],x=i.random_int(8,13),m=i.random_bool(.8)?1:0,y=12;x>10&&(y-=x-10);let p=100*Math.round(i.random_int(8,y)),h=i.random_int(0,u.length-1),w=u[h],z=w[0],P=w[1],b=1-i.random_dec();b=1-Math.pow(1-b,1);let _=[4,5,6];x<11&&(_=_.slice(0,_.length-1));let S=_[Math.floor(b*_.length)];x<12&&i.random_bool(.2)&&(b=0,S=3);let R,T=a(b,0,1,.3,.6),I=a(b,0,1,.8,1);R=0!=w[1]&&i.random_bool(.6);let F=!1;g.length>1&&(F=i.random_bool(.5));let C=8e-4,D=i.random_bool(.5),E=i.random_bool(.25),B=i.random_num(.07,.18);S==_[0]&&(E=!1),b>.8&&(b=1,S=6.5,C=.0015,B*=.5);let H={};H={fadeIn:!0,applyVelocity:!0,applyHoles:!0,noiseStrength:.9};let $={angle:w.toString(),angleIndex:h,border:R,schemeIndex:l,gradientIndices:g,nLines:x,circleDistroAlgo:m,nSteps:p,startRadius:3,hideLines:!0,smallFolds:i.random_bool(.3),zoomLevelRat:b,zoomLevel:S,xRotation:z,yRotation:P,doubleSided:F,swirlSize:i.random_num(.05,.6),swirlStrength:i.random_num(-.2,.2),flipX:D,flipY:E,numCols:g.length,gradientIndices:g,multipleGradientProb:.5*i.random_int(0,2),colorDistributionType:i.random_int(0,2),heightNoiseScale:v,heightNoiseAmp:f,minHoleThreshold:T,maxHoleThreshold:I,allHoles:i.random_bool(.5),bendStrength:C,attrStrength:B};function A(e){let n="",t={};return e.forEach((e=>{let n=s[e].name;t[n]=n})),Object.keys(t).forEach((e=>{""!=n&&(n+=","),n+=e})),n}Math.floor(parseInt(tokenData.tokenId)/1e6);parseInt(tokenData.tokenId);let M=THREE,L=new M.Texture;$.gradientType=2;let V="uv.x = 1.0 - uv.x;",O="uv.y = 1.0 - uv.y;";$.flipX||(V=""),$.flipY||(O="");let q=THREE,k=window,Y=/\bHeadlessChrome/.test(navigator.userAgent);new class{_rotVel=new n.Vector3;_posVel;_prevMousePos;_isMouseDown;constructor(){this._posVel=new n.Vector3,this._prevMousePos={x:0,y:0},this._isMouseDown=!1,window.addEventListener("touchstart",this._mouseDownHandler.bind(this)),window.addEventListener("touchend",this._mouseUpHandler.bind(this)),window.addEventListener("touchmove",this._mouseMoveHandler.bind(this)),window.addEventListener("mousedown",this._mouseDownHandler.bind(this)),window.addEventListener("mouseup",this._mouseUpHandler.bind(this)),window.addEventListener("mousemove",this._mouseMoveHandler.bind(this)),window.addEventListener("wheel",this._mouseWheelHandler.bind(this),{passive:!1})}update(e){e=e||.9;this._posVel.multiplyScalar(e),this._rotVel.multiplyScalar(e)}getRotationVelocity(){return this._rotVel}getPositionVelocity(){return this._posVel}_mouseDownHandler(e){this._prevMousePos={x:e.pageX,y:e.pageY},this._isMouseDown=!0}_mouseUpHandler(e){this._isMouseDown=!1}_mouseMoveHandler(e){if(this._isMouseDown){var n={x:e.pageX-this._prevMousePos.x,y:e.pageY-this._prevMousePos.y};this._prevMousePos={x:e.pageX,y:e.pageY},this._rotVel.x=n.y/200,this._rotVel.y=n.x/200}e.preventDefault()}_mouseWheelHandler(e){var n=e.deltaY;this._posVel.z+=n/5e3,e.preventDefault()}},new q.Vector3(i.random_num(-.6,.6),i.random_num(-1,1),0).normalize(),window.matchMedia("only screen and (max-width: 1024px)").matches;let j,X,G,N,U,W,K,J,Q,Z,ee,ne,te,oe,re,ae=k.devicePixelRatio?k.devicePixelRatio:1,ie=16/9,se=k.innerHeight,ce=se/ie,le=H.noiseStrength,ge=0,de=0,ve=0,fe=Je();Je();let ue,xe,me,ye,pe,he,we,ze,Pe,be,_e,Se,Re,Te,Ie=0,Fe=0,Ce=1,De=!1,Ee=[],Be=[],He=[],$e=[],Ae=[],Me=$.nLines,Le=$.nSteps,Ve=!1,Oe=!1,qe=new q.Color(0),ke=qe,Ye=qe;Ce*=ae;ce*=2,se*=2;let je={gradients:[]};$.gradientIndices.forEach((e=>{je.gradients.push(s[e])}));let Xe=[...We()];Xe.sort(((e,n)=>{let t={},o={};e.getHSL(t),n.getHSL(o);let r=Math.abs(.5-t.l)/.5,a=Math.abs(.5-o.l)/.5;return r-=.5*t.s,a-=.5*o.s,r>a?1:r<a?-1:0})),Xe.forEach((e=>{e.getHSL({})}));let Ge=new q.Color(Xe[0]),Ne={};Ge.getHSL(Ne),Ge.setHSL(Ne.h,.5*Ne.s,.3*Ne.l),Se=Ge.clone();let Ue=Ge.clone();function We(){let e=[];for(let n=0;n<je.gradients.length;n++)for(let t=0;t<je.gradients[n].colors.length;t++)e.push(new THREE.Color(je.gradients[n].colors[t]));return e}function Ke(){let e={};for(let n=0;n<je.gradients.length;n++){let t=je.gradients[n];for(const[n,o]of Object.entries(t))e.hasOwnProperty(n)||(e[n]=[]),Array.isArray(o)?e[n].push(...o):e[n].push(o)}return e}function Je(){return(new Date).getTime()}function Qe(e){De||(ve+=e,G.compute()),ve=Ie*(1/30);let n=r(ve/5,0,1);n=1-Math.pow(1-n,2),Ye.copy(ke),Ye.lerp(Se,n),xe.background=Ye,Q.material.uniforms.time={value:ve},Q.material.uniforms.frame={value:Ie},U.material.uniforms.time={value:ve},U.material.uniforms.repulsors={value:Ae},K.material.uniforms.time={value:ve};let t=Ke(),o=We(),
Immaterial is a long form generative series exploring synthetic biology and botany through a combination of algorithms inspired by natural systems, such as recursion, growth, fluidity and fractal-noise. Originally influenced by the underlying structure of fungi gills, the series explores a wide range of formations and life forms, referencing possible futures where digital and organic systems merge. Through an interplay of 3D- and 2D-aesthetics, each iteration of the series generates a unique tapestry of shades and shapes aimed at creating space for interpretation, rather then directly mimicking the natural world. Although each individual output of the algorithm ends up as an (almost) static composition, the motion leading up to this point is integral to the concept and experience of the artwork. Like in nature, simple rules define how the complexity of organic material unfold from a set of initial conditions. In this series the viewer is exposed to the process of how a seed grows into a fully fledged organism, revealing the underlying rule-based structure of both natural and digital systems. _Immaterial is best displayed on vertically oriented screens. To ensure optimal performance, please view the artwork in a modern browser (preferably chrome) on a computer with a decent graphics card._ Keys [space] - Pause animation [s] - Download image [w] - View wireframe
Somewhere between worlds forgotten and worlds not yet discovered, Sisyphus labours tirelessly. At the mercy of the Gods and their disdain for his cunningness, his destiny is bound to his artistry. Rock by rock, trench by trench, on mountaintops and in the pits of the underworld, Sisyphus forges his creations. When will he have bought his freedom? When will he have made his peace? As the Gods keep playing dice and the numbers roll in, Sisyphus toils relentlessly.
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.createTemplateTagFirstArg=function(a){return a.raw=a};$jscomp.createTemplateTagFirstArgWithRaw=function(a,b){a.raw=b;return a};var t=THREE,m=t.MathUtils,_m=Math,_w=window;function r3(a,b,d){this.x=a;this.y=b;this.z=d}r3.prototype.dot2=function(a,b){return this.x*a+this.y*b};r3.prototype.dot3=function(a,b,d){return this.x*a+this.y*b+this.z*d}; var grad3=[new r3(1,1,0),new r3(-1,1,0),new r3(1,-1,0),new r3(-1,-1,0),new r3(1,0,1),new r3(-1,0,1),new r3(1,0,-1),new r3(-1,0,-1),new r3(0,1,1),new r3(0,-1,1),new r3(0,1,-1),new r3(0,-1,-1)],p=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41, 55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204, 176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180],perm=Array(512),gradP=Array(512);function w3(a){0<a&&1>a&&(a*=65536);a=_m.floor(a);256>a&&(a|=a<<8);for(var b=0;256>b;b++){var d=b&1?p[b]^a&255:p[b]^a>>8&255;perm[b]=perm[b+256]=d;gradP[b]=gradP[b+256]=grad3[d%12]}}w3(0);var F2=.5*(_m.sqrt(3)-1),G2=(3-_m.sqrt(3))/6,F3=1/3,G3=1/6;function fade(a){return a*a*a*(a*(6*a-15)+10)}function lerp(a,b,d){return(1-d)*a+d*b} var j5=function(a,b){var d=_m.floor(a),e=_m.floor(b);a-=d;b-=e;d&=255;e&=255;var f=gradP[d+perm[e]].dot2(a,b),l=gradP[d+perm[e+1]].dot2(a,b-1),q=gradP[d+1+perm[e]].dot2(a-1,b);d=gradP[d+1+perm[e+1]].dot2(a-1,b-1);e=fade(a);return lerp(lerp(f,q,e),lerp(l,d,e),fade(b))},pNum=_m.floor(parseInt(tokenData.tokenId)/1E6),mNum=parseInt(tokenData.tokenId)%(1E6*pNum),i5=function(a){this.seed=a}; i5.prototype.rd=function(){this.seed^=this.seed<<13;this.seed^=this.seed>>17;this.seed^=this.seed<<5;return(0>this.seed?~this.seed+1:this.seed)%1E3/1E3};i5.prototype.rb=function(a,b){return a+(b-a)*this.rd()};function parseHash(a,b){var d=a+(b-a)/2;return 4294967296*parseInt(tokenData.hash.slice(a,d),16)+parseInt(tokenData.hash.slice(d,b),16)}var rSeed=parseHash(0,16)+37.1*mNum,R=new i5(rSeed);w3(parseHash(16,32));var a1=R.rb(.5,1);.4<R.rd()&&(a1=R.rb(2,5)); var b1=_m.round(R.rb(5,8)),j2=m.clamp(R.rb(1,3.5),0,2),x2=.5<R.rd(),f1=[a1,R.rb(.3,-.3)];.5<R.rd()&&f1.reverse();R=new i5(parseHash(15,31)+123.4*mNum);var g1=R.rb(10,50),k2=_m.pow(1-g1/100,2),h1=R.rb(-1,1);.5<R.rd()&&(h1=0);var pixR=_w.devicePixelRatio?_w.devicePixelRatio:1,i1=_w.innerWidth<_w.innerHeight?_w.innerWidth:_w.innerHeight;200>i1&&(i1=200);var doubleSize=!1;1>=pixR&&(doubleSize=!0,i1*=2); var x1=i1,y1=i1,j1=3*x1,d1=1,c=new t.Color(16777215),c1=new t.Color(.15,.15,.16),c2=new t.Color(0,0,.03),l1=[],m1=[0,0,.1],db=[0,0,0],o1=[0,0,.7],p1=[0,0,.5],q1=[.99,.7,.65];l1.push([.6,0,0,.6,0,.11,!0,1.5,2.5,.08,[db,q1],[db,q1]]);l1.push([.6,.1,.01,.6,.05,.22,!1,1,1.6,.04,[m1,p1],[[.4,.6,.5],db,q1]]);l1.push([.9,1,.02,1,.6,.3,!0,1,1.5,.08,[[.98,1,.5],o1],[[.98,1,.5],m1]]);l1.push([.9,1,.05,1,.6,.3,!1,1.2,1.5,.08,[m1,o1],[o1,[.6,1,.3],[.4,.7,.6]]]); l1.push([.6,.95,.13,.9,.55,.8,!0,2,.9,.1,[m1],[[.95,.8,.8]],.1]);l1.push([.65,1,.05,.73,.14,.5,!1,1,.8,.001,[m1,o1],[m1,[.73,.6,.3]]]);l1.push([.6,1,.03,.57,.35,.4,!1,1,1,.001,[m1,o1,q1],[[1,.7,.5],q1]]);l1.push([.5,.9,.06,.4,.3,.6,!1,1,1,.1,[m1,o1],[q1,[.45,.8,.2]],.2]);l1.push([.1,.8,.25,.17,.8,.9,!1,2,1,.001,[[1,0,1],m1],[[1,0,1],[.11,.8,.6]],.2]);l1.push([.6,1,.05,.97,.7,.25,!1,1.2,2,.12,[m1,o1],[[.97,.8,.4],q1,m1]]);l1.push([.6,0,.5,.6,.1,.9,!1,2,1.5,.04,[o1],[[1,0,.3],q1],.4]); l1.push([.6,0,.35,.6,.1,.8,!0,2,1.5,.04,[m1,o1],[[.6,1,.3]],.4]);l1.push([.75,1,.05,.1,.35,.5,!0,1.5,.9,.2,[m1],[[0,0,.9]],.1]);l1.push([.6,1,.03,.57,.35,.3,!0,1.5,1,.1,[m1,o1,q1],[q1]]);var pride=0<mNum&&0==mNum%70,si=_m.floor(R.rb(0,l1.length));pride&&(si=1);var sc=l1[si];R=new i5(parseHash(15,31)+433.1*mNum);c=new t.Color(sc[6]?15658734:0);c2.setHSL(sc[0],sc[1],sc[2]);c1.setHSL(sc[3],sc[4],sc[5]);d1=sc[7];var e1=sc[9],z1=new t.Color(0,0,0);z1.setHSL(sc[3],1*sc[4],sc[5]*(.7<sc[5]?1:1.2)); var scr=R.rd();if(.5<scr||0==si||1==si){var colors=sc[10],ind=_m.floor(R.rd()*colors.length);z1.setHSL(colors[ind][0],colors[ind][1],colors[ind][2])}var z12=z1.clone();z12.offsetHSL(0,-.05,R.rb(-.05,.06));var z13=z1.clone(),aInd=_m.floor(R.rd()*sc[11].length);z13.setHSL(sc[11][aInd][0],sc[11][aInd][1],sc[11][aInd][2]);R=new i5(parseHash(15,31)+77.4*mNum);var c3=new t.Color;pride||.5<R.rd()?c3.setHSL(q1[0],q1[1],q1[2]):c3.setHSL(.6,.9,.7); var n2=!pride&&x2&&.5<R.rd()&&10!=si&&11!=si&&8!=si&&12!=si&&4!=si,o2=.8<R.rd()?.15:0;c1.offsetHSL(0,-o2,0);c2.offsetHSL(0,-o2,0);var d2=c1.clone();d2.lerp(c2,.9);d2.offsetHSL(0,0,-.02);var e2=new t.Scene,h2=new t.OrthographicCamera(x1/-2,x1/2,y1/2,y1/-2,-1E4,1E4);f2=new t.WebGLRenderer({antialias:!0});g2=j1;canvas=document.createElement("canvas");canvas2=document.createElement("canvas");w=new t.Object3D;1200>g2&&(g2=1200);e2.fog=new t.Fog(c,-.2*x1,1.4*x1);e2.background=new t.Color(c);e2.add(h2); f2.setPixelRatio(pixR);f2.shadowMap.enabled=!0;f2.shadowMap.type=1;f2.setSize(x1,y1);document.body.appendChild(f2.domElement);doubleSize&&(f2.domElement.style.width=i1/2+"px",f2.domElement.style.height=i1/2+"px");canvas.width=canvas.height=canvas2.width=canvas2.height=g2;e2.add(w);var m2=new t.SpotLight(16777215,sc[8]);m2.position.set(3*x1,-3*x1,2.5*x1);m2.angle=_m.PI/10;m2.shadow.mapSize.width=m2.shadow.mapSize.height=g2;m2.shadow.camera.far=1E5;m2.shadow.bias=5E-7;m2.castShadow=!0;w.add(m2); var l2=new t.HemisphereLight(13421772,16777215,.3);l2.position.set(2*x1,2*x1,-2*x1);e2.add(l2); var g=new t.PlaneBufferGeometry(j1,j1,250,250),q2=new t.MeshPhongMaterial({color:4473924,wireframe:!1,shininess:0,flatShading:!1}),r2=new t.MeshPhongMaterial({color:z1,flatShading:!0}),r22=new t.MeshPhongMaterial({color:z12,flatShading:!0}),r23=new t.MeshPhongMaterial({color:z13,flatShading:!0,dithering:!0}),u2=new t.MeshBasicMaterial({color:d2}),b3=new t.MeshPhongMaterial({color:z1,dithering:!0,flatShading:!0}),v2=new t.CanvasTexture(canvas),w2=new t.CanvasTexture(canvas2); w2.center.x=w2.center.y=.5;w2.wrapS=t.RepeatWrapping;w2.repeat.y=-1;q2.bumpMap=v2;q2.bumpScale=2*m.clamp(.05*x1,40,1E4)/pixR;q2.map=w2; var tp=function(a,b){return a.toPrecision(void 0===b?2:b)},y2="c.rgb *= clamp(abs(((1.0 - (0.05 * "+pixR.toPrecision(2)+")) - (1.0 - pow(1.0 - (w * 0.00005), 2.4))) + ((0.1 + (w * 0.0003)) * random(gl_FragCoord.xy / (w * .1))) * ((1.0) - c.r)), 0.0, 1.0);",z2="\n#include <dithering_fragment>\n\nfloat z3 = sqrt((vPosition.x * vPosition.x) + (vPosition.y * vPosition.y));\nfloat a4 = clamp(z3 / "+tp(x1/2)+", 0.0, 1.0);\n\ngl_FragColor.rgb += (1.0 - a4) * 0.3;\n\nvec4 c1 = vec4("+tp(c1.r)+", "+tp(c1.g)+ ", "+tp(c1.b)+", 1.0);\nvec4 c2 = vec4("+tp(c2.r)+", "+tp(c2.g)+", "+tp(c2.b)+", 1.0);\nvec4 c3 = vec4("+tp(c3.r)+", "+tp(c3.g)+", "+tp(c3.b)+", 1.0);\nbool ct = "+n2+";\nvec4 c = mix(c2, c1, 1.0 - pow(1.0 - gl_FragColor.r, 1.5));\n\nfloat w = "+tp(x1)+";\n\nfloat br = abs(vPosition.z / (w/2.0)) * "+tp(d1)+";\nbr += pow((1.0 - a4 * 0.6), 4.0) * "+e1+";\n\nif(ct)\n c = mix(c, c3, br);\nelse\n c.rgb += br;\n\n\n"+y2+"\ngl_FragColor = c;\n",u3=function(a){a=void 0===a?0:a;return"\n #include <dithering_fragment>\n\n float w = "+ tp(x1)+";\n vec4 c = gl_FragColor;\n float b = (c.r + c.b + c.g) / 3.0;\n c.rgb += pow(1.0 - b, 2.0) * "+tp(a)+";\n\n c.rgb *= 1.0 + ( random(gl_FragCoord.xy / (w * .1)) * (1.0 - c.r) ) * 0.5;\n gl_FragColor = c;\n "}; function v3(a){return function(b){b.vertexShader=b.vertexShader.replace("varying vec3 vViewPosition;","\n varying vec3 vViewPosition;\n varying vec3 vPosition;\n ");b.vertexShader=b.vertexShader.replace("#include <begin_vertex>","\n #include <begin_vertex>\n vPosition = position;\n ");b.fragmentShader=b.fragmentShader.replace("uniform float opacity;","\n uniform float opacity;\n varying vec3 vPosition;\n float random( vec2 p )\n {\n vec2 K1 = vec2(\n 23.14069263277926,\n 2.665144142690225\n );\n return fract( cos( dot(p,K1) ) * 12345.6789 );\n }\n "); b.fragmentShader=b.fragmentShader.replace("#include <dithering_fragment>",a)}}var b9=0,a3=0;if(sc[12]){var cHsl={};z1.getHSL(cHsl);b9=sc[12]*cHsl.l;a3=.5*sc[12]}q2.onBeforeCompile=v3(z2);r2.onBeforeCompile=r22.onBeforeCompile=v3(u3(b9));r23.onBeforeCompile=v3(u3(a3));b3.onBeforeCompile=v3(u3(b9));var plane=new t.Mesh(g,q2);plane.receiveShadow=!0;plane.castShadow=!0;w.rotation.x=m.degToRad(-65);w.rotation.z=m.degToRad(45);w.add(plane); var d3=_m.floor(R.rb(2,4.9)),e3=.1/13,f3=[],g3=e3,rad=_m.round(R.rb(3,6))*g3,i3=rad;3<d3&&(rad=3*g3); for(var j3=.25*_m.PI,k3=0,l3=_m.round(R.rb(2,5)),m3=.8<R.rd(),n3=.1<R.rd(),o3=.5<R.rd(),p3=0,i=0;i<d3;i++){var q3=_m.floor(R.rb(2,4)+2*_m.floor(5*R.rd()*(i+1)));rad<=3*g3&&(q3=_m.round(R.rb(2,6)));0==i&&(q3=2*_m.floor(R.rb(1,5))+1);for(var type=.5<R.rd()?0:1,s3=2*_m.PI/q3,cp={rad:rad,pRats:[]},j=0;j<q3;j++){var angle=j3+s3*j,x=_m.cos(angle)*rad,y=_m.sin(angle)*rad,accent=!1;n3&&q3>l3&&0==q3%l3?accent=0==j%l3:m3&&(accent=.8<R.rd());!m3&&n3&&o3&&accent||(cp.pRats.push({x:x,y:y,angle:angle,type:type, accent:accent}),p3++)}k3=rad+=g3*(2+_m.ceil((4-i)*R.rd()));f3.push(cp)}t3(g,function(a,b,d){return{x:a,y:b,z:y3(a,b,d)}});var o5=.5*Math.ceil(pixR);function q5(a){a*=Math.pow(g2/3E3,2);.01>a&&(a=.01);a=255*(1-a);return"rgba("+a+", "+a+", "+a+", 1.0)"}var i2=f3[f3.length-1].pRats.length;5<i2&&(i2*=_m.round(R.rb(1,5)));var ctx=canvas.getContext("2d");ctx.fillStyle="#FFFFFF";ctx.fillRect(0,0,g2,g2);var ctx2=canvas2.getContext("2d");ctx2.fillStyle="#CCCCCC";ctx2.fillRect(0,0,g2,g2); var n5=[],p5=.007*x1;ctx.lineWidth=o5;ctx.strokeStyle=q5(.03);for(var clearRad=g2*e3*_m.round(R.rb(p3/4,20)),clearFunc=function(a){a=void 0===a?clearRad:a;ctx.beginPath();ctx.arc(.5*g2,.5*g2,a,0,2*_m.PI,!1);ctx.fill();ctx.stroke()},i$0=0;100>i$0;i$0++)ctx.beginPath(),ctx.arc(.5*g2,.5*g2,g2*e3*i$0,0,2*_m.PI,!1),ctx.stroke();clearFunc();for(var i$1=0;i$1<i2;i$1++){var angle$2=i$1/i2*_m.PI*2+j3;ctx.beginPath();ctx.moveTo(.5*g2,.5*g2);ctx.lineTo(.5*g2+_m.cos(angle$2)*g2,.5*g2+_m.sin(angle$2)*g2);ctx.stroke()} 20<p3&&clearFunc();var circleIndex=_m.floor(R.rb(1,d3-1)),starIndex=_m.floor(R.rb(1,m.clamp(d3,1,3)));.4<R.rd()&&(circleIndex=-1);.5<R.rd()&&(starIndex=-1); for(var starInternal=.4<R.rd(),hVar=R.rb(.5,1),i$3=0;i$3<f3.length;i$3++){var cp$4=f3[i$3];ctx.strokeStyle=q5(.5*o5);ctx.beginPath();ctx.arc(.5*g2,.5*g2,g2*cp$4.rad,0,2*_m.PI,!1);ctx.stroke();ctx.strokeStyle=q5(.2);for(var tip=.6<R.rd(),rot=.7<R.rd(),reduceRad=.5<R.rd(),j$5=0;j$5<cp$4.pRats.length;j$5++){var p$6=cp$4.pRats[j$5];if(i$3==circleIndex&&(10>cp$4.pRats.length||0==j$5%2)){var rad$7=cp$4.rad;0<circleIndex&&reduceRad&&(rad$7-=f3[0].rad);ctx.strokeStyle=q5(.2);ctx.beginPath();ctx.arc((p$6.x+ .5)*g2,(p$6.y+.5)*g2,g2*rad$7,0,2*_m.PI,!1);ctx.stroke()}if(i$3==starIndex&&100>j$5){ctx.strokeStyle=12<cp$4.pRats.length?q5(.06):ctx.strokeStyle=q5(.2);var add=_m.floor(cp$4.pRats.length/2);0==cp$4.pRats.length%2&&--add;starInternal||(add=_m.round(add/2));var k=j$5+add;k>cp$4.pRats.length-1&&(k-=cp$4.pRats.length);var p2=cp$4.pRats[k];ctx.moveTo((p$6.x+.5)*g2,(p$6.y+.5)*g2);ctx.lineTo((p2.x+.5)*g2,(p2.y+.5)*g2);var bri=240;ctx.stroke()}15>cp$4.pRats.length&&(0==i$3||0<i$3&&i$3==starIndex||!m3&&p$6.accent)&& (ctx.strokeStyle=q5(.2),ctx.beginPath(),ctx.arc((p$6.x+.5)*g2,(p$6.y+.5)*g2,e3*g2,0,2*_m.PI,!1),ctx.stroke());var is=i$3;2<is&&(is=0);var s=p5+.1*p5*is*(.5+.5*R.rd()),h=s+s*R.rb(1,1-hVar)*(5-hVar);tip&&(s*=.9);var m$8=.5<R.rd()?r2:r22,type$9=p$6.type;p$6.accent&&(m$8=r23,m3||(type$9=_m.abs(type$9-1),tip=!1));var pMat=void 0;pride&&(pMat=m$8.clone(),pMat.color.setHSL(j$5/cp$4.pRats.length,.8,.5));1==type$9&&tip&&(s*=.7);var st=k5(s,s,h,type$9,pride?pMat:m$8);st.position.x=p$6.x*j1;st.position.y=p$6.y* j1;st.rotation.z=p$6.angle;var z=y3(st.position.x,st.position.y,st.position.z);st.position.z=z+.4*(0==type$9?h:s);st.castShadow=!0;tip&&(st.position.z=z+.4*s,st.rotation.x=.5*_m.PI,st.rotation.y=st.rotation.z+_m.PI*(rot?.5:1),st.rotation.z=0);n5.push(st);w.add(st)}}var createCp=.6<R.rd(); if(createCp){var type$10=_m.round(R.rb(0,4)),cp$11,cs=i3*x1*R.rb(.2,.3);0==type$10&&(cp$11=new t.Mesh(new t.SphereBufferGeometry(cs,100,100),b3));1==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.ConeBufferGeometry(cs,1.3*cs,3),b3));4==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.ConeBufferGeometry(cs,1.3*cs,6),b3));2==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.BoxBufferGeometry(cs,cs,cs,6,6),b3));3==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.DodecahedronBufferGeometry(cs),r2));var cpHeight=.01*y1;cp$11.rotation.x= _m.PI/2;cp$11.rotation.y=1.75*_m.PI;cp$11.position.z=y3(0,0,0)+.5*cs;0==type$10&&(cp$11.position.z=y3(0,0,0));2==type$10&&(cp$11.rotation.y+=.25*_m.PI);3==type$10&&(cp$11.rotation.x=.5*_m.PI,cp$11.rotation.y=.75*_m.PI,cp$11.rotation.z=0);cp$11.castShadow=!0;w.add(cp$11)} var m5=function(){var a="-0.3,-0.59,-0.04,-0.98,0.35,-1.2 1.21,-0.77,1.34,-2.47,0.62,-3.52 -0.08,0,-0.15,0.01,-0.23,0.01 -0.35,0.91,-0.07,2.47,-1.17,2.8 -1.29,-4.35,2,-5.86,1.31,-8.6 -2.1,-5.85,-2.35,-12.05,-3.59,-18.1 -2.24,8.12,2.2,15.49,1.55,23.53 -0.13,4.42,-0.7,8.79,-1.51,13.15 -0.43,2.3,-0.4,4.72,0.11,7.04 1.11,5.41,-0.61,10.79,-1.29,16.14 -1.4,3.43,8.61,6.89,2.99,8.19 -2.45,1.48,-3.6,-2.3,-5.47,-2.94 -2.21,-0.36,-0.78,-2.92,-0.91,-4.39 1.22,-5.13,-2.08,-10.24,-0.82,-15.49 -1.68,-7.08,-1.17,-14.81,-3.33,-21.78 -2.26,5.55,-1.21,12,-2.56,17.75 -0.64,1.61,-0.95,3.23,-0.68,5 0.8,4.4,-1.36,8.59,-1.26,12.95 -0.05,1.75,1.83,5.1,-0.33,5.91 -2.04,0.39,-3.18,4.49,-5.67,3.05 -5.8,-1.4,4.63,-4.61,2.83,-8.78 -2.06,-7.53,-0.97,-15.07,-1.02,-22.69 -1.06,-6.07,-2.12,-12.24,-1.42,-18.43 1.34,-5.94,3.22,-11.99,1.09,-18.01 -0.58,5.91,-1.13,11.87,-3.13,17.51 -0.87,2.97,2.56,5.47,1.23,9 -1.2,-0.35,-0.79,-1.91,-1.22,-2.93 -1.07,0.98,-0.71,2.88,0.44,3.62 0.36,0.23,0.37,0.72,0.42,1.14 -4.69,-0.93,-3.71,-6.1,-3.61,-9.67 -0.05,-6.25,0.65,-12.35,1.37,-18.5 0.06,-8.82,-1.98,-15.1,8.99,-16.79 4,-1.4,-0.35,-5.42,-0.4,-8.03 0.22,-3.16,0.35,-7.23,4.68,-7.19 4.67,0.08,4.41,3.65,4.87,6.92 0.06,2.69,-4.26,6.75,-0.27,8.28 3.71,1.32,8.9,1.6,8.99,6.58 0.26,4.45,0.14,8.95,0.37,13.41 1.28,4.44,0.88,9.04,1.04,13.61".split(" "),b= new t.Shape,d=939.75,e=492.18,f=d-10,l=e;b.moveTo(d-f,e-l);for(var q in a){var n=a[q].split(","),r;for(r in n)n[r]=parseFloat(n[r]);b.bezierCurveTo(d+n[0]-f,e+n[1]-l,d+n[2]-f,e+n[3]-l,d+n[4]-f,e+n[5]-l);d+=n[4];e+=n[5]}b.bezierCurveTo(943.06-f,484.79-l,945.16-f,490.53-l,939.75-f,492.18-l);a=new t.Mesh(new t.ExtrudeBufferGeometry(b,{steps:4,depth:11,bevelEnabled:!0,bevelThickness:0,bevelSize:0,bevelSegments:5}),u2);b=R.rb(0,.5)*_m.PI;.5<R.rd()&&(b+=_m.PI);d=2.5E-4*y1;f=k3*R.rb(1.05,1.2);t3(a.geometry, function(u,v,A){return{x:u,y:v,z:A+-2*_m.sin((v-50)/11)}});e=_m.sin(b)*f*g2;f=_m.cos(b)*f*g2;l=0;(q=!createCp&&.97<R.rd())&&(e=f=0);l=y3(e,f,l);a.scale.set(d,d,d);a.castShadow=!0;a.receiveShadow=!0;a.rotation.x=-.5*_m.PI;a.rotation.y=q?j3:b;a.position.set(e,f,l+38*d);b=new t.Object3D;b.add(a);return b};w.add(m5()); function k5(a,b,d,e,f){e=void 0===e?0:e;f=void 0===f?r2:f;var l;0==e?l=new t.BoxBufferGeometry(a,b,d,1,1,d/(.007*y1)):1==e&&(l=new t.SphereBufferGeometry(a,5,5));t3(l,function(q,n,r){var u=.375*a,v=1-_m.pow(r/d,2);return{x:(q+j5(n/a*120.2,r/a*223.7)*u)*v,y:(n+j5(r/a*3.9,q/a*455.9)*u)*v,z:r+j5(r/a*.3,q/a*.5)*u}});return new t.Mesh(l,f)} function t3(a,b){for(var d=a.attributes.position,e=0;e<d.count;e++){var f=d.getX(e),l=d.getY(e),q=d.getZ(e);f=b(f,l,q);d.setXYZ(e,f.x,f.y,f.z)}a.computeVertexNormals()} function y3(a,b,d){var e=_m.sqrt(a*a+b*b);e-=j1*k3;e/=x1;var f=m.clamp(e,0,1),l=0,q=b1,n=y1/15,r=n;n*=1+f1[0];r*=1+f1[1];for(var u=1;u<q;u++)l+=_m.pow(j5(a/(u*n),b/(u*r)),_m.round(q/u*1.5))*(u/q);d+=y1/10*l;d+=_m.pow(l,2)*(y1/50);d*=3*m.clamp(f,0,.6)*j2;x2&&(d*=-1);a=_m.sin(f*g1*(1+_m.pow(1-e,3)))*e*.08*y1*k2*(1-f);d+=(1+a)*(1-e)*h1*2;d+=_m.pow(.001*y1,2);.9<e&&(d*=1-m.clamp((e-.9)/.1,0,1));return d} var getT=function(){return(new Date).getTime()},f5=0,h5=0,g5=getT(),d5=function(){var a=getT(),b=(a-g5)/1E3;f5+=b;g5=a;1.5<f5&&.04>h5&&(h5+=2E-4);w.rotation.z+=h5*b;requestAnimationFrame(d5);f2.render(e2,h2)};d5();
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.createTemplateTagFirstArg=function(a){return a.raw=a};$jscomp.createTemplateTagFirstArgWithRaw=function(a,b){a.raw=b;return a};var t=THREE,m=t.MathUtils,_m=Math,_w=window;function r3(a,b,d){this.x=a;this.y=b;this.z=d}r3.prototype.dot2=function(a,b){return this.x*a+this.y*b};r3.prototype.dot3=function(a,b,d){return this.x*a+this.y*b+this.z*d}; var grad3=[new r3(1,1,0),new r3(-1,1,0),new r3(1,-1,0),new r3(-1,-1,0),new r3(1,0,1),new r3(-1,0,1),new r3(1,0,-1),new r3(-1,0,-1),new r3(0,1,1),new r3(0,-1,1),new r3(0,1,-1),new r3(0,-1,-1)],p=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41, 55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204, 176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180],perm=Array(512),gradP=Array(512);function w3(a){0<a&&1>a&&(a*=65536);a=_m.floor(a);256>a&&(a|=a<<8);for(var b=0;256>b;b++){var d=b&1?p[b]^a&255:p[b]^a>>8&255;perm[b]=perm[b+256]=d;gradP[b]=gradP[b+256]=grad3[d%12]}}w3(0);var F2=.5*(_m.sqrt(3)-1),G2=(3-_m.sqrt(3))/6,F3=1/3,G3=1/6;function fade(a){return a*a*a*(a*(6*a-15)+10)}function lerp(a,b,d){return(1-d)*a+d*b} var j5=function(a,b){var d=_m.floor(a),e=_m.floor(b);a-=d;b-=e;d&=255;e&=255;var f=gradP[d+perm[e]].dot2(a,b),l=gradP[d+perm[e+1]].dot2(a,b-1),q=gradP[d+1+perm[e]].dot2(a-1,b);d=gradP[d+1+perm[e+1]].dot2(a-1,b-1);e=fade(a);return lerp(lerp(f,q,e),lerp(l,d,e),fade(b))},pNum=_m.floor(parseInt(tokenData.tokenId)/1E6),mNum=parseInt(tokenData.tokenId)%(1E6*pNum),i5=function(a){this.seed=a}; i5.prototype.rd=function(){this.seed^=this.seed<<13;this.seed^=this.seed>>17;this.seed^=this.seed<<5;return(0>this.seed?~this.seed+1:this.seed)%1E3/1E3};i5.prototype.rb=function(a,b){return a+(b-a)*this.rd()};function parseHash(a,b){var d=a+(b-a)/2;return 4294967296*parseInt(tokenData.hash.slice(a,d),16)+parseInt(tokenData.hash.slice(d,b),16)}var rSeed=parseHash(0,16)+37.1*mNum,R=new i5(rSeed);w3(parseHash(16,32));var a1=R.rb(.5,1);.4<R.rd()&&(a1=R.rb(2,5)); var b1=_m.round(R.rb(5,8)),j2=m.clamp(R.rb(1,3.5),0,2),x2=.5<R.rd(),f1=[a1,R.rb(.3,-.3)];.5<R.rd()&&f1.reverse();R=new i5(parseHash(15,31)+123.4*mNum);var g1=R.rb(10,50),k2=_m.pow(1-g1/100,2),h1=R.rb(-1,1);.5<R.rd()&&(h1=0);var pixR=_w.devicePixelRatio?_w.devicePixelRatio:1,i1=_w.innerWidth<_w.innerHeight?_w.innerWidth:_w.innerHeight;200>i1&&(i1=200);var doubleSize=!1;1>=pixR&&(doubleSize=!0,i1*=2); var x1=i1,y1=i1,j1=3*x1,d1=1,c=new t.Color(16777215),c1=new t.Color(.15,.15,.16),c2=new t.Color(0,0,.03),l1=[],m1=[0,0,.1],db=[0,0,0],o1=[0,0,.7],p1=[0,0,.5],q1=[.99,.7,.65];l1.push([.6,0,0,.6,0,.11,!0,1.5,2.5,.08,[db,q1],[db,q1]]);l1.push([.6,.1,.01,.6,.05,.22,!1,1,1.6,.04,[m1,p1],[[.4,.6,.5],db,q1]]);l1.push([.9,1,.02,1,.6,.3,!0,1,1.5,.08,[[.98,1,.5],o1],[[.98,1,.5],m1]]);l1.push([.9,1,.05,1,.6,.3,!1,1.2,1.5,.08,[m1,o1],[o1,[.6,1,.3],[.4,.7,.6]]]); l1.push([.6,.95,.13,.9,.55,.8,!0,2,.9,.1,[m1],[[.95,.8,.8]],.1]);l1.push([.65,1,.05,.73,.14,.5,!1,1,.8,.001,[m1,o1],[m1,[.73,.6,.3]]]);l1.push([.6,1,.03,.57,.35,.4,!1,1,1,.001,[m1,o1,q1],[[1,.7,.5],q1]]);l1.push([.5,.9,.06,.4,.3,.6,!1,1,1,.1,[m1,o1],[q1,[.45,.8,.2]],.2]);l1.push([.1,.8,.25,.17,.8,.9,!1,2,1,.001,[[1,0,1],m1],[[1,0,1],[.11,.8,.6]],.2]);l1.push([.6,1,.05,.97,.7,.25,!1,1.2,2,.12,[m1,o1],[[.97,.8,.4],q1,m1]]);l1.push([.6,0,.5,.6,.1,.9,!1,2,1.5,.04,[o1],[[1,0,.3],q1],.4]); l1.push([.6,0,.35,.6,.1,.8,!0,2,1.5,.04,[m1,o1],[[.6,1,.3]],.4]);l1.push([.75,1,.05,.1,.35,.5,!0,1.5,.9,.2,[m1],[[0,0,.9]],.1]);l1.push([.6,1,.03,.57,.35,.3,!0,1.5,1,.1,[m1,o1,q1],[q1]]);var pride=0<mNum&&0==mNum%70,si=_m.floor(R.rb(0,l1.length));pride&&(si=1);var sc=l1[si];R=new i5(parseHash(15,31)+433.1*mNum);c=new t.Color(sc[6]?15658734:0);c2.setHSL(sc[0],sc[1],sc[2]);c1.setHSL(sc[3],sc[4],sc[5]);d1=sc[7];var e1=sc[9],z1=new t.Color(0,0,0);z1.setHSL(sc[3],1*sc[4],sc[5]*(.7<sc[5]?1:1.2)); var scr=R.rd();if(.5<scr||0==si||1==si){var colors=sc[10],ind=_m.floor(R.rd()*colors.length);z1.setHSL(colors[ind][0],colors[ind][1],colors[ind][2])}var z12=z1.clone();z12.offsetHSL(0,-.05,R.rb(-.05,.06));var z13=z1.clone(),aInd=_m.floor(R.rd()*sc[11].length);z13.setHSL(sc[11][aInd][0],sc[11][aInd][1],sc[11][aInd][2]);R=new i5(parseHash(15,31)+77.4*mNum);var c3=new t.Color;pride||.5<R.rd()?c3.setHSL(q1[0],q1[1],q1[2]):c3.setHSL(.6,.9,.7); var n2=!pride&&x2&&.5<R.rd()&&10!=si&&11!=si&&8!=si&&12!=si&&4!=si,o2=.8<R.rd()?.15:0;c1.offsetHSL(0,-o2,0);c2.offsetHSL(0,-o2,0);var d2=c1.clone();d2.lerp(c2,.9);d2.offsetHSL(0,0,-.02);var e2=new t.Scene,h2=new t.OrthographicCamera(x1/-2,x1/2,y1/2,y1/-2,-1E4,1E4);f2=new t.WebGLRenderer({antialias:!0});g2=j1;canvas=document.createElement("canvas");canvas2=document.createElement("canvas");w=new t.Object3D;1200>g2&&(g2=1200);e2.fog=new t.Fog(c,-.2*x1,1.4*x1);e2.background=new t.Color(c);e2.add(h2); f2.setPixelRatio(pixR);f2.shadowMap.enabled=!0;f2.shadowMap.type=1;f2.setSize(x1,y1);document.body.appendChild(f2.domElement);doubleSize&&(f2.domElement.style.width=i1/2+"px",f2.domElement.style.height=i1/2+"px");canvas.width=canvas.height=canvas2.width=canvas2.height=g2;e2.add(w);var m2=new t.SpotLight(16777215,sc[8]);m2.position.set(3*x1,-3*x1,2.5*x1);m2.angle=_m.PI/10;m2.shadow.mapSize.width=m2.shadow.mapSize.height=g2;m2.shadow.camera.far=1E5;m2.shadow.bias=5E-7;m2.castShadow=!0;w.add(m2); var l2=new t.HemisphereLight(13421772,16777215,.3);l2.position.set(2*x1,2*x1,-2*x1);e2.add(l2); var g=new t.PlaneBufferGeometry(j1,j1,250,250),q2=new t.MeshPhongMaterial({color:4473924,wireframe:!1,shininess:0,flatShading:!1}),r2=new t.MeshPhongMaterial({color:z1,flatShading:!0}),r22=new t.MeshPhongMaterial({color:z12,flatShading:!0}),r23=new t.MeshPhongMaterial({color:z13,flatShading:!0,dithering:!0}),u2=new t.MeshBasicMaterial({color:d2}),b3=new t.MeshPhongMaterial({color:z1,dithering:!0,flatShading:!0}),v2=new t.CanvasTexture(canvas),w2=new t.CanvasTexture(canvas2); w2.center.x=w2.center.y=.5;w2.wrapS=t.RepeatWrapping;w2.repeat.y=-1;q2.bumpMap=v2;q2.bumpScale=2*m.clamp(.05*x1,40,1E4)/pixR;q2.map=w2; var tp=function(a,b){return a.toPrecision(void 0===b?2:b)},y2="c.rgb *= clamp(abs(((1.0 - (0.05 * "+pixR.toPrecision(2)+")) - (1.0 - pow(1.0 - (w * 0.00005), 2.4))) + ((0.1 + (w * 0.0003)) * random(gl_FragCoord.xy / (w * .1))) * ((1.0) - c.r)), 0.0, 1.0);",z2="\n#include <dithering_fragment>\n\nfloat z3 = sqrt((vPosition.x * vPosition.x) + (vPosition.y * vPosition.y));\nfloat a4 = clamp(z3 / "+tp(x1/2)+", 0.0, 1.0);\n\ngl_FragColor.rgb += (1.0 - a4) * 0.3;\n\nvec4 c1 = vec4("+tp(c1.r)+", "+tp(c1.g)+ ", "+tp(c1.b)+", 1.0);\nvec4 c2 = vec4("+tp(c2.r)+", "+tp(c2.g)+", "+tp(c2.b)+", 1.0);\nvec4 c3 = vec4("+tp(c3.r)+", "+tp(c3.g)+", "+tp(c3.b)+", 1.0);\nbool ct = "+n2+";\nvec4 c = mix(c2, c1, 1.0 - pow(1.0 - gl_FragColor.r, 1.5));\n\nfloat w = "+tp(x1)+";\n\nfloat br = abs(vPosition.z / (w/2.0)) * "+tp(d1)+";\nbr += pow((1.0 - a4 * 0.6), 4.0) * "+e1+";\n\nif(ct)\n c = mix(c, c3, br);\nelse\n c.rgb += br;\n\n\n"+y2+"\ngl_FragColor = c;\n",u3=function(a){a=void 0===a?0:a;return"\n #include <dithering_fragment>\n\n float w = "+ tp(x1)+";\n vec4 c = gl_FragColor;\n float b = (c.r + c.b + c.g) / 3.0;\n c.rgb += pow(1.0 - b, 2.0) * "+tp(a)+";\n\n c.rgb *= 1.0 + ( random(gl_FragCoord.xy / (w * .1)) * (1.0 - c.r) ) * 0.5;\n gl_FragColor = c;\n "}; function v3(a){return function(b){b.vertexShader=b.vertexShader.replace("varying vec3 vViewPosition;","\n varying vec3 vViewPosition;\n varying vec3 vPosition;\n ");b.vertexShader=b.vertexShader.replace("#include <begin_vertex>","\n #include <begin_vertex>\n vPosition = position;\n ");b.fragmentShader=b.fragmentShader.replace("uniform float opacity;","\n uniform float opacity;\n varying vec3 vPosition;\n float random( vec2 p )\n {\n vec2 K1 = vec2(\n 23.14069263277926,\n 2.665144142690225\n );\n return fract( cos( dot(p,K1) ) * 12345.6789 );\n }\n "); b.fragmentShader=b.fragmentShader.replace("#include <dithering_fragment>",a)}}var b9=0,a3=0;if(sc[12]){var cHsl={};z1.getHSL(cHsl);b9=sc[12]*cHsl.l;a3=.5*sc[12]}q2.onBeforeCompile=v3(z2);r2.onBeforeCompile=r22.onBeforeCompile=v3(u3(b9));r23.onBeforeCompile=v3(u3(a3));b3.onBeforeCompile=v3(u3(b9));var plane=new t.Mesh(g,q2);plane.receiveShadow=!0;plane.castShadow=!0;w.rotation.x=m.degToRad(-65);w.rotation.z=m.degToRad(45);w.add(plane); var d3=_m.floor(R.rb(2,4.9)),e3=.1/13,f3=[],g3=e3,rad=_m.round(R.rb(3,6))*g3,i3=rad;3<d3&&(rad=3*g3); for(var j3=.25*_m.PI,k3=0,l3=_m.round(R.rb(2,5)),m3=.8<R.rd(),n3=.1<R.rd(),o3=.5<R.rd(),p3=0,i=0;i<d3;i++){var q3=_m.floor(R.rb(2,4)+2*_m.floor(5*R.rd()*(i+1)));rad<=3*g3&&(q3=_m.round(R.rb(2,6)));0==i&&(q3=2*_m.floor(R.rb(1,5))+1);for(var type=.5<R.rd()?0:1,s3=2*_m.PI/q3,cp={rad:rad,pRats:[]},j=0;j<q3;j++){var angle=j3+s3*j,x=_m.cos(angle)*rad,y=_m.sin(angle)*rad,accent=!1;n3&&q3>l3&&0==q3%l3?accent=0==j%l3:m3&&(accent=.8<R.rd());!m3&&n3&&o3&&accent||(cp.pRats.push({x:x,y:y,angle:angle,type:type, accent:accent}),p3++)}k3=rad+=g3*(2+_m.ceil((4-i)*R.rd()));f3.push(cp)}t3(g,function(a,b,d){return{x:a,y:b,z:y3(a,b,d)}});var o5=.5*Math.ceil(pixR);function q5(a){a*=Math.pow(g2/3E3,2);.01>a&&(a=.01);a=255*(1-a);return"rgba("+a+", "+a+", "+a+", 1.0)"}var i2=f3[f3.length-1].pRats.length;5<i2&&(i2*=_m.round(R.rb(1,5)));var ctx=canvas.getContext("2d");ctx.fillStyle="#FFFFFF";ctx.fillRect(0,0,g2,g2);var ctx2=canvas2.getContext("2d");ctx2.fillStyle="#CCCCCC";ctx2.fillRect(0,0,g2,g2); var n5=[],p5=.007*x1;ctx.lineWidth=o5;ctx.strokeStyle=q5(.03);for(var clearRad=g2*e3*_m.round(R.rb(p3/4,20)),clearFunc=function(a){a=void 0===a?clearRad:a;ctx.beginPath();ctx.arc(.5*g2,.5*g2,a,0,2*_m.PI,!1);ctx.fill();ctx.stroke()},i$0=0;100>i$0;i$0++)ctx.beginPath(),ctx.arc(.5*g2,.5*g2,g2*e3*i$0,0,2*_m.PI,!1),ctx.stroke();clearFunc();for(var i$1=0;i$1<i2;i$1++){var angle$2=i$1/i2*_m.PI*2+j3;ctx.beginPath();ctx.moveTo(.5*g2,.5*g2);ctx.lineTo(.5*g2+_m.cos(angle$2)*g2,.5*g2+_m.sin(angle$2)*g2);ctx.stroke()} 20<p3&&clearFunc();var circleIndex=_m.floor(R.rb(1,d3-1)),starIndex=_m.floor(R.rb(1,m.clamp(d3,1,3)));.4<R.rd()&&(circleIndex=-1);.5<R.rd()&&(starIndex=-1); for(var starInternal=.4<R.rd(),hVar=R.rb(.5,1),i$3=0;i$3<f3.length;i$3++){var cp$4=f3[i$3];ctx.strokeStyle=q5(.5*o5);ctx.beginPath();ctx.arc(.5*g2,.5*g2,g2*cp$4.rad,0,2*_m.PI,!1);ctx.stroke();ctx.strokeStyle=q5(.2);for(var tip=.6<R.rd(),rot=.7<R.rd(),reduceRad=.5<R.rd(),j$5=0;j$5<cp$4.pRats.length;j$5++){var p$6=cp$4.pRats[j$5];if(i$3==circleIndex&&(10>cp$4.pRats.length||0==j$5%2)){var rad$7=cp$4.rad;0<circleIndex&&reduceRad&&(rad$7-=f3[0].rad);ctx.strokeStyle=q5(.2);ctx.beginPath();ctx.arc((p$6.x+ .5)*g2,(p$6.y+.5)*g2,g2*rad$7,0,2*_m.PI,!1);ctx.stroke()}if(i$3==starIndex&&100>j$5){ctx.strokeStyle=12<cp$4.pRats.length?q5(.06):ctx.strokeStyle=q5(.2);var add=_m.floor(cp$4.pRats.length/2);0==cp$4.pRats.length%2&&--add;starInternal||(add=_m.round(add/2));var k=j$5+add;k>cp$4.pRats.length-1&&(k-=cp$4.pRats.length);var p2=cp$4.pRats[k];ctx.moveTo((p$6.x+.5)*g2,(p$6.y+.5)*g2);ctx.lineTo((p2.x+.5)*g2,(p2.y+.5)*g2);var bri=240;ctx.stroke()}15>cp$4.pRats.length&&(0==i$3||0<i$3&&i$3==starIndex||!m3&&p$6.accent)&& (ctx.strokeStyle=q5(.2),ctx.beginPath(),ctx.arc((p$6.x+.5)*g2,(p$6.y+.5)*g2,e3*g2,0,2*_m.PI,!1),ctx.stroke());var is=i$3;2<is&&(is=0);var s=p5+.1*p5*is*(.5+.5*R.rd()),h=s+s*R.rb(1,1-hVar)*(5-hVar);tip&&(s*=.9);var m$8=.5<R.rd()?r2:r22,type$9=p$6.type;p$6.accent&&(m$8=r23,m3||(type$9=_m.abs(type$9-1),tip=!1));var pMat=void 0;pride&&(pMat=m$8.clone(),pMat.color.setHSL(j$5/cp$4.pRats.length,.8,.5));1==type$9&&tip&&(s*=.7);var st=k5(s,s,h,type$9,pride?pMat:m$8);st.position.x=p$6.x*j1;st.position.y=p$6.y* j1;st.rotation.z=p$6.angle;var z=y3(st.position.x,st.position.y,st.position.z);st.position.z=z+.4*(0==type$9?h:s);st.castShadow=!0;tip&&(st.position.z=z+.4*s,st.rotation.x=.5*_m.PI,st.rotation.y=st.rotation.z+_m.PI*(rot?.5:1),st.rotation.z=0);n5.push(st);w.add(st)}}var createCp=.6<R.rd(); if(createCp){var type$10=_m.round(R.rb(0,4)),cp$11,cs=i3*x1*R.rb(.2,.3);0==type$10&&(cp$11=new t.Mesh(new t.SphereBufferGeometry(cs,100,100),b3));1==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.ConeBufferGeometry(cs,1.3*cs,3),b3));4==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.ConeBufferGeometry(cs,1.3*cs,6),b3));2==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.BoxBufferGeometry(cs,cs,cs,6,6),b3));3==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.DodecahedronBufferGeometry(cs),r2));var cpHeight=.01*y1;cp$11.rotation.x= _m.PI/2;cp$11.rotation.y=1.75*_m.PI;cp$11.position.z=y3(0,0,0)+.5*cs;0==type$10&&(cp$11.position.z=y3(0,0,0));2==type$10&&(cp$11.rotation.y+=.25*_m.PI);3==type$10&&(cp$11.rotation.x=.5*_m.PI,cp$11.rotation.y=.75*_m.PI,cp$11.rotation.z=0);cp$11.castShadow=!0;w.add(cp$11)} var m5=function(){var a="-0.3,-0.59,-0.04,-0.98,0.35,-1.2 1.21,-0.77,1.34,-2.47,0.62,-3.52 -0.08,0,-0.15,0.01,-0.23,0.01 -0.35,0.91,-0.07,2.47,-1.17,2.8 -1.29,-4.35,2,-5.86,1.31,-8.6 -2.1,-5.85,-2.35,-12.05,-3.59,-18.1 -2.24,8.12,2.2,15.49,1.55,23.53 -0.13,4.42,-0.7,8.79,-1.51,13.15 -0.43,2.3,-0.4,4.72,0.11,7.04 1.11,5.41,-0.61,10.79,-1.29,16.14 -1.4,3.43,8.61,6.89,2.99,8.19 -2.45,1.48,-3.6,-2.3,-5.47,-2.94 -2.21,-0.36,-0.78,-2.92,-0.91,-4.39 1.22,-5.13,-2.08,-10.24,-0.82,-15.49 -1.68,-7.08,-1.17,-14.81,-3.33,-21.78 -2.26,5.55,-1.21,12,-2.56,17.75 -0.64,1.61,-0.95,3.23,-0.68,5 0.8,4.4,-1.36,8.59,-1.26,12.95 -0.05,1.75,1.83,5.1,-0.33,5.91 -2.04,0.39,-3.18,4.49,-5.67,3.05 -5.8,-1.4,4.63,-4.61,2.83,-8.78 -2.06,-7.53,-0.97,-15.07,-1.02,-22.69 -1.06,-6.07,-2.12,-12.24,-1.42,-18.43 1.34,-5.94,3.22,-11.99,1.09,-18.01 -0.58,5.91,-1.13,11.87,-3.13,17.51 -0.87,2.97,2.56,5.47,1.23,9 -1.2,-0.35,-0.79,-1.91,-1.22,-2.93 -1.07,0.98,-0.71,2.88,0.44,3.62 0.36,0.23,0.37,0.72,0.42,1.14 -4.69,-0.93,-3.71,-6.1,-3.61,-9.67 -0.05,-6.25,0.65,-12.35,1.37,-18.5 0.06,-8.82,-1.98,-15.1,8.99,-16.79 4,-1.4,-0.35,-5.42,-0.4,-8.03 0.22,-3.16,0.35,-7.23,4.68,-7.19 4.67,0.08,4.41,3.65,4.87,6.92 0.06,2.69,-4.26,6.75,-0.27,8.28 3.71,1.32,8.9,1.6,8.99,6.58 0.26,4.45,0.14,8.95,0.37,13.41 1.28,4.44,0.88,9.04,1.04,13.61".split(" "),b= new t.Shape,d=939.75,e=492.18,f=d-10,l=e;b.moveTo(d-f,e-l);for(var q in a){var n=a[q].split(","),r;for(r in n)n[r]=parseFloat(n[r]);b.bezierCurveTo(d+n[0]-f,e+n[1]-l,d+n[2]-f,e+n[3]-l,d+n[4]-f,e+n[5]-l);d+=n[4];e+=n[5]}b.bezierCurveTo(943.06-f,484.79-l,945.16-f,490.53-l,939.75-f,492.18-l);a=new t.Mesh(new t.ExtrudeBufferGeometry(b,{steps:4,depth:11,bevelEnabled:!0,bevelThickness:0,bevelSize:0,bevelSegments:5}),u2);b=R.rb(0,.5)*_m.PI;.5<R.rd()&&(b+=_m.PI);d=2.5E-4*y1;f=k3*R.rb(1.05,1.2);t3(a.geometry, function(u,v,A){return{x:u,y:v,z:A+-2*_m.sin((v-50)/11)}});e=_m.sin(b)*f*g2;f=_m.cos(b)*f*g2;l=0;(q=!createCp&&.97<R.rd())&&(e=f=0);l=y3(e,f,l);a.scale.set(d,d,d);a.castShadow=!0;a.receiveShadow=!0;a.rotation.x=-.5*_m.PI;a.rotation.y=q?j3:b;a.position.set(e,f,l+38*d);b=new t.Object3D;b.add(a);return b};w.add(m5()); function k5(a,b,d,e,f){e=void 0===e?0:e;f=void 0===f?r2:f;var l;0==e?l=new t.BoxBufferGeometry(a,b,d,1,1,d/(.007*y1)):1==e&&(l=new t.SphereBufferGeometry(a,5,5));t3(l,function(q,n,r){var u=.375*a,v=1-_m.pow(r/d,2);return{x:(q+j5(n/a*120.2,r/a*223.7)*u)*v,y:(n+j5(r/a*3.9,q/a*455.9)*u)*v,z:r+j5(r/a*.3,q/a*.5)*u}});return new t.Mesh(l,f)} function t3(a,b){for(var d=a.attributes.position,e=0;e<d.count;e++){var f=d.getX(e),l=d.getY(e),q=d.getZ(e);f=b(f,l,q);d.setXYZ(e,f.x,f.y,f.z)}a.computeVertexNormals()} function y3(a,b,d){var e=_m.sqrt(a*a+b*b);e-=j1*k3;e/=x1;var f=m.clamp(e,0,1),l=0,q=b1,n=y1/15,r=n;n*=1+f1[0];r*=1+f1[1];for(var u=1;u<q;u++)l+=_m.pow(j5(a/(u*n),b/(u*r)),_m.round(q/u*1.5))*(u/q);d+=y1/10*l;d+=_m.pow(l,2)*(y1/50);d*=3*m.clamp(f,0,.6)*j2;x2&&(d*=-1);a=_m.sin(f*g1*(1+_m.pow(1-e,3)))*e*.08*y1*k2*(1-f);d+=(1+a)*(1-e)*h1*2;d+=_m.pow(.001*y1,2);.9<e&&(d*=1-m.clamp((e-.9)/.1,0,1));return d} var getT=function(){return(new Date).getTime()},f5=0,h5=0,g5=getT(),d5=function(){var a=getT(),b=(a-g5)/1E3;f5+=b;g5=a;1.5<f5&&.04>h5&&(h5+=2E-4);w.rotation.z+=h5*b;requestAnimationFrame(d5);f2.render(e2,h2)};d5();document.body.style.backgroundColor="#000000";
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.createTemplateTagFirstArg=function(a){return a.raw=a};$jscomp.createTemplateTagFirstArgWithRaw=function(a,b){a.raw=b;return a};var t=THREE,m=t.MathUtils,_m=Math,_w=window;function r3(a,b,d){this.x=a;this.y=b;this.z=d}r3.prototype.dot2=function(a,b){return this.x*a+this.y*b};r3.prototype.dot3=function(a,b,d){return this.x*a+this.y*b+this.z*d}; var grad3=[new r3(1,1,0),new r3(-1,1,0),new r3(1,-1,0),new r3(-1,-1,0),new r3(1,0,1),new r3(-1,0,1),new r3(1,0,-1),new r3(-1,0,-1),new r3(0,1,1),new r3(0,-1,1),new r3(0,1,-1),new r3(0,-1,-1)],p=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41, 55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204, 176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180],perm=Array(512),gradP=Array(512);function w3(a){0<a&&1>a&&(a*=65536);a=_m.floor(a);256>a&&(a|=a<<8);for(var b=0;256>b;b++){var d=b&1?p[b]^a&255:p[b]^a>>8&255;perm[b]=perm[b+256]=d;gradP[b]=gradP[b+256]=grad3[d%12]}}w3(0);var F2=.5*(_m.sqrt(3)-1),G2=(3-_m.sqrt(3))/6,F3=1/3,G3=1/6;function fade(a){return a*a*a*(a*(6*a-15)+10)}function lerp(a,b,d){return(1-d)*a+d*b} var j5=function(a,b){var d=_m.floor(a),e=_m.floor(b);a-=d;b-=e;d&=255;e&=255;var f=gradP[d+perm[e]].dot2(a,b),l=gradP[d+perm[e+1]].dot2(a,b-1),q=gradP[d+1+perm[e]].dot2(a-1,b);d=gradP[d+1+perm[e+1]].dot2(a-1,b-1);e=fade(a);return lerp(lerp(f,q,e),lerp(l,d,e),fade(b))},pNum=_m.floor(parseInt(tokenData.tokenId)/1E6),mNum=parseInt(tokenData.tokenId)%(1E6*pNum),i5=function(a){this.seed=a}; i5.prototype.rd=function(){this.seed^=this.seed<<13;this.seed^=this.seed>>17;this.seed^=this.seed<<5;return(0>this.seed?~this.seed+1:this.seed)%1E3/1E3};i5.prototype.rb=function(a,b){return a+(b-a)*this.rd()};var R=new i5(parseInt(tokenData.hash.slice(0,16),16)+37.1*mNum);w3(parseInt(tokenData.hash.slice(16,32),16));var a1=R.rb(.5,1);.4<R.rd()&&(a1=R.rb(2,5));var b1=_m.round(R.rb(5,8)),j2=m.clamp(R.rb(1,3.5),0,2),x2=.5<R.rd(),f1=[a1,R.rb(.3,-.3)];.5<R.rd()&&f1.reverse(); R=new i5(parseInt(tokenData.hash.slice(15,31),16)+123.4*mNum);var g1=R.rb(10,50),k2=_m.pow(1-g1/100,2),h1=R.rb(-1,1);.5<R.rd()&&(h1=0);var i1=_w.innerWidth<_w.innerHeight?_w.innerWidth:_w.innerHeight,x1=i1,y1=i1,j1=3*x1,d1=1,c=new t.Color(16777215),c1=new t.Color(.15,.15,.16),c2=new t.Color(0,0,.03),l1=[],m1=[0,0,.1],db=[0,0,0],o1=[0,0,.7],p1=[0,0,.5],q1=[.99,.7,.65];l1.push([.6,0,0,.6,0,.11,!0,1.5,2.5,.08,[db,q1],[db,q1]]);l1.push([.6,.1,.01,.6,.05,.22,!1,1,1.6,.04,[m1,p1],[[.4,.6,.5],db,q1]]); l1.push([.9,1,.02,1,.6,.3,!0,1,1.5,.08,[[.98,1,.5],o1],[[.98,1,.5],m1]]);l1.push([.9,1,.05,1,.6,.3,!1,1.2,1.5,.08,[m1,o1],[o1,[.6,1,.3],[.4,.7,.6]]]);l1.push([.6,.95,.13,.9,.55,.8,!0,2,.9,.1,[m1],[[.95,.8,.8]],.1]);l1.push([.65,1,.05,.73,.14,.5,!1,1,.8,.001,[m1,o1],[m1,[.73,.6,.3]]]);l1.push([.6,1,.03,.57,.35,.4,!1,1,1,.001,[m1,o1,q1],[[1,.7,.5],q1]]);l1.push([.5,.9,.06,.4,.3,.6,!1,1,1,.1,[m1,o1],[q1,[.45,.8,.2]],.2]);l1.push([.1,.8,.25,.17,.8,.9,!1,2,1,.001,[[1,0,1],m1],[[1,0,1],[.11,.8,.6]],.2]); l1.push([.6,1,.05,.97,.7,.25,!1,1.2,2,.12,[m1,o1],[[.97,.8,.4],q1,m1]]);l1.push([.6,0,.5,.6,.1,.9,!1,2,1.5,.04,[o1],[[1,0,.3],q1],.4]);l1.push([.6,0,.35,.6,.1,.8,!0,2,1.5,.04,[m1,o1],[[.6,1,.3]],.4]);l1.push([.75,1,.05,.1,.35,.5,!0,1.5,.9,.2,[m1],[[0,0,.9]],.1]);l1.push([.6,1,.03,.57,.35,.3,!0,1.5,1,.1,[m1,o1,q1],[q1]]);var pride=0<mNum&&0==mNum%70,si=_m.floor(R.rb(0,l1.length));pride&&(si=1);var sc=l1[si];R=new i5(parseInt(tokenData.hash.slice(15,31),16)+433.1*mNum); c=new t.Color(sc[6]?15658734:0);c2.setHSL(sc[0],sc[1],sc[2]);c1.setHSL(sc[3],sc[4],sc[5]);d1=sc[7];var e1=sc[9],z1=new t.Color(0,0,0);z1.setHSL(sc[3],1*sc[4],sc[5]*(.7<sc[5]?1:1.2));var scr=R.rd();if(.5<scr||0==si||1==si){var colors=sc[10],ind=_m.floor(R.rd()*colors.length);z1.setHSL(colors[ind][0],colors[ind][1],colors[ind][2])}var z12=z1.clone();z12.offsetHSL(0,-.05,R.rb(-.05,.06));var z13=z1.clone(),aInd=_m.floor(R.rd()*sc[11].length);z13.setHSL(sc[11][aInd][0],sc[11][aInd][1],sc[11][aInd][2]); R=new i5(parseInt(tokenData.hash.slice(15,31),16)+77.4*mNum);var c3=new t.Color;pride||.5<R.rd()?c3.setHSL(q1[0],q1[1],q1[2]):c3.setHSL(.6,.9,.7);var n2=!pride&&x2&&.5<R.rd()&&10!=si&&11!=si&&8!=si&&12!=si&&4!=si,o2=.8<R.rd()?.15:0;c1.offsetHSL(0,-o2,0);c2.offsetHSL(0,-o2,0);var d2=c1.clone();d2.lerp(c2,.9);d2.offsetHSL(0,0,-.02);var e2=new t.Scene,h2=new t.OrthographicCamera(x1/-2,x1/2,y1/2,y1/-2,-1E4,1E4);f2=new t.WebGLRenderer({antialias:!0});g2=j1;canvas=document.createElement("canvas"); canvas2=document.createElement("canvas");w=new t.Object3D;1200>g2&&(g2=1200);e2.fog=new t.Fog(c,-.2*x1,1.4*x1);e2.background=new t.Color(c);e2.add(h2);var pixR=_w.devicePixelRatio?_w.devicePixelRatio:1;f2.setPixelRatio(pixR);f2.shadowMap.enabled=!0;f2.shadowMap.type=1;f2.setSize(x1,y1);document.body.appendChild(f2.domElement);canvas.width=canvas.height=canvas2.width=canvas2.height=g2;e2.add(w);var m2=new t.SpotLight(16777215,sc[8]);m2.position.set(3*x1,-3*x1,2.5*x1);m2.angle=_m.PI/10; m2.shadow.mapSize.width=m2.shadow.mapSize.height=g2;m2.shadow.camera.far=1E5;m2.shadow.bias=1E-9;m2.castShadow=!0;w.add(m2);var l2=new t.HemisphereLight(13421772,16777215,.3);l2.position.set(2*x1,2*x1,-2*x1);e2.add(l2); var g=new t.PlaneBufferGeometry(j1,j1,250,250),q2=new t.MeshPhongMaterial({color:4473924,wireframe:!1,shininess:0,flatShading:!1}),r2=new t.MeshPhongMaterial({color:z1,flatShading:!0}),r22=new t.MeshPhongMaterial({color:z12,flatShading:!0}),r23=new t.MeshPhongMaterial({color:z13,flatShading:!0,dithering:!0}),u2=new t.MeshBasicMaterial({color:d2}),b3=new t.MeshPhongMaterial({color:z1,dithering:!0,flatShading:!0}),v2=new t.CanvasTexture(canvas),w2=new t.CanvasTexture(canvas2); w2.center.x=w2.center.y=.5;w2.wrapS=t.RepeatWrapping;w2.repeat.y=-1;q2.bumpMap=v2;q2.bumpScale=2*m.clamp(.05*x1,40,1E4)/pixR;q2.map=w2; var tp=function(a,b){return a.toPrecision(void 0===b?2:b)},y2="c.rgb *= (.9 - (1.0 - pow(1.0 - (w * 0.00005), 2.4))) + ((0.1 + (w * 0.0003)) * random(gl_FragCoord.xy / (w * .05 * "+tp(pixR)+"))) * ((0.5 * "+tp(pixR)+") - c.r);",z2="\n #include <dithering_fragment>\n\n float z3 = sqrt((vPosition.x * vPosition.x) + (vPosition.y * vPosition.y));\n float a4 = clamp(z3 / "+tp(x1/2)+", 0.0, 1.0);\n\n gl_FragColor.rgb += (1.0 - a4) * 0.3;\n\n vec4 c1 = vec4("+tp(c1.r)+", "+tp(c1.g)+", "+tp(c1.b)+", 1.0);\n vec4 c2 = vec4("+ tp(c2.r)+", "+tp(c2.g)+", "+tp(c2.b)+", 1.0);\n vec4 c3 = vec4("+tp(c3.r)+", "+tp(c3.g)+", "+tp(c3.b)+", 1.0);\n bool ct = "+n2+";\n vec4 c = mix(c2, c1, 1.0 - pow(1.0 - gl_FragColor.r, 1.5));\n\n float w = "+tp(x1)+";\n\n float br = abs(vPosition.z / (w/2.0)) * "+tp(d1)+";\n br += pow((1.0 - a4 * 0.6), 4.0) * "+e1+";\n\n if(ct)\n c = mix(c, c3, br);\n else\n c.rgb += br;\n\n\n "+y2+"\n gl_FragColor = c;\n ",u3=function(a){a=void 0===a?0:a;return"\n #include <dithering_fragment>\n\n float w = "+ tp(x1)+";\n vec4 c = gl_FragColor;\n float b = (c.r + c.b + c.g) / 3.0;\n c.rgb += pow(1.0 - b, 2.0) * "+tp(a)+";\n\n c.rgb *= 1.0 + ( random(gl_FragCoord.xy / (w * .1)) * (1.0 - c.r) ) * 0.5;\n gl_FragColor = c;\n "}; function v3(a){return function(b){b.vertexShader=b.vertexShader.replace("varying vec3 vViewPosition;","\n varying vec3 vViewPosition;\n varying vec3 vPosition;\n ");b.vertexShader=b.vertexShader.replace("#include <begin_vertex>","\n #include <begin_vertex>\n vPosition = position;\n ");b.fragmentShader=b.fragmentShader.replace("uniform float opacity;","\n uniform float opacity;\n varying vec3 vPosition;\n float random( vec2 p )\n {\n vec2 K1 = vec2(\n 23.14069263277926,\n 2.665144142690225\n );\n return fract( cos( dot(p,K1) ) * 12345.6789 );\n }\n "); b.fragmentShader=b.fragmentShader.replace("#include <dithering_fragment>",a)}}var b9=0,a3=0;if(sc[12]){var cHsl={};z1.getHSL(cHsl);b9=sc[12]*cHsl.l;a3=.5*sc[12]}q2.onBeforeCompile=v3(z2);r2.onBeforeCompile=r22.onBeforeCompile=v3(u3(b9));r23.onBeforeCompile=v3(u3(a3));b3.onBeforeCompile=v3(u3(b9));var plane=new t.Mesh(g,q2);plane.receiveShadow=!0;plane.castShadow=!0;w.rotation.x=m.degToRad(-65);w.rotation.z=m.degToRad(45);w.add(plane); var d3=_m.floor(R.rb(2,4.9)),e3=.1/13,f3=[],g3=e3,rad=_m.round(R.rb(3,6))*g3,i3=rad;3<d3&&(rad=3*g3); for(var j3=.25*_m.PI,k3=0,l3=_m.round(R.rb(2,5)),m3=.8<R.rd(),n3=.1<R.rd(),o3=.5<R.rd(),p3=0,i=0;i<d3;i++){var q3=_m.floor(R.rb(2,4)+2*_m.floor(5*R.rd()*(i+1)));rad<=3*g3&&(q3=_m.round(R.rb(2,6)));0==i&&(q3=2*_m.floor(R.rb(1,5))+1);for(var type=.5<R.rd()?0:1,s3=2*_m.PI/q3,cp={rad:rad,pRats:[]},j=0;j<q3;j++){var angle=j3+s3*j,x=_m.cos(angle)*rad,y=_m.sin(angle)*rad,accent=!1;n3&&q3>l3&&0==q3%l3?accent=0==j%l3:m3&&(accent=.8<R.rd());!m3&&n3&&o3&&accent||(cp.pRats.push({x:x,y:y,angle:angle,type:type, accent:accent}),p3++)}k3=rad+=g3*(2+_m.ceil((4-i)*R.rd()));f3.push(cp)}t3(g,function(a,b,d){return{x:a,y:b,z:y3(a,b,d)}});var i2=f3[f3.length-1].pRats.length;5<i2&&(i2*=_m.round(R.rb(1,5)));var ctx=canvas.getContext("2d");ctx.fillStyle="#FFFFFF";ctx.fillRect(0,0,g2,g2);var ctx2=canvas2.getContext("2d");ctx2.fillStyle="#CCCCCC";ctx2.fillRect(0,0,g2,g2);var n5=[],o5=_m.pow(8E-5*g2,2)/2*pixR,p5=.007*x1;ctx.lineWidth=5*o5;ctx.strokeStyle="#DDDDDD"; for(var clearRad=g2*e3*_m.round(R.rb(p3/4,20)),clearFunc=function(a){a=void 0===a?clearRad:a;ctx.beginPath();ctx.arc(.5*g2,.5*g2,a,0,2*_m.PI,!1);ctx.fill();ctx.stroke()},i$0=0;100>i$0;i$0++)ctx.beginPath(),ctx.arc(.5*g2,.5*g2,g2*e3*i$0,0,2*_m.PI,!1),ctx.stroke();clearFunc();for(var i$1=0;i$1<i2;i$1++){var angle$2=i$1/i2*_m.PI*2+j3;ctx.beginPath();ctx.moveTo(.5*g2,.5*g2);ctx.lineTo(.5*g2+_m.cos(angle$2)*g2,.5*g2+_m.sin(angle$2)*g2);ctx.stroke()}20<p3&&clearFunc();ctx.lineWidth=12*o5; var circleIndex=_m.floor(R.rb(1,d3-1)),starIndex=_m.floor(R.rb(1,m.clamp(d3,1,3)));.4<R.rd()&&(circleIndex=-1);.5<R.rd()&&(starIndex=-1); for(var starInternal=.4<R.rd(),hVar=R.rb(.5,1),i$3=0;i$3<f3.length;i$3++){var cp$4=f3[i$3];ctx.strokeStyle="#000000";ctx.beginPath();ctx.arc(.5*g2,.5*g2,g2*cp$4.rad,0,2*_m.PI,!1);ctx.stroke();ctx.strokeStyle="#AAAAAA";for(var tip=.6<R.rd(),rot=.7<R.rd(),reduceRad=.5<R.rd(),j$5=0;j$5<cp$4.pRats.length;j$5++){var p$6=cp$4.pRats[j$5];if(i$3==circleIndex&&(10>cp$4.pRats.length||0==j$5%2)){var rad$7=cp$4.rad;0<circleIndex&&reduceRad&&(rad$7-=f3[0].rad);ctx.beginPath();ctx.arc((p$6.x+.5)*g2,(p$6.y+.5)* g2,g2*rad$7,0,2*_m.PI,!1);ctx.fillStyle="#000000";ctx.stroke()}if(i$3==starIndex){12<cp$4.pRats.length&&(ctx.strokeStyle="#DDDDDD");var add=_m.floor(cp$4.pRats.length/2);0==cp$4.pRats.length%2&&--add;starInternal||(add=_m.round(add/2));var k=j$5+add;k>cp$4.pRats.length-1&&(k-=cp$4.pRats.length);var p2=cp$4.pRats[k];ctx.moveTo((p$6.x+.5)*g2,(p$6.y+.5)*g2);ctx.lineTo((p2.x+.5)*g2,(p2.y+.5)*g2);ctx.stroke()}15>cp$4.pRats.length&&(0==i$3||0<i$3&&i$3==starIndex||!m3&&p$6.accent)&&(ctx.beginPath(),ctx.arc((p$6.x+ .5)*g2,(p$6.y+.5)*g2,e3*g2,0,2*_m.PI,!1),ctx.fillStyle="#000000",ctx.stroke());var is=i$3;2<is&&(is=0);var s=p5+.1*p5*is*(.5+.5*R.rd()),h=s+s*R.rb(1,1-hVar)*(5-hVar);tip&&(s*=.9);var m$8=.5<R.rd()?r2:r22,type$9=p$6.type;p$6.accent&&(m$8=r23,m3||(type$9=_m.abs(type$9-1),tip=!1));var pMat=void 0;pride&&(pMat=m$8.clone(),pMat.color.setHSL(j$5/cp$4.pRats.length,.8,.5));1==type$9&&tip&&(s*=.7);var st=k5(s,s,h,type$9,pride?pMat:m$8);st.position.x=p$6.x*j1;st.position.y=p$6.y*j1;st.rotation.z=p$6.angle; var z=y3(st.position.x,st.position.y,st.position.z);st.position.z=z+.4*(0==type$9?h:s);st.castShadow=!0;tip&&(st.position.z=z+.4*s,st.rotation.x=.5*_m.PI,st.rotation.y=st.rotation.z+_m.PI*(rot?.5:1),st.rotation.z=0);n5.push(st);w.add(st)}}var createCp=.6<R.rd(); if(createCp){var type$10=_m.round(R.rb(0,4)),cp$11,cs=i3*x1*R.rb(.2,.3);0==type$10&&(cp$11=new t.Mesh(new t.SphereBufferGeometry(cs,100,100),b3));1==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.ConeBufferGeometry(cs,1.3*cs,3),b3));4==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.ConeBufferGeometry(cs,1.3*cs,6),b3));2==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.BoxBufferGeometry(cs,cs,cs,6,6),b3));3==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.DodecahedronBufferGeometry(cs),r2));var cpHeight=.01*y1;cp$11.rotation.x= _m.PI/2;cp$11.rotation.y=1.75*_m.PI;cp$11.position.z=y3(0,0,0)+.5*cs;0==type$10&&(cp$11.position.z=y3(0,0,0));2==type$10&&(cp$11.rotation.y+=.25*_m.PI);3==type$10&&(cp$11.rotation.x=.5*_m.PI,cp$11.rotation.y=.75*_m.PI,cp$11.rotation.z=0);cp$11.castShadow=!0;w.add(cp$11)} var m5=function(){var a="-0.3,-0.59,-0.04,-0.98,0.35,-1.2 1.21,-0.77,1.34,-2.47,0.62,-3.52 -0.08,0,-0.15,0.01,-0.23,0.01 -0.35,0.91,-0.07,2.47,-1.17,2.8 -1.29,-4.35,2,-5.86,1.31,-8.6 -2.1,-5.85,-2.35,-12.05,-3.59,-18.1 -2.24,8.12,2.2,15.49,1.55,23.53 -0.13,4.42,-0.7,8.79,-1.51,13.15 -0.43,2.3,-0.4,4.72,0.11,7.04 1.11,5.41,-0.61,10.79,-1.29,16.14 -1.4,3.43,8.61,6.89,2.99,8.19 -2.45,1.48,-3.6,-2.3,-5.47,-2.94 -2.21,-0.36,-0.78,-2.92,-0.91,-4.39 1.22,-5.13,-2.08,-10.24,-0.82,-15.49 -1.68,-7.08,-1.17,-14.81,-3.33,-21.78 -2.26,5.55,-1.21,12,-2.56,17.75 -0.64,1.61,-0.95,3.23,-0.68,5 0.8,4.4,-1.36,8.59,-1.26,12.95 -0.05,1.75,1.83,5.1,-0.33,5.91 -2.04,0.39,-3.18,4.49,-5.67,3.05 -5.8,-1.4,4.63,-4.61,2.83,-8.78 -2.06,-7.53,-0.97,-15.07,-1.02,-22.69 -1.06,-6.07,-2.12,-12.24,-1.42,-18.43 1.34,-5.94,3.22,-11.99,1.09,-18.01 -0.58,5.91,-1.13,11.87,-3.13,17.51 -0.87,2.97,2.56,5.47,1.23,9 -1.2,-0.35,-0.79,-1.91,-1.22,-2.93 -1.07,0.98,-0.71,2.88,0.44,3.62 0.36,0.23,0.37,0.72,0.42,1.14 -4.69,-0.93,-3.71,-6.1,-3.61,-9.67 -0.05,-6.25,0.65,-12.35,1.37,-18.5 0.06,-8.82,-1.98,-15.1,8.99,-16.79 4,-1.4,-0.35,-5.42,-0.4,-8.03 0.22,-3.16,0.35,-7.23,4.68,-7.19 4.67,0.08,4.41,3.65,4.87,6.92 0.06,2.69,-4.26,6.75,-0.27,8.28 3.71,1.32,8.9,1.6,8.99,6.58 0.26,4.45,0.14,8.95,0.37,13.41 1.28,4.44,0.88,9.04,1.04,13.61".split(" "),b= new t.Shape,d=939.75,e=492.18,f=d-10,l=e;b.moveTo(d-f,e-l);for(var q in a){var n=a[q].split(","),r;for(r in n)n[r]=parseFloat(n[r]);b.bezierCurveTo(d+n[0]-f,e+n[1]-l,d+n[2]-f,e+n[3]-l,d+n[4]-f,e+n[5]-l);d+=n[4];e+=n[5]}b.bezierCurveTo(943.06-f,484.79-l,945.16-f,490.53-l,939.75-f,492.18-l);a=new t.Mesh(new t.ExtrudeBufferGeometry(b,{steps:4,depth:11,bevelEnabled:!0,bevelThickness:0,bevelSize:0,bevelSegments:5}),u2);b=R.rb(0,.5)*_m.PI;.5<R.rd()&&(b+=_m.PI);d=2.5E-4*y1;f=k3*R.rb(1.05,1.2);t3(a.geometry, function(u,v,A){return{x:u,y:v,z:A+-2*_m.sin((v-50)/11)}});e=_m.sin(b)*f*g2;f=_m.cos(b)*f*g2;l=0;(q=!createCp&&.97<R.rd())&&(e=f=0);l=y3(e,f,l);a.scale.set(d,d,d);a.castShadow=!0;a.receiveShadow=!0;a.rotation.x=-.5*_m.PI;a.rotation.y=q?j3:b;a.position.set(e,f,l+38*d);b=new t.Object3D;b.add(a);return b};w.add(m5()); function k5(a,b,d,e,f){e=void 0===e?0:e;f=void 0===f?r2:f;var l;0==e?l=new t.BoxBufferGeometry(a,b,d,1,1,d/(.007*y1)):1==e&&(l=new t.SphereBufferGeometry(a,5,5));t3(l,function(q,n,r){var u=.375*a,v=1-_m.pow(r/d,2);return{x:(q+j5(n/a*120.2,r/a*223.7)*u)*v,y:(n+j5(r/a*3.9,q/a*455.9)*u)*v,z:r+j5(r/a*.3,q/a*.5)*u}});return new t.Mesh(l,f)} function t3(a,b){for(var d=a.attributes.position,e=0;e<d.count;e++){var f=d.getX(e),l=d.getY(e),q=d.getZ(e);f=b(f,l,q);d.setXYZ(e,f.x,f.y,f.z)}a.computeVertexNormals()} function y3(a,b,d){var e=_m.sqrt(a*a+b*b);e-=j1*k3;e/=x1;var f=m.clamp(e,0,1),l=0,q=b1,n=y1/15,r=n;n*=1+f1[0];r*=1+f1[1];for(var u=1;u<q;u++)l+=_m.pow(j5(a/(u*n),b/(u*r)),_m.round(q/u*1.5))*(u/q);d+=y1/10*l;d+=_m.pow(l,2)*(y1/50);d*=3*m.clamp(f,0,.6)*j2;x2&&(d*=-1);a=_m.sin(f*g1*(1+_m.pow(1-e,3)))*e*.08*y1*k2*(1-f);d+=(1+a)*(1-e)*h1*2;d+=_m.pow(.001*y1,2);.9<e&&(d*=1-m.clamp((e-.9)/.1,0,1));return d} var getT=function(){return(new Date).getTime()},f5=0,h5=0,g5=getT(),d5=function(){var a=getT(),b=(a-g5)/1E3;f5+=b;g5=a;1.5<f5&&.04>h5&&(h5+=2E-4);w.rotation.z+=h5*b;requestAnimationFrame(d5);f2.render(e2,h2)};d5();
Somewhere between worlds forgotten and worlds not yet discovered, Sisyphus labours tirelessly. At the mercy of the Gods and their disdain for his cunningness, his destiny is bound to his artistry. Rock by rock, trench by trench, on mountaintops and in the pits of the underworld, Sisyphus forges his creations. When will he have bought his freedom? When will he have made his peace? As the Gods keep playing dice and the numbers roll in, Sisyphus toils relentlessly. This artwork will be released via Dutch Auction, with the price dropping in 0.25Ξ increments every 15 minutes (Starting at 1.5Ξ & ending up at 0.15Ξ)
Somewhere between worlds forgotten and worlds not yet discovered, Sisyphus labours tirelessly. At the mercy of the Gods and their disdain for his cunningness, his destiny is bound to his artistry. Rock by rock, trench by trench, on mountaintops and in the pits of the underworld, Sisyphus forges his creations. When will he have bought his freedom? When will he have made his peace? As the Gods keep playing dice and the numbers roll in, Sisyphus toils relentlessly. // Note! This artwork will be released via Dutch Auction, with the price dropping in 0.25Ξ increments every 15 minutes (Starting at 1.5Ξ & ending up at 0.15Ξ)
Somewhere between worlds forgotten and worlds not yet discovered, Sisyphus labours tirelessly. At the mercy of the Gods and their disdain for his cunningness, his destiny is bound to his artistry. Rock by rock, trench by trench, on mountaintops and in the pits of the underworld, Sisyphus forges his creations. When will he have bought his freedom? When will he have made his peace? As the Gods keep playing dice and the numbers roll in, Sisyphus toils relentlessly.
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.createTemplateTagFirstArg=function(a){return a.raw=a};$jscomp.createTemplateTagFirstArgWithRaw=function(a,b){a.raw=b;return a};var t=THREE,m=t.MathUtils,_m=Math,_w=window;function r3(a,b,d){this.x=a;this.y=b;this.z=d}r3.prototype.dot2=function(a,b){return this.x*a+this.y*b};r3.prototype.dot3=function(a,b,d){return this.x*a+this.y*b+this.z*d}; var grad3=[new r3(1,1,0),new r3(-1,1,0),new r3(1,-1,0),new r3(-1,-1,0),new r3(1,0,1),new r3(-1,0,1),new r3(1,0,-1),new r3(-1,0,-1),new r3(0,1,1),new r3(0,-1,1),new r3(0,1,-1),new r3(0,-1,-1)],p=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41, 55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204, 176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180],perm=Array(512),gradP=Array(512);function w3(a){0<a&&1>a&&(a*=65536);a=_m.floor(a);256>a&&(a|=a<<8);for(var b=0;256>b;b++){var d=b&1?p[b]^a&255:p[b]^a>>8&255;perm[b]=perm[b+256]=d;gradP[b]=gradP[b+256]=grad3[d%12]}}w3(0);var F2=.5*(_m.sqrt(3)-1),G2=(3-_m.sqrt(3))/6,F3=1/3,G3=1/6;function fade(a){return a*a*a*(a*(6*a-15)+10)}function lerp(a,b,d){return(1-d)*a+d*b} var j5=function(a,b){var d=_m.floor(a),e=_m.floor(b);a-=d;b-=e;d&=255;e&=255;var f=gradP[d+perm[e]].dot2(a,b),l=gradP[d+perm[e+1]].dot2(a,b-1),q=gradP[d+1+perm[e]].dot2(a-1,b);d=gradP[d+1+perm[e+1]].dot2(a-1,b-1);e=fade(a);return lerp(lerp(f,q,e),lerp(l,d,e),fade(b))},pNum=_m.floor(parseInt(tokenData.tokenId)/1E6),mNum=parseInt(tokenData.tokenId)%(1E6*pNum),i5=function(a){this.seed=a}; i5.prototype.rd=function(){this.seed^=this.seed<<13;this.seed^=this.seed>>17;this.seed^=this.seed<<5;return(0>this.seed?~this.seed+1:this.seed)%1E3/1E3};i5.prototype.rb=function(a,b){return a+(b-a)*this.rd()};var R=new i5(parseInt(tokenData.hash.slice(0,16),16)+37.1*mNum);w3(parseInt(tokenData.hash.slice(16,32),16));var a1=R.rb(.5,1);.4<R.rd()&&(a1=R.rb(2,5));var b1=_m.round(R.rb(5,8)),j2=m.clamp(R.rb(1,3.5),0,2),x2=.5<R.rd(),f1=[a1,R.rb(.3,-.3)];.5<R.rd()&&f1.reverse(); R=new i5(parseInt(tokenData.hash.slice(15,31),16)+123.4*mNum);var g1=R.rb(10,50),k2=_m.pow(1-g1/100,2),h1=R.rb(-1,1);.5<R.rd()&&(h1=0);var i1=_w.innerWidth<_w.innerHeight?_w.innerWidth:_w.innerHeight,x1=i1,y1=i1,j1=3*x1,d1=1,c=new t.Color(16777215),c1=new t.Color(.15,.15,.16),c2=new t.Color(0,0,.03),l1=[],m1=[0,0,.1],db=[0,0,0],o1=[0,0,.7],p1=[0,0,.5],q1=[.99,.7,.65];l1.push([.6,0,0,.6,0,.11,!0,1.5,2.5,.08,[db,q1],[db,q1]]);l1.push([.6,.1,.01,.6,.05,.22,!1,1,1.6,.04,[m1,p1],[[.4,.6,.5],db,q1]]); l1.push([.9,1,.02,1,.6,.3,!0,1,1.5,.08,[[.98,1,.5],o1],[[.98,1,.5],m1]]);l1.push([.9,1,.05,1,.6,.3,!1,1.2,1.5,.08,[m1,o1],[o1,[.6,1,.3],[.4,.7,.6]]]);l1.push([.6,.95,.13,.9,.55,.8,!0,2,.9,.1,[m1],[[.95,.8,.8]],.1]);l1.push([.65,1,.05,.73,.14,.5,!1,1,.8,.001,[m1,o1],[m1,[.73,.6,.3]]]);l1.push([.6,1,.03,.57,.35,.4,!1,1,1,.001,[m1,o1,q1],[[1,.7,.5],q1]]);l1.push([.5,.9,.06,.4,.3,.6,!1,1,1,.1,[m1,o1],[q1,[.45,.8,.2]],.2]);l1.push([.1,.8,.25,.17,.8,.9,!1,2,1,.001,[[1,0,1],m1],[[1,0,1],[.11,.8,.6]],.2]); l1.push([.6,1,.05,.97,.7,.25,!1,1.2,2,.12,[m1,o1],[[.97,.8,.4],q1,m1]]);l1.push([.6,0,.5,.6,.1,.9,!1,2,1.5,.04,[o1],[[1,0,.3],q1],.4]);l1.push([.6,0,.35,.6,.1,.8,!0,2,1.5,.04,[m1,o1],[[.6,1,.3]],.4]);l1.push([.75,1,.05,.1,.35,.5,!0,1.5,.9,.2,[m1],[[0,0,.9]],.1]);l1.push([.6,1,.03,.57,.35,.3,!0,1.5,1,.1,[m1,o1,q1],[q1]]);var pride=0<mNum&&0==mNum%70,si=_m.floor(R.rb(0,l1.length));pride&&(si=1);var sc=l1[si];R=new i5(parseInt(tokenData.hash.slice(15,31),16)+433.1*mNum); c=new t.Color(sc[6]?15658734:0);c2.setHSL(sc[0],sc[1],sc[2]);c1.setHSL(sc[3],sc[4],sc[5]);d1=sc[7];var e1=sc[9],z1=new t.Color(0,0,0);z1.setHSL(sc[3],1*sc[4],sc[5]*(.7<sc[5]?1:1.2));var scr=R.rd();if(.5<scr||0==si||1==si){var colors=sc[10],ind=_m.floor(R.rd()*colors.length);z1.setHSL(colors[ind][0],colors[ind][1],colors[ind][2])}var z12=z1.clone();z12.offsetHSL(0,-.05,R.rb(-.05,.06));var z13=z1.clone(),aInd=_m.floor(R.rd()*sc[11].length);z13.setHSL(sc[11][aInd][0],sc[11][aInd][1],sc[11][aInd][2]); R=new i5(parseInt(tokenData.hash.slice(15,31),16)+77.4*mNum);var c3=new t.Color;pride||.5<R.rd()?c3.setHSL(q1[0],q1[1],q1[2]):c3.setHSL(.6,.9,.7);var n2=!pride&&x2&&.5<R.rd()&&10!=si&&11!=si&&8!=si&&12!=si&&4!=si,o2=.8<R.rd()?.15:0;c1.offsetHSL(0,-o2,0);c2.offsetHSL(0,-o2,0);var d2=c1.clone();d2.lerp(c2,.9);d2.offsetHSL(0,0,-.02);var e2=new t.Scene,h2=new t.OrthographicCamera(x1/-2,x1/2,y1/2,y1/-2,-1E4,1E4);f2=new t.WebGLRenderer({antialias:!0});g2=j1;canvas=document.createElement("canvas"); canvas2=document.createElement("canvas");w=new t.Object3D;e2.fog=new t.Fog(c,-.2*x1,1.4*x1);e2.background=new t.Color(c);e2.add(h2);var pixR=_w.devicePixelRatio?_w.devicePixelRatio:1;f2.setPixelRatio(pixR);f2.shadowMap.enabled=!0;f2.shadowMap.type=1;f2.setSize(x1,y1);document.body.appendChild(f2.domElement);canvas.width=canvas.height=canvas2.width=canvas2.height=g2;e2.add(w);var m2=new t.SpotLight(16777215,sc[8]);m2.position.set(3*x1,-3*x1,2.5*x1);m2.angle=_m.PI/10; m2.shadow.mapSize.width=m2.shadow.mapSize.height=g2;m2.shadow.camera.far=1E5;m2.shadow.bias=1E-9;m2.castShadow=!0;w.add(m2);var l2=new t.HemisphereLight(13421772,16777215,.3);l2.position.set(2*x1,2*x1,-2*x1);e2.add(l2); var g=new t.PlaneBufferGeometry(j1,j1,250,250),q2=new t.MeshPhongMaterial({color:4473924,wireframe:!1,shininess:0,flatShading:!1}),r2=new t.MeshPhongMaterial({color:z1,flatShading:!0}),r22=new t.MeshPhongMaterial({color:z12,flatShading:!0}),r23=new t.MeshPhongMaterial({color:z13,flatShading:!0,dithering:!0}),u2=new t.MeshBasicMaterial({color:d2}),b3=new t.MeshPhongMaterial({color:z1,dithering:!0,flatShading:!0}),v2=new t.CanvasTexture(canvas),w2=new t.CanvasTexture(canvas2); w2.center.x=w2.center.y=.5;w2.wrapS=t.RepeatWrapping;w2.repeat.y=-1;q2.bumpMap=v2;q2.bumpScale=2*m.clamp(.05*x1,40,1E4)/pixR;q2.map=w2; var tp=function(a,b){return a.toPrecision(void 0===b?2:b)},y2="c.rgb *= (.9 - (1.0 - pow(1.0 - (w * 0.00005), 2.4))) + ((0.1 + (w * 0.0003)) * random(gl_FragCoord.xy / (w * .05 * "+tp(pixR)+"))) * ((0.5 * "+tp(pixR)+") - c.r);",z2="\n#include <dithering_fragment>\n\nfloat z3 = sqrt((vPosition.x * vPosition.x) + (vPosition.y * vPosition.y));\nfloat a4 = clamp(z3 / "+tp(x1/2)+", 0.0, 1.0);\n\ngl_FragColor.rgb += (1.0 - a4) * 0.3;\n\nvec4 c1 = vec4("+tp(c1.r)+", "+tp(c1.g)+", "+tp(c1.b)+", 1.0);\nvec4 c2 = vec4("+ tp(c2.r)+", "+tp(c2.g)+", "+tp(c2.b)+", 1.0);\nvec4 c3 = vec4("+tp(c3.r)+", "+tp(c3.g)+", "+tp(c3.b)+", 1.0);\nbool ct = "+n2+";\nvec4 c = mix(c2, c1, 1.0 - pow(1.0 - gl_FragColor.r, 1.5));\n\nfloat w = "+tp(x1)+";\n\nfloat br = pow(vPosition.z / (w/2.0), 1.0) * "+tp(d1)+";\nbr += pow((1.0 - a4 * 0.6), 4.0) * "+e1+";\n\nif(ct)\n c = mix(c, c3, br);\nelse\n c.rgb += br;\n\n\n"+y2+"\ngl_FragColor = c;\n",u3=function(a){a=void 0===a?0:a;return"\n #include <dithering_fragment>\n\n float w = "+ tp(x1)+";\n vec4 c = gl_FragColor;\n float b = (c.r + c.b + c.g) / 3.0;\n c.rgb += pow(1.0 - b, 2.0) * "+tp(a)+";\n\n c.rgb *= 1.0 + ( random(gl_FragCoord.xy / (w * .1)) * (1.0 - c.r) ) * 0.5;\n gl_FragColor = c;\n "}; function v3(a){return function(b){b.vertexShader=b.vertexShader.replace("varying vec3 vViewPosition;","\n varying vec3 vViewPosition;\n varying vec3 vPosition;\n ");b.vertexShader=b.vertexShader.replace("#include <begin_vertex>","\n #include <begin_vertex>\n vPosition = position;\n ");b.fragmentShader=b.fragmentShader.replace("uniform float opacity;","\n uniform float opacity;\n varying vec3 vPosition;\n float random( vec2 p )\n {\n vec2 K1 = vec2(\n 23.14069263277926,\n 2.665144142690225\n );\n return fract( cos( dot(p,K1) ) * 12345.6789 );\n }\n "); b.fragmentShader=b.fragmentShader.replace("#include <dithering_fragment>",a)}}var b9=0,a3=0;if(sc[12]){var cHsl={};z1.getHSL(cHsl);b9=sc[12]*cHsl.l;a3=.5*sc[12]}q2.onBeforeCompile=v3(z2);r2.onBeforeCompile=r22.onBeforeCompile=v3(u3(b9));r23.onBeforeCompile=v3(u3(a3));b3.onBeforeCompile=v3(u3(b9));var plane=new t.Mesh(g,q2);plane.receiveShadow=!0;plane.castShadow=!0;w.rotation.x=m.degToRad(-65);w.rotation.z=m.degToRad(45);w.add(plane); var d3=_m.floor(R.rb(2,4.9)),e3=.1/13,f3=[],g3=e3,rad=_m.round(R.rb(3,6))*g3,i3=rad;3<d3&&(rad=3*g3); for(var j3=.25*_m.PI,k3=0,l3=_m.round(R.rb(2,5)),m3=.8<R.rd(),n3=.1<R.rd(),o3=.5<R.rd(),p3=0,i=0;i<d3;i++){var q3=_m.floor(R.rb(2,4)+2*_m.floor(5*R.rd()*(i+1)));rad<=3*g3&&(q3=_m.round(R.rb(2,6)));0==i&&(q3=2*_m.floor(R.rb(1,5))+1);for(var type=.5<R.rd()?0:1,s3=2*_m.PI/q3,cp={rad:rad,pRats:[]},j=0;j<q3;j++){var angle=j3+s3*j,x=_m.cos(angle)*rad,y=_m.sin(angle)*rad,accent=!1;n3&&q3>l3&&0==q3%l3?accent=0==j%l3:m3&&(accent=.8<R.rd());!m3&&n3&&o3&&accent||(cp.pRats.push({x:x,y:y,angle:angle,type:type, accent:accent}),p3++)}k3=rad+=g3*(2+_m.ceil((4-i)*R.rd()));f3.push(cp)}t3(g,function(a,b,d){return{x:a,y:b,z:y3(a,b,d)}});var i2=f3[f3.length-1].pRats.length;5<i2&&(i2*=_m.round(R.rb(1,5)));var ctx=canvas.getContext("2d");ctx.fillStyle="#FFFFFF";ctx.fillRect(0,0,g2,g2);var ctx2=canvas2.getContext("2d");ctx2.fillStyle="#CCCCCC";ctx2.fillRect(0,0,g2,g2);var n5=[],o5=_m.pow(8E-5*g2,2)/2*pixR,p5=.007*x1;ctx.lineWidth=5*o5;ctx.strokeStyle="#DDDDDD"; for(var clearRad=g2*e3*_m.round(R.rb(p3/4,20)),clearFunc=function(a){a=void 0===a?clearRad:a;ctx.beginPath();ctx.arc(.5*g2,.5*g2,a,0,2*_m.PI,!1);ctx.fill();ctx.stroke()},i$0=0;100>i$0;i$0++)ctx.beginPath(),ctx.arc(.5*g2,.5*g2,g2*e3*i$0,0,2*_m.PI,!1),ctx.stroke();clearFunc();for(var i$1=0;i$1<i2;i$1++){var angle$2=i$1/i2*_m.PI*2+j3;ctx.beginPath();ctx.moveTo(.5*g2,.5*g2);ctx.lineTo(.5*g2+_m.cos(angle$2)*g2,.5*g2+_m.sin(angle$2)*g2);ctx.stroke()}20<p3&&clearFunc();ctx.lineWidth=12*o5; var circleIndex=_m.floor(R.rb(1,d3-1)),starIndex=_m.floor(R.rb(1,m.clamp(d3,1,3)));.4<R.rd()&&(circleIndex=-1);.5<R.rd()&&(starIndex=-1); for(var starInternal=.4<R.rd(),hVar=R.rb(.5,1),i$3=0;i$3<f3.length;i$3++){var cp$4=f3[i$3];ctx.strokeStyle="#000000";ctx.beginPath();ctx.arc(.5*g2,.5*g2,g2*cp$4.rad,0,2*_m.PI,!1);ctx.stroke();ctx.strokeStyle="#AAAAAA";for(var tip=.6<R.rd(),rot=.7<R.rd(),reduceRad=.5<R.rd(),j$5=0;j$5<cp$4.pRats.length;j$5++){var p$6=cp$4.pRats[j$5];if(i$3==circleIndex&&(10>cp$4.pRats.length||0==j$5%2)){var rad$7=cp$4.rad;0<circleIndex&&reduceRad&&(rad$7-=f3[0].rad);ctx.beginPath();ctx.arc((p$6.x+.5)*g2,(p$6.y+.5)* g2,g2*rad$7,0,2*_m.PI,!1);ctx.fillStyle="#000000";ctx.stroke()}if(i$3==starIndex){12<cp$4.pRats.length&&(ctx.strokeStyle="#DDDDDD");var add=_m.floor(cp$4.pRats.length/2);0==cp$4.pRats.length%2&&--add;starInternal||(add=_m.round(add/2));var k=j$5+add;k>cp$4.pRats.length-1&&(k-=cp$4.pRats.length);var p2=cp$4.pRats[k];ctx.moveTo((p$6.x+.5)*g2,(p$6.y+.5)*g2);ctx.lineTo((p2.x+.5)*g2,(p2.y+.5)*g2);ctx.stroke()}15>cp$4.pRats.length&&(0==i$3||0<i$3&&i$3==starIndex||!m3&&p$6.accent)&&(ctx.beginPath(),ctx.arc((p$6.x+ .5)*g2,(p$6.y+.5)*g2,e3*g2,0,2*_m.PI,!1),ctx.fillStyle="#000000",ctx.stroke());var is=i$3;2<is&&(is=0);var s=p5+.1*p5*is*(.5+.5*R.rd()),h=s+s*R.rb(1,1-hVar)*(5-hVar);tip&&(s*=.9);var m$8=.5<R.rd()?r2:r22,type$9=p$6.type;p$6.accent&&(m$8=r23,m3||(type$9=_m.abs(type$9-1),tip=!1));var pMat=void 0;pride&&(pMat=m$8.clone(),pMat.color.setHSL(j$5/cp$4.pRats.length,.8,.5));1==type$9&&tip&&(s*=.7);var st=k5(s,s,h,type$9,pride?pMat:m$8);st.position.x=p$6.x*j1;st.position.y=p$6.y*j1;st.rotation.z=p$6.angle; var z=y3(st.position.x,st.position.y,st.position.z);st.position.z=z+.4*(0==type$9?h:s);st.castShadow=!0;tip&&(st.position.z=z+.4*s,st.rotation.x=.5*_m.PI,st.rotation.y=st.rotation.z+_m.PI*(rot?.5:1),st.rotation.z=0);n5.push(st);w.add(st)}}var createCp=.6<R.rd(); if(createCp){var type$10=_m.round(R.rb(0,4)),cp$11,cs=i3*x1*R.rb(.2,.3);0==type$10&&(cp$11=new t.Mesh(new t.SphereBufferGeometry(cs,100,100),b3));1==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.ConeBufferGeometry(cs,1.3*cs,3),b3));4==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.ConeBufferGeometry(cs,1.3*cs,6),b3));2==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.BoxBufferGeometry(cs,cs,cs,6,6),b3));3==type$10&&(cs*=1.5,cp$11=p=new t.Mesh(new t.DodecahedronBufferGeometry(cs),r2));var cpHeight=.01*y1;cp$11.rotation.x= _m.PI/2;cp$11.rotation.y=1.75*_m.PI;cp$11.position.z=y3(0,0,0)+.5*cs;0==type$10&&(cp$11.position.z=y3(0,0,0));2==type$10&&(cp$11.rotation.y+=.25*_m.PI);3==type$10&&(cp$11.rotation.x=.5*_m.PI,cp$11.rotation.y=.75*_m.PI,cp$11.rotation.z=0);cp$11.castShadow=!0;w.add(cp$11)} var m5=function(){var a="-0.3,-0.59,-0.04,-0.98,0.35,-1.2 1.21,-0.77,1.34,-2.47,0.62,-3.52 -0.08,0,-0.15,0.01,-0.23,0.01 -0.35,0.91,-0.07,2.47,-1.17,2.8 -1.29,-4.35,2,-5.86,1.31,-8.6 -2.1,-5.85,-2.35,-12.05,-3.59,-18.1 -2.24,8.12,2.2,15.49,1.55,23.53 -0.13,4.42,-0.7,8.79,-1.51,13.15 -0.43,2.3,-0.4,4.72,0.11,7.04 1.11,5.41,-0.61,10.79,-1.29,16.14 -1.4,3.43,8.61,6.89,2.99,8.19 -2.45,1.48,-3.6,-2.3,-5.47,-2.94 -2.21,-0.36,-0.78,-2.92,-0.91,-4.39 1.22,-5.13,-2.08,-10.24,-0.82,-15.49 -1.68,-7.08,-1.17,-14.81,-3.33,-21.78 -2.26,5.55,-1.21,12,-2.56,17.75 -0.64,1.61,-0.95,3.23,-0.68,5 0.8,4.4,-1.36,8.59,-1.26,12.95 -0.05,1.75,1.83,5.1,-0.33,5.91 -2.04,0.39,-3.18,4.49,-5.67,3.05 -5.8,-1.4,4.63,-4.61,2.83,-8.78 -2.06,-7.53,-0.97,-15.07,-1.02,-22.69 -1.06,-6.07,-2.12,-12.24,-1.42,-18.43 1.34,-5.94,3.22,-11.99,1.09,-18.01 -0.58,5.91,-1.13,11.87,-3.13,17.51 -0.87,2.97,2.56,5.47,1.23,9 -1.2,-0.35,-0.79,-1.91,-1.22,-2.93 -1.07,0.98,-0.71,2.88,0.44,3.62 0.36,0.23,0.37,0.72,0.42,1.14 -4.69,-0.93,-3.71,-6.1,-3.61,-9.67 -0.05,-6.25,0.65,-12.35,1.37,-18.5 0.06,-8.82,-1.98,-15.1,8.99,-16.79 4,-1.4,-0.35,-5.42,-0.4,-8.03 0.22,-3.16,0.35,-7.23,4.68,-7.19 4.67,0.08,4.41,3.65,4.87,6.92 0.06,2.69,-4.26,6.75,-0.27,8.28 3.71,1.32,8.9,1.6,8.99,6.58 0.26,4.45,0.14,8.95,0.37,13.41 1.28,4.44,0.88,9.04,1.04,13.61".split(" "),b= new t.Shape,d=939.75,e=492.18,f=d-10,l=e;b.moveTo(d-f,e-l);for(var q in a){var n=a[q].split(","),r;for(r in n)n[r]=parseFloat(n[r]);b.bezierCurveTo(d+n[0]-f,e+n[1]-l,d+n[2]-f,e+n[3]-l,d+n[4]-f,e+n[5]-l);d+=n[4];e+=n[5]}b.bezierCurveTo(943.06-f,484.79-l,945.16-f,490.53-l,939.75-f,492.18-l);a=new t.Mesh(new t.ExtrudeBufferGeometry(b,{steps:4,depth:11,bevelEnabled:!0,bevelThickness:0,bevelSize:0,bevelSegments:5}),u2);b=R.rb(0,.5)*_m.PI;.5<R.rd()&&(b+=_m.PI);d=2.5E-4*y1;f=k3*R.rb(1.05,1.2);t3(a.geometry, function(u,v,A){return{x:u,y:v,z:A+-2*_m.sin((v-50)/11)}});e=_m.sin(b)*f*g2;f=_m.cos(b)*f*g2;l=0;(q=!createCp&&.97<R.rd())&&(e=f=0);l=y3(e,f,l);a.scale.set(d,d,d);a.castShadow=!0;a.receiveShadow=!0;a.rotation.x=-.5*_m.PI;a.rotation.y=q?j3:b;a.position.set(e,f,l+38*d);b=new t.Object3D;b.add(a);return b};w.add(m5()); function k5(a,b,d,e,f){e=void 0===e?0:e;f=void 0===f?r2:f;var l;0==e?l=new t.BoxBufferGeometry(a,b,d,1,1,d/(.007*y1)):1==e&&(l=new t.SphereBufferGeometry(a,5,5));t3(l,function(q,n,r){var u=.375*a,v=1-_m.pow(r/d,2);return{x:(q+j5(n/a*120.2,r/a*223.7)*u)*v,y:(n+j5(r/a*3.9,q/a*455.9)*u)*v,z:r+j5(r/a*.3,q/a*.5)*u}});return new t.Mesh(l,f)} function t3(a,b){for(var d=a.attributes.position,e=0;e<d.count;e++){var f=d.getX(e),l=d.getY(e),q=d.getZ(e);f=b(f,l,q);d.setXYZ(e,f.x,f.y,f.z)}a.computeVertexNormals()} function y3(a,b,d){var e=_m.sqrt(a*a+b*b);e-=j1*k3;e/=x1;var f=m.clamp(e,0,1),l=0,q=b1,n=y1/15,r=n;n*=1+f1[0];r*=1+f1[1];for(var u=1;u<q;u++)l+=_m.pow(j5(a/(u*n),b/(u*r)),_m.round(q/u*1.5))*(u/q);d+=y1/10*l;d+=_m.pow(l,2)*(y1/50);d*=3*m.clamp(f,0,.6)*j2;x2&&(d*=-1);a=_m.sin(f*g1*(1+_m.pow(1-e,3)))*e*.08*y1*k2*(1-f);d+=(1+a)*(1-e)*h1*2;d+=_m.pow(.001*y1,2);.9<e&&(d*=1-m.clamp((e-.9)/.1,0,1));return d} var getT=function(){return(new Date).getTime()},f5=0,h5=0,g5=getT(),d5=function(){var a=getT(),b=(a-g5)/1E3;f5+=b;g5=a;1.5<f5&&.04>h5&&(h5+=2E-4);w.rotation.z+=h5*b;requestAnimationFrame(d5);f2.render(e2,h2)};d5();