class Graphics{static init(){if(Graphics.canvas!==undefined)Graphics.canvas.remove();Graphics.canvas=document.createElement("canvas");Graphics.canvas.width=Math.floor(document.documentElement.clientWidth/pixelSize);Graphics.canvas.height=Math.floor(document.documentElement.clientHeight/pixelSize);Graphics.canvas.style.position="absolute";Graphics.canvas.style.imageRendering="pixelated";Graphics.canvas.style.transformOrigin="0 0";Graphics.canvas.style.transform="scale("+pixelSize+")";Graphics.context=Graphics.canvas.getContext("2d");Graphics.tempCanvas=document.createElement("canvas");Graphics.tempCanvas.width=Math.floor(document.documentElement.clientWidth/pixelSize);Graphics.tempCanvas.height=Math.floor(document.documentElement.clientHeight/pixelSize);Graphics.tempContext=Graphics.tempCanvas.getContext("2d");Graphics.tempContext.fillStyle="black";document.body.style.margin="0px";document.body.appendChild(Graphics.canvas)}static clear(){Graphics.context.clearRect(0,0,Graphics.canvas.width,Graphics.canvas.height)}static drawPixel(x,y){x=Math.floor(x);y=Math.floor(y);Graphics.fillRect(x,y,1,1)}static drawHLine(x,y,length){x=Math.floor(x);y=Math.floor(y);length=Math.floor(length);Graphics.fillRect(x,y,length,1)}static drawVLine(x,y,length){x=Math.floor(x);y=Math.floor(y);length=Math.floor(length);Graphics.fillRect(x,y,1,length)}static fillRect(x,y,w,h){x=Math.floor(x);y=Math.floor(y);w=Math.floor(w);h=Math.floor(h);Graphics.context.fillRect(x,y,w,h)}static drawText(text,x,y,textStyle,outline,animationType,animationTime){text=text.toString();text=text.replaceAll("&EURO;","a");text=text.replaceAll("&POUND;","b");text=text.replaceAll("&YEN;","c");let textWidth=0;for(let i=0;i=i?waveOffsets[Math.max(Math.floor(animationTime)-i,0)%6]:0}x=originalX;Graphics.tempContext.clearRect(0,0,Graphics.tempCanvas.width,Graphics.tempCanvas.height);for(let i=0;i=text.length)break;if(text[i]==" ")x+=4;else{let char=Math.min(text[i].charCodeAt(0)-33,94);for(let j=0;j<7*9;j++){if(outline&&Graphics.fonts[textStyle].data[char*7*9+j]===2){let offsetY=animationType==="appear"&&i===textLength-1?1:animationType==="wave"?waveSteps[i]:0;let tempColor=Graphics.context.fillStyle;Graphics.context.fillStyle=Graphics.outlineColor;Graphics.tempContext.fillRect(x+j%7,y+Math.floor(j/7)-offsetY,1,1);Graphics.context.fillStyle=tempColor}}x+=Graphics.fonts[textStyle].widths[char]}}Graphics.setAlpha(outline==1?1:.2);Graphics.context.drawImage(Graphics.tempCanvas,0,0);Graphics.setAlpha(1);x=originalX;for(let i=0;i=text.length)break;if(text[i]==" ")x+=4;else{let char=Math.min(text[i].charCodeAt(0)-33,94);for(let j=0;j<7*9;j++){let offsetY=animationType==="appear"&&i===textLength-1?1:animationType==="wave"?waveSteps[i]:0;if(Graphics.fonts[textStyle].data[char*7*9+j]===1)Graphics.drawPixel(x+j%7,y+Math.floor(j/7)-offsetY)}x+=Graphics.fonts[textStyle].widths[char]}}}static setAlpha(value){Graphics.context.globalAlpha=value}static setColor(color){Graphics.context.strokeStyle=color.hex;Graphics.context.fillStyle=color.hex}static setOutlineColor(color){Graphics.outlineColor=color.hex}}Graphics.canvas;Graphics.context;Graphics.tempCanvas;Graphics.tempContext;Graphics.outlineColor="black";Graphics.fonts={narrow:{data:[0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,2,2,1,2,1,2,2,2,1,1,1,1,1,2,2,2,1,2,1,2,2,2,1,1,1,1,1,2,2,2,1,2,1,2,2,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,2,2,0,2,1,1,1,1,2,2,1,2,1,2,2,2,0,2,1,1,1,2,0,2,2,2,1,2,1,2,2,1,1,1,1,2,0,2,2,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,2,2,1,2,0,2,1,2,0,2,0,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,0,2,0,2,1,2,0,2,1,2,2,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,1,2,2,2,0,2,1,1,2,1,2,2,1,2,2,1,2,0,0,2,1,1,2,1,2,0,0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,2,1,2,2,0,0,2,1,1,1,2,0,0,0,2,1,2,0,0,0,2,1,2,1,2,0,0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,2,2,1,2,2,0,0,2,1,1,1,2,0,0,2,2,1,2,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,2,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,2,0,0,0,2,1,1,2,0,0,0,2,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,1,2,0,0,0,2,2,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,2,2,0,0,2,1,1,1,2,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,1,2,0,0,0,2,2,2,1,2,0,0,0,2,1,2,0,0,0,2,2,2,1,2,0,0,2,1,1,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,2,0,0,0,2,1,1,2,0,0,2,1,2,1,2,0,0,2,1,1,1,2,0,0,2,2,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,2,0,0,2,1,2,2,2,0,0,2,1,1,2,0,0,0,2,2,2,1,2,0,0,2,1,1,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,2,1,1,2,0,0,2,1,2,2,2,0,0,2,1,1,2,0,0,0,2,1,2,1,2,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,2,0,0,2,2,2,1,2,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,1,2,0,0,2,2,1,2,2,0,0,2,1,2,1,2,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,1,2,0,0,0,2,1,1,2,0,0,2,2,2,1,2,0,0,2,1,1,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,2,0,0,2,2,2,2,2,0,0,2,1,1,1,2,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,1,2,0,0,0,2,2,2,1,2,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,1,2,0,0,2,1,2,2,1,2,2,1,2,2,1,1,2,2,1,2,1,2,1,2,2,1,2,2,1,1,2,0,2,1,2,2,2,2,0,0,2,1,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,1,2,0,0,2,1,1,1,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,1,2,0,0,0,2,1,2,1,2,0,0,2,1,1,2,0,0,0,2,1,2,1,2,0,0,2,1,1,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,2,1,1,2,0,0,2,1,2,2,2,0,0,2,1,2,0,0,0,0,2,1,2,2,2,0,0,0,2,1,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,1,2,0,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,1,1,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,2,0,0,2,1,2,2,2,0,0,2,1,1,2,0,0,0,2,1,2,2,2,0,0,2,1,1,1,2,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,2,0,0,2,1,2,2,2,0,0,2,1,1,2,0,0,0,2,1,2,2,0,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,2,1,1,2,0,0,2,1,2,2,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,0,2,1,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,1,1,1,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,2,2,2,1,2,0,0,2,1,1,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,1,1,2,0,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,2,2,0,0,2,1,1,1,2,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,2,2,2,1,2,0,2,1,2,2,1,1,2,1,1,2,2,1,2,1,2,1,2,2,1,2,2,2,1,2,2,1,2,0,2,1,2,2,2,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,2,2,2,0,2,1,2,2,1,2,0,2,1,1,2,1,2,0,2,1,2,1,1,2,0,2,1,2,2,1,2,0,2,1,2,2,1,2,0,2,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,1,2,0,0,0,2,1,2,1,2,0,0,2,1,1,2,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,1,2,0,0,0,2,1,2,1,2,0,0,2,1,1,2,0,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,2,1,1,2,0,0,2,1,2,2,2,0,0,0,2,1,2,0,0,0,2,2,2,1,2,0,0,2,1,1,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,2,0,0,2,2,1,2,2,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,0,2,1,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,2,1,2,0,2,1,2,2,1,2,2,2,1,2,2,1,2,1,2,1,2,2,1,1,2,1,1,2,2,1,2,0,2,1,2,2,2,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,2,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,2,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,2,0,0,2,2,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,2,2,0,0,2,1,1,1,2,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,2,1,1,2,0,0,0,2,1,2,2,0,0,0,2,1,2,0,0,0,0,2,1,2,2,0,0,0,2,1,1,2,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,2,1,1,2,0,0,0,2,2,1,2,0,0,0,0,2,1,2,0,0,0,2,2,1,2,0,0,0,2,1,1,2,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,1,2,0,0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,2,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,2,1,1,1,2,2,2,1,2,2,2,2,2,1,1,1,2,0,0,2,2,1,2,2,0,0,2,1,1,1,2,0,0,2,2,1,2,2,2,2,0,0,2,1,1,1,2,0,0,0,2,2,2,0,0,0,0,2,2,0,0,0,0,2,1,1,2,0,0,2,1,2,2,1,2,2,2,1,2,2,2,2,2,1,1,1,2,0,0,2,2,1,2,2,0,0,0,2,1,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,0,2,2,0,0,0,2,2,2,1,2,2,2,1,2,0,2,1,2,1,2,0,0,2,2,1,2,2,0,0,2,1,1,1,2,0,0,2,2,1,2,2,0,0,2,1,1,1,2,0,0,2,2,1,2,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,2,1,1,2,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,2,1,1,2,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,0,0,2,1,2,1,2,0,2,1,2,1,2,0,0,2,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,1,2,2,2,1,2,2,1,2,0,2,1,2,2,1,2,0,2,1,2,2,1,2,0,2,1,2,2,1,2,2,2,1,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2],widths:[2,4,6,6,6,6,2,3,3,4,4,3,4,2,4,4,3,4,4,4,4,4,4,4,4,2,3,4,4,4,4,6,4,4,4,4,4,4,4,4,2,4,4,4,6,5,4,4,4,4,4,4,4,4,6,4,4,4,3,4,3,4,4,3,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,4,5,6]},wide:{data:[0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,2,1,2,0,0,2,1,2,1,2,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,2,2,1,2,1,2,2,2,1,1,1,1,1,2,2,2,1,2,1,2,2,2,1,1,1,1,1,2,2,2,1,2,1,2,2,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,2,2,0,2,1,1,1,1,2,2,1,2,1,2,2,2,0,2,1,1,1,2,0,2,2,2,1,2,1,2,2,1,1,1,1,2,0,2,2,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,2,2,1,2,0,2,1,2,0,2,0,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,0,2,0,2,1,2,0,2,1,2,2,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,1,2,2,2,0,2,1,1,2,1,2,2,1,2,2,1,2,0,0,2,1,1,2,1,2,0,0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,2,2,1,2,2,2,2,1,1,1,1,1,2,0,2,2,1,2,2,0,0,2,1,2,1,2,0,0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,0,0,2,2,2,1,2,2,2,2,1,1,1,1,1,2,2,2,2,1,2,2,2,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,2,1,1,1,2,0,2,1,2,2,2,1,2,2,1,2,0,2,1,2,2,1,2,2,2,1,2,0,2,1,1,1,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,2,0,0,0,2,1,1,2,0,0,0,2,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,1,2,0,2,2,2,2,2,1,2,0,2,1,1,1,2,0,2,1,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,1,2,0,2,2,2,2,2,1,2,0,2,1,1,1,2,2,2,2,2,2,2,1,2,2,1,1,1,1,2,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,2,0,0,0,2,1,1,2,0,0,2,1,2,1,2,2,2,1,1,1,1,1,2,2,2,2,2,1,2,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,1,2,2,2,2,2,2,1,1,1,1,2,0,2,2,2,2,2,1,2,2,1,1,1,1,2,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,2,1,1,1,1,2,2,1,2,2,2,2,2,2,1,1,1,1,2,0,2,1,2,2,2,1,2,0,2,1,1,1,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,2,1,1,1,2,0,2,1,2,2,2,1,2,0,2,1,1,1,2,0,2,1,2,2,2,1,2,0,2,1,1,1,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,2,1,1,1,2,0,2,1,2,2,2,1,2,0,2,1,1,1,1,2,2,2,2,2,2,1,2,2,1,1,1,1,2,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,2,1,1,1,1,2,0,2,2,2,2,2,1,2,0,0,2,1,1,2,0,0,0,2,2,2,0,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,1,2,0,0,2,1,2,2,1,2,2,1,2,2,1,1,2,2,1,2,1,2,1,2,2,1,2,2,1,1,2,0,2,1,2,2,2,2,0,0,2,1,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,2,1,1,1,2,0,2,1,2,2,2,1,2,2,1,1,1,1,1,2,2,1,2,2,2,1,2,2,1,2,0,2,1,2,2,2,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,1,2,0,2,1,2,2,2,1,2,2,1,1,1,1,2,0,2,1,2,2,2,1,2,2,1,1,1,1,2,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,2,1,1,1,1,2,2,1,2,2,2,2,2,2,1,2,0,0,0,0,2,1,2,2,2,2,2,0,2,1,1,1,1,2,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,1,2,0,2,1,2,2,2,1,2,2,1,2,0,2,1,2,2,1,2,2,2,1,2,2,1,1,1,1,2,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,1,2,2,2,2,2,2,1,1,1,1,2,0,2,1,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,1,2,2,2,2,2,2,1,1,1,1,2,0,2,1,2,2,2,2,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,2,1,1,1,1,2,2,1,2,2,2,2,2,2,1,2,2,1,1,2,2,1,2,2,2,1,2,0,2,1,1,1,1,2,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,2,1,2,0,2,1,2,2,1,2,2,2,1,2,2,1,1,1,1,1,2,2,1,2,2,2,1,2,2,1,2,0,2,1,2,2,2,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,2,2,0,0,2,1,2,2,1,2,2,2,1,2,0,2,1,1,1,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,2,2,2,1,2,0,2,1,2,2,1,2,2,1,2,0,2,1,1,1,2,0,0,2,1,2,2,1,2,0,2,1,2,0,2,1,2,2,2,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,2,2,2,1,2,0,2,1,2,2,1,1,2,1,1,2,2,1,2,1,2,1,2,2,1,2,2,2,1,2,2,1,2,0,2,1,2,2,2,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,2,2,2,2,1,2,0,2,1,2,2,1,1,2,2,1,2,2,1,2,1,2,1,2,2,1,2,2,1,1,2,2,1,2,0,2,1,2,2,2,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,2,1,1,1,2,0,2,1,2,2,2,1,2,2,1,2,0,2,1,2,2,1,2,2,2,1,2,0,2,1,1,1,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,1,2,0,2,1,2,2,2,1,2,2,1,1,1,1,2,0,2,1,2,2,2,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,2,1,1,1,2,0,2,1,2,2,2,1,2,2,1,2,0,2,1,2,2,1,2,2,1,2,0,0,2,1,1,2,1,2,0,0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,2,1,1,1,1,2,0,2,1,2,2,2,1,2,2,1,1,1,1,2,0,2,1,2,2,2,1,2,2,1,2,0,2,1,2,2,2,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,2,1,1,1,1,2,2,1,2,2,2,2,2,0,2,1,1,1,2,0,2,2,2,2,2,1,2,2,1,1,1,1,2,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,1,2,2,2,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,2,1,2,0,2,1,2,2,1,2,0,2,1,2,2,1,2,0,2,1,2,2,1,2,2,2,1,2,0,2,1,1,1,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,2,1,2,0,2,1,2,2,1,2,0,2,1,2,2,1,2,0,2,1,2,0,2,1,2,1,2,0,0,0,2,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,1,2,2,2,1,2,2,1,2,2,2,1,2,2,1,2,1,2,1,2,2,1,1,2,1,1,2,2,1,2,0,2,1,2,2,2,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,2,2,2,1,2,0,2,1,2,0,2,1,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,1,2,0,2,1,2,0,2,1,2,2,2,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,2,2,2,1,2,0,2,1,2,0,2,1,2,1,2,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,1,2,0,0,0,2,1,2,0,0,0,2,1,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,2,1,1,2,0,0,0,2,1,2,2,0,0,0,2,1,2,0,0,0,0,2,1,2,2,0,0,0,2,1,1,2,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,2,1,1,2,0,0,0,2,2,1,2,0,0,0,0,2,1,2,0,0,0,2,2,1,2,0,0,0,2,1,1,2,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,1,2,0,0,0,2,1,2,1,2,0,0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,2,1,1,1,2,2,2,1,2,2,2,2,2,1,1,1,2,0,0,2,2,1,2,2,0,0,2,1,1,1,2,0,0,2,2,1,2,2,2,2,0,0,2,1,1,1,2,0,0,0,2,2,2,0,0,0,0,2,2,0,0,0,0,2,1,1,2,0,0,2,1,2,2,1,2,2,2,1,2,2,2,2,2,1,1,1,2,0,0,2,2,1,2,2,0,0,0,2,1,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,0,2,2,0,0,0,2,2,2,1,2,2,2,1,2,0,2,1,2,1,2,0,0,2,2,1,2,2,0,0,2,1,1,1,2,0,0,2,2,1,2,2,0,0,2,1,1,1,2,0,0,2,2,1,2,2,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,2,1,1,2,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,1,2,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,1,2,0,0,0,0,0,2,1,2,0,0,0,0,2,1,1,2,0,0,0,2,1,2,0,0,0,2,1,2,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,0,0,2,1,2,1,2,0,2,1,2,1,2,0,0,2,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,1,2,2,2,1,2,2,1,2,0,2,1,2,2,1,2,0,2,1,2,2,1,2,0,2,1,2,2,1,2,2,2,1,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2],widths:[2,4,6,6,6,6,2,3,3,6,6,3,6,3,6,6,3,6,6,6,6,6,6,6,6,3,3,4,6,4,6,6,6,6,6,6,6,6,6,6,2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,3,6,3,4,6,3,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,4,5,6]}};class Math2{static clamp(value,min,max){return Math.min(Math.max(value,min),max)}static lerp(start,end,time){time=Math2.clamp(time,0,1);return start+(end-start)*time}static smoothStep(start,end,time){time=Math2.clamp(time,0,1);return Math2.lerp(start,end,time<.5?2*time*time:1-Math.pow(-2*time+2,2)/2)}}class Color{constructor(value1,value2,value3){if(Number.isInteger(value1)&&Number.isInteger(value2)&&Number.isInteger(value3)){this.r=value1;this.g=value2;this.b=value3;this.hex="#"+((1<<24)+(this.r<<16)+(this.g<<8)+this.b).toString(16).slice(1)}else{this.hex=value1;this.r=parseInt(value1[1].toString()+value1[2].toString(),16);this.g=parseInt(value1[3].toString()+value1[4].toString(),16);this.b=parseInt(value1[5].toString()+value1[6].toString(),16)}}static lerp(start,end,time){time=Math2.clamp(time,0,1);let r=start.r+Math.floor((end.r-start.r)*time);let g=start.g+Math.floor((end.g-start.g)*time);let b=start.b+Math.floor((end.b-start.b)*time);return new Color(r,g,b)}}Color.white=new Color("#ffffff");Color.black=new Color("#000000");class Time{}Time.time=0;Time.deltaTime=0;let pixelSize;let appearStyle;let showTitle;let numbersAppearance;let numbersPrefixText;let numbersInfixText;let numbersSuffixText;let progressDurationType;let progressDurationTime;let allowGoalOverflow;let barFillColorStyle;let barFillColor1;let barFillColor2;let barFillColor3;let barBorderColor;let textColor;let textStyle;let ProgressState={notStarted:0,titleAppearing:1,barAppearing:2,numberAppearing:3,idling:4,moving:5};let progressState=ProgressState.notStarted;let progressTimer=0;let barFillAnimationTimer=0;let waveAnimationTimer=0;let barFillGlowIntensity=0;let oldTimeStamp=0;function gameLoop(timeStamp){Time.time=timeStamp/1e3;Time.deltaTime=(timeStamp-oldTimeStamp)/1e3;oldTimeStamp=timeStamp;if(Time.deltaTime<.1){if(progressState===ProgressState.titleAppearing){progressTimer+=Time.deltaTime*16;if(progressTimer>=title.length){progressState=ProgressState.barAppearing;progressTimer=0}}else if(progressState===ProgressState.barAppearing){progressTimer+=Time.deltaTime*1.5;if(progressTimer>=1){progressState=numbersAppearance!=="hidden"?ProgressState.numberAppearing:ProgressState.idling;progressTimer=0}}else if(progressState===ProgressState.numberAppearing){progressTimer+=Time.deltaTime*16;if(progressTimer>=generateNumberString().length+2){progressState=ProgressState.idling;progressTimer=0}}else if(progressState===ProgressState.idling){if(currentAmount=1.1){progressState=ProgressState.idling;progressTimer=0;console.log("fsdf")}}barFillAnimationTimer+=Time.deltaTime*16;if(currentAmount>=totalAmount)waveAnimationTimer+=Time.deltaTime*10;Graphics.clear();let barPositionY=showTitle?11:0;let barHeight=Graphics.canvas.height-(showTitle?11:0);barHeight-=barHeight%2===0?1:0;barHeight=Math.max(barHeight,15);if(progressState===ProgressState.titleAppearing){if(showTitle){Graphics.setColor(textColor);Graphics.drawText(title,Graphics.canvas.width/2,1,textStyle,1,"appear",progressTimer)}}else if(progressState===ProgressState.barAppearing){if(showTitle){Graphics.setColor(textColor);Graphics.drawText(title,Graphics.canvas.width/2,1,textStyle,1)}let width=0;Graphics.setColor(Color.black);width=Math.floor(Math2.smoothStep(4,Graphics.canvas.width/2,progressTimer));Graphics.fillRect(Graphics.canvas.width/2-width,barPositionY+3,width*2,barHeight-6);Graphics.setColor(Color.black);width=Math.floor(Math2.smoothStep(3,Graphics.canvas.width/2-1,progressTimer));Graphics.fillRect(Graphics.canvas.width/2-width,barPositionY+2,width*2,barHeight-4);Graphics.setColor(barBorderColor);Graphics.drawVLine(Graphics.canvas.width/2-width,barPositionY+3,barHeight-6);Graphics.drawVLine(Graphics.canvas.width/2+width-1,barPositionY+3,barHeight-6);Graphics.setColor(Color.black);width=Math.floor(Math2.smoothStep(2,Graphics.canvas.width/2-2,progressTimer));Graphics.fillRect(Graphics.canvas.width/2-width,barPositionY+1,width*2,barHeight-2);Graphics.setColor(barBorderColor);Graphics.drawPixel(Graphics.canvas.width/2-width,barPositionY+2);Graphics.drawPixel(Graphics.canvas.width/2+width-1,barPositionY+2);Graphics.drawPixel(Graphics.canvas.width/2-width,barPositionY+barHeight-3);Graphics.drawPixel(Graphics.canvas.width/2+width-1,barPositionY+barHeight-3);Graphics.setColor(Color.black);width=Math.floor(Math2.smoothStep(1,Graphics.canvas.width/2-3,progressTimer));Graphics.fillRect(Graphics.canvas.width/2-width,barPositionY,width*2,barHeight);Graphics.setColor(barBorderColor);Graphics.drawHLine(Graphics.canvas.width/2-width,barPositionY+1,width*2);Graphics.drawHLine(Graphics.canvas.width/2-width,barPositionY+barHeight-2,width*2)}else{if(showTitle){Graphics.setColor(textColor);Graphics.drawText(title,Graphics.canvas.width/2,1,textStyle,1)}Graphics.setColor(Color.black);Graphics.fillRect(3,barPositionY,Graphics.canvas.width-6,barHeight);Graphics.fillRect(2,barPositionY+1,Graphics.canvas.width-4,barHeight-2);Graphics.fillRect(1,barPositionY+2,Graphics.canvas.width-2,barHeight-4);Graphics.fillRect(0,barPositionY+3,Graphics.canvas.width,barHeight-6);Graphics.setColor(barBorderColor);Graphics.drawHLine(3,barPositionY+1,Graphics.canvas.width-6);Graphics.drawHLine(3,barPositionY+barHeight-2,Graphics.canvas.width-6);Graphics.drawVLine(1,barPositionY+3,barHeight-6);Graphics.drawVLine(Graphics.canvas.width-2,barPositionY+3,barHeight-6);Graphics.drawPixel(2,barPositionY+2);Graphics.drawPixel(Graphics.canvas.width-3,barPositionY+2);Graphics.drawPixel(2,barPositionY+barHeight-3);Graphics.drawPixel(Graphics.canvas.width-3,barPositionY+barHeight-3);if(barFillColorStyle==1)Graphics.setColor(barFillColor1);else if(barFillColorStyle==2)Graphics.setColor(Color.lerp(barFillColor1,barFillColor2,currentAmount/totalAmount));else if(barFillColorStyle==3){let time=Math.min(currentAmount/totalAmount,1);Graphics.setColor(Color.lerp(time<=.5?barFillColor1:barFillColor2,time<=.5?barFillColor2:barFillColor3,time<=.5?time*2:(time-.5)*2))}Graphics.fillRect(3,barPositionY+3,Math.floor((Graphics.canvas.width-6)*Math.min(currentAmount/totalAmount,1)),barHeight-6);Graphics.setAlpha(.15);Graphics.setColor(Color.white);for(let i=0;i=barPositionY+3&&j=totalAmount)Graphics.drawText(numberString,Graphics.canvas.width/2,barPositionY+Math.floor((barHeight-9)/2),textStyle,2,"wave",waveAnimationTimer);else Graphics.drawText(numberString,Graphics.canvas.width/2,barPositionY+Math.floor((barHeight-9)/2),textStyle,2)}}}window.requestAnimationFrame(gameLoop)}function generateNumberString(){let numberString="";numberString+=numbersPrefixText;numberString+=Math.round(currentAmount);if(numbersAppearance==="current-total"){numberString+=numbersInfixText;numberString+=totalAmount}numberString+=numbersSuffixText;return numberString}function EncodeString(string){let element=document.createElement("div");element.innerText=element.textContent=string;string=element.innerHTML;return string}function setup(data){console.log(data);pixelSize=data.pixelSize.value;appearStyle=data.appearStyle.value;showTitle=data.showTitle.value==="true";numbersAppearance=data.numbersAppearance.value;numbersPrefixText=data.numbersPrefixText.value.toUpperCase();numbersInfixText=data.numbersInfixText.value.toUpperCase();numbersSuffixText=data.numbersSuffixText.value.toUpperCase();progressDurationType=data.progressDurationType.value;progressDurationTime=data.progressDurationTime.value;allowGoalOverflow=data.allowGoalOverflow.value==="true";barFillColorStyle=parseInt(data.barFillColorStyle.value);barFillColor1=new Color(data.barFillColor1.value);barFillColor2=new Color(data.barFillColor2.value);barFillColor3=new Color(data.barFillColor3.value);barBorderColor=new Color(data.barBorderColor.value);textColor=new Color(data.textColor.value);textStyle=data.textStyle.value;progressState=appearStyle==="instantly"?ProgressState.idling:showTitle?ProgressState.titleAppearing:ProgressState.barAppearing;if(appearStyle==="instantly")currentAmount=targetAmount;Graphics.init();window.addEventListener("resize",Graphics.init);window.requestAnimationFrame(gameLoop)}let title="TITLE";let currentAmount=0;let targetAmount=50;let totalAmount=100;let startAmount=0;let endAmount=0;document.addEventListener("goalLoad",function(obj){console.log(obj);title=obj.detail.title.toUpperCase();targetAmount=obj.detail.amount.current;totalAmount=obj.detail.amount.target;setup(obj.detail.settings.custom_json)});document.addEventListener("goalEvent",function(obj){targetAmount=allowGoalOverflow?obj.detail.amount.current:Math.min(obj.detail.amount.current,totalAmount)});setup(data);