k=c;c=document.getElementsByTagName('canvas')[0];
c.width=c.clientWidth/4;c.height=c.clientHeight/4;
r=0;s=1;n=40;
cw=c.width;cx=cw/2;
ch=c.height;cy=ch/2;
d=cw/60;
omd=function(e){px=e.pageX;py=e.pageY;d=1;};
b.onmousedown=omd;
b.addEventListener('touchstart',function(e){omd(e.touches[0]);});
omm=function(e){if(d){cx+=(e.pageX-px)/200;cy+=(e.pageY-py)/200;}};
b.onmousemove=omm;
b.addEventListener('touchmove',function(e){omm(e.touches[0]);});
omu=function(){d=0;};
b.onmouseup=omu;
b.addEventListener('touchend',omu);
k.fillStyle="white";
k.fillRect(0,0,cw,ch);
k.fillStyle="black";
for(i=0;i<n;i++) {
k.save();
k.translate(cx,cy);
k.rotate(((Math.PI*2)/n)*i);
k.beginPath();
k.moveTo(0,0);
k.lineTo(-d,cw);
k.lineTo(+d,cw);
k.lineTo(0,0);
k.fill();
k.restore();
}
s=1;d=0;
setInterval(function(){
k.save();
k.translate(cx,cy);
k.rotate(r);
k.translate(-cx,-cy);
r+=0.0005;
k.drawImage(c,s,s,cw-s-s,ch-s-s);
k.restore();
},30);
az1jO2M9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBdOw0KYy53aWR0aD1jLmNsaWVudFdpZHRoLzQ7Yy5oZWlnaHQ9Yy5jbGllbnRIZWlnaHQvNDsNCnI9MDtzPTE7bj00MDsNCmN3PWMud2lkdGg7Y3g9Y3cvMjsNCmNoPWMuaGVpZ2h0O2N5PWNoLzI7DQpkPWN3LzYwOw0Kb21kPWZ1bmN0aW9uKGUpe3B4PWUucGFnZVg7cHk9ZS5wYWdlWTtkPTE7fTsNCmIub25tb3VzZWRvd249b21kOw0KYi5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JyxmdW5jdGlvbihlKXtvbWQoZS50b3VjaGVzWzBdKTt9KTsNCm9tbT1mdW5jdGlvbihlKXtpZihkKXtjeCs9KGUucGFnZVgtcHgpLzIwMDtjeSs9KGUucGFnZVktcHkpLzIwMDt9fTsNCmIub25tb3VzZW1vdmU9b21tOw0KYi5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLGZ1bmN0aW9uKGUpe29tbShlLnRvdWNoZXNbMF0pO30pOw0Kb211PWZ1bmN0aW9uKCl7ZD0wO307DQpiLm9ubW91c2V1cD1vbXU7DQpiLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJyxvbXUpOw0Kay5maWxsU3R5bGU9IndoaXRlIjsNCmsuZmlsbFJlY3QoMCwwLGN3LGNoKTsNCmsuZmlsbFN0eWxlPSJibGFjayI7DQpmb3IoaT0wO2k8bjtpKyspIHsNCiBrLnNhdmUoKTsNCiBrLnRyYW5zbGF0ZShjeCxjeSk7DQogay5yb3RhdGUoKChNYXRoLlBJKjIpL24pKmkpOw0KIGsuYmVnaW5QYXRoKCk7DQogay5tb3ZlVG8oMCwwKTsNCiBrLmxpbmVUbygtZCxjdyk7DQogay5saW5lVG8oK2QsY3cpOw0KIGsubGluZVRvKDAsMCk7DQogay5maWxsKCk7DQogay5yZXN0b3JlKCk7DQp9DQpzPTE7ZD0wOw0Kc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsNCiBrLnNhdmUoKTsNCiBrLnRyYW5zbGF0ZShjeCxjeSk7DQogay5yb3RhdGUocik7DQogay50cmFuc2xhdGUoLWN4LC1jeSk7DQogcis9MC4wMDA1Ow0KIGsuZHJhd0ltYWdlKGMscyxzLGN3LXMtcyxjaC1zLXMpOw0KIGsucmVzdG9yZSgpOw0KfSwzMCk7DQo=
Original source not submitted