/* Compressed with jstidy.sh */
/* Which in turn uses jsmin from http://www.crockford.com/javascript/jsmin.html */
/* And some perl magic */
/* This code is copyright (C) Joel Yliluoma - http://iki.fi/bisqwit/ */

function intersect_box_helper(a0,a1,b0,b1){if(a0>=b1)return 0;if(a1<=b0)return 0;return 1}
function intersect_box(x0,y0,x1,y1,x2,y2,x3,y3){return intersect_box_helper(x0,x1,x2,x3)&&intersect_box_helper(y0,y1,y2,y3)}
function intersect_helper(pos,boxmin,boxmax,linemin,linemax){return pos>=boxmin&&pos<boxmax&&pos>=linemin&&pos<=linemax}
function intersect(x0,y0,x1,y1,x2,y2,x3,y3){var xmin=Math.min(x2,x3),xmax=Math.max(x2,x3);var ymin=Math.min(y2,y3),ymax=Math.max(y2,y3);if(x3==x2||y3==y2){return intersect_box(x0,y0,x1,y1,xmin,ymin,xmax,ymax)}
var yx=(y3-y2)/(x3-x2);if(intersect_helper((x0-x2)*yx+y2,y0,y1,ymin,ymax))return 2;if(intersect_helper((x1-x2)*yx+y2,y0,y1,ymin,ymax))return 3;if(intersect_helper((y0-y2)/yx+x2,x0,x1,xmin,xmax))return 4;if(intersect_helper((y1-y2)/yx+x2,x0,x1,xmin,xmax))return 5;return 0}
function intersect4_helper(w,pos,boxmin,boxmax,linemin,linemax){var tmp=0;if(pos+w>=linemin&&pos<=linemax&&pos<boxmax){if(pos>=boxmin||pos+w>boxmin)tmp=1}
return tmp}
function intersect4(x0,y0,x1,y1,x2,y2,x3,y3,w,h){w-=0.000;h-=0.000;var xmin=Math.min(x2,x3),xmax=Math.max(x2,x3);var ymin=Math.min(y2,y3),ymax=Math.max(y2,y3);if(x3==x2||y3==y2){return intersect_box(x0,y0,x1,y1,xmin,ymin,xmax+w,ymax+h);return tmp}
var yx=(y3-y2)/(x3-x2);if(intersect4_helper(h,(x0-x2)*yx+y2,y0,y1,ymin,ymax))return 2;if(intersect4_helper(h,(x1-x2)*yx+y2,y0,y1,ymin,ymax))return 3;if(intersect4_helper(w,(y0-y2)/yx+x2,x0,x1,xmin,xmax))return 4;if(intersect4_helper(w,(y1-y2)/yx+x2,x0,x1,xmin,xmax))return 5;return 0}
function calc_angular_dist(sx,sy,dx,dy){return Math.abs(sx-dx)+Math.abs(sy-dy)}
function calc_dist(sx,sy,dx,dy){dx-=sx;dy-=sy;return Math.sqrt(dx*dx+dy*dy)}
function rgel(root,id){return root.getElementById(id)}
function gel(id){return rgel(document,id)}
function id(id){return gel(id).selectedIndex}
function ids(id,v){gel(id).selectedIndex=v}
function ch(id){return gel(id).checked?1:0}
function chs(id,v){gel(id).checked=v>0}
function tx(id){return gel(id).value}
function txs(id,v){gel(id).value=v}
function dom_wipe(block){var a,k=block.childNodes,b=k.length;for(a=b;a-->0;)block.removeChild(k[a])
return block}
var clearBlock=dom_wipe;var dom_is_event_activator_name={onkeydown:1,onmouseover:1,onclick:1,onblur:1,onfocus:1,onmouseout:1,ondblclick:1,onmouseup:1,onmousedown:1,onkeypress:1,onkeyup:1,onchange:1,onload:1,onmousemove:1,onselect:1,onsubmit:1,onunload:1,onerror:1,className:1}
function dom_tag_finish_with(t,params){for(var i in params)
if(dom_is_event_activator_name[i])
t[i]=params[i];else
t.setAttribute(i,params[i]);return t}
function dom_add_children(t,children){var a,b=children.length;for(a=0;a<b;++a)dom_append(t,children[a])
return t}
function dom_tag(t){return document.createElement(t)}
function dom_text(content){return document.createTextNode(content)}
function dom_tag_with(t,params){return dom_tag_finish_with(dom_tag(t),params)}
function dom_tag_class(t,cls){return dom_tag_with(t,{className:cls})}
function dom_tag_class_with(t,cls,params){return dom_tag_finish_with(dom_tag_class(t,cls),params)}
function dom_tag_with_children(t,children){return dom_add_children(dom_tag(t),children)}
function dom_tag_attr_with_children(t,params,children){return dom_add_children(dom_tag_with(t,params),children)}
function dom_tag_class_with_children(t,cls,children){return dom_add_children(dom_tag_class(t,cls),children)}
function dom_tag_text(t,text){return dom_tag_with_children(t,[dom_text(text)])}
function dom_tag_attr_text(t,params,text){return dom_finish_with(dom_tag_text(t,text),params)}
function dom_append(root,t){return root.appendChild(t)}
function dom_rtext(t){var c=t.childNodes;if(!c)throw'dom_rtext';var result='',a,b=c.length;for(a=0;a<b;++a)result+=c[a].nodeValue;return result}
function dom_rtags(root,t){return root.getElementsByTagName(t)}
function dom_ftag(root,t){var l=dom_rtags(root,t);if(l.length==0)throw'tag '+t+' missing';if(l.length>1)throw'tag '+t+' is ambiguous';return l[0]}
var Image=function(){this.img=new dom_tag("img")}
Image.prototype={add_to:function(obj){dom_append(obj,this.img)},set_alt_title:function(alt,title){this.img.alt=alt
this.img.title=title},set_src:function(src){this.img.src=get_img_url(src)},set_size:function(w,h){with(this.img){width=w
height=h
style.marginRight=(-w)+'px'
style.marginBottom=(-h)+'px'}},set_pos:function(x,y){this.img.style.left=(x)+'px'
this.img.style.top=(y)+'px'},set_z:function(z){this.img.style.zIndex=z},hide:function(){this.img.style.visibility='hidden'},show:function(){this.img.style.visibility='visible'}}
Array.prototype.is_array=true;function is_array(obj){return obj.is_array}
function cloneObject(what){for(var i in what){if(is_array(what[i]))
this[i]=cloneArray(what[i])
else if(typeof what[i]=='object')
this[i]=new cloneObject(what[i])
else
this[i]=what[i]}}
function cloneArray(what){var result=what.slice(0),a,b=result.length;for(a=0;a<b;++a)
if(!is_array(result[a])&&typeof result[a]=='object')
result[a]=new cloneObject(result[a]);return result}
function serialize(what){if(what.is_array)return serializeArray(what)
if(typeof what=='object')return serializeObject(what)
if(typeof what=='string')return serializeString(what)
return what}
function _serzA(c1,c2,func){return c1+(func().join(','))+c2}
function serializeObject(what){return _serzA('{','}',function(){var res=[],i;for(i in what)res.push(serialize(i)+':'+serialize(what[i]));return res})}
function serializeArray(what){return _serzA('[',']',function(){var res=[],b=what.length,a;for(a=0;a<b;++a)res.push(serialize(what[a]));return res})}
function serializeString(s){var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};return'"'+
s.replace(/([^ !#-[\]-~])/g,function(a,b){var c=m[b],h='000'+b.charCodeAt().toString(16);return c?c:('\\u'+h.slice(h.length-4,4))})+'"'}
function unserialize(what){return eval('('+what+')')}
var displayObject=serialize,displayArray=serialize;function propObject(props){for(var i in props)this[i]=props[i];return this}
function protoObj(func,props){propObject.call(func.prototype,props);return func}
function declObj(params,varructorcode,elements,memberfunctions){var f;eval('f=function('+params+') { propObject.call(this, elements); '+varructorcode+'; }');return protoObj(f,memberfunctions)}
var Try={these:function(funclist){for(var a=0,b=arguments.length;a<b;++a){try{return(arguments[a])()}catch(e){}}}}
function create_xmlhttp(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')},function(){return window.createRequest()})||false}
var game_width=19,game_height=16,game_maxdim=game_width*game_height,maps=[{tileset:0,palette:0,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,4,5,5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[141,143,161,179,181],goals:[123,159,161,163,199],player:221},{tileset:0,palette:0,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,1,1,4,4,4,6,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,4,4,4,1,1,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[123,159,161,180],goals:[143,144,162,163],player:199},{tileset:0,palette:0,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,4,4,6,6,6,6,6,6,6,6,6,6,4,1,4,1,4,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,4,1,4,1,4,1,5,4,6,6,6,6,6,6,6,6,6,6,6,4,5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[139,141,143,178,180,182],goals:[101,102,103,104,105,106],player:158},{tileset:0,palette:0,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,1,1,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,1,1,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,1,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,1,1,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,1,1,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[140,179],goals:[102,121],player:104},{tileset:0,palette:0,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,5,4,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,4,1,4,1,5,4,6,6,6,6,6,6,6,6,6,6,4,4,1,4,1,4,1,4,4,6,6,6,6,6,6,6,6,6,6,4,4,1,4,1,4,1,4,4,6,6,6,6,6,6,6,6,6,6,4,5,1,4,1,4,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[103,123,125,218],goals:[101,120,220,221],player:182},{tileset:1,palette:1,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,4,4,4,4,6,6,6,6,6,6,6,6,6,4,4,4,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,4,5,1,1,4,1,4,1,5,4,6,6,6,6,6,6,6,6,6,4,5,1,1,4,5,5,5,5,4,6,6,6,6,6,6,6,6,6,4,5,5,5,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[141,162,178],goals:[105,106,107],player:181},{tileset:1,palette:1,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,4,5,5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[121,123,125,141,143,159,161,163,179,181,197,199,201],goals:[122,124,140,142,144,160,161,162,178,180,182,198,200],player:221},{tileset:1,palette:1,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,4,4,5,1,1,5,4,6,6,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[141,143,161,179,181],goals:[123,159,161,163,199],player:125},{tileset:1,palette:1,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,1,1,4,4,4,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,4,4,1,1,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[142,159,163,180],goals:[141,142,160,161],player:158},{tileset:1,palette:1,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,4,5,5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,4,1,1,1,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,4,5,5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[120,121,122,124,125,126,177,178,179,180,181,182,183],goals:[139,140,141,142,143,144,145,158,159,160,162,163,164],player:199},{tileset:2,palette:2,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,1,1,1,4,4,6,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,4,4,4,1,4,1,4,4,1,4,6,6,6,4,4,4,4,4,4,4,5,1,1,4,1,4,4,1,4,4,4,4,4,5,1,1,1,4,4,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,1,4,4,4,1,4,5,4,4,5,1,1,1,4,6,6,6,6,4,5,5,5,5,5,4,4,4,4,4,4,4,4,4,6,6,6,6,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[100,121,138,140,192,195],goals:[187,188,206,207,225,226],player:220},{tileset:2,palette:2,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,4,1,1,1,5,4,5,5,5,5,5,4,4,4,6,6,6,6,6,4,1,1,1,1,4,1,1,1,1,1,1,5,4,6,6,6,6,6,4,1,1,1,1,4,1,4,4,4,4,1,5,4,6,6,6,6,6,4,1,1,1,1,1,1,1,5,4,4,1,5,4,6,6,6,6,6,4,1,1,1,5,4,1,4,5,1,1,1,4,4,6,6,6,6,6,4,4,4,4,4,4,1,4,4,1,1,1,5,4,6,6,6,6,6,6,6,4,5,1,1,1,1,1,1,1,1,5,4,6,6,6,6,6,6,6,4,5,5,5,5,4,5,5,5,5,5,4,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[124,127,142,184,202,204,216,219,221,223],goals:[99,100,118,119,137,138,156,157,175,176],player:162},{tileset:2,palette:2,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,4,5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6,6,4,5,1,4,1,1,4,4,6,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,6,4,4,1,1,1,1,4,6,6,6,6,4,4,4,4,4,4,4,4,4,5,1,1,4,1,4,4,4,6,6,4,1,1,1,1,1,5,4,4,1,1,1,1,1,1,5,4,6,6,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,5,4,6,6,4,1,1,1,1,1,5,4,4,4,4,4,4,4,4,4,4,6,6,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[125,127,144,147,163,165,182,201,204,219,222],goals:[192,193,194,195,212,213,214,230,231,232,233],player:110},{tileset:2,palette:2,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,4,4,5,5,5,5,4,5,1,1,1,1,1,1,1,1,1,1,1,4,4,5,1,1,1,4,1,1,1,1,1,4,1,1,1,1,1,1,4,4,5,1,1,1,1,1,1,1,1,1,4,5,1,1,1,1,1,4,4,5,1,1,1,4,1,1,1,1,1,4,4,4,4,4,4,4,4,4,5,1,1,5,4,5,5,5,5,5,4,6,6,6,6,6,6,6,4,4,1,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,4,5,1,1,5,4,5,5,5,5,4,4,6,6,6,6,6,6,6,4,5,1,1,1,1,1,1,1,5,4,4,6,6,6,6,6,6,6,4,5,1,1,1,4,1,1,1,5,5,4,6,6,6,6,6,6,6,4,5,5,5,5,4,5,5,5,5,4,4,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[84,86,97,98,99,101,104,117,123,135,136,139,141,143,155,215,231,232,234,235],goals:[52,53,54,55,71,72,73,74,90,91,92,93,109,110,111,112,128,129,130,131],player:238},{tileset:2,palette:2,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,5,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,4,1,4,1,4,4,5,5,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,5,4,6,6,4,4,4,4,4,4,4,4,4,1,4,4,4,1,1,5,4,6,6,4,1,1,1,1,1,5,4,4,1,1,1,1,1,4,4,4,6,6,4,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,6,6,6,4,1,1,1,1,1,5,4,4,1,1,1,1,1,5,4,6,6,6,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,6,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,6,4,4,4,1,4,4,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[88,110,144,147,162,164,165,181,184,202,220,222],goals:[135,136,137,138,154,155,156,157,173,174,175,176],player:186},{tileset:3,palette:3,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,6,6,4,4,4,6,6,6,6,6,6,6,6,4,1,1,1,5,4,6,4,4,5,4,4,6,6,6,6,6,6,6,4,1,1,1,1,4,4,4,5,5,5,4,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,1,1,5,4,6,6,6,6,6,6,6,4,1,1,1,5,4,1,4,1,1,5,4,6,6,6,6,6,6,6,4,1,1,4,4,4,1,4,1,1,5,4,6,6,6,6,6,6,6,4,4,4,4,5,1,1,4,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,4,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,5,4,4,5,5,5,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[126,127,146,165,180,183,200,203,218,221],goals:[81,82,100,101,119,120,138,139,157,158],player:89},{tileset:3,palette:3,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,5,5,5,4,4,6,6,6,6,6,6,4,4,5,4,5,5,4,4,1,1,1,5,4,6,6,6,6,6,6,4,5,1,1,1,1,1,1,1,1,1,5,4,6,6,6,6,6,6,4,5,1,1,1,5,4,4,4,1,1,5,4,6,6,6,6,6,6,4,4,4,1,4,4,4,4,4,1,4,4,4,6,6,6,6,6,6,4,5,1,1,5,4,4,4,5,1,1,4,6,6,6,6,6,6,6,4,5,1,1,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,4,5,1,1,1,4,4,4,1,1,1,4,6,6,6,6,6,6,6,4,5,1,1,5,4,6,4,1,1,1,4,6,6,6,6,6,6,6,4,5,5,4,4,4,6,4,4,4,4,4,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[108,109,123,140,165,177,196,198,200,234,235],goals:[184,185,202,203,204,221,222,223,240,241,242],player:104},{tileset:3,palette:3,map:[6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,4,1,1,1,1,1,1,1,1,1,1,1,5,4,6,6,6,6,6,4,1,1,4,1,1,1,4,5,1,1,1,5,4,6,6,6,6,6,4,1,1,1,1,1,1,5,4,5,5,5,5,4,6,6,6,4,4,4,1,1,4,1,4,1,5,4,4,4,4,5,4,6,6,6,4,5,4,1,1,1,1,1,1,5,4,4,5,1,5,4,6,6,6,4,5,1,1,1,1,1,4,1,4,5,1,1,4,5,4,6,6,6,4,5,1,1,1,1,1,1,1,1,1,1,1,1,5,4,6,6,6,6,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,6,6,6,6,6,4,5,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6],blocks:[47,51,53,63,66,71,83,85,101,119,121,123,140,143,158,163,165,167],goals:[233,234,235,236,237,238,252,253,254,255,256,257,271,272,273,274,275,276],player:117},{tileset:3,palette:3,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,4,6,6,6,6,6,6,6,6,4,4,4,4,4,5,1,1,1,1,4,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,4,5,1,4,4,5,1,1,1,1,4,6,6,6,6,6,6,6,6,4,4,1,4,4,5,1,1,1,1,4,6,6,6,6,6,6,6,4,4,4,1,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,4,5,1,1,1,5,4,4,6,6,6,6,6,6,6,4,4,4,4,4,1,1,1,1,1,5,4,4,4,4,4,6,6,4,4,5,5,5,4,1,1,1,1,1,1,4,5,5,5,4,6,6,4,5,5,1,1,1,1,1,1,1,1,1,1,1,1,5,4,6,6,4,4,4,4,4,4,1,1,1,1,1,1,4,4,4,4,4,6,6,6,6,6,6,6,4,5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[160,161,162,180,182,197,199,213,216,221,224,236,237,239],goals:[52,53,54,71,72,73,90,92,109,110,111,128,129,130],player:211},{tileset:3,palette:3,map:[6,4,4,4,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,5,5,5,5,5,5,5,4,5,5,5,4,4,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,5,1,1,1,1,4,1,1,1,1,1,1,1,4,1,1,1,4,4,5,1,1,1,1,4,1,1,1,1,1,1,1,4,1,1,1,4,4,4,4,1,1,1,4,1,1,1,1,1,1,1,4,1,1,1,4,4,5,1,1,1,5,4,5,1,1,1,1,1,5,4,1,1,1,4,4,5,1,1,1,4,4,4,4,4,4,1,4,4,4,1,1,1,4,4,4,1,4,5,5,4,5,1,1,1,1,1,5,4,1,1,1,4,4,5,1,4,4,1,4,5,1,1,1,1,1,1,4,4,1,1,4,4,5,1,1,4,1,4,5,1,1,1,1,1,1,1,5,4,1,4,4,5,1,1,4,1,4,5,1,1,1,1,1,1,1,5,4,1,4,4,4,4,4,4,1,4,5,5,5,5,5,5,5,4,5,4,1,4,6,6,6,6,4,1,4,4,4,4,4,4,4,4,4,5,4,1,4,6,6,6,6,4,5,5,5,5,5,5,5,5,5,5,5,4,1,4,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4],blocks:[40,41,45,46,49,51,60,61,62,68,78,84,85,87,88,104,122,124,126,161,163,179,180,182,184,199,217,218,219,221,222,223],goals:[53,54,55,72,73,74,91,92,93,110,111,112,129,130,131,148,149,150,167,168,169,187,188,192,193,207,211,212,226,245,264,283],player:21},{tileset:4,palette:4,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6,4,5,5,4,6,6,6,6,6,6,6,6,4,4,4,5,5,4,4,4,1,5,4,6,6,6,6,6,6,6,4,4,5,1,1,1,1,1,1,1,5,4,6,6,6,6,6,6,4,4,5,1,1,1,1,1,4,4,1,4,4,6,6,6,6,6,6,4,5,5,4,1,4,4,1,1,1,1,5,4,6,6,6,6,6,6,4,5,4,5,1,1,1,1,1,4,1,4,4,4,6,6,6,6,6,4,5,1,1,1,1,4,5,1,4,1,1,5,4,4,4,4,4,4,4,4,4,1,1,1,5,4,1,1,1,1,1,4,5,5,5,4,4,4,4,4,1,4,4,5,1,1,1,1,1,1,1,1,1,5,4,4,1,1,1,1,5,4,4,4,5,5,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,6,4,4,4,4,6,6,6,6,6,6,6,4,1,1,1,4,1,4,6,6,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[68,86,100,102,103,119,138,140,141,157,164,182,183,198],goals:[210,229,230,232,233,248,249,250,252,267,268,269,270,271],player:83},{tileset:4,palette:4,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,6,6,6,4,5,4,5,4,4,4,4,4,4,1,1,1,1,1,4,6,6,6,4,5,4,5,1,1,1,1,1,1,1,1,4,5,1,4,6,6,6,4,5,4,5,1,1,1,1,1,1,1,5,4,4,1,4,4,6,6,4,5,4,5,4,1,1,1,1,1,4,4,4,1,1,1,4,6,6,4,5,4,5,1,1,1,1,1,1,5,4,4,1,1,1,4,6,6,4,5,4,4,4,1,1,1,1,1,1,4,4,1,1,1,4,6,6,4,5,1,1,1,1,4,1,4,4,1,4,4,1,1,1,4,6,6,4,4,4,4,4,5,5,5,4,4,1,4,4,1,1,1,4,6,6,6,6,6,6,4,4,4,4,4,5,1,1,1,1,4,4,4,6,6,6,6,6,6,6,6,6,6,4,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[101,103,105,107,121,123,139,141,143,159,161,177,178,179,181],goals:[147,148,149,166,167,168,185,186,187,204,205,206,223,224,225],player:122},{tileset:4,palette:4,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,4,4,5,5,5,4,4,5,5,4,4,4,4,4,6,6,6,4,4,4,5,1,1,1,5,4,5,1,4,5,5,5,5,4,4,4,4,5,1,1,1,4,1,1,4,5,1,4,1,1,1,1,1,5,4,4,5,4,5,1,4,1,1,4,4,1,4,1,4,1,4,1,5,4,4,5,5,4,1,4,1,1,5,4,1,1,1,1,1,1,1,5,4,4,5,1,1,1,1,1,1,5,4,1,4,1,4,1,4,1,5,4,4,5,1,1,4,4,1,1,4,4,1,1,1,1,1,1,1,5,4,4,5,1,1,4,5,1,1,4,5,1,4,1,4,1,4,1,5,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,4,6,4,1,1,4,4,4,4,4,4,5,5,5,5,4,4,5,5,4,6,4,5,5,4,6,6,6,6,4,4,4,4,4,4,4,4,4,4,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[79,82,99,102,120,135,140,162,164,173,183,193,196,200,203,211],goals:[90,91,92,109,111,128,130,147,149,166,168,185,187,204,205,206],player:101},{tileset:4,palette:4,map:[6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,6,6,6,6,6,6,4,4,4,4,4,4,4,5,5,5,5,5,4,6,6,6,6,6,6,4,5,5,5,5,5,4,1,1,1,1,5,4,6,6,6,6,6,6,4,1,1,5,4,1,1,1,4,4,4,4,4,4,4,4,4,6,6,4,1,4,4,4,1,1,1,1,1,1,4,4,5,5,5,4,6,6,4,1,1,1,1,1,1,1,1,1,1,4,4,1,4,5,4,6,6,4,1,4,4,4,1,1,1,1,1,1,1,1,1,1,5,4,6,4,4,1,1,5,4,4,4,4,1,4,4,4,1,4,1,4,4,6,4,5,1,4,1,1,1,5,4,1,1,1,1,5,4,1,4,6,6,4,5,1,1,1,1,1,1,1,5,4,1,1,4,4,1,4,6,6,4,5,1,1,1,1,1,1,4,4,4,1,1,5,4,1,4,6,6,4,4,4,4,4,5,1,1,1,1,1,1,1,5,4,1,4,6,6,6,6,6,6,4,4,4,1,4,4,4,1,1,5,4,1,4,6,6,6,6,6,6,6,6,4,5,5,5,5,5,4,5,1,1,4,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6],blocks:[48,50,60,61,101,149,157,164,175,177,178,179,184,195,197,202,203,220],goals:[83,84,85,86,87,88,102,103,104,105,106,107,121,122,123,124,125,126],player:49},{tileset:4,palette:4,map:[6,6,6,6,6,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,4,5,5,5,4,5,5,4,6,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,4,4,4,1,4,1,1,1,1,4,4,4,4,6,6,6,6,6,6,4,5,1,1,1,1,4,4,1,1,1,5,4,6,6,6,6,6,6,4,5,1,4,1,1,1,1,1,4,1,1,4,6,6,6,6,6,6,4,5,1,4,5,1,1,1,1,1,1,1,4,4,4,4,6,6,6,4,4,1,4,4,4,4,1,4,4,1,1,1,1,5,4,6,6,6,4,5,1,4,1,1,1,1,1,4,1,4,1,1,5,4,6,6,6,4,1,1,1,1,1,1,1,1,1,1,4,1,4,4,4,6,6,4,4,1,1,4,1,1,1,1,1,4,5,5,5,4,6,6,6,6,4,5,1,1,4,4,4,1,4,4,4,4,4,4,4,6,6,6,6,4,5,1,1,1,5,4,1,5,4,6,6,6,6,6,6,6,6,6,4,5,5,4,5,1,1,1,5,4,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,5,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6],blocks:[45,64,81,86,104,108,126,142,156,176,179,180,183,231,232],goals:[158,159,160,161,162,177,178,179,180,181,196,197,198,199,200],player:102},{tileset:5,palette:5,map:[6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,5,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,1,1,5,4,6,6,4,4,4,4,6,6,6,6,6,6,6,4,5,1,1,1,4,4,4,4,5,5,4,6,6,6,6,6,6,6,4,5,1,1,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,4,4,4,1,5,4,1,1,1,1,1,4,4,6,6,6,6,6,6,6,4,5,1,4,4,5,1,1,1,1,5,4,4,6,6,6,6,6,6,4,5,1,1,5,4,4,1,4,4,5,1,4,6,6,6,6,6,6,4,5,5,4,1,4,4,1,5,5,4,1,4,6,6,6,6,6,6,4,4,4,5,1,1,1,1,1,4,4,1,4,6,6,6,6,6,6,6,4,5,1,1,1,4,1,1,1,1,1,4,6,6,6,6,6,6,6,4,5,1,1,5,4,1,1,1,1,1,4,6,6,6,6,6,6,6,4,5,1,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,4,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[61,81,82,84,88,103,124,126,138,159,162,180,201,215,216],goals:[147,166,181,182,185,200,201,202,203,204,219,220,221,222,223],player:100},{tileset:5,palette:5,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,4,1,1,1,5,4,5,5,5,4,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,4,1,1,1,5,4,1,1,4,4,4,4,6,6,6,6,6,6,4,4,4,4,4,4,4,1,1,4,5,5,4,4,6,6,6,6,6,4,5,1,1,1,1,1,1,1,1,1,1,5,4,6,6,6,6,6,4,5,1,4,5,1,4,4,5,5,4,1,5,4,6,6,6,4,4,4,4,1,4,4,5,5,4,4,4,4,1,4,4,6,6,6,4,5,1,1,1,5,4,4,4,4,4,5,4,1,5,4,6,6,6,4,5,4,1,1,1,1,1,1,5,4,5,1,1,5,4,6,6,6,4,5,1,1,1,1,1,1,1,5,4,5,5,5,4,4,6,6,6,4,4,4,4,1,4,4,1,4,4,4,4,4,4,4,6,6,6,6,6,6,6,4,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[176,196,199,204,214,217],goals:[44,45,63,64,82,83],player:213},{tileset:5,palette:5,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,4,5,1,1,1,5,4,5,5,5,4,6,6,6,6,6,6,6,6,4,1,4,1,1,1,1,1,1,5,4,6,6,6,6,4,4,4,4,4,1,4,4,1,1,4,1,4,4,4,4,6,6,4,4,5,5,4,5,1,1,4,4,4,5,1,1,1,5,4,4,4,4,5,1,1,4,1,1,1,1,1,1,1,5,4,1,1,1,5,4,4,5,1,1,1,1,1,1,4,4,1,1,4,4,1,4,4,5,4,4,4,4,4,1,4,4,1,4,5,1,1,4,5,1,5,4,5,4,6,6,4,4,1,4,5,5,5,5,4,1,1,1,1,5,4,5,4,6,6,4,5,1,1,1,4,1,4,5,1,4,1,1,4,4,5,4,6,6,4,5,1,1,1,1,1,1,1,1,1,1,1,1,1,5,4,6,6,4,5,5,4,4,4,4,4,4,4,4,4,4,4,5,5,4,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[116,125,130,156,159,162,182,184,185,195,204],goals:[46,65,85,86,101,102,119,120,121,138,139],player:70},{tileset:5,palette:5,map:[6,6,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,5,5,4,4,4,4,6,6,6,6,6,6,6,6,4,4,4,4,4,5,5,5,5,5,4,6,6,6,6,6,6,6,6,4,5,5,5,4,4,1,1,1,1,4,4,4,4,6,6,6,6,6,4,5,1,1,4,5,1,4,4,5,1,1,5,4,6,6,6,6,6,4,5,1,1,4,1,1,4,4,4,4,4,1,4,6,6,6,6,6,4,4,1,1,1,1,1,1,1,1,5,4,1,4,6,6,6,6,6,4,4,1,1,1,1,1,4,4,4,1,4,1,4,6,6,6,6,6,4,4,1,4,5,1,1,1,5,4,1,4,1,4,6,6,6,6,6,4,4,1,4,5,4,1,4,1,1,1,4,1,4,6,6,6,6,6,4,4,1,4,4,4,5,5,5,4,1,4,1,4,4,4,4,4,4,4,5,1,1,1,5,4,4,4,4,1,4,1,4,1,1,1,1,4,4,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,4,4,4,4,4,1,1,1,1,4,1,1,1,1,1,1,1,1,1,4,4,5,5,5,5,5,5,5,4,5,5,4,4,5,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4],blocks:[44,78,97,117,120,136,138,158,177,212,233,238,251,254,257],goals:[223,224,225,226,242,243,245,261,262,263,264,280,281,282,283],player:25},{tileset:5,palette:5,map:[6,6,6,6,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,4,4,4,4,4,5,5,5,5,5,5,5,5,4,4,4,4,6,6,4,5,1,1,1,5,4,5,1,1,1,1,5,4,5,5,4,6,6,4,5,4,4,4,4,4,4,4,1,4,4,4,4,1,1,4,4,4,4,5,4,5,5,5,5,4,4,1,4,5,5,4,1,1,1,1,4,4,5,4,5,1,1,1,1,1,1,4,1,1,4,1,1,4,1,4,4,5,4,5,1,1,5,4,1,1,1,1,1,4,1,1,1,1,4,4,5,4,5,5,4,4,4,1,4,4,1,1,1,1,1,4,1,4,4,5,4,4,4,5,5,4,1,5,4,5,5,4,1,1,1,1,4,4,5,4,5,1,1,1,4,1,1,4,4,4,4,1,1,4,1,4,4,5,4,1,1,1,1,1,1,1,1,1,5,4,1,1,1,1,4,4,5,1,1,1,1,5,4,5,1,1,1,5,4,1,1,4,1,4,4,4,4,4,1,1,4,4,4,1,1,1,5,4,1,1,1,1,4,6,6,6,4,1,1,1,1,1,1,5,4,4,4,1,1,1,1,4,6,6,6,4,5,5,5,5,5,5,4,4,6,4,4,4,4,4,4,6,6,6,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6],blocks:[48,66,90,99,102,118,128,166,180,193,197,200,204,214,218,220,233,242,255,256],goals:[92,93,112,130,131,150,168,169,188,204,206,207,226,242,244,245,261,262,263,264],player:52},{tileset:6,palette:6,map:[6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,4,5,5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,1,4,4,4,4,6,6,6,6,6,6,6,4,4,1,4,4,4,4,1,4,5,5,4,6,6,6,6,6,6,6,4,4,1,4,5,4,4,1,1,1,1,4,6,6,6,6,6,6,6,4,5,1,1,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,4,5,1,4,1,4,4,1,1,1,1,4,6,6,6,6,6,6,6,4,5,5,4,1,4,4,1,1,1,1,4,4,4,4,6,6,6,6,4,4,4,4,1,1,1,1,1,1,1,4,5,5,4,6,6,6,6,6,4,5,1,1,4,4,5,1,1,1,1,1,1,4,6,6,6,6,6,4,5,4,1,1,5,4,1,4,1,1,1,1,4,6,6,6,6,6,4,5,5,5,4,1,4,1,4,4,1,1,1,4,6,6,6,6,6,4,4,4,4,4,5,1,1,5,4,1,1,1,4,6,6,6,6,6,6,6,6,6,4,4,5,5,5,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[99,100,101,103,106,107,124,144,160,161,162,164,237],goals:[183,184,185,186,202,203,205,222,223,224,241,242,243],player:82},{tileset:6,palette:6,map:[4,4,4,4,4,6,6,6,6,6,6,4,4,4,4,6,6,6,6,4,5,5,5,5,4,4,4,4,4,4,4,5,5,4,4,4,4,4,4,5,1,1,1,4,5,5,4,5,1,1,1,1,4,5,5,5,4,4,5,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,5,4,4,4,1,1,1,1,1,5,4,5,5,4,5,1,1,1,1,5,4,4,5,1,1,1,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,5,4,5,1,5,4,1,1,1,1,1,1,1,4,5,1,4,6,4,5,4,4,1,1,4,1,1,1,1,1,1,1,4,1,1,4,6,4,5,4,5,1,1,1,1,1,1,1,1,1,1,1,1,1,4,6,4,5,4,1,1,1,4,1,1,1,1,1,1,1,4,1,1,4,6,4,5,1,1,1,1,4,4,4,4,1,4,4,4,4,1,1,4,6,4,5,1,1,1,1,4,4,4,5,1,1,1,1,1,1,1,4,4,4,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,4,4,4,1,4,4,4,4,4,4,1,1,1,4,4,4,4,4,5,4,4,5,5,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4],blocks:[42,49,60,63,66,70,72,78,80,89,98,130,158,167,175,193,195,200,206,211,219,223,230,236,238,241,257],goals:[121,122,123,124,125,126,127,141,142,143,144,145,146,159,160,161,162,163,164,165,166,178,179,180,181,183,184],player:86},{tileset:6,palette:6,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,4,5,5,4,4,4,4,6,6,6,6,6,4,4,4,4,4,1,1,4,1,1,4,5,5,4,4,6,6,6,6,4,1,1,5,4,1,1,4,1,1,4,1,1,5,4,6,6,6,6,4,1,1,1,4,1,1,4,1,1,4,1,1,1,4,4,4,4,6,4,1,1,1,4,1,1,1,1,1,4,1,1,1,4,5,5,4,6,4,1,1,1,1,1,1,4,1,1,4,1,1,1,1,1,1,4,6,4,1,1,1,4,1,1,4,1,1,4,1,1,1,4,1,1,4,6,4,1,1,1,4,1,1,4,1,1,1,1,1,1,4,1,1,4,6,4,1,1,1,4,1,1,4,1,1,4,1,1,1,4,1,1,4,4,4,1,1,1,4,1,1,4,1,1,4,1,1,1,4,1,1,5,4,4,1,1,1,4,5,5,4,1,1,4,5,5,5,4,1,1,5,4,4,4,1,5,4,4,4,4,5,5,4,4,4,4,4,5,5,5,4,6,4,4,4,4,6,6,4,4,4,4,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[63,65,101,103,108,125,139,145,160,163,177,184,198,199,201,215,222,224],goals:[77,78,96,97,115,134,135,153,154,172,173,191,192,210,211,229,230,249],player:155},{tileset:6,palette:6,map:[4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,4,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,6,4,1,1,1,1,1,1,1,1,1,1,1,1,1,4,5,5,4,6,4,4,4,4,4,4,4,4,4,4,4,1,1,4,5,1,1,4,4,4,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,4,4,4,1,4,4,4,4,5,1,1,4,5,1,1,1,4,1,5,4,4,5,1,1,1,1,5,4,1,1,5,4,4,5,5,4,1,4,4,4,5,1,1,4,1,5,4,5,4,4,5,5,4,4,4,1,4,4,4,5,1,1,4,1,4,4,4,5,1,1,5,4,4,4,1,4,4,4,4,4,1,1,1,5,4,5,5,4,1,5,4,4,4,1,4,4,4,4,4,1,1,1,1,1,1,4,4,1,4,5,5,4,1,4,4,6,4,5,1,1,1,4,1,1,1,1,1,1,1,1,1,1,5,4,6,4,5,1,1,1,1,1,4,1,1,1,1,1,4,5,5,5,4,6,4,5,1,4,5,1,1,1,1,1,1,1,1,4,4,4,4,4,6,4,5,5,4,4,5,5,4,5,5,4,5,5,4,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6],blocks:[49,50,68,83,86,92,108,136,154,157,176,197,212,218,221,223,232,235,237,238,239,254],goals:[20,21,22,23,24,25,26,27,28,29,32,39,40,41,42,43,44,45,46,47,48,51],player:269},{tileset:6,palette:6,map:[4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,6,4,5,1,4,5,1,1,1,1,4,1,1,1,1,1,1,4,6,6,4,5,1,4,5,4,1,4,4,4,4,4,1,1,1,1,4,6,6,4,4,1,4,5,1,1,1,1,1,1,1,1,1,1,1,4,6,6,4,5,1,5,4,4,1,4,4,4,4,4,4,5,5,4,4,4,4,4,5,1,1,4,5,1,1,1,5,4,4,4,4,4,4,5,5,4,4,4,1,1,4,5,1,1,1,5,4,4,4,4,4,4,1,5,4,4,5,1,1,5,4,1,1,1,4,4,5,5,5,5,5,5,5,4,4,5,1,1,1,1,1,4,1,1,1,1,4,1,4,1,4,4,4,4,5,4,4,4,4,1,4,1,1,1,1,1,1,1,1,5,4,6,4,5,4,5,1,1,1,1,1,1,1,1,1,4,1,1,5,4,6,4,5,4,5,5,5,4,4,1,1,1,1,1,1,1,1,4,4,4,4,5,4,4,4,4,4,4,1,4,4,5,1,1,1,1,1,5,4,4,5,5,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,4,4,4,4,4],blocks:[78,101,116,135,139,155,158,159,160,184,186,198,199,200,201,202,216,255,263],goals:[45,46,48,49,50,51,52,53,70,71,72,84,85,86,87,88,89,90,91],player:130},{tileset:7,palette:7,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,4,5,5,4,4,4,4,4,6,6,6,6,6,6,6,4,4,1,1,4,1,1,4,1,1,1,4,4,4,6,6,6,6,6,4,5,1,1,4,1,1,4,1,1,1,1,5,4,6,6,6,6,6,4,5,1,1,4,1,1,1,1,1,1,1,1,4,6,6,6,6,6,4,5,1,1,4,1,1,4,1,1,1,1,1,4,6,6,6,6,6,4,5,1,1,4,1,1,4,4,4,4,4,4,4,4,6,6,6,6,4,4,1,1,1,1,1,1,1,1,1,1,1,5,4,6,6,6,6,4,4,5,5,4,5,1,1,1,5,4,1,1,5,4,6,6,6,6,6,4,4,4,4,4,4,1,1,4,4,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,5,5,5,5,5,4,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[120,138,141,142,158,180,195,203,205,219,220,242,243],goals:[106,107,108,125,126,127,144,145,146,163,164,165,167],player:244},{tileset:7,palette:7,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,6,4,1,1,1,1,1,5,4,5,5,5,5,4,5,5,5,4,4,4,4,1,1,1,1,1,1,1,1,4,4,1,4,1,4,1,5,4,4,1,1,1,1,1,1,4,1,1,1,1,1,4,1,1,1,5,4,4,1,1,1,1,1,1,4,5,1,4,1,1,4,1,4,1,5,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,5,4,6,6,4,5,5,5,5,5,4,1,4,4,1,1,4,4,1,4,4,6,4,4,1,1,1,1,1,1,1,5,4,1,1,1,1,1,5,4,6,4,5,1,4,4,1,4,4,4,1,4,1,1,4,4,1,5,4,6,4,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,4,6,4,5,1,1,1,1,1,1,4,4,1,5,4,4,4,4,4,4,6,4,4,4,4,4,4,4,5,5,5,5,4,4,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[66,73,86,124,127,129,142,145,149,158,165,187,193,195,196,202,205,212,217,220],goals:[40,41,42,59,60,61,62,63,77,78,79,80,81,82,96,97,98,99,100,101],player:238},{tileset:7,palette:7,map:[6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,5,5,5,4,6,6,6,6,6,6,6,6,6,4,4,5,1,1,1,1,1,5,4,4,4,4,6,6,4,4,4,4,4,5,1,1,1,1,1,1,5,4,4,1,4,6,6,4,5,1,1,1,1,1,1,1,1,1,5,4,4,1,1,4,6,6,4,5,1,4,4,4,4,4,4,1,4,4,4,1,1,1,4,6,6,4,4,1,4,5,5,4,5,1,1,5,4,1,1,1,1,4,6,6,4,5,5,1,1,1,4,5,1,1,5,4,1,1,1,1,4,6,6,4,5,5,4,1,1,4,4,1,4,4,4,4,1,1,1,4,6,6,4,4,4,4,5,1,1,1,1,1,1,5,4,4,1,1,4,6,6,6,6,6,4,4,1,1,1,1,1,1,1,1,1,1,1,4,6,6,6,6,6,6,4,1,1,1,1,1,1,1,4,5,1,1,4,6,6,6,6,6,6,4,5,1,1,1,1,1,1,5,4,4,4,4,6,6,6,6,6,6,4,4,4,4,4,4,5,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[46,49,64,67,69,85,86,136,157,178,180,181,198,200,203,216,217,220,237,239],goals:[73,91,92,109,110,127,128,129,146,147,148,166,167,168,186,187,204,205,206,225],player:154},{tileset:7,palette:7,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,5,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,1,1,5,4,4,4,4,4,4,4,4,4,6,6,6,6,6,4,4,1,4,5,4,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,1,4,5,1,1,1,4,1,4,1,1,5,4,5,5,5,4,4,5,1,4,5,1,1,1,1,1,1,5,4,5,1,1,1,5,4,4,5,1,4,4,4,1,4,4,4,4,4,4,4,4,4,1,4,4,4,5,1,4,4,5,1,1,1,1,1,1,1,1,5,4,1,4,4,4,4,1,4,4,5,1,1,1,1,1,1,1,1,5,4,1,4,4,4,5,1,4,4,4,4,4,4,4,4,4,4,1,4,4,1,5,4,4,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,4,4,5,5,4,5,5,5,4,5,5,5,4,5,5,5,4,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[59,102,104,124,130,160,177,179,182,184,192,206,212,216,219,224],goals:[158,159,160,161,162,163,164,165,177,178,179,180,181,182,183,184],player:106},{tileset:7,palette:7,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,4,5,5,5,4,5,5,5,5,5,4,6,4,4,4,4,4,6,6,4,5,1,1,1,1,1,1,1,5,4,6,4,5,5,5,4,4,4,4,4,5,1,4,4,1,4,1,4,4,6,4,5,1,1,4,4,5,5,5,4,1,4,4,1,1,1,5,4,6,4,5,1,1,1,1,1,1,5,4,1,4,4,1,1,1,1,4,6,4,4,1,4,4,4,1,1,5,4,1,4,4,5,1,1,1,4,6,4,4,1,4,5,1,1,4,4,4,1,4,4,4,4,4,1,4,6,4,4,1,4,5,1,1,1,1,1,1,5,4,1,1,1,1,4,6,4,5,1,4,4,4,1,4,4,1,1,5,4,1,1,1,1,4,4,4,5,1,1,1,1,1,5,4,1,1,5,4,1,1,1,1,5,4,4,5,5,4,4,1,1,5,4,5,5,4,4,1,1,1,1,5,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,1,1,1,4,4,6,6,6,6,4,4,4,4,4,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[70,72,86,97,109,116,120,121,127,128,129,168,180,200,211,215,224,234],goals:[184,185,186,187,203,204,205,206,222,223,225,241,242,243,244,261,262,263],player:119},{tileset:8,palette:8,map:[6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,4,4,1,1,4,4,5,5,4,5,5,5,4,6,6,6,6,6,6,4,5,1,1,4,5,1,1,1,1,1,1,4,4,4,4,6,6,6,4,1,1,1,1,1,1,4,1,1,1,1,4,5,5,4,4,6,4,4,1,1,1,4,4,1,4,1,1,1,1,1,1,1,5,4,6,4,5,1,4,1,5,4,1,4,1,1,1,1,1,1,1,5,4,6,4,5,1,1,1,1,1,1,1,1,1,4,4,1,4,4,4,4,6,4,5,1,1,1,5,4,1,4,5,5,4,5,1,4,6,6,6,6,4,4,1,1,4,4,4,1,5,4,4,4,1,1,4,6,6,6,6,6,4,5,5,4,1,1,1,1,1,1,1,1,5,4,6,6,6,6,6,4,4,4,4,1,1,1,1,1,1,4,4,4,4,6,6,6,6,6,6,6,4,1,1,1,1,4,4,4,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,4,1,1,1,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6],blocks:[62,65,67,79,82,87,89,100,105,107,127,128,129,136,141,144,155,157,160,184],goals:[196,197,198,199,215,216,217,218,219,220,233,234,235,236,252,253,254,271,272,273],player:66},{tileset:8,palette:8,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,5,5,4,6,6,6,6,6,6,6,6,6,6,4,4,5,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,4,4,5,1,1,1,4,4,1,4,4,4,6,6,6,6,6,6,6,4,5,5,1,1,5,4,5,1,1,5,4,6,6,6,6,6,6,6,4,4,4,4,1,4,4,1,1,1,1,4,6,6,6,6,6,6,6,6,4,1,1,1,1,4,1,1,1,1,4,6,6,6,6,6,6,6,6,4,1,1,1,1,4,1,1,1,1,4,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,1,1,4,4,6,6,6,6,6,6,6,4,1,1,1,5,4,1,1,1,1,5,4,6,6,6,6,6,6,6,4,4,4,4,4,4,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,6,6,4,1,1,5,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,4,1,1,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6],blocks:[68,82,100,102,106,127,143,145,165,182,183,201,219,221,257],goals:[138,139,140,141,157,158,159,160,176,177,178,179,195,196,197],player:99},{tileset:8,palette:8,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,4,4,5,5,5,5,5,4,4,5,5,4,6,6,6,6,6,6,6,4,4,5,1,1,1,1,1,1,1,5,4,6,6,6,6,6,6,6,4,4,4,4,1,4,4,1,1,1,5,4,6,6,6,6,6,6,6,4,5,1,1,1,5,4,1,1,1,5,4,6,6,6,6,6,6,6,4,5,1,1,1,1,4,1,4,4,4,4,6,6,6,6,6,6,6,4,5,1,5,4,1,4,1,1,5,4,4,6,6,6,6,6,6,6,4,5,1,4,5,1,4,1,1,1,5,4,6,6,6,6,6,6,6,4,5,1,4,1,1,4,1,1,1,5,4,6,6,6,6,6,6,6,4,5,1,1,1,1,4,1,4,4,4,4,6,6,6,6,6,6,6,4,4,4,4,1,1,1,1,5,4,5,4,6,6,6,6,6,6,6,4,1,1,1,1,1,4,1,1,4,5,4,6,6,6,6,6,6,6,4,4,1,1,1,1,4,1,1,1,5,4,6,6,6,6,6,6,6,4,4,4,1,1,4,4,5,5,5,5,4,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6],blocks:[65,69,87,88,102,119,120,121,144,164,176,179,219,239,259],goals:[197,198,216,217,232,233,234,235,236,252,253,254,255,272,273],player:222},{tileset:8,palette:8,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,5,4,4,6,6,6,6,6,6,6,6,6,4,1,4,1,4,5,1,1,5,4,4,6,6,6,6,6,6,6,4,4,1,1,1,1,4,1,4,5,5,4,4,6,6,6,6,6,6,4,5,1,1,1,1,4,1,5,4,5,5,4,4,6,6,6,6,6,4,5,1,1,1,5,4,1,1,4,4,1,5,4,6,6,6,6,6,4,4,1,4,4,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,4,1,1,1,1,1,1,1,1,4,5,5,4,6,6,6,6,6,6,4,1,4,5,1,1,1,1,5,4,4,5,4,6,6,6,6,6,6,4,1,5,4,4,4,5,1,4,4,5,5,4,6,6,6,6,6,6,4,1,1,1,5,4,4,1,4,4,1,4,4,6,6,6,6,6,6,4,5,1,1,1,4,5,1,1,1,5,4,6,6,6,6,6,6,6,4,4,4,1,1,1,1,1,5,4,4,4,6,6,6,6,6,6,6,6,6,4,5,5,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6],blocks:[68,124,128,144,157,160,162,164,180,182,235,240,254,256],goals:[43,44,45,46,62,64,81,82,83,84,100,101,102,103],player:89},{tileset:8,palette:8,map:[4,4,4,4,4,4,4,4,4,4,4,4,6,4,4,4,4,4,4,4,5,5,5,4,5,5,5,5,4,5,4,4,4,1,1,1,1,4,4,5,1,1,1,1,4,5,1,1,1,1,1,1,1,1,1,1,4,4,5,1,5,4,1,4,4,4,1,1,5,4,1,1,1,1,1,4,4,4,1,4,4,1,4,4,4,1,1,4,5,1,1,1,1,1,4,6,4,1,1,1,1,1,1,1,1,1,4,5,4,1,4,4,4,4,6,4,5,1,1,1,1,4,4,5,5,4,5,1,1,1,1,5,4,4,4,4,4,1,4,1,5,4,4,4,4,5,4,1,4,4,5,4,4,5,5,4,1,4,1,1,1,5,4,4,5,4,1,1,1,5,4,4,5,1,1,1,1,1,1,4,1,4,4,5,4,1,1,1,4,4,4,5,4,1,1,1,1,1,1,1,5,4,5,4,5,5,5,4,6,4,5,1,1,1,4,4,1,4,4,1,4,5,4,4,4,4,4,6,4,5,1,1,1,1,1,1,1,1,1,1,5,4,6,6,6,6,6,4,4,1,4,4,1,4,4,4,1,1,1,5,4,6,6,6,6,6,6,4,5,5,5,5,4,6,4,5,5,5,5,4,6,6,6,6,6,6,4,4,4,4,4,4,6,4,4,4,4,4,4,6,6,6,6,6],blocks:[42,43,98,100,118,120,158,173,176,194,196,212,230,231,237,238,257],goals:[33,34,35,36,51,52,53,54,55,71,72,73,74,90,91,92,93],player:48},{tileset:9,palette:9,map:[6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,4,4,4,4,4,6,6,4,4,4,4,4,4,5,5,5,4,6,6,4,5,5,5,4,4,4,4,5,1,1,1,1,1,1,1,4,6,6,4,5,1,1,1,5,4,4,1,4,4,1,4,4,1,1,4,4,6,4,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,4,6,4,4,4,1,1,1,5,4,4,1,4,4,5,1,1,1,1,4,4,6,6,4,1,4,4,4,4,4,1,4,4,4,4,4,1,1,5,4,6,4,4,1,4,4,4,4,4,1,5,4,4,5,1,1,1,5,4,6,4,5,1,1,5,4,4,4,1,4,4,4,1,1,1,5,4,4,6,4,5,1,1,1,4,5,1,1,4,4,4,1,1,4,4,4,6,6,4,5,1,1,1,1,5,4,1,1,1,1,1,1,4,6,6,6,6,4,5,5,5,5,5,4,5,1,1,4,4,5,5,4,6,6,6,6,4,4,4,4,4,4,4,1,1,1,1,4,4,4,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6],blocks:[48,50,52,59,80,82,88,91,99,129,130,136,155,161,166,174,193,194,196,202,203],goals:[236,237,239,252,253,254,255,256,257,258,259,260,271,272,273,274,275,276,277,278,279],player:143},{tileset:9,palette:9,map:[4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,1,5,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,4,5,5,4,4,5,5,5,4,4,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,5,4,4,1,1,1,1,1,1,1,5,4,5,1,4,4,4,5,1,5,4,4,1,1,1,4,1,4,4,4,4,4,5,5,5,5,4,1,5,4,4,4,4,1,1,1,5,4,5,5,5,4,1,1,5,4,1,5,4,6,6,4,1,1,1,1,1,1,1,1,1,1,1,4,4,1,5,4,6,6,4,5,1,1,1,1,1,4,1,4,1,1,4,4,1,5,4,6,6,4,4,4,1,4,4,1,4,5,1,1,5,4,4,5,5,4,6,6,6,4,5,1,1,1,1,5,4,4,1,4,4,4,4,4,4,6,6,6,4,5,1,1,1,1,1,1,1,1,5,4,6,6,6,6,6,6,6,4,4,5,5,5,4,5,4,5,5,5,4,6,6,6,6,6,6,6,6,4,4,4,4,4,5,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[64,69,81,83,100,126,130,138,139,141,143,146,157,162,164,168,196,198,217,220],goals:[20,21,22,23,24,25,39,40,41,42,43,44,58,59,77,78,79,96,97,98],player:256},{tileset:9,palette:9,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,5,5,4,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,4,5,1,1,1,4,4,5,1,4,6,6,6,6,6,6,6,6,6,4,4,1,4,1,1,1,4,1,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,4,1,4,1,1,1,4,1,4,4,6,6,6,6,6,6,6,6,6,4,1,1,1,4,1,4,1,5,4,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,4,5,5,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[86,103,107,120,140,183,196,199],goals:[122,123,124,141,142,143,160,162],player:69},{tileset:9,palette:9,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,6,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,4,4,4,5,5,5,4,4,5,5,5,5,5,4,4,1,1,1,1,4,4,5,1,1,1,4,4,1,1,1,1,5,4,4,1,1,1,1,4,4,5,1,1,1,1,1,1,1,1,1,4,5,1,1,1,1,1,4,4,5,1,1,1,4,4,1,1,1,1,4,5,4,1,1,1,1,4,4,5,1,1,5,4,4,5,1,1,5,4,5,1,1,1,1,1,4,4,4,1,4,4,4,4,4,1,4,4,4,5,4,4,1,4,4,4,4,4,1,1,1,1,1,1,1,5,4,4,5,1,1,1,5,5,4,4,5,1,4,4,4,1,1,4,1,4,4,4,4,4,1,4,4,4,4,5,1,1,1,1,1,1,4,1,1,1,1,1,1,1,4,6,6,4,5,1,1,1,4,1,1,1,1,1,4,4,4,5,5,4,6,6,4,5,1,1,1,4,1,1,1,1,1,4,6,4,4,4,4,6,6,4,5,5,5,5,4,1,1,1,1,5,4,6,6,6,6,6,6,6,4,4,4,4,4,4,5,5,5,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6],blocks:[60,61,66,83,84,86,98,103,104,117,122,157,160,173,194,212,215,217,219,230,231,232,235,255,256],goals:[33,34,35,36,52,53,54,55,71,72,73,74,90,91,92,93,110,111,112,128,129,130,131,148,167],player:68},{tileset:9,palette:9,map:[6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,4,5,5,5,5,5,5,5,5,5,5,4,4,6,6,6,6,6,6,4,1,1,4,1,4,1,1,1,1,1,5,4,6,6,6,6,6,6,4,1,5,4,1,4,1,1,4,4,1,5,4,6,6,6,6,6,4,4,1,4,4,1,4,1,1,5,4,1,4,4,6,6,6,6,6,4,5,1,1,1,1,4,1,1,5,4,1,4,6,6,6,6,6,6,4,5,1,1,4,1,1,1,1,5,4,1,4,6,6,6,6,6,6,4,4,1,1,1,1,1,1,1,4,4,1,4,6,6,6,6,6,6,4,5,1,4,1,5,4,4,1,1,1,1,4,6,6,6,6,6,6,4,5,1,1,1,4,4,5,1,1,4,1,4,6,6,6,4,4,4,4,4,4,1,1,1,1,5,4,5,5,5,4,6,6,6,4,1,1,1,1,4,1,5,4,4,4,4,4,4,4,4,6,6,6,4,1,4,1,1,1,1,4,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6],blocks:[49,50,52,63,66,88,103,106,124,140,142,166,183,184,197,198],goals:[211,212,213,214,230,232,233,234,249,250,251,252,268,269,270,271],player:73},{tileset:10,palette:10,map:[6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,5,5,5,4,4,6,6,6,6,6,6,6,6,6,6,6,4,4,5,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,4,5,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,4,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,1,5,4,6,6,4,4,4,4,6,6,6,4,1,1,1,1,1,5,4,4,4,4,4,4,5,5,4,4,4,4,4,1,1,1,1,4,4,5,5,5,5,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,4,4,1,4,1,4,4,4,4,4,4,4,1,4,4,1,1,1,4,4,4,1,4,1,4,4,4,4,4,4,4,1,5,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,5,4,1,1,1,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,1,1,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,5,5,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[69,70,86,87,90,104,109,125,126,166,167,168,204,206,244],goals:[153,172,191,201,210,211,212,213,214,215,216,217,218,219,220],player:169},{tileset:10,palette:10,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,6,6,6,4,5,1,1,1,4,4,1,1,1,1,1,1,5,5,4,6,6,6,4,1,4,4,1,4,4,1,4,1,1,1,1,1,4,4,6,4,4,4,1,1,1,1,1,1,1,4,1,1,1,1,1,4,4,6,4,5,1,1,1,1,1,1,1,1,4,1,1,4,1,1,5,4,6,4,5,4,1,1,1,1,1,1,1,4,1,1,1,1,1,5,4,6,4,5,4,1,1,1,1,1,1,1,1,1,1,4,1,1,5,4,6,4,5,1,1,4,4,4,1,4,4,4,1,1,1,1,1,4,4,6,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,4,6,6,6,6,4,5,1,1,1,1,1,1,1,1,1,1,1,5,4,6,6,6,6,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[68,70,86,88,90,92,109,110,145,148,164,165,168,174,183,186,196,199,202,205,215,218,221,224],goals:[100,101,102,103,104,105,119,120,121,122,123,124,138,139,140,141,142,143,157,158,159,160,161,162],player:74},{tileset:10,palette:10,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,4,4,4,4,4,5,5,4,5,5,4,4,4,4,6,6,6,6,6,4,5,5,5,4,1,1,1,1,1,1,1,5,4,6,6,4,4,4,4,1,4,1,1,1,4,4,1,4,4,1,5,4,6,4,4,5,1,1,1,1,1,4,1,4,5,1,4,4,1,4,4,4,4,5,1,4,4,4,1,1,4,1,1,1,1,1,1,1,1,5,4,4,1,1,1,1,1,1,1,4,1,4,4,1,5,4,5,1,5,4,4,1,1,1,4,1,1,1,1,1,5,4,1,4,4,4,1,4,4,4,1,1,1,4,5,5,4,4,4,5,1,1,1,1,1,1,5,4,4,4,4,4,4,4,4,4,6,4,4,5,5,5,4,5,5,5,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[107,121,122,159,161,164,167,221,224],goals:[172,173,174,191,192,193,210,211,212],player:199},{tileset:10,palette:10,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,1,4,1,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,5,5,4,4,4,4,4,4,6,6,6,6,4,1,1,5,4,4,1,1,4,4,4,5,5,5,4,6,6,6,6,4,1,4,4,4,4,5,1,1,1,1,1,1,1,4,6,6,6,6,4,1,4,4,4,4,4,1,4,5,1,4,1,1,4,4,4,4,4,4,1,5,4,4,4,4,1,4,4,1,1,1,1,1,1,5,4,4,5,1,1,4,5,1,1,1,5,4,1,4,4,1,4,4,5,4,4,5,1,1,1,1,1,1,1,5,4,1,4,1,1,1,4,5,4,4,4,4,4,4,4,5,5,4,4,4,1,1,1,1,1,1,5,4,6,6,6,6,6,4,4,4,4,6,4,1,4,1,1,1,4,5,4,6,6,6,6,6,6,6,6,6,6,4,1,4,4,4,1,4,5,4,6,6,6,6,6,6,6,6,6,6,4,5,5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4],blocks:[84,98,102,122,127,146,163,174,178],goals:[203,204,205,222,223,224,241,242,243],player:85},{tileset:10,palette:10,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,6,4,4,4,4,6,6,6,6,6,6,6,6,6,4,1,1,1,4,6,4,5,5,4,4,4,4,6,6,6,6,6,6,4,1,1,1,4,4,4,5,1,1,1,5,4,6,6,6,6,6,6,4,1,1,1,1,4,4,5,1,1,1,1,4,4,4,6,6,6,6,4,4,1,1,1,1,4,4,5,1,1,1,1,5,4,6,6,6,6,4,4,4,1,1,1,5,4,4,1,1,1,1,5,4,6,6,6,6,4,5,4,4,5,1,1,5,4,5,1,1,1,5,4,6,6,6,6,4,5,5,4,4,1,4,1,4,4,4,1,4,4,4,4,6,6,6,4,5,1,5,4,1,4,1,1,1,1,1,1,1,5,4,6,6,6,4,5,1,1,1,1,1,1,1,1,1,1,1,1,5,4,6,6,6,4,5,1,5,4,5,1,1,1,1,1,1,5,4,4,4,6,6,6,4,5,5,4,4,4,4,4,4,5,5,4,4,4,6,6,6,6,6,4,5,4,4,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[68,86,89,108,126,128,146,175,180,183,195,199,204,217,219,220,222],goals:[41,42,43,60,61,62,79,80,81,82,99,100,101,102,119,120,121],player:197},{tileset:11,palette:11,map:[6,6,6,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,4,5,5,5,5,5,5,5,5,4,4,4,4,6,6,6,6,6,6,4,5,4,4,4,4,4,4,1,4,5,5,4,4,6,6,6,6,6,4,5,4,5,1,1,1,1,1,1,1,1,5,4,6,6,6,6,6,4,5,1,1,1,1,1,1,4,1,1,1,5,4,6,6,6,6,6,4,4,4,1,1,1,1,1,4,1,1,4,4,4,6,6,6,6,6,6,6,4,5,1,4,4,1,4,1,1,4,4,6,6,6,6,6,6,6,6,4,4,1,4,5,1,1,1,5,5,4,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,4,4,4,6,6,6,6,6,6,6,6,6,4,1,4,5,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,4,1,4,4,5,5,5,4,5,4,6,6,6,6,6,6,6,6,4,4,1,5,4,4,4,4,4,5,4,6,6,6,6,6,6,6,6,4,5,1,1,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,4,4,4,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6],blocks:[64,66,68,71,88,101,104,105,127,140,145,161,163,183],goals:[253,254,255,256,257,258,259,272,273,274,275,276,277,278],player:147},{tileset:11,palette:11,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,5,5,4,4,6,6,6,6,6,4,4,5,1,1,1,1,1,1,1,1,1,5,4,4,4,4,4,6,4,5,1,1,4,4,1,4,4,1,1,1,4,4,1,1,1,4,6,4,5,4,1,1,1,1,1,1,1,4,1,4,4,1,1,1,4,6,4,5,4,1,1,1,1,1,1,1,4,1,1,1,1,1,1,4,6,4,5,1,1,4,1,4,4,4,1,1,1,1,1,1,1,1,4,6,4,5,1,1,1,1,1,1,1,1,1,4,4,1,1,1,1,4,6,4,4,4,1,1,1,1,1,1,1,5,4,4,4,4,4,4,4,6,6,6,4,5,5,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],blocks:[81,88,118,119,121,123,124,126,156,162,163,174,177,178,181,194],goals:[110,111,112,129,130,131,148,149,150,167,168,169,185,186,187,188],player:141},{tileset:11,palette:11,map:[6,6,6,6,6,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,4,1,1,1,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,6,6,4,4,4,1,1,1,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,4,5,1,5,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,1,4,4,4,4,4,4,6,6,6,6,6,6,4,5,1,1,1,1,1,1,1,1,1,5,4,6,6,6,6,6,6,4,5,1,1,1,1,1,1,1,1,1,5,4,6,6,6,6,6,6,4,4,1,1,1,1,1,1,1,1,1,4,4,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,4,1,1,1,1,1,1,1,1,1,4,6,6,6,6,6,6,6,6,4,5,5,4,4,4,4,4,5,5,4,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,4,4,4,4,6,6,6,6],blocks:[25,27,29,31,45,47,49,63,65,67,69,83,85,87,101,103,105,107,195,197,199,201,203,215,217,219,221,233,235,237,239,241,255,257],goals:[25,26,27,29,30,31,44,45,46,47,48,49,50,63,64,65,66,67,68,69,82,83,84,85,86,87,88,101,102,103,104,105,106,107],player:256},{tileset:11,palette:11,map:[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,5,5,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,1,1,5,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,4,1,1,1,5,4,4,6,6,6,6,6,6,6,6,6,6,4,4,4,1,1,1,1,5,4,4,6,6,6,6,6,6,4,4,4,4,5,1,1,1,1,1,1,5,4,6,6,6,6,4,4,4,5,5,4,1,4,4,4,4,4,1,1,4,6,6,6,6,4,5,1,1,1,4,1,4,1,1,1,1,1,1,4,6,6,6,6,4,5,4,1,1,1,1,1,1,1,1,1,4,1,4,6,6,6,6,4,5,1,1,1,4,5,4,1,1,1,1,4,1,4,6,6,6,6,4,4,4,5,5,4,4,4,4,1,4,4,4,1,4,6,6,6,6,6,6,4,4,4,4,5,5,5,1,5,4,4,1,4,4,6,6,6,6,6,6,6,6,4,4,4,5,1,1,1,1,1,5,4,6,6,6,6,6,6,6,6,6,6,4,5,5,4,4,5,5,5,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,6],blocks:[87,88,105,108,126,166,179,195,201,238,243,258],goals:[162,163,164,165,181,182,183,184,200,201,202,203],player:237},{tileset:11,palette:11,map:[6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,4,4,1,1,1,1,1,5,4,5,5,5,4,6,6,6,6,6,4,4,1,1,1,1,1,1,1,1,1,1,5,4,6,6,6,6,4,4,1,1,1,1,4,5,4,5,4,1,1,4,4,6,6,6,6,4,1,1,1,1,4,5,4,5,4,5,1,1,5,4,6,4,4,4,4,1,1,1,4,5,1,4,5,1,1,1,4,5,4,6,4,5,5,4,4,1,4,5,5,5,5,5,1,1,1,1,5,4,6,4,5,1,1,1,1,5,4,4,4,5,5,4,1,4,1,4,4,6,4,5,1,1,1,1,1,1,1,5,4,5,4,1,1,1,4,6,6,4,4,4,1,1,1,1,1,4,5,4,5,4,1,4,5,4,6,6,6,6,4,1,1,1,1,1,1,5,4,5,4,1,4,4,4,4,4,6,6,4,1,1,4,1,4,4,4,4,4,5,1,1,1,1,5,4,6,6,4,1,1,1,5,4,6,6,6,4,5,1,1,4,1,5,4,6,6,4,1,1,4,4,4,6,6,6,4,4,1,1,1,1,5,4,6,6,4,5,5,4,6,6,6,6,6,6,4,5,5,5,5,4,4,6,6,4,4,4,4,6,6,6,6,6,6,4,4,4,4,4,4,6],blocks:[46,48,53,64,71,82,90,136,138,154,158,174,175,196,213,231],goals:[26,27,44,45,46,62,63,64,65,80,81,82,83,99,100,101],player:135}];function find_level(levelno){return maps[levelno]}
function load_level(levelno){reset_level()
var leveldata=find_level(levelno)
if(leveldata){set_tileset(leveldata.tileset)
set_palette(leveldata.palette)
set_tilemap(leveldata.map)
set_start(leveldata.player)
var a,b=leveldata.goals.length
for(a=0;a<b;++a)add_goal(leveldata.goals[a])
var a,b=leveldata.blocks.length
for(a=0;a<b;++a)add_block(leveldata.blocks[a])}
set_screen_offset()
render_bg()
render_obj_init()}
function get_level_blockcount(levelno){var leveldata=find_level(levelno)
if(!leveldata)return 0
return leveldata.blocks.length}
function get_level_phase(levelno){return Math.floor(levelno/5)+1}
function get_level_level(levelno){return levelno%5+1}
function get_level_name(levelno){var l=levelno%5
var p=(levelno-l)/5
++p;++l;return p+'-'+l}
var room_rendered=0
var show_replay_icon=0
var magnification=2.0,magnif_offsx=0,magnif_offsy=0
function allow_rendering(){return document.addEventListener}
function game_calc_coord(x,y){return y*game_width+x}
function game_uncalc_coord(coord){var x=coord%game_width
return{x:x,y:(coord-x)/game_width}}
var player_facing_up=game_calc_coord(0,-1),player_facing_down=game_calc_coord(0,1),player_facing_left=game_calc_coord(-1,0),player_facing_right=game_calc_coord(1,0)
var player_state_idle=0,player_state_walk=1,player_state_grab=2,player_state_push=3,player_state_exit=4,player_state_kick=5
var obstaclemap=[],goalmap=[],deadzones=[]
function set_tilemap(map){goalmap=[]
obstaclemap=[]
deadzones=[]
var a=0,b=game_maxdim;for(a=0;a<b;++a){goalmap.push(0);obstaclemap.push((map[a]&3)!=1?-1:0);deadzones.push(map[a]&4)}}
function add_goal(pos){goalmap[pos]=1}
function add_block(pos){var blockno=room_blocks.length
room_blocks.push({pos:pos,goal:0,old_img:'',moved:1})
changed_block_list.push(blockno)
obstaclemap[pos]=blockno+1}
function set_start(pos){room_player={pos:pos,facing:player_facing_up,state:player_state_idle,old_img:'',moved:1}}
function set_palette(pal){room_palette=pal}
function set_tileset(pal){room_tileset=pal}
function reset_level(){room_rendered=0
dom_wipe(room)
room_goals=[]
room_blocks=[]
room_player={pos:0,old_img:''}
room_palette=0
room_tileset=0
room_changed=0
changed_block_list=[]
clear_movement()
clear_level_completed()
gel('repeat').style.visibility='hidden'}
function touch_everything(){if(!allow_rendering())return;changed_block_list=[]
var a,b=room_blocks.length
for(a=0;a<b;++a){var block=room_blocks[a]
move_block(a,block.pos,0)}
move_player(room_player.pos,0)}
function clear_movement(){move_players=null
move_blocks={}
animation_end=0}
function move_block(blockno,newpos,duration){var block=room_blocks[blockno]
if(duration>0){move_blocks[blockno]={pos:block.pos,begin:main_timer,length:duration}}
obstaclemap[block.pos]=0
block.pos=newpos
block.moved=1
room_changed=1
changed_block_list.push(blockno)
obstaclemap[newpos]=blockno+1}
function move_player(newpos,duration){if(duration>0){move_players={pos:room_player.pos,begin:main_timer,length:duration}}
room_player.pos=newpos
room_player.moved=1
room_changed=1}
function set_player_state(newstate){if(room_player.state==newstate)return;room_player.state=newstate
room_player.moved=1
room_changed=1}
function set_player_facing(newfacing){if(room_player.facing==newfacing)return;room_player.facing=newfacing
room_player.moved=1
room_changed=1}
function animation_begin_wait(length){animation_end=main_timer+Math.ceil(length)}
function animation_is_waiting(){var diff=animation_end-main_timer
if(diff<=0)return 0;return diff}
function animation_finish_immediately(){main_timer=animation_end+1
room_changed=1}
function get_move(){this.b=new cloneObject(move_blocks)
this.p=null
if(move_players!=null)this.p=new cloneObject(move_players)
this.t=main_timer
this.f=1
this.restore=function(factor){var i;var pl=this.p
if(pl!=null){pl.begin+=(main_timer-this.t)
pl.length*=factor/this.f}
for(i in this.b){var bl=this.b[i]
if(bl==null)continue
bl.begin+=(main_timer-this.t)
bl.length*=factor/this.f}
this.t=main_timer
this.f=factor
move_blocks=new cloneObject(this.b)
if(this.p==null)
move_players=null
else
move_players=new cloneObject(this.p)
room_player.moved=1
var a,b=room_blocks.length;for(a=0;a<b;++a)
room_blocks[a].moved=1
room_changed=1}}
function render_bg(){var width=game_width
var height=game_height
var bg_url='bg/'+magnification+'/'+cur_level+'.png'
room.style.backgroundImage='url("'+bg_url+'")';update_bg_offset()
if(allow_rendering()){var x,y;var pos=0;for(y=0;y<height;++y)
for(x=0;x<width;++x)
if(goalmap[pos++]){var uri=room_palette+"/"+room_tileset+"/1b.gif"
var img=new Image
img.set_alt_title('','')
img.set_z(1)
img.set_src(uri)
img.set_size(16*magnification,16*magnification)
img.set_pos(x*16*magnification-magnif_offsx,y*16*magnification-magnif_offsy)
img.add_to(room)}}}
function blockRenderInfo(blockno){var block=room_blocks[blockno]
this.moved=block.moved
if(this.moved){this.x=(block.pos)%game_width
this.y=(block.pos-this.x)/game_width
var move=move_blocks[blockno]
if(move&&move!=null){var movepos=(main_timer-move.begin)/move.length
if(movepos<1){var move_x=(move.pos)%game_width
var move_y=(move.pos-move_x)/game_width
this.x+=(move_x-this.x)*(1-movepos)
this.y+=(move_y-this.y)*(1-movepos)}
else
{move_blocks[blockno]=null
block.goal=goalmap[block.pos]
block.moved=0;forget_goal_data()}}
else
{block.goal=goalmap[block.pos]
block.moved=0;forget_goal_data()}
var fn=block.goal?"0b.gif":"0.gif"
var uri=room_palette+"/"+room_tileset+"/"+fn
this.uri=uri}}
var walk_frame_start=[0,3,88,91],grab_frame_start=[6,12,94,100],push_frame_start=[8,14,96,102],exit_frame_start=[24,40,56,72],kick_frame_start=[30,31,32,33]
var player_frames=[walk_frame_start,walk_frame_start,grab_frame_start,push_frame_start,exit_frame_start,kick_frame_start],player_frame_types=['.png','.gif','.gif','.gif','.gif','.gif']
function playerRenderInfo(){this.moved=room_player.moved
if(this.moved){this.x=(room_player.pos)%game_width
this.y=(room_player.pos-this.x)/game_width
var move=move_players
if(move&&move!=null){var movepos=(main_timer-move.begin)/move.length
if(movepos<1){var move_x=(move.pos)%game_width
var move_y=(move.pos-move_x)/game_width
this.x+=(move_x-this.x)*(1-movepos)
this.y+=(move_y-this.y)*(1-movepos)}
else
{move_players=null
room_player.moved=0}}
else
{room_player.moved=0}
var facing=0
switch(room_player.facing){case player_facing_up:facing=0;break;case player_facing_down:facing=1;break;case player_facing_left:facing=2;break;case player_facing_right:facing=3;break}
var state=room_player.state
this.uri="player/"+
player_frames[state][facing]+
player_frame_types[state]}}
function render_obj_init(){if(!game_enabled)return;var a,b=room_blocks.length
room_changed=0
if(allow_rendering()){for(a=0;a<b;++a){var block=new blockRenderInfo(a)
var img=new Image
img.set_alt_title('','')
img.set_src(block.uri)
img.set_z(2)
img.set_size(16*magnification,16*magnification)
img.set_pos(block.x*16*magnification-magnif_offsx,block.y*16*magnification-magnif_offsy)
img.add_to(room)
room_blocks[a].old_img=block.uri
room_blocks[a].img=img
if(block.moved)room_changed=1}}
var player=new playerRenderInfo()
var img=new Image
img.set_alt_title('P','Peter')
img.set_src(player.uri)
img.set_z(3)
img.set_size(16*magnification,16*magnification)
img.set_pos(player.x*16*magnification-magnif_offsx,player.y*16*magnification-magnif_offsy)
img.add_to(room)
room_player.img=img
room_player.old_img=player.uri
if(player.moved)room_changed=1
if(!room_changed)changed_block_list=[]
room_rendered=1}
function render_replay_icon(){if(show_replay_icon){var pos=(main_timer/render_fps*3)%2
gel('repeat').style.visibility=pos<1?'hidden':'visible'}}
function render_obj_update(){if(!room_rendered)return render_obj_init();render_replay_icon()
if(!room_changed)return;room_changed=0;var a,b=changed_block_list.length;for(a=0;a<b;++a){var blockno=changed_block_list[a]
var block=new blockRenderInfo(blockno)
if(!block.moved)continue;var blockref=room_blocks[blockno]
if(blockref.moved)room_changed=1;var uri=block.uri
if(blockref.old_img!=uri){blockref.img.set_src(uri)
blockref.old_img=uri}
blockref.img.set_pos(block.x*16*magnification-magnif_offsx,block.y*16*magnification-magnif_offsy)}
if(!room_changed)changed_block_list=[]
var player=new playerRenderInfo()
if(player.moved){var playerref=room_player
if(playerref.moved)room_changed=1;var uri=player.uri
if(playerref.old_img!=uri){playerref.old_img=uri
playerref.img.set_src(uri)}
playerref.img.set_pos(player.x*16*magnification-magnif_offsx,player.y*16*magnification-magnif_offsy)}}
function render_begin_slowmo(){show_replay()
magnification=3.0
var width=game_width
var height=game_height
var visible_x=Math.floor(width/magnification)
var visible_y=Math.floor(height/magnification)
var plr_coord=game_uncalc_coord(room_player.pos)
var offsx=Math.floor(plr_coord.x-visible_x/2)
var offsy=Math.floor(plr_coord.y-visible_y/2)
if(offsx<0)offsx=0
if(offsy<0)offsy=0
if(offsx+visible_x>width)offsx=width-visible_x
if(offsy+visible_y>width)offsy=width-visible_y
magnif_offsx=magnification*16*offsx
magnif_offsy=magnification*16*offsy
dom_wipe(room)
render_bg()
render_obj_init()}
function render_end_slowmo(){hide_replay()
dom_wipe(room)
magnification=2.0
set_screen_offset()
render_bg()
render_obj_init()
touch_everything()}
function set_screen_offset(){magnif_offsx=0
magnif_offsy=0}
function update_bg_offset(){room.style.backgroundPosition=(-magnif_offsx)+'px '+(-magnif_offsy)+'px'}
function show_replay(){if(!show_replay_icon)gel('repeat').style.visibility='visible'
show_replay_icon+=1}
function hide_replay(){show_replay_icon-=1
if(!show_replay_icon)gel('repeat').style.visibility='hidden'}
function render_refresh(){dom_wipe(room)
render_bg()
render_obj_init()}
function get_img_url(name){return name}
var walking_speed=0.20
var grabbing_time=0.05
var pushing_speed=0.40
var teleportation_time=1.10
var kicking_speed=0.15
var kicking_time=0.50
var game_speed_multiplier=1.0
var render_fps=30
var main_timer=0
var active_key=-1
var cur_level=-1
var game_enabled=1
var in_slowmotion=0
var kick_begin=0
var room=0
function render_tick(){render_schedule_next()
if(game_enabled){if(movie_mode==movie_mode_replay){if(active_key==70&&movie_position<level_movie.length){var next_time=level_movie[movie_position].t
if(level_stats.timer<next_time)
level_stats.timer=next_time}
movie_play_action()}
with(level_stats){if(steps>0||pushes>0||kicks>0||timer>0)++timer}
render_obj_update();main_timer+=1;check_movement()}}
function render_schedule_next(){setTimeout("render_tick()",game_speed_multiplier*1000.0/render_fps)}
function boot(){create_layer_buttons()
room=gel('room')
if(!document.addEventListener){document.attachEvent('keydown',keydown)
document.attachEvent('keyup',keyup)
room.attachEvent('mousedown',mouseclick)}
else
{document.addEventListener('keydown',keydown,false)
document.addEventListener('keyup',keyup,false)
room.addEventListener('mousedown',mouseclick,false)}
render_schedule_next()
stats_schedule_next()
next_level(1)
gel('repeat').style.left=(room.offsetLeft+40)+"px"
gel('repeat').style.top=(room.offsetTop+40)+"px"
layout_update_buttons()
load_cookie()
layout_click('intro')
if(!allow_rendering()){gel('iedetails').style.color='#FF0';gel('iedetails').style.fontSize='17px';gel('iedetails').style.marginTop='1em';gel('warning').innerHTML="<p><h2>Ouch</h2><hr>"+"<b>I'm afraid you can't play this game with Microsoft Internet Explorer.</b>"+"<p><b>Please choose a better browser to participate the fun.</b><p>";gel('warning').style.visibility='visible'
layout_click('tekdok')}
else
{disable_something('warning')}}
function play_level(levno){cur_level=levno-1
movie_mode=movie_mode_create
layout_click('room')
dom_wipe(room)
dom_append(room,dom_text('Loading...'))
setTimeout("next_level(1)",10)}
function next_level(is_new){if(in_slowmotion){render_end_slowmo();in_slowmotion=0}
cur_level+=1
cur_level%=60
load_level(cur_level)
if(is_new)
new_level_stats();else
reset_level_stats();undo_save()
if(movie_mode==movie_mode_create)level_movie=[]}
function disablegame(){if(movie_mode==movie_mode_replay)movie_play_end()
game_enabled=0}
function enablegame(){game_enabled=1
active_key=-1
autoaim_clear()
setTimeout("gel('level').focus()",150)}
function mouseclick(ev){movie_rerecord_check()
if(ev.button==1&&!animation_is_waiting()){try_kick()
return false}
var x=ev.clientX-room.offsetLeft
var y=ev.clientY-room.offsetTop
autoaim_click(x,y)
return false}
function keydown(ev){function in_walk_facing(fac){if(!game_enabled||active_click!=-1)return;var maxdelay=0
switch(room_player.state){case player_state_walk:maxdelay=(walking_speed*render_fps)*1.0;break;case player_state_push:maxdelay=(pushing_speed*render_fps)*0.3;break;default:return}
if(animation_is_waiting()<maxdelay){movie_add('f',fac)
set_player_facing(fac)}}
switch(ev.keyCode){case 68:{if(!game_enabled)break;game_perform_death()
break}
case 38:in_walk_facing(player_facing_up);active_key=ev.keyCode;break
case 40:in_walk_facing(player_facing_down);active_key=ev.keyCode;break
case 37:in_walk_facing(player_facing_left);active_key=ev.keyCode;break
case 39:in_walk_facing(player_facing_right);active_key=ev.keyCode;break
default:active_key=ev.keyCode}
return false}
function keyup(ev){if(ev.keyCode==active_key){active_key=-1}}
function check_movement(){if(!game_enabled)return
if(animation_is_waiting()&&active_key!=32){if(room_player.state!=player_state_idle&&room_player.state!=player_state_grab){return}}
else
{if(in_slowmotion){render_end_slowmo()
in_slowmotion=0
return}}
if(check_level_completed()){if(room_player.state!=player_state_exit){if(movie_mode==movie_mode_create){stats_record_level_completion()}
play_teleportation()}
else
{var lev=cur_level
next_level(1)
if(movie_mode==movie_mode_create){layout_click('details')}}
return}
if(room_player.state==player_state_exit){load_level(cur_level)
level_stats.aborts+=1
reset_level_stats()
undo_save()
if(movie_mode==movie_mode_create)level_movie=[]
return}
if(movie_mode==movie_mode_create){switch(active_key){case 38:try_manual_move(player_facing_up)
break
case 40:try_manual_move(player_facing_down)
break
case 37:try_manual_move(player_facing_left)
break
case 39:try_manual_move(player_facing_right)
break
case 32:game_perform_undo()
active_key=-1
autoaim_clear()
break
case 96:case 45:case 48:case 75:try_kick()
break}
if(active_key==-1&&room_player.state==player_state_kick){try_kick()}}
autoaim_iteration()
if(player_truly_idle()){set_player_state(player_state_idle)}}
function player_truly_idle(){if(animation_is_waiting())return 0
if(room_player.moved)return 0
if(room_player.state==player_state_idle)return 0
if(movie_mode==movie_mode_create){if(room_player.state!=player_state_kick&&active_key==-1)return 1}
if(room_player.state!=player_state_grab&&room_player.state!=player_state_kick){return 1}
return 0}
function set_walk_facing(dir){set_player_state(player_state_walk)
set_player_facing(dir)}
function play_facing(dir){set_walk_facing(dir)
animation_begin_wait(1)}
function play_teleportation(){set_player_state(player_state_exit)
animation_begin_wait(Math.ceil(render_fps*teleportation_time))}
function play_grabbing(){set_player_state(player_state_grab)
animation_begin_wait(Math.ceil(render_fps*grabbing_time))}
function set_kicking_state(){set_player_state(player_state_kick)}
function try_kick(){if(room_player.state!=player_state_kick){var blockno=check_point(room_player.pos+room_player.facing)
if(blockno<=0){return}
movie_add('K',0)
set_kicking_state()
kick_begin=main_timer
return}
var total_time=kicking_time*render_fps
var n_waited=main_timer-kick_begin
if(n_waited<total_time){return}
kickdata=find_kick_length(room_player.facing)
if(kickdata){game_perform_kick(kickdata.blockno,kickdata.endpos)}
set_player_state(player_state_idle)}
function try_manual_move(offset){autoaim_clear()
if(room_player.facing!=offset){movie_add('f',offset)
play_facing(offset)
return}
var front=room_player.pos+offset
if(can_walk(offset)){game_perform_walkto(front)
return}
var blockno=check_point(front)
if(blockno<=0){return}
if(room_player.state!=player_state_grab&&room_player.state!=player_state_push){movie_add('g',0)
play_grabbing()
return}
if(room_player.state==player_state_grab&&animation_is_waiting()){return}
var blockno=can_push(offset)
if(blockno>=0){game_perform_push(blockno,offset)
return}
set_player_state(player_state_grab)}
function show_blunder(){var duration=1.6
save_blunder_move.restore(duration/pushing_speed)
render_begin_slowmo()
animation_begin_wait(render_fps*duration)
in_slowmotion=1}
function game_perform_push(blockno,offset){var front=room_player.pos+offset
if(room_player.state!=player_state_push){if(movie_mode==movie_mode_create){undo_save()
movie_add('s',0)}}
movie_add('p',0)
var length=1
var duration=pushing_speed*length
var after=front+offset
move_player(front,duration*render_fps)
move_block(blockno,after,duration*render_fps)
var blunder=check_blunder(after)||check_blunder_behind(after,offset)
if(blunder)save_blunder_move=new get_move()
set_player_facing(offset)
set_player_state(player_state_push)
animation_begin_wait(duration*render_fps)
level_stats.pushes+=length
level_stats.steps+=length
if(blunder){setTimeout("show_blunder()",1000.0*duration*0.9)}}
function game_perform_walkto(goalpos){var tmp=game_uncalc_coord(room_player.pos)
var srcx=tmp.x
var srcy=tmp.y
var tmp=game_uncalc_coord(goalpos)
var goalx=tmp.x
var goaly=tmp.y
var length=calc_dist(srcx,srcy,goalx,goaly)
var duration=walking_speed*length
movie_add('w',goalpos)
move_player(goalpos,duration*render_fps)
var offset=game_calc_coord((goalx-srcx)/length,(goaly-srcy)/length)
set_walk_facing(Math.round(offset))
animation_begin_wait(duration*render_fps)
level_stats.steps+=length}
function game_perform_kick(blockno,endpos){if(room_player.state!=player_state_push){if(movie_mode==movie_mode_create){undo_save()
movie_add('s',0)}}
var tmp=game_uncalc_coord(room_player.pos)
var srcx=tmp.x
var srcy=tmp.y
var tmp=game_uncalc_coord(endpos)
var endx=tmp.x
var endy=tmp.y
var length=calc_angular_dist(srcx,srcy,endx,endy)-1
var block_duration=kicking_speed*render_fps*length
var wait_duration=kicking_time*render_fps
movie_add('k',0)
move_block(blockno,endpos,block_duration)
level_stats.kicks+=1}
function game_perform_undo(){if(in_slowmotion){render_end_slowmo();in_slowmotion=0}
undo_perform()
level_stats.undoes+=1
movie_add('u',0)}
function game_perform_death(){if(in_slowmotion){render_end_slowmo();in_slowmotion=0}
movie_rerecord_check()
move_player(room_player.pos+room_player.facing*8,render_fps*teleportation_time)
play_teleportation()
autoaim_clear()
setTimeout("gel('level').focus()",150)}
var undo_data={blocks:[],player:{}}
var level_completed=0
var know_goal_data=0
function clear_level_completed(){level_completed=0
know_goal_data=0}
function forget_goal_data(){know_goal_data=0}
function check_level_completed(){if(!know_goal_data){var a,b=room_blocks.length;var nmissing=b;for(a=0;a<b;++a)
if(room_blocks[a].goal)
nmissing-=1;if(nmissing<=0){level_completed=1}
know_goal_data=1}
return level_completed}
function can_push(offset){var front=room_player.pos+offset
var block=check_point(front)
if(block<=0)return-1
var back=check_point(front+offset)
if(back!=0)return-1
return block-1}
function can_walk(offset){return check_point(room_player.pos+offset)==0}
function find_kick_length(offset){var blockpos=room_player.pos+offset
var blockno=check_point(blockpos)-1
if(blockno<0){return 0}
var kicklength=0
var endpos=blockpos
for(;;){var testpos=endpos+offset
var tmp=check_point(testpos)
if(tmp!=0)break;kicklength+=1
endpos=testpos}
if(kicklength<=0)return 0
return{blockno:blockno,endpos:endpos,length:kicklength}}
function check_blunder(blockpos){var blocks=[]
var movable=[]
movable.push(0)
movable.push(2)
var a;for(a=0;a<room_blocks.length;++a){var pos=room_blocks[a].pos
if(deadzones[pos]){if(!room_blocks[a].hopeless){room_blocks[a].hopeless=true
return true}}
blocks.push(pos)
var state=1
if((pos<blockpos-1||pos>blockpos+1)&&(pos<blockpos-20||pos>blockpos-18)&&(pos<blockpos+18||pos>blockpos+20)&&!goalmap[pos]){state=2}
movable.push(state)}
function CkMv1(bpos){return movable[1+obstaclemap[bpos]]}
function CkMv4Dir(bpos){var m1=CkMv1(bpos-1)
var m2=CkMv1(bpos+1)
var m3=CkMv1(bpos-game_width)
var m4=CkMv1(bpos+game_width)
if((m1==0||m2==0)&&(m3==0||m4==0))return 0;if((m1==2&&m2==2)||(m3==2&&m4==2))return 2;return 1}
var round;for(round=1;;++round){var missing=false,helped=false;for(a=0;a<blocks.length;++a){var curstate=movable[a+2]
if(curstate!=1)continue;var newstate=CkMv4Dir(blocks[a])
if(newstate!=curstate){helped=true;movable[a+2]=newstate}
if(newstate==1){missing=true;continue}}
if(!missing||!helped)break}
var blunder=false
for(a=0;a<blocks.length;++a)
if(movable[a+2]<2){if(!goalmap[blocks[a]]){if(!room_blocks[a].hopeless){room_blocks[a].hopeless=true
blunder=true}}}
return blunder}
function check_blunder_behind(blockpos,offset){return false;var front=blockpos+offset
if(obstaclemap[front]!=0)return false;var front2=front+offset
if(obstaclemap[front2]==0)return false;var a;for(a=room_blocks.length;a-->0;){var pos=room_blocks[a].pos
if(pos!=front-1&&pos!=front+1&&pos!=front-game_width&&pos!=front+game_width){obstaclemap[pos]=0}}
var result=!is_walkable(blockpos-offset,front)&&!find_a_goal(front)
for(a=room_blocks.length;a-->0;){var pos=room_blocks[a].pos
obstaclemap[pos]=a+1}
return result}
function check_point(pos){return obstaclemap[pos]}
function undo_save(){var undo_player=room_player.pos
var undo_blocks=[]
var a,b=room_blocks.length;for(a=0;a<b;++a)
undo_blocks.push(room_blocks[a].pos)
undo_data={player:undo_player,blocks:undo_blocks}}
function undo_perform(){var undo_blocks=undo_data.blocks
var undo_player=undo_data.player
if(undo_blocks.length<=0){alert("no more undo");return}
move_player(undo_player,0)
var a,b=room_blocks.length;for(a=0;a<b;++a){move_block(a,undo_blocks[a],0)
room_blocks[a].hopeless=false}
set_player_state(player_state_idle)}
var active_click=-1
var click_aim_path=[]
var active_facing=-1
function find_walk_path(source,target){var needsee=[]
var routes=[]
var curpoints=[]
var a,b=game_maxdim;for(a=0;a<b;++a){needsee.push(!obstaclemap[a])
routes.push([])}
curpoints.push(source)
needsee[source]=true
var offsets=[player_facing_up,player_facing_down,player_facing_left,player_facing_right]
var c;while(curpoints.length>0){var nextpoints=[]
for(a=curpoints.length;a-->0;){var curpoint=curpoints[a]
var curroute=routes[curpoint]
var offs=Math.floor(Math.random()*4)
for(c=0;c<4;++c){var newpoint=curpoint+offsets[(c+offs)%4];if(needsee[newpoint]){var newroute=curroute.slice(0)
newroute.push(newpoint)
if(newpoint==target){return newroute}
needsee[newpoint]=false
routes[newpoint]=newroute
nextpoints.push(newpoint)}}}
curpoints=nextpoints}
return[]}
function autoaim_click(x,y){var xoffs=(x&31)/15.5;var yoffs=(y&31)/15.5;if(Math.abs(xoffs-1)>Math.abs(yoffs-1)){xoffs=(xoffs>1)?1:-1;yoffs=0}
else
{yoffs=(yoffs>1)?1:-1;xoffs=0}
x&=~31;x/=32
y&=~31;y/=32
autoaim_clear();if(x<game_width&&x>=0&&y<game_height&&y>=0){active_click=game_calc_coord(x,y)
active_facing=game_calc_coord(xoffs,yoffs)
if(obstaclemap[active_click]&&active_facing!=0){active_click+=active_facing
active_facing=-active_facing}
click_aim_path=[]}}
function autoaim_iteration(){if(active_click>=0){if(room_player.pos==active_click){if(active_facing!=0){movie_add('f',active_facing)
set_player_facing(active_facing)}
active_click=-1
click_aim_path=[]}
else
{var target=active_click
if(click_aim_path.length==0){click_aim_path=find_walk_path(room_player.pos,target)}
if(click_aim_path.length>0){var goal=click_aim_path[0]
click_aim_path=click_aim_path.slice(1)
game_perform_walkto(goal)
if(click_aim_path.length==0){if(active_facing!=0){movie_add('f',active_facing)
set_player_facing(active_facing)}}}
else
{autoaim_clear()}}}}
function autoaim_clear(){active_click=-1
click_aim_path=[]}
function is_walkable(source,target){var seen=[]
var curpoints=[]
var a,b=game_maxdim;for(a=0;a<b;++a)seen.push(obstaclemap[a]?0:99999)
curpoints.push(source)
seen[source]=0
var c;var offsets=[player_facing_up,player_facing_down,player_facing_left,player_facing_right]
while(curpoints.length>0){var nextpoints=[]
for(a=curpoints.length;a-->0;){var curpoint=curpoints[a]
var curcost=seen[curpoint]+1
for(c=0;c<4;++c){var newpoint=curpoint+offsets[c];if(seen[newpoint]>curcost){if(newpoint==target)return curcost;seen[newpoint]=curcost
nextpoints.push(newpoint)}}}
curpoints=nextpoints}
return 0}
function find_a_goal(source){var seen=[]
var curpoints=[]
var a,b=game_maxdim;for(a=0;a<b;++a)seen.push(obstaclemap[a]!=0)
curpoints.push(source)
seen[source]=true
var c;var offsets=[player_facing_up,player_facing_down,player_facing_left,player_facing_right]
while(curpoints.length>0){var nextpoints=[]
for(a=curpoints.length;a-->0;){var curpoint=curpoints[a]
if(goalmap[curpoint])return true;for(c=0;c<4;++c){var newpoint=curpoint+offsets[c];if(!seen[newpoint]){seen[newpoint]=true;nextpoints.push(newpoint)}}}
curpoints=nextpoints}
return false}
var stats_fps=5
var default_owner=''
function create_empty_stats(){return{steps:0,pushes:0,kicks:0,undoes:0,aborts:0,timer:0,exists:0,owner:'-------'}}
function reset_completions_bisqwit(){var i;level_completions={}
for(i=0;i<9;++i){var st=create_empty_stats()
st.exists=1
level_completions[i]={stats:st,movie:[]}}}
var level_stats=create_empty_stats()
var level_completions={}
function format_time(time){var timer=time/render_fps
var timer_sec=Math.floor(timer%60)
var timer_min=Math.floor((timer/60)%60)
var hund=Math.floor((timer-timer_min*60-timer_sec)*100)
if(timer_sec<10)timer_sec="0"+timer_sec
if(hund<10)hund="0"+hund
return timer_min+":"+timer_sec+"."+hund}
function get_level_time(){return format_time(level_stats.timer)}
function stats_get_level_time(level){var lev=level_completions[level]
if(!lev)return 0
return lev.stats.timer}
function stats_record_level_completion(){var st=new cloneObject(level_stats)
var mv=new cloneArray(level_movie)
st.timer-=1;var completion={stats:st,movie:mv}
level_completions[cur_level]=completion
save_cookie()}
function stats_tick(){var timer=get_level_time()
txs('level',get_level_name(cur_level))
txs('steps',level_stats.steps)
txs('kicks',level_stats.kicks)
txs('pushes',level_stats.pushes)
txs('timer',timer)
stats_schedule_next()}
function stats_schedule_next(){setTimeout("stats_tick()",1000.0/stats_fps)}
function reset_level_stats(){level_stats.steps=0
level_stats.kicks=0
level_stats.pushes=0
level_stats.undoes=0
level_stats.timer=0
level_stats.exists=1
level_stats.owner=default_owner}
function new_level_stats(){reset_level_stats()
level_stats.aborts=0}
function stats_serialize(stats){return's'+escape(stats.steps)+'p'+escape(stats.pushes)+'k'+escape(stats.kicks)+'u'+escape(stats.undoes)+'a'+escape(stats.aborts)+'T'+escape(stats.timer)}
function completions_serialize(){var i,tmp={};for(i in level_completions){var s=level_completions[i].stats
var ow=s.owner
if(!ow)ow=''
ow=ow.replace(/Zw/g,'z')
ow=ow.replace(/Xw/g,'x')
ow=ow.replace(/Wx/g,'x')
ow=ow.replace(/Ww/g,'z')
tmp[i]={s:s.steps,p:s.pushes,k:s.kicks,u:s.undoes,a:s.aborts,t:s.timer,e:s.exists,o:ow}}
var ret=serialize(tmp)
ret=ret.replace(/\{/g,'Zw')
ret=ret.replace(/\}/g,'Xw')
ret=ret.replace(/,/g,'Wx')
ret=ret.replace(/:/g,'Ww')
return ret}
function completions_unserialize(s){s=s.replace(/Zw/g,'{')
s=s.replace(/Xw/g,'}')
s=s.replace(/Wx/g,',')
s=s.replace(/Ww/g,':')
var tmp=unserialize(s)
var i;for(i in tmp){var tmp2=tmp[i]
if(!tmp2.stats){tmp2={steps:tmp2.s,pushes:tmp2.p,kicks:tmp2.k,undoes:tmp2.u,aborts:tmp2.a,timer:tmp2.t,exists:tmp2.e,owner:tmp2.o}
tmp2={stats:tmp2}}
if(!tmp2.movie)tmp2.movie=[]
level_completions[i]=tmp2}}
function load_cookie(){var cook=getCookie('peterbox')
if(cook)
completions_unserialize(cook)}
function save_cookie(){var cook=completions_serialize();var expire_days=3653
var expire=new Date()
expire.setTime(expire.getTime()+(expire_days*24*3600*1000))
deleteCookie('peterbox')
setCookie('peterbox',cook,expire)}
var layout_level_tmp=-1
var bah=['La oveja es un mamifero de cuatro patas','La oveja esta cubierta de lana','El mordisco de una oveja no es agradable','Las ovejas suelen balar','Las ovejas nos dan lana, leche y cuero','Una oveja le mordio a un amigo mio','Una oveja no es lo mismo que una abeja','Las ovejas tienen ojos, nariz y boca','A las ovejas les gusta comer hierba','Todavia no he visto una oveja negra','Normalmente las ovejas tienen orejas','Beeeh...,Beeeh,Beeeeeeeeeehhhh....']
function enable_something(e){var el=gel(e);el.style.position='static'
el.style.visibility='visible'
el.style.display='block'}
function disable_something(d){var el=gel(d);el.style.visibility='hidden'
el.style.position='absolute'
el.style.display='none'}
function enable_disable(e,d){disable_something(d)
enable_something(e)}
function add_bt_button(tgt,label,func){dom_append(tgt,dom_tag_class_with('input','bt',{type:'button',value:label,onclick:func}))}
function create_layer_buttons(){var i;for(i in layout_pages){var p=layout_pages[i]
if(!p.opt)continue
var id='laybut_'+i
p.but_id=id
var button=dom_tag_class_with('input','active',{type:'button',id:id,name:i,value:p.opt,onclick:function(){layout_click(this.name)}})
dom_append(gel('buttons'),button)}}
function layout_update_buttons(){var i;for(i in layout_pages){var p=layout_pages[i]
if(!p.opt)continue
var but=gel(p.but_id)
but.className=p.act?'active':'inactive'}}
function layout_click(name){if(name!='room')disablegame();var i;for(i in layout_pages){var p=layout_pages[i]
if(i==name){p.act=1
enable_something(i)
var a,b=p.extra.length
for(a=0;a<b;++a)enable_something(p.extra[a])
if(p.prepare){p.prepare()}
if(p.render){p.render()}}
else
{p.act=0
disable_something(i)
var a,b=p.extra.length
for(a=0;a<b;++a)disable_something(p.extra[a])
if(p.render){dom_wipe(gel(i))}}}
if(name=='room')enablegame();if(name!='details'){layout_level_tmp=-1
render_details_data=0}
layout_update_buttons()}
function render_times_prepare(){load_all_records_prepare(render_times)}
function render_times(view_thumbs){var target=gel('times')
dom_wipe(target)
var records=load_prepared_all_records()
dom_wipe(target)
dom_append(target,dom_tag_with_children('h2',[dom_text('Timeattack records:')]))
var table=dom_tag('tbody')
var avail_phases=[1,2,3,4,5,6,7,8,9,10,11,12],nphases=12
var per_row=3
var level,ph,n;for(ph=0;ph<nphases;ph+=per_row)
for(level=1;level<=5;++level){var row=dom_tag('tr')
for(n=0;n<per_row;++n){if(ph+n>=nphases)break;var phase=avail_phases[ph+n]
var levno=((phase-1)*5+level)-1
var levelname=get_level_name(levno)
var time=stats_get_level_time(levno)
var best=0
if(levno<records.length)
best=records[levno];dom_append(row,dom_tag_class_with_children('td','levelno',[dom_tag_class_with('input','bt',{type:'button',value:levelname,name:levno,onclick:function(){layout_level_details(this.name)}})]))
var cell=dom_tag('td')
if(view_thumbs){var thumb=get_thumb_with(levno,{align:'left',width:game_width*2,height:game_height*2})
dom_append(cell,thumb)}
if(time)cell.className="ok"
if(best){var timeinput=dom_tag_class_with('input','tx',{type:'text',size:7,readonly:1,value:format_time(best.timer)})
dom_append(cell,timeinput)
dom_append(cell,dom_text(' '+best.time+' by '+best.owner))}
dom_append(row,cell)}
dom_append(table,row)}
dom_append(target,dom_tag_with_children('table',[table]))
dom_append(target,dom_text('Click the level number to view details. Green background = level completed.'))
dom_append(target,dom_tag('hr'))
add_bt_button(target,'Return to game',function(){layout_click('room')})
add_bt_button(target,'Refresh',function(){layout_click('times')})
if(view_thumbs){add_bt_button(target,'Hide thumbnails',function(){render_times(0)})}
else
{add_bt_button(target,'View thumbnails',function(){render_times(1)})}}
function layout_level_details(l){layout_level_tmp=l
layout_click("details")}
var render_details_data=0
function render_details_prepare(){var completed=0
var level=layout_level_tmp
if(level<0){level=(cur_level+60-1)%60
completed=1}
if(level==cur_level-1){completed=1}
var stats=level_completions[level]
if(!stats){stats={stats:create_empty_stats(),movie:[]}
completed=0}
load_record_prepare(level,render_details)
load_perfect_prepare(level,render_details)
render_details_data={level:level,completed:completed,stats:stats,perfect:1,counter:0}}
function render_details_refresh_manually(){load_record_prepare(render_details_data.level,render_details)
if(++render_details_data.counter>=0){render_details_data.perfect=1
render_details()}}
function render_details(){var target=gel('details')
dom_wipe(target)
var level=render_details_data.level
var completed=render_details_data.completed
var stats=render_details_data.stats
var best=load_prepared_record()
var perfect=load_prepared_perfect()
if(render_details_data.perfect&&!check_perfect_record()){load_perfect_prepare(level,render_details)}
dom_wipe(target)
var levname=get_level_name(level)
var nblocks=get_level_blockcount(level)
var thumb=get_thumb_with(level,{align:'left',width:game_width*5,height:game_height*5})
dom_append(target,thumb)
dom_append(target,dom_tag_class_with_children('h2',completed?'lcom':'lstat',[dom_text(levname)]))
dom_append(target,dom_tag_class_with_children('div','bounty',[dom_text('Bounty: '+Math.ceil(get_complexity(level))+' points')]))
dom_append(target,dom_tag_class_with_children('div','sheepmsg',[dom_text('"'+bah[get_level_phase(level)-1]+'"')]))
var table=dom_tag('tbody')
var headers=[]
headers.push(dom_tag_class('td','x'))
headers.push(dom_tag_with_children('th',[dom_text('Your')]))
headers.push(dom_tag_with_children('th',[dom_text('Record')]))
if(render_details_data.perfect&&perfect.stats.exists)
headers.push(dom_tag_with_children('th',[dom_text('Perfect')]))
dom_append(table,dom_tag_class_with_children('tr','u',headers))
function round2(v){return Math.floor(v*100)/100}
function add_row(compare,hdr,code,format){var item=stats;var value1=eval(code);var item=best;var value2=eval(code);var item=perfect;value3=eval(code);var c1=''
var c2=''
var c3=''
if(best.stats.exists){switch(compare){default:break
case-1:if(value1<value2-0.00001)c1='n'
if(value1>value2+0.00001)c1='b'
break
case 1:if(value1>value2+0.00001)c1='n'
if(value1<value2-0.00001)c1='b'
break}
if(perfect.stats.exists&&perfect.stats.exists){switch(compare){default:break
case-1:if(value2<value3-0.00001)c2='n'
if(value2>value3+0.00001)c2='w'
break
case 1:if(value2>value3+0.00001)c2='n'
if(value2<value3-0.00001)c2='w'
break}}}
if(format){value1=format(value1);value2=format(value2);if(render_details_data.perfect&&perfect.stats.exists)
value3=format(value3)}
var cells=[]
cells.push(dom_tag_with_children('th',[dom_text(hdr)]))
cells.push(dom_tag_class_with_children('td',c1,[dom_text(value1)]))
cells.push(dom_tag_class_with_children('td',c2,[dom_text(value2)]))
if(render_details_data.perfect&&perfect.stats.exists){cells.push(dom_tag_class_with_children('td',c3,[dom_text(value3)]))}
dom_append(table,dom_tag_class_with_children('tr','l',cells))}
add_row(-1,'Time','item.stats.timer',format_time)
add_row(-1,'Steps','item.stats.steps',0)
add_row(-1,'Pushes','item.stats.pushes',0)
add_row(-1,'Kicks','item.stats.kicks',0)
add_row(-1,'Block Moves','item.stats.kicks+item.stats.pushes',0)
add_row(1,'Steps/second','item.stats.steps/(item.stats.timer/render_fps)',round2)
add_row(1,'Moves/second','(item.stats.kicks+item.stats.pushes)/(item.stats.timer/render_fps)',round2)
add_row(-1,'Steps/Move','item.stats.steps/(item.stats.pushes+item.stats.kicks)',round2)
add_row(-1,'Seconds/box','(item.stats.timer/render_fps) / '+nblocks,round2)
add_row(-1,'Moves/box','(item.stats.pushes+item.stats.kicks) / '+nblocks,round2)
add_row(-1,'Aborts','item.stats.aborts',0)
add_row(0,'Boxes',nblocks,0)
var c1,c2,c3;dom_append(table,dom_tag_class_with_children('tr','l',[dom_tag_with_children('th',[dom_text('Movie')]),c1=dom_tag('td'),c2=dom_tag('td'),c3=dom_tag('td')]))
if(stats.stats.exists&&stats.movie.length>0)
add_bt_button(c1,'Replay',function(){replay_level(level)})
if(best.stats.exists&&best.movie.length>0){if(!stats.stats.exists&&active_key!=77)
dom_append(c2,dom_tag_with_children('i',[dom_text('Exists. To view, you need to complete the level yourself first.')]))
else
add_bt_button(c2,'Replay',function(){replay_movie(best.movie,level)})}
if(render_details_data.perfect&&perfect.stats.exists){if(perfect.movie.length>0){if(active_key!=77&&((level>=11)||!stats.stats.exists))
dom_append(c3,dom_tag_with_children('i',[dom_text('Exists.')]))
else
add_bt_button(c3,'Replay',function(){replay_movie(perfect.movie,level)})}}
var record_cell=dom_tag('td')
if(stats.stats.exists&&stats.stats.timer>0&&(stats.stats.timer<best.stats.timer-0.00001||!best.stats.exists)){dom_append(record_cell,dom_text('Input your name:'));dom_append(record_cell,dom_tag('br'))
dom_append(record_cell,dom_tag_class_with('input','tx',{type:'text',value:default_owner,id:'nick',onchange:function(){default_owner=this.value},size:8,maxlength:10}))
add_bt_button(record_cell,'Submit record',function(){submit_record(level,gel("nick").value,stats)})
setTimeout("gel('nick').focus()",150)}
else
{if(stats.stats.exists)
dom_append(record_cell,dom_tag_with_children('i',[dom_text('you')]))
else
dom_append(record_cell,dom_text('------'))}
var cells=[dom_tag_with_children('th',[dom_text('Played by')]),record_cell,dom_tag_with_children('td',[dom_text(best.stats.owner)])]
if(render_details_data.perfect&&perfect.stats.exists){cells.push(dom_tag_with_children('td',[dom_text(perfect.stats.owner)]))}
dom_append(table,dom_tag_class_with_children('tr','l',cells))
dom_append(target,dom_tag_with_children('table',[table]))
dom_append(target,dom_tag('br'))
if(completed){add_bt_button(target,'Other levels',function(){layout_click("times")})
add_bt_button(target,'Try again',function(){play_level(level)})
add_bt_button(target,'Play next level',function(){layout_click("room")})}
else
{add_bt_button(target,'Other levels',function(){layout_click("times")})
add_bt_button(target,'Play this level',function(){play_level(level)})
add_bt_button(target,'Back to game',function(){layout_click("room")})}
add_bt_button(target,'Refresh',render_details_refresh_manually)
if(render_details_data.perfect&&!perfect.stats.exists){dom_append(target,dom_tag('br'))
dom_append(target,dom_text("\nBisqBot's result is not available for this level."))}}
layout_pages={'room':{extra:['roomb'],opt:'Play',act:1},'intro':{extra:['introb'],opt:'Instructions'},'tekdok':{extra:['tekdokb'],opt:'Technical details'},'bisqbot':{extra:['bisqbotb'],opt:'BisqBot\'s corner'},'times':{extra:['timesb'],opt:'Levels',prepare:render_times_prepare,render:render_times},'details':{extra:['detailsb'],opt:'',prepare:render_details_prepare,render:render_details},'faq':{extra:['faqb'],opt:'FAQ'}}
var movie_mode_create=1
var movie_mode_replay=2
var level_movie=[]
var movie_mode=movie_mode_create
var movie_position=0
var movie_backup={level:-1}
function replay_level(level){var lev=level_completions[level]
if(!lev)return;replay_movie(lev.movie,level)}
function replay_movie(movie,level){if(!movie)return;layout_click('room')
if(movie_mode!=movie_mode_replay)show_replay()
undo_save()
movie_backup={'level':cur_level,'undo_data':new cloneObject(undo_data),'stats':new cloneObject(level_stats),'movie':cloneArray(level_movie)}
movie_mode=movie_mode_replay
movie_position=0
level_movie=cloneArray(movie)
cur_level=level-1
next_level(1)}
function movie_add(evtype,param){if(movie_mode==movie_mode_create&&!check_level_completed())
level_movie.push({t:level_stats.timer,y:evtype,p:param})}
function movie_rerecord_check(){if(movie_mode==movie_mode_create)return;movie_backoff()}
function movie_play_action(){if(movie_mode!=movie_mode_replay)return;for(;;){if(check_level_completed()){movie_backoff()
return}
if(movie_position>=level_movie.length){return}
var ev=level_movie[movie_position]
if(ev.t!=level_stats.timer)return;movie_position++
switch(ev.y){case'u':{game_perform_undo()
break}
case's':{undo_save()
break}
case'k':{var kickdata=find_kick_length(room_player.facing)
if(!kickdata){var diagnostic="A kick can not be performed here."
if(check_point(room_player.pos+room_player.facing)==0){diagnostic="It attempts to kick when there's only air."}
else if(check_point(room_player.pos+room_player.facing*2)!=0){diagnostic="It attempts to kick a block that can not be moved."}
alert("The movie is corrupt. "+diagnostic)
movie_backoff()
return}
game_perform_kick(kickdata.blockno,kickdata.endpos)
break}
case'K':{set_kicking_state()
break}
case'p':{var blockno=can_push(room_player.facing)
if(blockno<0){var diagnostic="A push can not be performed here."
if(check_point(room_player.pos+room_player.facing)==0){diagnostic="It attempts to push when there's only air."}
else if(check_point(room_player.pos+room_player.facing*2)!=0){diagnostic="It attempts to push a block that can not be pushed."}
alert("The movie is corrupt. "+diagnostic)
movie_backoff()
return}
game_perform_push(blockno,room_player.facing)
break}
case'f':if(room_player.facing!=ev.p){set_walk_facing(ev.p)}
break
case'g':play_grabbing()
break
case'w':game_perform_walkto(ev.p)
break}}}
function movie_play_end(){if(movie_mode==movie_mode_replay)hide_replay()
if(movie_backup.level>=0){cur_level=movie_backup.level-1
next_level(1)
undo_data=new cloneObject(movie_backup.undo_data)
undo_perform()
level_stats=new cloneObject(movie_backup.stats)
level_movie=cloneArray(movie_backup.movie)
movie_backup={level:-1}}
movie_mode=movie_mode_create}
function movie_backoff(){var lev=cur_level
movie_play_end()
setTimeout('layout_level_details('+lev+')',10)}
function movie_serializer(){this.plrpos=0
this.intcache={}
this.cache_use={}
this.set_player=function(pos){this.plrpos=pos}
this.restart=function(){this.result=[]
this.intpos=0
this.time=0
this.prev_type='f'
this.face=player_facing_up
this.undoplr=this.plrpos}
this.add=function(ev){var tdiff=ev.t-this.time
this.time=ev.t
this.addint(tdiff,this.prev_type)
this.prev_type=ev.y
this.addchar(ev.y)
switch(ev.y){case's':{this.undoplr=this.plrpos
break}
case'u':{this.plrpos=this.undoplr
break}
case'p':{this.plrpos+=this.face
break}
case'f':{this.face=ev.p;this.addint(ev.p,'Fparam');break}
case'w':{var curpos=game_uncalc_coord(this.plrpos)
var wdiff=ev.p-this.plrpos;this.plrpos=ev.p;var newpos=game_uncalc_coord(this.plrpos)
var diffx=newpos.x-curpos.x
var diffy=newpos.y-curpos.y
var length=calc_angular_dist(curpos.x,curpos.y,newpos.x,newpos.y)
if(length>0)
this.face=game_calc_coord(diffx/length,diffy/length)
this.addint(wdiff,'Wparam');break}}}
this.addint=function(intval,type){this.intpos+=1
var cache=this.cache_use[this.intpos]
if(cache!=null){if(cache[1]==1){var code=this.encodeint(intval)
this.result.push(code)}
else if(cache[1]>0){var val_code=this.encodeint(cache[0])
var count_code=this.encodeint(cache[1])
var code=':'+count_code+val_code
this.result.push(code)
cache[1]=0}
return}
var cache=this.intcache[type]
if(cache==null){this.intcache[type]=[0,0]
cache=this.intcache[type]}
if(cache[0]==intval){cache[1]+=1}
else
{this.intcache[type]=[intval,1]
cache=this.intcache[type]}
this.cache_use[this.intpos]=cache
var code=this.encodeint(intval)
this.result.push(code)}
this.encodeint=function(intval){switch(intval){case 0:return'z';case-19:return'u';case 19:return'd';case-1:return'l';case 1:return'r';case 2:return'A';case 6:return'B';case 12:return'C';case 15:return'D';case 3:return'E';case 4:return'F';case 5:return'G';case 7:return'H';case 8:return'J';case 9:return'K';case 10:return'L';case 11:return'M';case 13:return'N';case 14:return'P';case 16:return'Q';case-2:return'R';case-3:return'S';default:return intval+'i'}}
this.addchar=function(charval){this.result.push(charval)}
this.getmovie=function(){var str=''
var a,b=this.result.length
for(a=0;a<b;++a)str+=this.result[a]
return str}}
function movie_serialize(movie,levno){var serializer=new movie_serializer()
var a,b=movie.length
serializer.restart()
serializer.set_player(maps[levno].player)
for(a=0;a<b;++a)serializer.add(movie[a])
serializer.restart()
serializer.set_player(maps[levno].player)
for(a=0;a<b;++a)serializer.add(movie[a])
var moviedata=serializer.getmovie()
return moviedata}
var record_js_counter=0
var record_data=null
var perfect_data=null
var all_records_data=null
function jsxmlexecute(xmlhttp,postdata,afterfunc){xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){eval(xmlhttp.responseText)
afterfunc()}}
if(xmlhttp.onerror){xmlhttp.onerror=function(){alert(xmlhttp.statusText)}}
xmlhttp.send(postdata)}
function load_record_prepare(levno,afterfunc){record_data=null
var xmlhttp=create_xmlhttp()
if(!xmlhttp){afterfunc();return}
var url='load_record.php'
url+='?L='+levno
url+='&r='+(record_js_counter++)
xmlhttp.open('GET',url,true)
jsxmlexecute(xmlhttp,'',afterfunc)}
function check_prepared_record(){if(typeof(record_data)=='number')return true
return record_data!=null}
function load_prepared_record(){if(record_data)return record_data
return{stats:level_stats,movie:level_movie}}
function load_perfect_prepare(levno,afterfunc){perfect_data=null
var url='load_kaminoitte.php'
url+='?l='+levno
url+='&r='+(record_js_counter++)
var xmlhttp=create_xmlhttp()
if(!xmlhttp){afterfunc();return}
xmlhttp.open('GET',url,true)
jsxmlexecute(xmlhttp,'',afterfunc)}
function check_perfect_record(){if(typeof(perfect_data)=='number')return true
return perfect_data!=null}
function load_prepared_perfect(){if(perfect_data)return perfect_data
return{stats:create_empty_stats(),movie:[]}}
function load_all_records_prepare(afterfunc){all_records_data=null
var url='load_all_records.php'
url+='?r='+(record_js_counter++)
var xmlhttp=create_xmlhttp()
if(!xmlhttp){afterfunc();return}
xmlhttp.open('GET',url,true)
jsxmlexecute(xmlhttp,'',afterfunc)}
function check_prepared_all_records(){if(typeof(all_records_data)=='number')return true
return all_records_data!=null}
function load_prepared_all_records(){if(all_records_data)return all_records_data
return[]}
function submit_record(levno,name,data){var bound='xnyLAaB03X'
var xmlhttp=create_xmlhttp()
if(!xmlhttp){alert("Your browser does not support the XMLHttpRequest method.\n"+"Therefore you can't submit scores.\n"+"Try to use some other browser.");return}
xmlhttp.open('POST','submit.php',true)
xmlhttp.setRequestHeader('Content-type','multipart/form-data; boundary='+bound)
var request=''
function xmladdvar(name,value){request+='--'+bound+"\n"+"Content-disposition: form-data; name="+name+"\n"+"Content-type: text/plain; charset=iso-8859-1\n"+"\n"+
value+"\n"}
request+='--'+bound+"--\n";var stats=stats_serialize(data.stats)
var moviedata=movie_serialize(data.movie,levno)
xmladdvar('s',stats)
xmladdvar('n',name)
xmladdvar('m',moviedata)
xmladdvar('L',levno)
jsxmlexecute(xmlhttp,request,function(){})}
function setCookie(name,value,expires,path,domain,secure){document.cookie=name+"="+escape(value)+
((expires)?"; expires="+expires.toGMTString():"")+
((path)?"; path="+path:"")+
((domain)?"; domain="+domain:"")+
((secure)?"; secure":"")}
function getCookie(name){var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1){begin=dc.indexOf(prefix);if(begin!=0)return null}
else
{begin+=2}
var end=document.cookie.indexOf(";",begin);if(end==-1){end=dc.length}
return unescape(dc.substring(begin+prefix.length,end))}
function deleteCookie(name,path,domain){if(getCookie(name)){var d=new Date()
d.setTime(0)
setCookie(name,d,path,domain,0)}}
var thumbs=['QBAMAAACNNLQT!G1BMVEX//5s8PDyAyP//AABAgP8eHhS_ggP8A3ADb8Tpl!mklEQVR4Xu3VMQqEMBCG0TQmtYUXsNkDeAXZerdILwhzBU8g5NjCIAg7gckUs0X4pxjSfMUzSEK2zSd8xzxO7esPgdnQNxpooIEOvzMoaBkIg3dgN9SDdBw2dJpfisEtMBvqAdHGqxm9LxsvxeAT2A0y4A8Uifiko+8riOubT4rBIzAZcNP4p58p5VTQMhAG70A34J3uGg000Be/bybvZkn7QQA_JRU5ErkJggg==','QBAMAAACNNLQT!GFBMVEX//5s8PDyAyP//AAAeHhS_ggP8A3ADwhtZ6!jklEQVR4Xu3VsQmAMBCF4TTBOuAEKVxA7BWyggtYuELWl1xhQHLoK85C3xVX+RdfIsQlbGa3hBT65+uFADb8AE000US7MghaAtVgHMAGLfDriqH9OKkG6wA3XL89Zy9zj67BFvc4KAbTADe0DkiWFrSuQJZqMA5wA3/vGnQ5I2gJVIN1oBv4ZH0VTTTRRB/pG9yWs9RNhAA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhS_ggP8A3ADwhtZ6!oElEQVR4Xu2XOwrFMAwE/X/3v/EjVZpkFRASCGYKo2oNOzbGbcXSVu99xS3182PBL34d4Be/+I0Bv/g9Er/fM8Y4r4vdT/X8hP4lTeL32yR2P9XzE/qX7Iun6d7E5XfPOffT9LGk6vkJ/Ut+F03g9Gvn64Dq+Qn9S/Qh8vu1L4EOqJ6f0L+N//6GPWLV8wP653/E/wi/+MUvfvGLX/xG8gfM61LcdGQ1bwA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5uAAACAyP//AAAeHhQ8PDxggP8A3ADG4FAB!k0lEQVR4Xu2XOwrFQAwD7f3k3f/GD6UI6YJDVBhmii1VaNCCY3mJtfdevqd/vhf84vct+MUvfr3gF7+HCPETn/s9xhi3/Eo/3fPd/RfyL4x+RWkx7fP9/T+Twvg/55wzDf9nh3x//8+EMO43hGFfLfLr/Xv8pjD6PUdQ7qd7vq1/9st+63Afcf/iF7/4xS9+8YvfP4EpfIrBUq3i!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhRggP+!A3AByGjWa!t0lEQVR4Xu2YywqAIBREfdb//3EoUTRQN9CJLswsxI0nmBNqhcJNKDHGwhv887n5nV/5lV/5lV/5lV/5rS2hZWkJ14z7rSmlnZ9zRr7dj3c+u//3/PMhMJvkF0o6ZgbAO5/f/2PgXYHZuF9412Fm9+Oez+/fzi1/0vl724+91j1/vH+O37WF6Lfz7bXe+ZT+tT9rf0Y+nu/1yBy/eD/pF5c+GADffHr/+v79nq//G/Irv/Irv/K7AXl4UJDFcsRh!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5seHhSAyP//AAA8PDy_ggP8A3AAK7Y+c!sklEQVR4Xu2XwQrDIBBEd9Wk///HRS+DlFRlM4eFeQfpJS8wrwnEnIt5a815R34/F/VV3wDqq77qS0R91ddm7plw3x9/KeXGsbg2t5+9/6EfOHixLwg8X6n8/P03uTr2RPz9fNVa4d+dK7ufv//RXwd38k68r81gqfFrvU96P3//tX8Iofl0DIT7jkEwA/zrfdL7+fv/ZVfz5vN7cmT3E/bX95G+j9RXfdVXfdVXfdWXyRcunzqHboFCqwA_JRU5ErkJggg==','QCAM_IxFkS!G1BMVEX//5s8PDyAyP//AABAgP8eHhS_ggP8A3ADb8Tpl!mklEQVR42u2XOwpAIQwE/fvuf+KHlWCzRVQMzBaSaoodghrq2YQaY6znDv/8s8EvfvGLX/ziF7/P+Q06Jr8aLwDO+Rf61/w20keWaZPflnNuPaXUl0n3451/oX/Nn8Bl2uR3FrJMuh/vfFv//va3lGLYryf47C/7u2l/uX+5fy3vt2/E5lfzBcA5394//1/+v/jFL37xi9/X/P7KomXQRBtP1wA_JRU5ErkJggg==','QBAMAAACNNLQT!G1BMVEX//5s8PDyAyP//AABAgP8eHhS_ggP8A3ADb8Tpl!mklEQVR4Xu3UIQ7DMAyF4R+1owW7QEkPsCtMwx2oSitVyhVyhR57UmRmYoMMVC/AINYDXyyHLXdWvtM2PePlD4G04Z5ooYUWWmgYa4XHdQXRMM5LC7hu/0DegL+CUg4rEfQK5+uw4rr9A3mDv9prhaGU9lQR9D4vMLw/bRiu2z8QNWjSPmD7QBhtGwe+2z8QMOj3vhtaaKGF/gGSKnpkPdNSFQA_JRU5ErkJggg==','QCAM_IxFkS!G1BMVEX//5uAAACAyP//AABAgP8eHhQ8PDxggP8A3AB491PX!nklEQVR4Xu2XSwoDQQgFtb+5/4mDTTBkE2YQYYSqRS968RavQFFmLjLXWjPvqZ+fy4P94he/+MUvfvGLX3Fy/IoT6L9cfmb/+MWvONtQQ34J+RVnt9a2jjE8/0pd5fPz+//Ly1BjO2KoEfb7ye+96+nnPGKcv0D/VfLz+7/INzVpPnsrgflZLj+tf/Yv+/c+3Efcv/jFL37xi1/84vcNK3KWoJRDqOs!ASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5uAAACAyP//AAAeHhQ8PDxggP8A3ADG4FAB!o0lEQVR4Xu2XSwrAMAgFNb/e/8alFAop4bkQBeHNwkUWs3AgJDJikTHnHHGjvj8W9mVfB+zLvuwbA/uyr9i4+ooJFlT3J+wfojvyoDuuvtp712+8/t8ZFFT3J+wfsmxcfVdrbeEBBdX9CfuHnFyBfU9nUFDdn7B/iNr472c8oKC6P2H/ENm5HgLeV8CPBdX9Afvn/4j/I/ZlX/ZlX/ZlX/aN5AZsQnikyhb0mwA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhS_ggP8A3ADwhtZ6!2klEQVR4Xu2YywqFMBBD+/T+/x9f2oXaQDswmEVgsihV4SxORlFT4ya1nHPjLfp8btT6jX6j3+g3+o1+05qv+wW+06M8n+9/lz5C7LfXWjvBvxaf79+enz5CvH+nKZ8fdT7f/5kKOwf/bAV2Dj/ifL7/NQ8GgF/2C7u5+Pyo8/n+YWoc/BVw3Xn6Bb7Dz4tfSrnmMi7I8/n+R+AxgId2jH7hMYaHdgz/sny6f2Mktud+I9b82O9X23OTb8+/Op/t/8TfhfD96/6SVOe7/Mf/q/h/pd9v9Bv9Rr9/3QtMllLFyF4!ASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5s8PDyAyP8eHhRggP//AAC!A3ABD9sKx!3ElEQVR4Xu2Y2wrEIAxEvXb//4+X5kFBEoK6AxuYeSgp0vMwB2xrqtikmnOuuEt8PjZ/4pd+6Zd+6Zd+6Zd+20gakYVkZc9vK6U0uUyCLFh4s+XofHT/J/znjUza7b3fp/c+gOvtwovOR/e/yRdWVfIjv9KF9oTVT3Q+un+Xr+TzRqZrvw7f7yc6H9D/9f4sk7Y/3L9/56TsbxoqPB/f/04WzETP6er7ealhVGOWFJ6P79+M/0K/8+t/kPj9ROej+3f5SsyFU7+Ssz+N6HxA/zzf4PlVBL/0S7/0+wWBzz2Ai+2GQAA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhRggP+!A3AByGjWa!1UlEQVR4Xu2YOwrEMAxE/d/733ixiogNY7xRrEIwUxgLklfMi1M4Nd+klnNufkt8vm9C+KVf+qVf+qVf+qXftMpn5rXfDR/0H5jv3b+ZP2ZklF2akfGQ31FrHTLOnfARKjrfu38zX6k6HvcrOx3Bw+H5/v3bovzj5/f21W/PV2i+f/+Pg6gn/aJWVv2E5/v3f6WDpCtLPhqh315K6bdFX/nj/wYeDs/37/83iK/Zo7HfVUmIv64G9BOd79S/5fwaYji/D5fofFP/vN/g/UZ8v/RLv/T7BQ/1UOeWwtHH!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5s8PDyAyP8eHhSAAAD/AABggP8A3ADkYo4z!/klEQVR4Xu1ZywrDMAzLc/v/Px7pYd7UhrgLOohZBxNj0KikJSlNlYtUc86VV/T5uQh/w98p0huPC2z7+8lfSnlAMf11+Zn6/42/4W86AwdtAFZuf9MZOGi99wartT7q/Hz9jaZ94xgAl7X3/r/23FaOAWhhrTP/6vx0/acxQez7Ow33hj7q/HT9MT/AYC2sqhOYf1DAWlg5jzh5fr7+A+uEIO75u044wqmPOj9ff7iNEd9//c/tL+r8dP2nMVkMvJjGfDFwFnl+vv4DiwOd4q9tdwT9Vfjp+iP/1f0cfuQ58Ku/8H5hLfA79VHn39A/9ufYn5W/L8T3hfA3/H0BZeU83O8eqjs!ASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5u_ggP//AAAeHhQ8PDyAyP8A3ABK0Vyw!+ElEQVR4Xu2YSw6DMBBDSfj0/jeuYFGLkcVv8MLqeBExi76oz6EVDJM2wzTP86Rb/Pna/FW/1W/1W/0O+7zdb+AfA+z5ev+3A2pbwzZO9QsrbRzHRsQB6s5X+3/I52lrXumXZ9MV/Jjz1f4f84/3zPd78TfPnq/3/0snYR8JZwXjyf9vX5alh4V95XDWMRKZ7ny1/+v8wMIVxlS/wQWuMBI/7nyR/9T9C2DY7rMmf/+yow9+8OPO1/u/nYDG+Prz0d4UQ9nz9f5vB2i2Sb5fqDmXZM/X+08kALP9clNsxGLOl/vP8xFNvwjx486X+a/3z/X+2b/f6vcLqe5p8aIEFe4!ASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhRggP+!A3AByGjWa!2klEQVR4Xu2YzQrEIAyE/e2+/xsv68GwYrBR5zCQOYiV8h2+IYUaCjahxBgLbuHnY8PWr/fr/Xq/3q/3W3tCT5nk88tGvzWlVNsi/Nl7ja9R2Plo/2f88J/b/QpftcfOR/u38cc8PUf96vyc89MWzQ87H+D/eH6HnfAvze+wW/gh5+P9r/lyhulXzsx+6Pl4/+uoLHnc6FcW1YU8an7o+Xj/LzN89Q3za/Ajkgzzxczf9o+c3x7Q/PYY5ouUf+YfM7+zs5vza/m/YOcD/Pv9ld9fMfTr/Xq/3u8XPOxO5nUKDjI!ASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhS_ggP8A3ADwhtZ6!80lEQVR4Xu2Y2wqEMAxEe1H3//942TwYNnRoS21gJPMQKoEjzkQtTcdepSPnfOwr/Py9emG+kW/kG/lGvpFv+tfT+Rp+C8XOd/C/T9DV5yfTPW/J5Vy++tzKN92z1npKaZjEznfwH6IbUgzQeL5NvtqAZHjsfAf/kQwVEpbzta7MfOTY+Q7+A1kC7Mrdl/ZXwoddcQ912fkO/iONjs51ay7f0dG/SimXlAaFne/gf58PV0Jdzxes1BrsDzvfwX+kgZ/3Wr79zUffH3a+g/9GM5vvh95fKQv+E/Md/O/Pz57zKzD1c4Wd7+A/6/lknE9GvpHvF0/oTp93sCbq!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AABggP+!eHhQA3AAn/pu9_CElEQVR4Xu2Z2wrDIBBENbf+/x+X+NDB4IhLmIcpOw/BRHqkZ000pFzalKvWeukO/nxtOL/8oqkv+AL/Lny1/yU+ct6h19CK1Rc5930/2TW0ALXn6/2z4Cc4fRDIwGv1xV/G6cMAEweoPV/vn2U+Q0aDxOvLZ/hIEvHvzFf7D86fhYXh1f27sLD1HfZ8vf8+nzutNZg1/DGwfP82fmsNZj1/jLH5787X+w+t6hiYUp/80K4E4qgV4t+Vr/ffh6JJR3T/TNWwjvn+056v948I3sQ6P4I3SXu+3j+nzvK6voQfNOXOF/nP+mZ9j2ne1/fYtu2gh4B/Z77Mv399s75Z36zvf38fzO+DXzhGXfVbSJed!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhS_ggP8A3ADwhtZ6!8ElEQVR4Xu2ZywqFMBBD2/q4///HFzfGFiJTahaByWIo0h7hBHVh2bUpe6111w1/vjbZb/ZLU+6cfb7p98lvrZ0Y2GLO1/rPfrNfsEjAx2q+X86HH6xwzJyv9z/P1zy/YM0+X9Z8vf+ZaPrFmPbjzlf7X+LzrPcbHO58vf8o9egTvVOJWjm2bTswgqbc+Wr/cT5uMqzW+wUfaoKS3Pl6/5SFwyO1DzlG+h03XtdGK33osWvY8/X+7/yuDBhKpft4v+BDA7Xyug9Qd77I/9L3l7LWv7/T7zd3vtp/jM/yXb887wB3vsx//l/I/wv+/Wa/fxooS8sbMNyu!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5seHhSAyP//AAA8PDy_ggP8A3AAK7Y+c_VElEQVR4XtWZ2w6DMAxDV277/z+e2CYsrCSQTX6wH6qWhiPqBCjbY2j1GMuyDF3jz9cK/PHcFcZcK4qj/H744RqvhTg6Zs7X+4+Z9RBi0gkM0dvOQn6//Hme13cDTDqBIXrbNE0bmp3sztf7Dz6iIZqlOKqVPL+0bjQ0S3FU64E/7ny5/1w/hEmrC8Pb+Q1KP787MCz9sefr/T8r5aeXcCe/aFJ/UgtLf9z5cv+ZUNdP1Os9n+v6j3qlP+58tf8Ff5TikH5+6+8GCsn8cefr/Y9OqZ8P/f0VL7l+vnX2J+58vf8MPFS/36mH0+r7l+2q9yfo4TTyx5yv9x8Emmm93+kCw/zSylr7EzIYFHe+3v9rPtBQdOyf/PKHZXKM/bHn6/1PxPxaiGN+vQPp/r7H/tjz9f7X/IZ+zu+NJvPHna/2v+K31c5vX+yPO1/uv/v/g/58rV6hfDcgMPUF9gA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5uAAACAyP//AAAeHhQ8PDxggP8A3ADG4FAB_IElEQVR4Xu2Z2wrCMBBEm/Ti//+xxIcOLLtOCMzDQOYhuBhP9WwSlR6XNsd13/elG/z52uz+7v5mOd5I+gs+AZjz9f4XMW1khr+ooZ3n2bgfd77ef0lFPiMogV7sL+FDDffjztf7L9HAtDdh3sL3b9CAR78hzOPnoDtf7788CyKwCuGXZ1kUkoRLcufr/WdLIls/KFf3Lz5ttv5RLuwvW77cf+QjGbB8C9P9RTIhpULi35ev958ErIz6f00hs7+vopVyTySvcOfL/df8UIJFMtvfUMIFD/zY8/X+R56Rcg5SPkHO56f3nvLJ30k6uPP1/sHHRVBywHx/IQklMUAHd77eP/iBqukvrAj8+/Hl/sGPEfZXsL98+ev+9/2jff/oC9q8Yx01Fn7f!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhS_ggP8A3ADwhtZ6!90lEQVR4Xu2ZSwrDMAxE/e/9b1zizVBjCWFnFiqahTCUvMAbY3CaGjep5Zwbb/jnc/MX/Ua/0W/0m16J2O87/MW3dz7d/8pfVmJO+11W4jD68c5n+1f4M/2JvsIT9n7Br7V2fYUnBP+e+Xz/Oh+YzxOgd8CDfqFh8qEG2QEwnPP5/vXzQd81yPiN+XzWdz3GKKUMDPzgnM/2r/D1Q2Lmql/9kJsx+HHOZ/vf85GOLC+56RdjCsGAJKMf93y+fyyl7N5+0q+UnT2jH/d8vn81CTnjm68RZ37c8/n+hdxdvfR+b6+OGN75JP/Rb/R7n/j+HP8vRL/cfAE5KEb08ZRCuAA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhS_ggP8A3ADwhtZ6_LklEQVR4Xu2YzQrEMAiEk/7t+7/x0lw+VkYktB5kM4fgoEzoaEraduSiHb33I2+pr5+LP+zv6m/7hUo86a/VV4kJ/yvr5/tvuQeyioKgv64+WUU946rrp/tvC88bFBrq6l+/oMQ+6Lnv+8mDGur6c23bdrFQUl0/3/8bcDYZ9HMDSomJhiqR7O+IMGnQoQ+lxETDFSISxfXT/ffngvmxWQFUg/MLZf5tVgBXjD/F9dP9t1PTBEg8Or94AUxiev6r6+f7P39hYzsif37mL5zYReTNf3X9bP/l/Ph7Qtlp/vz6nkFxKpj/4vr5/g+ITRR1S4L7szJJUbfEu39W10/3X5774JMZxG8U+d4KPvlB+Easrp/uv868B//JXlmq6wf+r//P9fU1Vn9Xf1d/V3+/QW9DisZlt1Q!ASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5uAAACAyP//AAAeHhQ8PDxggP8A3ADG4FAB_Q0lEQVR4XtWZ2w7DIAxDobf9/x9PMGnRIlwPUT/YDyhq2ZlwINC2HFqV4zzPQ9f486Wa5BekZ/IL+ZDiztf7P0XoUW16NfWI8Kcc+PD3ff/we0T8Mefr/f9V/SpRQ0v1uQ85jRvOdd7Y8/X+/2pEuG4F5x5cv/natW3bBZveBfnoztf6z+tzbZriR0Tqc9SyKX9SZM6X+78+f0pIsn7JjufN1/rP1y88xMFrtenv8xU8hMJrfcXEDXO+3v8ROjrCQ1xX6jL69zKwJgaa+alf6jJwz56v978J/q6GECsmDMlvGndE0cDHDbQ63Pl6/++39hSxwzzPLzKpR/xhJPtjz9f7f6uCFFRSH6Ze+MDShvyx5+v9h+K7+lp++amE++POV/s/wUdKd1fym8VfEdnz9f4/J5Lf5Qb478yX++/+fdCfr9Ub8e1Zpc0Ink0!ASUVORK5CYII=','QCAM_IxFkS!G1BMVEX//5s8PDyAyP//AABAgP8eHhS_ggP8A3ADb8Tpl_OUlEQVR42u2Zyw6DIBBF8YX9/y9uZNGTEsYByV1M07sggniIBwxG06FNOpZlOXRFfL42Nj99p2qbnt+aX7V1+gnP1/v3+flKOdLMb962Df6Qn/B8vX8rYDTziwaB/zB8vX9/1QAcHy51rHqEDOuKzpf7t/lUX1cYk7O0PZjfUoWPM87SZvmJztf79/l2GG5mfu2gy/ITnq/334h5CWvlfnRn/zVvmbV+b48uwfl6/y00mNMKnTkizvOLhnNd17NVVB4tP9H5av/e/g6wVGmjC5c9eL9CSN73PZeiVOly+8RE58v92/ye9UPG57dn/RPDT3i+3n+J35u2keDHu1vaRorofLn/mp8/mfo0BrS1dZVi4tMeRXS+3v/4q/n880uVTPiPzNf79zPH9+9xwk90vtz////gb/8ffAPovlQyn5JffQA_JRU5ErkJggg==','QCAM_IxFkS!G1BMVEX//5uAAACAyP//AABAgP8eHhQ8PDxggP8A3AB491PX_JElEQVR4Xu2Zyw6CMBREKU///4sNLBy9mdtKdRaTdBYNYDwkZ4pFmDZtpm3f9003+PO1ifzpM//uN/B/tufOl/vP+Yis398lufPV/jm/nKnz8WlHv2VZllL386U9d77ef/q98go7J4519AtJ18Cc4VjVjz1f7z/L4wxmCPghvfdX4F+7zE97/rvz5f7bFz+fWGHrXr9gpRcGtqqS7Pl6/yHtRYDtHmfyfm8tYmz3mOf5ICh7vt5/e/6En3l24o5+oSEsU0xc5seer/dfDVvQLxaAHf1iYDcklwsIqfqx5+v9t9EIWOFMHf0yPlyUdV3fTGV+7Pl6/1nITTr4SHe/7E8G/LCBUOz5ev9ZNM+vMAieL/nxBf5Hv6Nfh/dH4/3R6Hf0+wRtkX8tzRZ0nAA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5seHhSAyP//AAA8PDxggP+!A3ACIcWx8!/UlEQVR4Xu2Zyw7CIBREebT6/39sapOOTcOEC5nFRGbBCg/lXJAqKWuT8rZtWdf487X56/qu+u5X0pXzc/eM1ncvpezfBqxz3rc0Ke58tf8gHxHUl6RJcedL/c/vX6Bl+5cD7Pl6/2Phw82fv5263Pl6/4Qwno76zvABdefr/cdXSKxLfIVHutjz9f5pCPCZge9nIoR1RmPO1/tvrprXkSYQCe3fX36tFfy2R7r+3fl6/6Q3BmFj8odJZLaQxJxRme58lX9e3/cRgn7yu9+fwSdqAv8UmPNF/qfO30wzff6GfpG489X+u/iIpr5I2I87X+bf/35h3S+s+q76fgBVLDHyULO6TQA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5u!eHhT/AAA8PDyAyP9ggP8A3ABpOa/M_KklEQVR4Xu2Y0QrDIAxF1bbb///x0IceCDdtmQQW5n0IC7FHdq9z0NJiVdq+7y2u5OfH6q/zXfmWU68uWqboi3wL/OM44BemSADS8+P9vxTPwTd6d03lOz7hj8dXqOz8aP+f89lkSE2n8sWkUcRUlez8eP/VXUBrgKh48vNVl5cxhKLQwq7s/Hj/WV27zIWAIKjF/oBvW7dtq+ZCo0BQi71Bdn64/4ytDFqes1O6JV8hY437OxnFa9Pz4/0Xql2qdY8OkvmaMs6wat2jj4w/2fnx/gu5DzNgk3rqcb7qyyM8wy5aA8jOj/cfeRe5uyctR+wm3+t/KHW/sVgYnJ0f77/mz8vPd164l50f7r/Pb9/pab4M7osPyM6P9H+9f17vn38435Xvynfl+wFxUz104RVstgA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhRggP+!A3AByGjWa_LElEQVR4XtWZS6rDMBAE/c27/40f0Uak6IgJ4150L4RskRLUTGSwt8ub7dr3/fIN+XxvyN8+8/fOg/WV/IafeL7f/4zY6fUO9uzUl6Ze53mS3/Afx/f7V12DTdr1JQaSGn7S+X7/qleA7my3iV6Hs46udL7bf5Wv83R9ORT8hPP9/pcH/rxkfquvkoRLpOgnne/2r/lzpgj9+s6ZMtDwn8f3+9e/0/3Tr++cqf5v+M/k+/2v+2LwsWervpgNP3DW8B/Hd/vXfNx7/P+Le43+T+fb/RcOBETyb5GxUDnQCs+v+ziOG8NYCOfb/ZOPnaoLoH6vL0xVF2BlztL5fv8iIOAhIPkI6osBBvAQW/uBqXS+3/8Ylym8UymezzrrdwZLP+l8u//074P5fG/+AZ/8QUBmKoHd!AElFTkSuQmCC','QCAM_IxFkS!G1BMVEX//5seHhSAAAD/AABAgP88PDyAyP9ggP8A3AANJJxl_UUlEQVR4XtWZSwoDMQxDk8yv9z9x6SwqiI1iAlpIC0PI8Bay7AbaulatX9fVdcWfLxXht6I2+1vlc4Pd+Xr/KSu9HT9Nn3x+whFq1Iv0dhzHMaZPwA/+WPP1/oPQ13rRJGysv5VN91pDhiVQ3Plq/wO/JZowGRCZev5K+8s3GI7TLWbiue/7eQv89+Wr/Q98bAC+EPiR9BcbjC40foQ/5ny9/5xPgrU3v9wQqJh/d77efz73UNgUQfX5xTFbbQW74I85X+1/4EN8A+zOLwrfYMX8u/PV/pP8ZMD1+60+v5kh1fcn/HHn6/0HH0GAyM/9xvwiyFDpuTLO88zy787X+w9+To35CbfF+c1difkPtyT/9ny9/0FkF+y+n1H4LgO1mH97vt7/IBKnKTUQqIv+8nGYUo8CV4I/1ny1/3U+1Kuq9zcGvljc+XL/3f8f9Odr9QX1YDWY/bRdnQA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhS_ggP8A3ADwhtZ6_G0lEQVR4Xu2ZSw7DIAxEgXx6/xtXzWYUhG0gmcWozAK1sfRQnxNATdq5SXvOeecN+nxuan6K86i/MX7IqDr/Tf+rv6u/mCQoYLqh/kJSUOjUpc5n+4/4n1+qAvK8vxcfheHHQZ3P999CH/fgGqioTqzPx7ZtBwZcAx9V1486n+Y/3n9bK0Vrptn9F19b9jrvf3U+2/8MH5Nw+gtJsR95Pt+/FQD9NcPf7qOfd8Vd89zjijqf79+kImbhbKT7fIWYhbOUclZDhRLns/07/BawqoKK6br7a5rCJ1iBrgolzif4n3x+zT3hpefX3NPc+1+ez/fvxj+6zfYXg3/0jP3I8/n+R5Luef39wvA/fep8un/h90fr/dHf93f19wt120fLWy9cdgA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5seHhRggP//AAA8PDyAAACAyP8A3ACG3IMt_W0lEQVR4XtWZ2wqEMAxEbb3s///xooKBMGOCMA8zDwVtchan9hJ3GVotY9u2oWv8+VotdwvUSX5UjC/Ad4yrg935av8xfz+FCCkE9Yb4+O7ruu7IgRTCeuOeO1/vP8/jlwGMe+Q34XPXl5EW95Bn9ny9/49oYAL+TmU+UN5/6YPG0wYf+QMy3Pky/+v5O74pcov5+/FAknLN+XL/g8/X8FkrvU5ofPkeNI/jmO9Nmg7hjzlf7n/m0129w3/Ex5eeSrr+JJQ5X+5/EPhJbjZ1BdPx5SfR5AVtwNrozlf7j/kpELGu3g/zF21iwIubX7//7ny9/9GDTtsDCHfU+y+qFtAJhHaANHe+3v/3gzYloHWEzl9eKFAH0DoI0tz5cv85HxFAHE/D48uEqsu6fnTn6/0HlRNXt0SD3zcaVWNZYmaUO1/vf1w3BTPq+dtXZNRx7ny5/+7/D/rztfoDrdsw39kikU!AASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5uAAACAyP//AAAeHhQ8PDxggP8A3ADG4FAB_KElEQVR4Xu2ZzQrDMAyD09+9/xuP+hCDEXaXoINYdDB16b6ArFCytpOrdl7XdfKKPp+rf53vmm/rQu38fB2I2pdFnc/2v+Jvj6y1K7Tc1Hy34zg2a+3qZ7vU+Xz/rd5dgZC3rmK+977vt5XgQN7WJqnz2f5n/Do//sjIfOv8h0dAUefz/Xc+SAhUWA79As4XJBzK7apfcep8tv84PygciOWLBBX7F4UbeRFMAv6o8+n+R/7nEQIaa2r/WjG+3UOBH8i/Np/k/8D7t2HhRwbevxFbbxEr6ny+/5iP82Oa2L/uD86/lV/yr85n+z+Sn9Cma47kP7SpZ+p8pv/z59/83vz5t74nz+f73xX4rsgHKuYbDhkv/u4DBfmjzmf6v74vrO9H4vNd8/0CPnRXF1rTdyo!ASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhS_ggP8A3ADwhtZ6_WElEQVR4Xu2ZbQvDMAiE09f9/388JsPDorvZUsGx+yBzTZ/Q06aBjPVejXWapvW+0J9/q978Pa2hkpTUd5/neU8F8CUl/rflF/h/jr+pwB+q6/XdlmXZJMAf8OFPc36B/+ckaLCG1fX1WayBFxYPaHd+gf8SPwosk7LBqC/hwwukfLCQu/ML/FfhTyhsjhioOr6/eCiEsLlDQ+y47vwC/3n/hJN4QHuV9z9fwVSOy935Bf473RDdF1PDLnS7mTy3czV6i7rzC/yX6LzomMmj5urrLVRwynMl4X9nfoH/UGZdz9VXQuq7lPC/M7/AfyuyJVN5M+XqGzqFcXwd7M4v8F8FFtmrOSl+kf2zekH2mkidC7i3O7/AfxHH4JsAHVlxfbkN+KYh8C1qd36B/yreNbG+OV/gXR8LFBu68wv8t/zHS2ROpKn6gu96xlMndOcX+P/L54P/88EnwZU9memn1ak!ASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5seHhRggP//AAA8PDyAAACAyP8A3ACG3IMt_VUlEQVR4XtWZ247DIBBDIbf9/z9ehQesZWZcupIffB5GKCCnOiQdqraupfXrurqs2Ofr/Y860ewv8gX+nfPV/vP89pdjMmYPysb+hvzneY5RxuwYlSX4sc5X+8/zwyiC2X/tbxwtBbPUj32+3v/kflluB45N6v57n+d5L7oAeeqJH/t8vf8YGO5JaRPef0HqrCq897nn6/1jzcgqmwDolJ8XrIOfNlyUTQxwXciHf+N8vf9Jlo9rYPdxit/P8BOdgW9eB/d8vX9cXAJxTxBiCOH9XYTAGUrQUIAA93y9/1EZ9RJ8BIzy/suol0Bh1ezc8/X++TF8icngLeLDz4hFQ1Zoi3PPV/sP+S0BMWXW9v62BGhI4AdY+3y9/5edhZt0sLG/pGExXSju+Xr/yKfw/l4dEIKfsvDzSXXAcc/X+//u4aCQ8/MmXGGy2D1f7t/9/0H/fC2/q78vg4itTLs!ASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhRggP+!A3AByGjWa!/ElEQVR4Xu2YzQ6DMAyD+wPs/d94Wg94q9I1U+aDpfgQtQQ+hK0Cajm4Kket9eAVfT5Xavlmvplv5pv5Zr7lljWN5wugNXUWdX7Af26+56f+nu/ZWjtRVhR1Pt//7+jrJQcfXUe+7/ze++XwZ7U65Pl8/w0BjUvGFMdC+cIaPPKY4pjTH3U+wX/e+h0j4vo13nTqfLb/Oz6A0+028uYLQya7nEWez/d/pcEqe+E8jDb54oXm4OM8jEAR55P8D/0/X7emLhT6f8aXzOpO/qjz+f7/LAuDez5eCu1vWDbAs8FHQ5zP9j/AtwVeNF9bE0+dT/M/9ydz/1k/38z3CZG8S8l3ofu/!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5uAAACAyP//AAAeHhQ8PDxggP8A3ADG4FAB_MElEQVR4Xu2Yy26FMAxEeff//7iCLo7uyCNTkBfWzSwiTJyDNIYYZdpqNW37vm91Q39+rb6mvqO+x6emT/1li9xEWN9jWZaDQZacKWCSCaDN+dX+G7570nyKFbC4ulIIjT/GqXld15kVeMHVlULYnF/vP2grCDzk9ouFNXbAAUy6+WF051f7/4RvQq5e1teEZqI5v97//0jeH8Jo4sH/lbz/hO7D6M6v918JTmzuJAOUe/b/2fNpTiRLrwpSuvOr/c/4EBDAPCXzBwciu/KU7vx6/yM09wiR3euT/2eyuSeh7VXum+jOr/Zf+bqbE0aS2aT/Rt2IUCTJrn9151f77/mqZOs38v6oktZlhvb8ev9viif9nBL06/PJkJ8v685/5/84fx7nz23rO+o76jvq+wvhgVpyKlU9qwA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5seHhSAyP//AAA8PDxggP+!A3ACIcWx8_KElEQVR4Xu2Z3QrCMAxGuz99/zeWiXAwJJl2/S4C/S6koe6Ip3TRri3atGXf90X3Up8vTTe/fWf0+hp+SKnO1/v/lfU4A5Dy9vp++Nu2AaTM/VTn6/13ohkZ/nGGst1Rw4grjnVdD8rqfL1/hmkAQvXQ8frmaIRgxVNj/BTnq/37/CUNb/HQzIbr+8ueoDRqzGxxvt6/dzEjrySgY3705QFS2qAm8lOdr/cf3usH8cNeNcRPdb7eP8PnGaa95k1pAj/uv/DfJabyW5sniYnqfL3/KKar9/b3vE2xJ/p+n5Tn6/2Tfz7ETFzs3/8lmYlsf5Xm6/2ngeBRve7Q+//Xs+J1N+OnOl/v/5pvqAPPr+DnmyCkVOeP8j/Pn+f583x+NJ8fFVvfub4vQqk49GaWPiY!ASUVORK5CYII=','QCAM_IxFkS!G1BMVEX//5u!eHhT/AABAgP+AyP88PDxggP8A3AAe71re_KElEQVR4Xu2Z6w7CIBSDB7v5/k9sIMbGhnNwGU08kf4gXL9pmw2mS9ZqycdxZF0Rn6/VP+Q7810+NTpf4g/0LDpf7z/4qQgXGZ5vWtc1DTYpPF/vP6pFXOvrm3xhEtdc9X2Mzlf77/ChVFQHUHsU1VFzWSffKtwYdQA14ltPyfB8vf9F/sTW5fwPw/n6X7RlFya7o9H5av/bfAh9ffEKO18UV3cyXhGdL/ef+TTxfCsVnZaw9tt8X/x9389apG3bEppUYC1RgvPl/hOQm6ASnwZMPhnCTbhC/tCA5U90vt5/YuWrYqC9/+LwceeBRvtXcL7cf/B5ezb70HTncb58vKA+f4r1AhqdL/XfPz/f6+ufn2/0oRmdr/R//v48/1/44XxnvjPfme8TbiVMk1OJ33Q!ASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5u_ggP//AAAeHhQ8PDyAyP8A3ABK0Vyw_OklEQVR4Xu2Zy6rEMAxDm/Rx//+PL8liREUOgwe8MESLYBz3LGSTlPa4cnVc931feUt9fq52f3d/p463LGeK99dZyi0kaHV+tv8BPqkNKfq1v8w/z7O9I0Gr8/P9Xw4HSRjLWSStBpk9kw2Ws0hLdX6+/0PcfokwepbPZx5fCWzwZ223OD/ff6z5G2ofIb+99aW/xp+5uaA/KlkYXJ2f779C7cTnh+/31UEVn386IKvz8/13PlG9jtSGuL/oCvnoi91uxfnZ/jPfhcd8XyjQXwmuqf48T7dF0Or8fP+HaFb4Lo/1l2ad30UC/lfmp/vP97tyNFjOn8Uz0i6/n1hOdTj/s3hG2i3OT/ef58f4WNdN2N/vs+51OP8qKc7P9z/yQYzF50Pogx4udL5V56f5v/8v7P8L9fu7+/sP4jdYh7DGIlc!ASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5tggP+AyP//AAAeHhS!8PDwA3ACEudzj_NUlEQVR4Xu2ZzQ7DIAyDoX97/zeeyqFeolowKh8s1YcoAfGtc6Cb2rJpVbbjODZd8OdLdc8vlzT9BV/gvxVf7X+PT8dK1PP+Ygxl30d3vt5/it5PtTGUn1Mtm+zvL39d172NoWz8lg36Y8/X+x+VFqcyfRyydG28v+nLpzLZhYwdG3u+3v/+/mnCuoQuTMPnFxPJQmRQNMmdr/f/Dk1LZNAexfuLGVoiSz4ixGX2fL3/l/iWwER/d/HfX76lMdE/HTG48+X+cz4y3BXoxproLzLc1QbOSQzufLX//P4/PIHr+Ov/8/BE8jEGd77a/x6/3qgQzfS3LstSYyB84o87X+8/E/hUj55Pwh8a2DIEe77ef6Yx4Hx/pwzJwZ6v95+JoFX9nXt+684X+P/29+2vz/tBf75WX8V8ZSCvTSxo!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhRggP+!A3AByGjWa_BElEQVR4Xu2Z2wqEMAxE23rZ///jRR82bOkYhprAQOchCMoRZpIqbdljVfZa6x5X9PmxWvmufDuVn2LyNb7/sDo/3n+PBXRems8X87dtO31/1PkJ/iMZZtQw8/NrNowanpgvZX6C/wN9LhnaruCLuXxvvlljV65xfVHnJ/jvqyOAlYKdX9jrzEqnzk/wH+kY6L4BGovN92itHV25b8DBGBR1frT/JJ/rHz5fuv/V+dH+k/yO+vr8dq74/a/Oj/Kfzxd+301T+T7/nyCT1PkJ/jMC6z+ZLy7g+4X9Uecn+E+r/Ctk/8rkAMT5Cf7Tgqv+6/PrP6zOD/N/7T+v/Wf986N1fvQFSHJPgu5lOe8!ASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhS_ggP8A3ADwhtZ6_HUlEQVR4Xu2ZSwrDMAxEnW/vf+OSFiqwflXVWQztLAxOwls8O7JCxo7N2Jdl2XEDPx+bX13f//oOL9Yj9fUN+PoRl8LOR/t/n39cca/11/fYtu3wrrkUej7ef56JIOjW+sowGRA1uR92Pt5/aetYdxN+aetbd0M/9Hy8f4m3Qyx+o79SO9zyU+h/mPlo//n+0dSo9NffX21F7OWm2Plo/xnfmvb7KyHE01wSOx/rP6/P9lTn0/qspsXzi56P95/Xh/OV75y/ir+u6/kYyucXPR/vP4/wrapwu9L6PhI/RlV78n0/3Hy8/wCo45YLnx8I0YNX7lzL9Hy8fy8Wv9df5ZLK/Qk9H+8/zIRu9ld6mNSU+xN2Ptg///8jfj42dxpxSc7xElyT!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhRggP+!A3AByGjWa_K0lEQVR4Xu2Z2wqDQAxEvbb//8dFKUx3cBJxMTDUeViy1R7hpEaow3JvhmUcx+W+xZ9/b/61v09/14MMbbr6u07TtNJC/NyPO7/Af8inCujXlr3q6i9VP/x5nl+5JHd+gf+Qj9BFUL239N+/kAQr4CuKO7/Afxt8L+bvoe3Z/n75oR9ICsedO7/Av+IjRKDRID5L+4uQgaPRpsadO7/AvwqdLec/ovsrJUlxEIII/878Av8qIBCQqnhIaD9kAFuqwiHnzi/wn/9+5EUIePX+jSWFd4w7v8C/CqgnDlydz/GQy0925xf4V4mHu9xe6K8QordY3PkF/pH8WS4PdPUXs0weUH7c+QX+8wCDCun//5mfWk1igDu/wH+emNXfX+kiX9z5Xf6f90fP+6MPbVNI8a3Mr+Q!ASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5uAAACAyP//AAAeHhQ8PDxggP8A3ADG4FAB_UklEQVR4XtWZ24oDIRBEx7nt///xYh622aKKNkI9VD+Ijs1JODbqJMftjeN+nue2NfF8v/9P+z/qmZwAzEui1hdZ9UxNoNb3PM8XmjmRznf75/zxF2z2Z0YNCblb33Fd1/g0NSv5YAX8pPP9/mcslonOa9Z3scx1nvITz/f7n4HAng/DZn1RSO8HhspPOt/uH4FjBvQggA89fb+qrQ168iRjPWjC+Xb/yGcf0tSPCrq+TFJb/1phPN/vnwQhrOSxCVq0xMBKHplI59v9Awaz2SYh+SyPaqge2+SkH5KXzvf7Z1s/Dvsy0V+BHV047MtcKUzn+/1D4uohv7G+X11SFv2k8/3+1dGub+qEr+NQV5PmxQN6qknn2/1j1ciCoSk9H6teFjxL6f2k893+d96vV/m7v29s+I/l2/0jsILyKzbXlx5EfYpq0vl2/+n/D+bzvfELqqZMr0bWTC!AASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5uAAACAyP//AAAeHhQ8PDxggP8A3ADG4FAB_NUlEQVR4Xu2Zy6rDMAxEnef9/z++xIuKCp/KKZnFQGcRbCSf4pGc4rbtWrX9OI5d9/DnS/UAv73r6fomfuK58/X+Uw5jlks4ystoj2zDsm3bAqO81p6v9/9S5OAnTUy5vrFHdKqYgrfufL3/EeYOAUU0T+H8UoeTIkqHwJ6v9z9EncRdQ4LvXzgJ3PWgSLHn6/3vIsKt6PJSz+P6xvRWtNuaDoE5X+//KOcz/+/SbBO10R7RgeBPHgJ7vt7/+tXAn14va/Wrjd2rl7nz1f7X/PqGBYG5+ta3j+Ja4s1X+z/m470qWCn5Xn3xXhjolEz+uPPV/md+FqK/Ob+kUXSy/+35ev8ndb7UWX305O/P57quZ390fh/Vy9z5ev8ZeEfMLwyZfBDFnS/w/1ffX319/h/052v1D26KWjWpQlif!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5seHhSAyP//AAA8PDxggP+!A3ACIcWx8_QUlEQVR4Xu2Z24rDMAxEnVv3//94qVhWVMxpa8M8CDIPwVLi03ikuISMzauxnee5+Q79+Vb98a+3Gq9aqO+17/tFh8KfcrQ73+3/Ml/9nLhu2R9ll7iuO9/uf+VHWKY8nhpCeILrW9s3MMdxCAyfSH+6893+6/7JyTnC1ll4fnPxZQStz/3fne/2X/MjF9SNhA3zTX0jF67w/1IRuNed7/d/al4qb0Hnkj+z7lRaSLkIu/Pt/jP/8S/cLjJUAK5v7mq5WjXKUAEibM53+/+Jj12jekXkPvmDXa96XeTa8/3+k8q8DIfQN8+vckqEkk/9353v9x/RuCvgLUgUWqN2NfSMDu35fv+F8F0Lw9X6FqcgZJPa8/3+kwofNonJ+rJJbzc5pLTn+/2f0c9Txu8LwZ+Z0Z1v97/v96P7+9Fd37u+v4yHNYBo2Boa!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhRggP+!A3AByGjWa!4klEQVR4Xu2YywrDMAwE/Wz//4+LT0N12ENVC0S0h0CcMIHZ2Alu627a6r2ve4f8/Lt5Xr/Vb/Vb/baT98mdfuHL+7LzA/xLAiGvE05/7Ffw55zwteDs/AD/im+pXGXM3y9WuMqY9JOdH+BfBsL+Dg9xrc8Y2GOMzQFJEpCdH+BfhtfE8N3rs33NjR/4EpCdH+BfBgLUf85fDGDFMb/y8f3+/f0SQ+VL7+qXMMbqJyVl5wf4F4Fgf91sXN9fMJwS6Sc7P8C/jCYQ//x17D8k5gf4r/2raH7tT1a/1W/1W/1Wvx/JMlBPs+QoawA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5seHhSAyP//AAA8PDxggP+!A3ACIcWx8_SklEQVR4XtWZSwrDMBBD8+/9b1zSRUQepnJMtBgtjI2cV5Bn3ECmOatp3rZtzg31+VG9xd8bevN892VZdgynUZ6fz//SdBOMph6dLzAwmvL5VOfn8wfhuAS+3N/sc6qHjwSOdV2P34B85Irv86nOT+cPPsXf1BKPdZ4vxcy0xGMm/7L8RP6+f9H8MuBi1t2/uLxkwMXM5F+Rn87/IV/7RvrX56N9nfVfnR/Pn5gZ+uu2/uSxBTFoiaHptl5SsKU4P54/+awkX1goIpQY82En+MZAE6BFivPz+eMG0MMgjJYYbjCW76WxFqnOz+dvSgd8L/JN6SMfJ+ZTnZ/N379faamZqzPJv19pqZnvExnV+fH8eT9IMFgmneL9pgFGq8z9UJ0fz198SgZ+ffB8KRlIbyD/svx8/sa+6/XvR6bq7VCdH8+/+vfB+vysvsejNy0LCw6I!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5uAAACAyP//AAAeHhQ8PDxggP8A3ADG4FAB_L0lEQVR4Xu2Z2wrDIBBEc+///3GpDxkYdteqdWFK5kFU6Fk4a0KTLMfcLMd5nse8QZ8/NTX+0pym/rbziafOT/Afhn6H2Xqn7GFW0tHfssRs3fd9LUPZw4wkifMT/HsBhqhWYey9Pvmmv9BAVmCKXICPPXF+gv8wFgEzqt57f7aWOPW0RwBxfoL/CI0wC8vO/hKfXWAZ+lHnJ/iv891T86P+uqe+7kedn+A/DIAxuqO/JCRW4/lR5yf490IEF4jCvddv/IeExBFFnJ/gv8530eudofuzqwYPGd75V+cn+K8HGKvc0PsN61kRMTwST52f4P/OZYQIQ+8nr23bLhqsW1vLoM6f7p/5ViWgx/trmYKa5kGdP90/8y30xOsX6D5J6vwh/09/n/7+9/fB5/vgG8IHXmGSrkEw!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhS_ggP8A3ADwhtZ6_GklEQVR4Xu2ZzQrEIBCDtT+77//Gix427eBQByeHQHMQpfpBk+LUthxclaPWevAafT5Va/xyV3a+hj9CqfP5/uegoZx8Xb7hqfP5/q+gz78S873y930/e+P5I8/n+x+RS8VwKV/XFQzNCnE+3/84GtTMfI0NUMB/QT7f/0mNgCPqUr7e1uZS1Pl8/83iUEGfuFrMzYdeSJ6vyvP5/jd9msqCzru+TZd8P9u2BfjO/oam8xtZnc/3H3w8CLPbxcNJzOSLB3l2u3s+Sarz+f7H+ViByagEvbeUL1ZgMipZ72GeOJ/tP/hBGX4ZyOYbbeCPX7/k+Xz/U+S8qad9f/ZOGvJ8vv958utvskmAqvPp/r//j97/R7r5vvn+AKroSKrHyY3X!AElFTkSuQmCC','QCAM_IxFkS!GFBMVEX//5s8PDyAyP9ggP//AAC!eHhQA3ABP46t2_DUlEQVR4Xu2Y2wrEMAhEc2v3//94aVgYGKKtm/og6EPRjT1lZ0ISUk7fKGet9fR7xOf7Rvqb/hY1tv3V+TogOt9f/6dAGj2uoAzxuUL2V5Xhxx9jHJQRfzYH53vrr/DFcgKR0UcweuOvWE5BkK3kQnNwvrf+Cr+rgT5Q8ZEn/vbWWhcf6IMqEAmo6Hx//ZEizPwVgP3FiF0flPRbcL67/sw3zR9a+lHK/prmP21dKIEKzvfW/28+rQq08e/7S6saHVyACs53118+l+l7vj5/0CKfK/Uzizr/0Ree76//IugVQ2k4X+Evm0tAo/Pf0j/9TX/tNylv308y//6N6Pw9/fP+Oe+fw/qb/qa/6e8X6XBeCjTIbOg!ASUVORK5CYII=','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhS_ggP8A3ADwhtZ6_A0lEQVR4Xu2Y2wrDMAxDk972/388koeKGWleGIZ5WA+hDukpSFSFtiNW7ei9H3FLfn6s/iHfyrfyrXwr38q33WLj9/kCyEayZOfH+++wCBA6hxrRB/laFts7931nfEDT8+P9V8LB85a52Y7r+c6raQO8YEfU65CeH+8/Lt8KRyQLI8vX4eOI9II0XXZ+uP9OkaMG5mgKQY5AOR8i1NgcTaGpEaj0/Hj/h65XNSKnEDCyfK9t2y4slO8XGrkjOz/af86XdfEYko8zezrfsaf50i6yl50f7b/HZ4T1ftb+MAdW+i09P97/Zcku0P28vFiW2svOj/S//l/V/6sfzrfyrXwr3yfmokYNBBv1lgA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5tggP+AyP//AAAeHhQ8PDy!A3AAkbKfu_G0lEQVR4Xu2ZywrDMAwEnVf7/39cQiGiA7JqnD0s7R6EY8GkjJzk0LZr0/bjOHZd8edr8zPz/c+3febu+YJ/jzh7vt7/laAK54vVbHHnq/2Tn+dx5nlmar45f9u2N3/Ejz1f7/9KYHB+sJf+omK+oQHnH3sjb0R3vtw/+Wjzxkg0vp1vXCbiGBpFMefr/dd8dnFgpufLLg584cecr/cfyyt9Pqhp8u9v3w+sIKC48/X+z+Bpxx5Y0U3vzvnibYU9uICu7qU7X+6f/DrkL58p5luHfpZ1XZco6Lrz9f67CWraAD99P7NAXNqAH3o05+v9j2f8+R0qI+ffna/2P8/n3t3z5R5W5ny1/wl+mfn51t85d77Yv///R/58bV7NFl8yx+/kFAA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhS_ggP8A3ADwhtZ6_IUlEQVR4Xu2ZSw6DMBBDCb/e/8YVm1pYYTId1Qur8SIKSvpo34CSwrJrs+yttV3X+PO1+a/6zvqe9/DsT6r1Pdd1PdHQKPhJP+58tf8y/7iCw5/X99i27RjrcufL/cd8PgmhcVisL0siNTgM/Hjz9f4pyZMkryTyk5eUvBPs+Xr/TyE+fRho9IL6jiXRj4ca6hHFna/3f08Pg2C0ev+yhk6+Wcnc+Xr/iR0aUeNvlKlvTxJ6kVFu7Pl6/wjd9x0qBmgeJa4vLmm2ggGaRwHPnK/3n9iBv67EQAwwP/4HAT4LyW1S3Plq/30+8riWx0v7oL7I414k3Jqgcefr/WefkFTnZZ/w1Oa58+X+c6t1PbndRr3x5/f9z/cL8/3CrO+s7xsGLEobZjvFcwA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5s8PDyAyP//AAAeHhRggP+!A3AByGjWa_G0lEQVR4Xu2Z2wrDIBBENbf+/x+XNNCFYR2NxoWBzENQiKfl7CJK0jY3acs5b/Me+vyp8fmpMZ31bebX/ajzA/w7gcX8FfpzxI9N+StUlzo/wH998XGmOILpvfpei9d1PYojmAJKnB/g30nr1mBUy/j+bBpAEvGvyg/wT4Nt8g/8j97zldfmvwd4LAHU+QH+aYzAd4/e+hqf734lgDo/wH890DDerv8503s/8hre1Bif+FflB/ivB4AwGr//OkJsxAHq/AD/jXzaP1eG6sv7v2RKnR/gv5EPU6A+VF9PEr1xqvMD/NfDO2S8vrzDqR91foB/jr6T3vMzD7Wnzg/wT7PXM3S+2pdl2fmDAtT50/y/9X3rq/998P0++AUie0fNjHRWzAA_JRU5ErkJggg==','QCAM_IxFkS!GFBMVEX//5s8PDyAyP9ggP8eHhT/AAC!A3ABGy7iy!/klEQVR4Xu2YzQ6DMAyD+8ve/40ndsBbZEhVyYdo8aEaa/pJ2KGIlqFVGbXWoRvi87X6v3wz38w38y2XJPmC7wCC8/X+3647ThUiVrKa7zd/zunwUeL4H5av99+gITOxUNd/ZfI168zESl1vrXUM8D8uX+4/xRyXTJtgAnUOn9nw6Ws0N35hAnWOP7H5av85vxC9TuGS1a3m6/N5HfEnOl/v/+3Wz7YG010b+aLN2dZmng7fn+h8uf+Wb9ZZFkro1u/ni/vGJfuPvbqIP+H5ev+JQHjW7vcvHHiW/x0Snq/3nwgEzfmGdWB/iM73/M/zq4D8PJ/MfDPfzDfzzXzfsvBME98n1Q4!ASUVORK5CYII=','QCAM_IxFkS!G1BMVEX//5s8PDyAyP//AABAgP8eHhS_ggP8A3ADb8Tpl!70lEQVR42u2ZzQrEIAyE6/++/xMvepEtjI2xc8iSOUgQ/QozBixehaurhBAKb7DPp+qJX7ta16jAnD7fmnOuLcbYRgXn0GCez/d/qYmB1VG+0wZYLQHm+Xz/lwJoQv/Cagmwztf47/3r/ev96/17W/irt+/PN750m3n+uf+er+e79RHi/y+wBg/W+Xz/AUYjab4KPjLOOp/uP+bXLmmlyLemlKq0Qv6Y5/P9R9Kicb56kyDFPJ/vP9LW+VHku3X+EcU6n++/4MI2MZ+uiZ7S9u/QtGHwRyW8jprn8/1HEmx+J9+TJdb5dP/9ffC/3we/Y7ti45O+JNo!ASUVORK5CYII=','QCAM_IxFkS!G1BMVEX//5s8PDyAyP//AABAgP8eHhS_ggP8A3ADb8Tpl_IElEQVR42u2Z2wqDMBBE4y32/7+4NA8uDBmDS+ZhqPMQSI0HetZuo5ZDm3Isy3LoBn++Nm993/pCyhVNfYM/XuzOV/tP8yPC+o4lufPV/tP8eqVNp9e3bttW23AryZ6v9/84QW2J6aT6hpWWW0nufL3/XFdAdCRZX+CDGtru7Pl6/2NgTPlizh8LienjPYs7X++fLqT8sxPaJAr9otTPua7rCQNrcvZ8vf8rgKG9oMePM3h9QQPtZT0/7Cfizpf7xzkA6fXTjibqC0Lo9V/3fa9jP+58uf9ES6es7P8vPTr+zJ0v8Z/fP39+gV0bbNyz++fgw64TbjzgNHO+wP/E5xuFZc7zDcoPqDtf7T/LR8zs+qIG5sedL/L/vj/6l/dHX2EFWbO2BjuV!AElFTkSuQmCC','QCAM_IxFkS!G1BMVEX//5seHhSAyP//AABAgP88PDxggP+!A3ADWX7AX_S0lEQVR4XtWZ2w7CMAxD193g/78YURBWIwdSJj/YD1W1sCPtNF0RLE2bpR3H0XSDP1+aEv/8ZCF5YcbMre+5ruvZB8rvGoYA6s7X+6+ib8/0mzFDUIj8qprbvu9v/rZtjI8CoO58vf8qus/QK2EW0eBX1fQZej3MghoM5ny9/8to1lMN/MtqyJ4A1J2v9v+LH9CBiqAwt75Qkx5YpACoO1/vn90cO6QYSmEPHzt8NqC48/X+Qbg/w47xNiZtmPz8BR8vqvRIShuefNidL/efv8PJNU5FCD8/g9Jr6e4gfuz5ev9jOrBIre9fDF1IwUqx/+35ev9j/uyf6u9XkT9ligz2fL3/MaBWbv4aur6wUnn4JPBoz9f7H0MbJgsFfl9f0vBVP+yrrD1f7x8J5WKm9y+3UpUUAOZ8tX8RH1WNH1TN+XL/7v8P+vO1eQAsJTgdA5faewA_JRU5ErkJggg==']
function get_thumb_url(l){var begin='iVBORw0KGgo!NSUhEUgAAAF8_'
var thumb=begin+thumbs[l]
thumb=thumb.replace(/_/g,'AAAB')
thumb=thumb.replace(/!/g,'AAAA')
return'data:image/png;base64,'+thumb}
function thumbs_init(){var l;for(l=0;l<60;++l)
thumbs[l]=dom_tag_with('img',{src:get_thumb_url(l)})}
function get_thumb_with(levno,params){return dom_tag_finish_with(thumbs[levno],params)}
thumbs_init()
var level_complexity=[65780,1365,177100,45,27405,1140,10400600,15504,1365,37442160,5245786,5178066751,7669339132,1472474663905800940,438729741450,1121099408,7669339132,1923856105133987325,17345898649800,252598932648075957985332271981,154603005527328,345780890878896,21566576904406820,1525816910968334775,4367914309753280,11899700525790,25827165,3022285436352,38163061637050680,535983370403809682970,20448884000160,245394628147121065989203464,80135221427528667400,181932521650500815024040,45038039715653129145,4047376351620,106366434222074411385,18293741700978245355,273342452889765,275291011073898820,18293741700978245355,39895566894540,122131734269895,47855699958816,9595194602380819740,369749985629115811005,39651686882656286130,95548245,974118209889876601705974,21566576904406820,1155454041309504,45931679871275969889300,20286591270,31966749880,5964720367660956,123234279768160,6726037425812436,615167304833936727234180,558383307300,260462895672870891]
function get_complexity(level){return Math.log(level_complexity[level])}