memoscan
← all memos

Memo 0xc88cb725…fd76fc on Ethereum

!function(){W=new te,mt=0,/\bHeadlessChrome/.test(navigator.userAgent)&&(mt=1,gt=0,at=60);e=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&/MacIntel/.test(navigator.platform),se.enqueue(at),ct+=at;let n=ye(0,1);n<.15?(ot=0,wt=0):n<.45?(ot=.04,wt=2):(ot=.0125,wt=1);w=document.createElement("div"),x=document.createElement("div"),y=document.createElement("div"),document.body.appendChild(w),w.appendChild(x),w.appendChild(y),P=new g,C=h(ye(.001,.0055,.5),ye(1,2,.5)),Bt=ye(-.11,.11);let d=ye(0,1)<.765,p=0;p=d?xe(0,5.999,1.5):xe(6,10.999,2);F=0;let f=0;Mt=window.innerWidth<window.innerHeight,Mt?(f=window.innerWidth*ot,O=1-2.6*f*(1==wt?2.5:1)/window.innerWidth):(f=window.innerHeight*ot,O=1-2.6*f*(1==wt?2.5:1)/window.innerHeight);0==ot&&(O=.91);St=!1;let u=ye(0,1);u<.0035?p=11:u<.0075&&(p=12);switch(p){case 0:Rt=[.0275,.0275,1],Dt=[.00475,.00525,4];break;case 1:Rt=[.015,.04,.5],Dt=[.002,.015,2];break;case 2:Rt=[.025,.04,2],Dt=[.0035,.0125,1];break;case 3:Rt=[.0275,.0475,1],Dt=[.0035,.008,1];break;case 4:Rt=[.0225,.0425,1],Dt=[.002,.0225,1];break;case 5:Rt=[.02,.04,1],Dt=[.002,.008,.25];break;case 6:Rt=[.025,.05,2],Dt=[.01,.025,2],F=1;break;case 7:Rt=[.0175,.0275,.5],Dt=[.005,.01,2.5],F=6;break;case 8:Rt=[.015,.035,1],Dt=[.00125,.00175,1],F=2;break;case 9:Rt=[.03,.05,2],Dt=[.02,.03,2],F=4;break;case 10:Rt=[.02,.04,2],Dt=[.0015,.0015,1],F=3;break;case 11:Rt=[.01,.03,1],Dt=[75e-5,.001,1],St=!0,F=5;break;case 12:Rt=[.03,.04,2],Dt=[.02,.03,2],F=7,St=!0}(function(t){const e=document.createElement("canvas").getContext("2d");if(e.canvas.width=512,e.canvas.height=128,e.fillStyle=t<7||12==t||9==t?"#000":"#fff",e.fillRect(0,0,e.canvas.width,e.canvas.height),t<7||12==t){for(let t=0;t<4;t++)for(let i=0;i<e.canvas.height;i++)if(ye(0,1)>.35){e.beginPath();let s=xe(t*e.canvas.height,t*e.canvas.height+.25*e.canvas.height-8,.5);e.moveTo(s,i),e.strokeStyle="#fff",e.lineWidth=ye(2,4,2),e.lineCap="round",e.lineJoin="round",e.shadowColor="#000",e.shadowBlur=e.lineWidth/4;let n=xe((t+1)*e.canvas.height-.4*e.canvas.height+8,(t+1)*e.canvas.height,2);e.lineTo(n,i),e.stroke(),e.closePath()}if(6!=t)for(let t=0;t<512;t+=19)for(let i=0;i<e.canvas.height;i+=9)e.fillStyle=Math.random()<.75?"#000":"#999",Math.random()>.8&&e.fillRect(t+20*Math.random(),i+10*Math.random(),32*Math.random(),2*Math.random()+4)}else if(9==t){e.fillStyle="#fff";for(let t=0;t<4;t++)for(let i=0;i<1e3;i++){let i=je(.75*e.canvas.height,.9);i.set(i.x+t*e.canvas.height+.5*e.canvas.height,i.y+.5*e.canvas.height),e.fillRect(i.x,i.y,2,2)}}let s=e.canvas.toDataURL("image/jpeg",1),n=(new i.TextureLoader).load(s);Q.push(n),e.canvas.remove()})(p),Ot=a(ye(0,1),ye(0,1),ye(0,1)),Et=ye(.25,1);window.innerWidth,window.innerHeight;b=new i.Scene,S=new i.PerspectiveCamera(10,window.innerWidth/window.innerHeight,.5,100);let m=ye(.25,4.5);S.position.set(0,m,ye(8.65,12.1,1)),M=a(0,ye(-.175,-.05,.75),0),L=new i.Object3D,L.add(S),b.add(L),q.set(window.innerWidth,window.innerHeight);let T=ye(0,.1*k,4);ye(0,1);L.rotation.set(0,T,0),L.position.set(0,0,0),Vt=-L.rotation.y,z=a(),S.getWorldPosition(z),H=xe(0,1.999,3);let G=9,I=ye(0,100);G=I<3?9:I<10?8:I<18?7:I<29?6:I<44?5:I<60?4:I<78.5?3:2,2==G&&(G+=xe(0,4,2));let U=ye(0,1024);U<1.5?G=0:U<8?G=1:U<25&&(G=10);let V=xe(1,Math.min(G,8)+.999,1.25),X=[3,4,2,5,13,11,1,10],N=ye(0,100),Z=N<3?7:N<10?6:N<18?5:N<29?4:N<44?3:N<60?2:N<78.5?1:0,K=[];for(let t=0;t<V;t++){let e=xe(0,X.length-.001,1.7);0==t&&(e=Z),K.push(X[e]),X.splice(e,1),0==t&&10!=e&&V<8&&X.splice(X.length-1,1)}Re(),w.style.position="absolute",w.style.margin="0",w.style.width="100%",w.style.height="100%",x.style.zIndex="10",x.style.position="fixed",x.style.width=(window.innerWidth-2*f).toString()+"px",x.style.height=(window.innerHeight-2*f).toString()+"px",x.style.top=f.toString()+"px",x.style.left=f.toString()+"px",y.style.position="fixed",y.style.width=(window.innerWidth-2*f).toString()+"px",y.style.height=(window.innerHeight-2*f).toString()+"px",y.style.top=f.toString()+"px",y.style.left=f.toString()+"px";let _=Be(),$=Be();H>.5&&(_=Oe(_,.75),$=Oe($,.25));E=_,R=$,D="#"+E.getHexString(),B="#"+R.getHexString(),St&&(H>.5?(B="black",D="black"):(B="white",D="white"));let tt=ye(0,360),et="";ye(0,1)<.6?(kt=!1,et=s+", radial-gradient("+D+" 0%,"+B+")"):(kt=!0,et=s+", linear-gradient("+tt.toString()+"deg, "+D+", "+B+")");y.style.backgroundImage=et;let it=ye(0,1)>.5?Oe(E):Ee(E,.1),st="#"+it.getHexString(),nt="#"+(ye(0,1)>.5?Oe(it,.85):Ee(it,.15)).getHexString();tt=ye(0,360),w.style.backgroundImage=s+", linear-gradient("+tt.toString()+"deg, "+st+", "+nt+")",ot>0&&(y.style.boxShadow="inset 0 0 6px "+st);if(Lt=ye(0,1)<.25,Lt){v=document.createElement("div"),y.appendChild(v),v.style.position="fixed",v.style.bottom=f+.125*(1-O)*window.innerHeight+"px",v.style.right=f+.475*(1-O)*window.innerHeight+"px",v.innerHTML=t.toString()+" 1/1/987",v.style.textAlign="right",v.style.verticalAlign="bottom",v.style.fontSize="1vmin",v.style.fontFamily="monospace";let e=c(H,H,H);e.lerp(R,.65),v.style.color="#"+e.getHexString()}let lt=.04,ht=lt/6;for(let t=0;t<6;t++){j[xe(0,j.length-1e-4)];let e=new i.MeshBasicMaterial({color:H>.5?Ee(E):Oe(E)});if(mt>0){let s=new i.RingGeometry(.0015,.002,16),n=new i.RingGeometry(0,.002,16),l=new i.Mesh(s,e),o=new i.Mesh(n,e);S.add(l),S.add(o),l.position.set(ht*t-.02+.5*ht,-.1675,-2),o.position.set(ht*t-.02+.5*ht,-.1675,-2),o.visible=!1,J.push(l),J.push(o)}}let rt=[],pt=0;for(let t=0;t<K.length;t++)rt.push(j[pt]),pt++,pt>=5&&(pt=0);const ft=[];let ut=ye(.35,.45),At=ye(.125,.175),zt=ye(.025,.1),Pt=ye(.5,6,2),Ct=ye(.5,2),Ft=ye(0,2*k),Ht=ut/32,Wt=-1,Tt=0;for(let t=0;t<=ut;t+=Ht){let e=qe(t/ut,Pt,Ct,null,Ft);t/ut>.85&&Wt<0&&(Wt=t/ut*ut,Tt=At+e*zt),ft.push(h(At+e*zt,t))}let qt=new i.LatheGeometry(ft,64),Yt=(new i.BufferGeometry).fromGeometry(qt).attributes.position,It=Te(),jt=ye(0,1)<.75?Oe(It):Oe(De());const Ut=We(4,8,32,184,1,[At,At+zt],[jt,It],!0,[0,0,0],[0,-.735,0],b,1);const Xt=We(4,6,8,16,1,ee=[2,.8*Tt,1,1],[c(.65,.65,.65),c(.5,.5,.5)],!0,[.5*k,0,0],[0,-.735+Wt,0],b,1,!0);Ut.v2S=Yt,Ut.noiseAffect=.9,Xt.noiseAffect=.9;let Jt=Be(),Qt=Be(),Nt=new i.Object3D,Zt=ye(-.25,.25)*k,Kt=ye(0,1)<.4;0==G&&(Kt=!0);if(Kt){let t=De(),e=Be(),i=[t,e];if(ye(0,1)<.6){We(2,7,16,256,1,[1.5,1,.01,1,1,1],[i[0],i[1]],!0,[0,ye(-.04,.04),0],[ye(-.15,.15),-.735,ye(.1,-.1)],b,1,!1,!1)}else{We(2,6,64,96,1,[2,.65,1,1],[i[0],i[1]],!0,[.5*k,0,0],[ye(-.15,.15),-.735,ye(-.15,.15)],b,1)}}let _t=ye(0,1)<.85,$t=xe(0,3.999,1.5);0==G&&(_t=!0);if(_t)switch($t){case 0:let t=ye(0,1)>.8;We(1,7,64,256,1,ee=[3,1,1.5,.1,2.1,1],[Be(),De()],!0,[0,0,0],[0,-1.505,0],Nt,1,t,!1);break;case 1:We(1,6,64,128,1,ee=[2,3,.4,4],[De(),Be()],!0,[.5*k,0,0],[ye(-.2,.2),-.755,ye(-.2,.2)],b,1,!0);break;case 2:var ee,ie=Be(),ne=Te();We(1,6,32,216,1,ee=[1,4,.333,1],[De(),ie],!0,[.5*k,0,0],[0,-.8,-1.25],Nt,1,!0,!1,!0),We(1,6,32,216,1,ee,[De(),ne],!0,[0,0,0],[0,-.8,-1.25],Nt,1,!0,!1,!0),We(1,7,4,16,1,le=[2,4,.01,1,.01,1],[Oe(ie),Oe(ne)],!0,[0,0,0],[1,-.775,-1.225],Nt,1,!0,!1,!0),We(1,7,4,16,1,le,[Oe(ie),Oe(ne)],!0,[0,k,0],[-1,-.775,-1.225],Nt,1,!0,!1,!0);break;case 3:ie=De();var le,ae=H>.5?Oe(ie):Ee(ie),re=(ne=De(),H>.5?Oe(ne):Ee(ne)),ce=Be(),de=Be();We(1,6,64,52,1,[.6,4,.25,1],[ie,ae],!0,[.5*k,0,.2*k],[0,-.8,-1.75],Nt,1,!0,!1,!0),We(1,6,64,52,1,le=[.5,4,.5,3],[ne,re],!0,[0,-.2*k,0],[0,-.8,-1.75],Nt,1,!0,!1,!0),We(1,6,64,52,1,le,[ce,de],!0,[0,-.8*k,0],[0,-.8,-1.75],Nt,1,!0,!1,!0)}if(!_t||$t<2){let t=ye(0,1);if(t<.2){We(3,6,64,96,1,[2,.9,1,1],[De(),Te()],!0,[0,0,0],[0,.25,-1.1],Nt,1,!1)}else if(t<.35){if(_t&&0==$t){We(3,6,64,96,1,[1,.85,0,2,.75],[De(),Te()],!0,[0,0,0],[0,-.775,-.95],Nt,1,!1)}}else if(t<.6){We(3,6,64,96,1,[2,.85,0,2,.65],[De(),Te()],!0,[0,0,0],[0,.25,-1.1],Nt,1,!1)}if(ye(0,1)<(G<4?.9:.7)){We(0,6,64,48,1,[2,2.75,.5,1],[Be(),Be()],!0,[0,0,0],[0,.65*-m,-5],b,1,!0,!1,!0)}}if(ye(0,1)<.05){We(1,7,16,64,1,[6,1,4,1,6,1],[Jt,Qt],!0,[0,0,0],[0,0,0],Nt,1,!0)}Nt.rotation.set(0,Zt,0),b.add(Nt);let pe=[],fe=xe(0,18.999,2),ue=At+zt;xt=0;for(let t=0;t<fe;t++){let t=!1,e=ye(ue,.8),i=ye(-.4*k,.4*k);ye(0,1)>.5&&(i+=k);let s=a(Math.cos(i)*e,0,Math.sin(i)*e);if($t<2){s.multiply(a(1.35,1,1));let t=Ye(h(s.x,s.z),-Zt);s.set(t.x,s.y,t.y)}let n=Fe(s);2==n.index&&e<.65&&(t=!0);let l=.015;if(4==n.index&&(l=.15),5==n.index&&(l=.15),Math.hypot(n.position.x-0,n.position.z-0)<=n.radius+ue+l||t)t=!0;else if(pe.length>0)for(let e=0;e<pe.length;e++){Math.hypot(n.position.x-pe[e].position.x,n.position.z-pe[e].position.z)<=n.radius+pe[e].radius+l&&(t=!0)}if(!t){let t=He(n);switch(t.index){case 0:0;break;case 1:0;break;case 2:0;break;case 3:0;break;case 4:xt++;break;case 5:0;break;case 6:0}pe.push(t)}}let we,ve=r().lerp(.5,.4,(G-1)/9);if(G>3)we=Pe(G+4,ye(0,2*k),0);else{we=Pe(G+3,ye(0,0*k),ye(.35*k,.35*k));for(let t=0;t<we.length;t++)we[t].x=we[t].x*Math.sign(ye(-1,1))}for(let t=0;t<we.length;t++)we[t].z*=ye(.65,1);let Se=[];for(let t=0;t<K.length;t++)Se.push(me());let Me=0,be=function(t){let e=[];for(let i=0;i<t.length;i++){let s=[];1===t[i]&&(s=[ye(2,6),ye(.05,.1),ye(1.5,4),ye(.5,2)]),e.push(s)}return e}(K);yt=0;for(let t=0;t<G;t++){let e=rt[Me],s=ye(0,100)<.95;s&&(e=c(.3,.3,.3));let n=Oe(e),l=Ee(e),o=[n,e,l];if(ye(0,100)<2*(1+2.5*yt)&&!St&&!s&&10!=K[Me]){yt++,e=De(),n=Oe(De()),l=De();let t=De(),i=Ee(De());o=[n,e,l,t,i]}let h=Se[Me];s&&(h=c(.15,.15,.15));let r=[[ge(h),ge(h)],o],d=new i.Object3D,p=we[t].clone().multiplyScalar(G<5?.9:1);d.lookAt(p.clone().multiply(a(1,.4,1))),s&&d.lookAt(p.clone().add(a(p.x,-2,p.z))),p.multiplyScalar(ve),d.position.set(p.x,p.y,p.z);let f=new he(Y.length,K[Me],ve,r,be[Me],s,d);f.create(),Y.push(f),Me++,Me>=K.length&&(Me=0)}(function(t){let s,n,a,r,c;switch(t){case 0:s=0,n=!1,a=0,r=1,c=h(0,1);break;case 1:s=1,n=!0,a=0,r=1,c=h(0,1);break;case 2:s=0,n=!1,a=1,r=.65,c=h(0,1);break;case 3:s=1,n=!1,a=1,r=0,c=h(0,1);break;case 4:s=1,n=!1,a=0,r=1,c=h(0,1);break;case 5:s=0,n=!1,a=0,r=1.5,c=h(0,1);break;case 6:s=1,n=!1,a=0,r=1,c=h(1,1);break;case 7:s=1,n=!1,a=0,r=1.25,c=h(0,1)}let d=1;n&&(d=.4);Gt=new i.RawShaderMaterial({uniforms:{time:{value:0},cameraPos:{value:S.position},cameraAngle:{value:L.rotation.y},noiseFreq:{value:C},window:{value:q},border:{value:O},straighten:{value:s},crossHatch:{value:a},noiseScale:{value:r},outline:{value:c},headless:{value:mt},alph:{value:d},dusk:{value:H},map:{value:Q[0]},anim:{value:gt},fpsToggle:{value:1},transToggle:{value:vt}},vertexShader:"//by Ian McEwan, Ashima Arts \n precision highp float;uniform mat4 modelViewMatrix;uniform mat4 projectionMatrix;uniform mat4 viewMatrix;uniform mat4 modelMatrix;uniform float time; uniform vec2 noiseFreq;uniform float fpsToggle;uniform float transToggle;uniform vec3 cameraPos;uniform float cameraAngle;uniform vec2 window;uniform float border;uniform float anim;uniform float straighten;uniform float crossHatch;uniform float noiseScale;uniform vec2 outline;uniform float alph;uniform float dusk;uniform float headless;attribute vec3 position;attribute vec4 maxSize;attribute vec4 color;attribute vec4 frames;attribute vec3 translate;attribute vec4 randoms;attribute vec2 ss;varying float trans;varying float tI;varying vec3 vC;varying vec3 nXY;vec3 permute(vec3 x){return mod(((x*34.0)+1.0)*x,289.0);}float snoise(vec2 v){const vec4 C=vec4(0.211324865405187,0.366025403784439,-0.577350269189626,0.024390243902439);vec2 i=floor(v+dot(v,C.yy));vec2 x0=v-i+dot(i,C.xx);vec2 i1;i1=(x0.x>x0.y)?vec2(1.0,0.0):vec2(0.0,1.0);vec4 x12=x0.xyxy+C.xxzz;x12.xy-=i1;i=mod(i,289.0);vec3 p=permute(permute(i.y + vec3(0.0,i1.y,1.0))+i.x+vec3(0.0,i1.x,1.0));vec3 m=max(0.5-vec3(dot(x0,x0),dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)),0.0); m=m*m;m=m*m;vec3 x=2.0*fract(p*C.www)-1.0;vec3 h=abs(x)-0.5;vec3 ox=floor(x+0.5);vec3 a0=x-ox;m*=1.79284291400159-0.85373472095314*(a0*a0+h*h);vec3 g;g.x=a0.x*x0.x+h.x*x0.y;g.yz=a0.yz*x12.xz+h.yz*x12.yw;return 130.0*dot(m,g);}float sc(float t,float waveLength,float power,float startAtZero){return pow(clamp(0.5*sin(waveLength*3.1415926538*t+startAtZero*3.1415926538)+0.5,0.,1.),power);}vec2 r2d(vec2 v,float r){float s=sin(r);float c=cos(r);return vec2(v.x*c-v.y*s,v.x*s+v.y*c);}float gt(float x,float y){return max(sign(x-y),0.0);}float hd(vec3 from,vec3 to){float dx=abs(to.x-from.x);float dy=abs(to.y-from.y);float dz=abs(to.z-from.z);float d=dx+dy+dz;float md=max(dz,max(dy,dx));return 0.394*d+0.554*md;}void main(){vec3 p0=position;vec3 t0=translate;float t=clamp((clamp(time-frames.x, 0., 10000.)/(frames.y-frames.x)),0.,1.);float l=(mod(time-frames.x,frames.z)/frames.z);float sOL=1.-sc(l,2.6666,200.,0.5);sOL=mix(t,sOL,clamp((time/1200.),0.,1.));sOL*=(1.-gt(l,0.75));sOL=mix(t,sOL,gt(frames.w,0.));sOL=mix(t,sOL,clamp((time/600.),0.,1.));sOL=sOL*gt(randoms.z,1.-fpsToggle);sOL=mix(1.,sOL,anim);vec2 r=r2d(t0.xz,-cameraAngle*randoms.x);float pOL=mix(sc(l,1.3333,400.,1.5),0.,headless);pOL=mix(0.,pOL,anim);float mD=mix(0.,pOL,gt(frames.w,0.));vec3 tt=vec3(r.x,t0.y-mD*0.1*(randoms.z*0.5+0.5),r.y);nXY=vec3(p0.x + 0.5,p0.y + 0.5,randoms.z);vec3 mP=vec3(p0.x,p0.y,p0.z);float x=(time*mix(0.0011,0.,headless)+(randoms.w+randoms.z*0.05))-floor((time*0.0011+(randoms.w+randoms.z*0.05)));float y=mix(1.,1.-sc(x,2.,30.,0.5),anim);float ps=gt(x,0.5);float pv=mix(1.,-1.,ps);float pd=(mP.x-pv)*y;mP.x=pv+pd;vec4 dp=modelMatrix*vec4(tt,1.);float cd=hd(dp.xyz,cameraPos);float df=max(min((cd*0.087489*2.),mix(3.,2.,maxSize.w)),mix(0.,1.,pow(clamp(cd -1.4,0.,1.),1.2)));vec3 lp=mix(vec3(mP*maxSize.xyz*vec3(y,1.,1.)*sOL*df), mP*maxSize.xyz*df,headless);vec3 tlp=mix(vec3(lp.x*0.925,0.,lp.z * 0.8),vec3(0.,0.,0.),straighten)+tt;vec4 mvdp=modelViewMatrix*vec4(tlp,1.);vec4 glpp=projectionMatrix*mvdp;vec3 ndc=glpp.xyz/glpp.w;float vt=time*0.00035;vec3 vco=vec3((ndc.xy*0.5+0.5),1);vec3 vpcp=vec3(window.x,window.y,1.)*vco*noiseFreq.x+vec3(vt*0.5,vt*0.5,vt);float an=snoise(vpcp.xy);lp.y+=(an-.25)*.015;lp.x+=(an+.25)*.005;an*=noiseScale;vec3 rLP=vec3(r2d(lp.xy,an*noiseFreq.y+0.5*3.1415926538*gt(randoms.y,0.5)*crossHatch),0.);vec4 mvP=modelViewMatrix*vec4(tt,1.);float e=border;vec3 sslp=tt;vec4 mvss=modelViewMatrix*vec4(sslp,1.);vec4 glss=projectionMatrix*mvss;vec3 ndss=glss.xyz/glss.w;float f=(window.x-(window.y-(e*window.y)))/window.x;float wxx=f-0.065;float wx=clamp(abs(ndss.x)-wxx,0.,1.);float txMod=1.-(wx/0.075);float wyy=e-0.065;float wy=clamp(abs(ndss.y)-wyy,0.,1.);float tyMod=1.-(wy/0.075);mvP.xyz+=rLP;mvP.xyz+=mvP.xyz*(gt(abs(ndss.x),f)+gt(abs(ndss.y),e))*1000.;float vig=pow((hd(vec3(ndc.xy*0.5,0.) / 1.2, vec3(0.,0.,0.))) * 2., 2.5);float xc=(p0.x/0.5)+0.5;float yc=abs(p0.y)/0.5;float iO=mix(0.,clamp(gt(yc,0.8),0.,1.),outline.x);vC=mix(color.xyz,color.xyz+mix(vec3(0.2,0.2,0.2),vec3(-0.275,-0.275,-0.275),dusk),vig)*(xc*0.035+0.965);vC=mix(vC*0.625,vC,1.-iO);vC=mix(vC,vC*0.75,pOL);trans=mix(1.,alph*(txMod*tyMod*0.75+ 0.25),transToggle);tI=color.w;gl_Position=projectionMatrix*mvP;}",fragmentShader:e?l+o:l+"nc=nc+vec3(random(nXY.xy)*0.082-0.041);"+o,depthTest:!0,depthWrite:!0,transparent:!0}),mt<.5&&e&&1!=t&&(Gt.transparent=!1,vt=0,Gt.uniforms.transToggle.value=vt)})(F),0==mt&&Ge();A=new i.WebGLRenderer({antialias:!0,alpha:!0,preserveDrawingBuffer:!0}),e?A.setPixelRatio(.65*window.devicePixelRatio):A.setPixelRatio(window.devicePixelRatio);A.setSize(window.innerWidth-2*f,window.innerHeight-2*f),oe=dt,x.appendChild(A.domElement),x.addEventListener("pointerdown",Ve),document.addEventListener("keydown",(t=>{82==t.keyCode&&(bt=!bt),65==t.keyCode&&(gt=Math.abs(gt-1),Gt.uniforms.anim.value=gt),67==t.keyCode&&$e(),72==t.keyCode&&$e(!0)})),x.addEventListener("touchstart",Qe),x.addEventListener("touchend",Ze),x.addEventListener("touchmove",Ne),x.addEventListener("mousewheel",Ke,{passive:!1}),window.addEventListener("resize",Ue)}(),function t(i){requestAnimationFrame(t),bt&&(Vt+=.04*tt);if(L.rotation.y-=.05*(Vt+L.rotation.y),tt=.016667,mt<.5&&K>10){let t=performance.now();tt=.001*(t-pt);let i=1/tt;se.enqueue(i),ct+=i,se.getCount()>45&&(ct-=se.dequeue(),at=ct/se.getCount()),at=r().clamp(at,0,60),at<28?(ft>80&&!Ct&&(1!=F&&(Gt.transparent=!1,vt=0,Gt.uniforms.transToggle.value=vt),e||(A.setPixelRatio(.65*Wt),Gt.fragmentShader=l+o),Gt.needsUpdate=!0,Ct=!0),ft++):ft>0&&ft--,pt=t}oe<100&&(ht++,ht%15==0&&oe++);if(null!=Gt){mt>0?Gt.uniforms.time.value=it:(_=Math.floor(60*performance.now()*.001),Gt.uniforms.time.value=_);let t=a();S.getWorldPosition(t),Gt.uniforms.cameraPos.value=t,Gt.uniforms.cameraAngle.value=L.rotation.y,Gt.uniforms.window.value=q,Gt.uniforms.border.value=O}if(mt>0){if(K>5&&!Pt){let t=Math.floor(J.length/2*r().clamp((K-5)/10,0,1));for(let e=0;e<t;e++){let t=2*e;J[t].visible=!1,J[t+1].visible=!0}for(let t=0;t<V.length;t++)V[t].create();Nt.length==nt&&st++,st>=5&&(Pt=!0),nt=Nt.length}if(Pt){for(let t=0;t<J.length;t++)J[t].visible=!1;null==Tt&&Ge(),it++}}else if(K>5){let t=!0;for(let e=0;e<V.length;e++)if(V[e].normalizedLife<1){t=!1;break}if(t&&null==ie.peek())null!=qt&&(qt=null),Yt=null,It=null,jt=null,Ut=null;else{Tt.attributes.translate.needsUpdate=!0,Tt.attributes.maxSize.needsUpdate=!0,Tt.attributes.frames.needsUpdate=!0,Tt.attributes.color.needsUpdate=!0,Tt.attributes.randoms.needsUpdate=!0;for(let t=0;t<V.length;t++)V[t].create();se.getCount()>=45*.333&&function(){let t=r().clamp(Math.pow(oe+1,3),0,512),e=at>25?1:0;for(let i=0;i<t&&null!=ie.peek();i++){let t=ie.dequeue();qt[3*et+0]=t.p.x,qt[3*et+1]=t.p.y,qt[3*et+2]=t.p.z,Yt[4*et+0]=t.mS.x,Yt[4*et+1]=t.mS.y,Yt[4*et+2]=t.mS.z,Yt[4*et+3]=t.mS.w,It[4*et+0]=K,It[4*et+1]=K+ye(0,40,1)*e,It[4*et+2]=t.dO,It[4*et+3]=t.dE,jt[4*et+0]=t.c[0],jt[4*et+1]=t.c[1],jt[4*et+2]=t.c[2],jt[4*et+3]=t.c[3],Ut[4*et+0]=t.ss,Ut[4*et+1]=t.r[1],Ut[4*et+2]=t.r[2],Ut[4*et+3]=t.r[3],et%32768==0&&(et%=32768,Ge()),et++}}()}}S.lookAt(M),A.clear(),A.render(b,S),K++}();