for(_=';i++)~eightG+=3F=g.EC[D[k+C()in24anim=2*),--;);for(i==0S;iaddCube(n)(y)+]=01c.stroke=w.ner+=*T+;]=A=[]; 00m=I[p++],c.function{]/(Dp+2]+f)+]*meTo(D2*m],D2*m+1])".split("")0;>i~;k0==k%*3&&(w=wdow;hHG;wWidth;g=Math;mCEcos;mSEs;TErandom;M=512;f=2048;S=P=W=e=0;A H C I =var d=1+5*o;k=S/3;m="111111A[S+2*(m[i]-0.5)*d;l="13322445514662577367I[P+k+(l[i]|0)}o=2;o;=0.4;setInterval(eWy=e;n=W;b.style.background="#444";a.width=w;a.hG=hy-22C-A[kS,Dk2S+A[kC,kFn+H11C-2S,H21S+2C,kF;k=pM*Dpw/2,M*H[p+1h/2,pFp=0;i<P/~{Style="#fff";c.globalAlpha=i/(P/);c.begPathk=;kmov,l;}},20);';g=/[^ -CH-}]/.exec(_);)with(_.split(g))_=join(shift());eval(_)
Zm9yKF89JztpKyspfmVpZ2h0Rys9M0Y9Zy5FQ1tEW2srH0MfHigpHWluHDI0G2FuaW0aPTIqGiksGS0tOykYO2ZvcigXF2k9Fj0wFlM7aRgVYWRkQ3ViZRQobikTKHkpEitdPREwMRBjLnN0cm9rZQ89dy4cbmVyDis9GipUHSsaOwxdPUEfCz1bXTsJMDAIbT1JW3ArK10sYy4HZnVuY3Rpb24dewZdLyhEcCsyXStmKSsFXSptBGVUbyhEMiptXSxEMiptKzFdKQMiLnNwbGl0KCIiKRYwOxs+aX4CO2sVMD09ayUbKjMmJigBdz13HGRvdztoDkhHO3cOV2lkdGg7Zz1NYXRoO21DRWNvczttU0VzHDtURXJhbmRvbTtNPTUxMjtmPTIwNDg7Uz1QPVc9ZT0wO0EJSAlDCUkJFD0GdmFyIGQ9MQgrNSpvO2s9Uy8zO209IggQCBAQMQgQMRAQMTExMQJBW1MrETIqKG1baV0tMC41KSpkO2w9IhAxMzMyMgg0NDU1MTQ2NjI1NzczNjcCSVtQKxFrKyhsW2ldfDApfRdvPTIIO28YFB07Gj0wLgg0O3NldEludGVydmFsKAZlDFcMeT1lO249VztiLnN0eWxlLmJhY2tncm91bmQ9IiM0NDQiO2Eud2lkdGg9dzthLmhHPWgBeS0ZHjILMgRDEi1BW2sEUxIsRGsLMgRTEitBW2sEQxIsa0YBbisZSB8xCzEEQxMtHjIEUxMsSB8yCzEEUxMrHjIEQxMsa0Y7az1wFR4RTSpEcAV3LzIsHhFNKkhbcCsxBWgvMixwRhZwPTA7aTxQLxt+ew9TdHlsZT0iI2ZmZiI7Yy5nbG9iYWxBbHBoYT1pLyhQLxspO2MuYmVnHFBhdGgdF2s9GztrGAdtb3YDLAdsHAM7Dx19fSwyMCk7JztnPS9bXiAtQ0gtfV0vLmV4ZWMoXyk7KXdpdGgoXy5zcGxpdChnKSlfPWpvaW4oc2hpZnQoKSk7ZXZhbChfKQ==
w=window
h=w.innerHeight
w=w.innerWidth
_=Math
mC=_.cos
mS=_.sin
R=_.random
F=512
Z=2048
N=L=X=Y=0
A=[]
B=[]
C=[]
D=[]
addCube=function(s) {
k=N/3
j='000100010110001101011111'.split('')
for(i=0;i<24;i++) {
A[N++]=(j[i]-.5)*2*s
}
l='011332200445514662577367'.split('')
for(i=0;i<24;i++) {
D[L++]=k+(l[i]|0)
}
}
for(z=200;z--;){
addCube(100+z*5)
}
anim=.004
setInterval(function(){
Y+=anim*R()+anim
X+=anim*R()+anim
y=Y
x=X
//X+=.01
b.style.background='#444'
//clear screen
a.width=w
a.height=h
k=0
//dy rotation
for(i=N;i--;) {
if(k%24*3==0) y-=anim*2
C[k+2]=A[k+2]*mC(y)-A[k]*mS(y)
C[k ]=A[k+2]*mS(y)+A[k]*mC(y)
k+=3
}
k=0
//dx rotation
for(i=N;i--;) {
if(k%24*3==0) x+=anim*2
B[k+1]=A[k+1]*mC(x)-C[k+2]*mS(x)
B[k+2]=A[k+1]*mS(x)+C[k+2]*mC(x)
k+=3
}
//transform 3d-2d
k=p=0
for(i=N;i--;) {
C[k++]=F*C[p ]/(C[p+2]+Z)+w/2
C[k++]=F*B[p+1]/(C[p+2]+Z)+h/2
p+=3
}
p=0
for(i=0;i<L/24;i++) {
c.strokeStyle="#fff"
c.globalAlpha=(i/(L/24))
c.beginPath()
for(k=24;k--;){
j=D[p++]
c.moveTo(C[j*2],C[j*2+1]);
j=D[p++]
c.lineTo(C[j*2],C[j*2+1]);
}
c.stroke()
}
}, 20)