\n ').concat(eo[r.l.name],"\n
\n ").concat(n,"\n ").concat(null===(_=r.reason)||void 0===_?void 0:_.text,"\n
\n
\n \n ")}var _5=new Set(L("breakout_71_unlocked_levels",[]));function _6(){return _7.apply(this,arguments)}function _7(){return(_7=(0,W._)(function(){var e;return(0,q.__generator)(this,function(_){switch(_.label){case 0:return[4,tu()];case 1:if(_.sent()||ty.running)return[2];return ty.running=!0,ty.ballStickToPuck=!1,!function(e){if(ec("record")&&!i){if(!u){p=(u=document.createElement("canvas")).getContext("2d",{antialias:!1,alpha:!1}),c=(l=u.captureStream(0)).getVideoTracks()[0];var _=(eb(),o);_&&l.addTrack(_.stream.getAudioTracks()[0])}u.width=e.gameZoneWidthRoundedUp,u.height=e.gameZoneHeight;var t=[],r=new MediaRecorder(l,{videoBitsPerSecond:35e5});i=r,r.start(),i.pause(),r.ondataavailable=function(e){t.push(e.data)},r.onstop=(0,W._)(function(){var e,_,r,s;return(0,q.__generator)(this,function(o){switch(o.label){case 0:if((_=new Blob(t,{type:"video/webm"})).size<2e5)return[2];o.label=1;case 1:if(e=document.getElementById("level-recording-container"))return[3,3];return[4,new Promise(function(e){return setTimeout(e,200)})];case 2:return o.sent(),[3,1];case 3:var n;if((r=document.createElement("video")).autoplay=!0,r.controls=!1,r.disablePictureInPicture=!0,r.disableRemotePlayback=!0,r.width=u.width,r.height=u.height,r.loop=!0,r.muted=!0,r.playsInline=!0,r.src=URL.createObjectURL(_),e.appendChild(r),(s=document.createElement("a")).download=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"webm";return"breakout-71-capture-"+new Date().toISOString().replace(/[^0-9\-]+/gi,"-")+"."+e}("webm"),s.target="_blank",!window.location.href.endsWith("index.html?isInWebView=true"))return[3,5];return[4,(n=_,new Promise(function(e,_){var t=new FileReader;t.onload=function(){e(t.result)},t.onerror=function(e){console.error(e),_(Error("Failed to readAsDataURL of the video "))},t.readAsDataURL(n)}))];case 4:return s.href=o.sent(),[3,6];case 5:s.href=r.src,o.label=6;case 6:return s.textContent=j("settings.record_download",{size:(_.size/1e6).toFixed(2)}),e.appendChild(s),[2]}})})}}(ty),null===(e=eb())||void 0===e||e.resume(),ec("record")&&(null==i?void 0:i.state)==="paused"&&i.resume(),[2]}})})).apply(this,arguments)}function _8(e){if(ty.running&&!ty.pauseTimeout){var _=function(){ty.running=!1,setTimeout(function(){var e;ty.running||null===(e=eb())||void 0===e||e.suspend()},1e3),_s(),ty.pauseTimeout=null,e8.className="",ty.needsRender=!0};e?(ty.pauseUsesDuringRun++,ty.pauseTimeout=setTimeout(_,Math.min(50*Math.max(0,ty.pauseUsesDuringRun-5),500))):_(),document.exitPointerLock&&document.exitPointerLock()}}var _9=function(e){var _=function(_){_.x=e.offsetXRoundedDown+(_.x-r)/s*e.gameZoneWidthRoundedUp,_.y=_.y/o*e.gameZoneHeight},t=function(_){_.x=e.offsetXRoundedDown+(_.x-r)/s*e.gameZoneWidthRoundedUp,_.y=_.y/o*e.gameZoneHeight,_.previousX=_.x,_.previousY=_.y};if(!e)throw Error("Missign game state");var r=e.offsetXRoundedDown,s=e.gameZoneWidthRoundedUp,o=e.gameZoneHeight,n=window.innerWidth,a=window.innerHeight;e.canvasWidth=n,e.canvasHeight=a,eN.width=n,eN.height=a,eJ.width=n,eJ.height=a,eQ.width=n/16,eQ.height=a/16,e.gameZoneHeight=ec("mobile-mode")?Math.floor(.8*a):a;var i=Math.round(Math.min(e.canvasWidth,.73*e.gameZoneHeight*(e.gridSize+2*e.perks.unbounded)/e.gridSize));e.brickWidth=2*Math.floor(i/(e.gridSize+2*e.perks.unbounded)/2),e.gameZoneWidth=e.brickWidth*e.gridSize,e.offsetX=Math.floor((e.canvasWidth-e.gameZoneWidth)/2),e.offsetXRoundedDown=e.offsetX-e.perks.unbounded*e.brickWidth,e.offsetX.95?(t++,e.rerolls++,s=j("level_up.plus_one_upgrade_and_reroll")):_>.9&&(t++,s=j("level_up.plus_one_upgrade")),e.levelMisses<3?(t++,e.rerolls++,n=j("level_up.plus_one_upgrade_and_reroll")):e.levelMisses<6&&(t++,n=j("level_up.plus_one_upgrade")),c.label=1;case 1:var u,p;if(!t--||(u=3+e.perks.one_more_choice-e.perks.instant_upgrade,(p=eM(e).map(function(_){return x(w({},_),{score:Math.random()+(e.lastOffered[_.id]||0)})}).sort(function(e,_){return e.score-_.score}).filter(function(_){return e.perks[_.id]<_.max+e.perks.limitless}).slice(0,u).sort(function(e,_){return e.id>_.id?1:-1})).forEach(function(_){_G(e,_.id)}),!(a=p.map(function(_){return{text:_.name+(e.perks[_.id]?j("level_up.upgrade_perk_to_level",{level:e.perks[_.id]+1}):""),icon:eo["icon:"+_.id],value:_.id,help:_.help(e.perks[_.id]+1)}})).length))return[3,3];return e.rerolls&&a.push({text:j("level_up.reroll",{count:e.rerolls}),help:j("level_up.reroll_help"),value:"reroll",icon:eo["icon:reroll"]}),i=r&&s&&n&&o&&j("level_up.compliment_perfect")||(r||s||n||o)&&j("level_up.compliment_good")||j("level_up.compliment_advice"),[4,_u(x(w({},{title:j("level_up.pick_upgrade_title")+(t?" ("+(t+1)+")":""),content:["".concat(j("level_up.before_buttons",{score:e.score-e.levelStartScore,catchGain:s,levelSpawnedCoins:e.levelSpawnedCoins,time:Math.round(e.levelTime/1e3),timeGain:r,levelMisses:e.levelMisses,missesGain:n,levelWallBounces:e.levelWallBounces,wallHitsGain:o,compliment:i}),"\n
\n ").concat(j("level_up.after_buttons",{level:e.currentLevel+1,max:eG(e)}),"
\n ").concat(eR(e,e.currentLevel+1),"
\n")].concat(z(a),[eP(e),_3(e),''])}),{allowClose:!1}))];case 2:return"reroll"===(l=c.sent())?(t++,e.rerolls--):(e.perks[l]++,"instant_upgrade"===l&&(t+=2),e.runStatistics.upgrades_picked++),[3,1];case 3:return[2]}})})).apply(this,arguments)}function t_(e,_){return ez(ty,Math.floor(_/ty.brickWidth),Math.floor((e-ty.offsetX)/ty.brickWidth))}function tt(e){if(ty.bricks[e])return e}function tr(e,_,t){var r,s,o;return null!==(o=null!==(s=null!==(r=tt(t_(e-t,_-t)))&&void 0!==r?r:tt(t_(e+t,_-t)))&&void 0!==s?s:tt(t_(e+t,_+t)))&&void 0!==o?o:tt(t_(e-t,_+t))}window.addEventListener("resize",function(){return _9(ty)}),window.addEventListener("fullscreenchange",function(){return _9(ty)}),setInterval(function(){var e=window.innerWidth,_=window.innerHeight;(e!==ty.canvasWidth||_!==ty.canvasHeight)&&_9(ty)},1e3),eN.addEventListener("mouseup",function(e){0===e.button&&(ty.running?_8(!0):(_6(),ec("pointerLock")&&eN.requestPointerLock&&eN.requestPointerLock().then()))}),eN.addEventListener("mousemove",function(e){document.pointerLockElement===eN?_y(ty,ty.puckPosition+e.movementX):_y(ty,e.x)}),eN.addEventListener("touchstart",function(e){var _;e.preventDefault(),(null===(_=e.touches)||void 0===_?void 0:_.length)&&(_y(ty,e.touches[0].pageX),_W(ty),_6())}),eN.addEventListener("touchend",function(e){e.preventDefault(),_8(!0)}),eN.addEventListener("touchcancel",function(e){e.preventDefault(),_8(!0)}),eN.addEventListener("touchmove",function(e){var _;(null===(_=e.touches)||void 0===_?void 0:_.length)&&_y(ty,e.touches[0].pageX)});var ts=0,to=60;setInterval(function(){to=ts,ts=0},1e3),setInterval(function(){ty.creative||(d||(d=ea.map(function(e,_){return w({name:e.name,li:_,l:e},eD(_))})),d.forEach(function(e){var _=e.name,t=e.minScore,r=e.forbidden,s=e.required;e.l,!(_5.has(_)||ty.score"+j("unlocks.just_unlocked")+""),_P(ty,"colorChange",0,1)))}))},500),window.addEventListener("visibilitychange",function(){document.hidden&&_8(!0)}),e8.addEventListener("click",function(e){e.preventDefault(),_n||_2(ty)}),document.addEventListener("visibilitychange",function(){document.hidden&&_8(!0)}),document.getElementById("menu").addEventListener("click",function(e){e.preventDefault(),_n||ta()});var tn=(b=Math).max.apply(b,z(ei.map(function(e){return e.threshold})));function ta(){return ti.apply(this,arguments)}function ti(){return(ti=(0,W._)(function(){var e,_;return(0,q.__generator)(this,function(t){switch(t.label){case 0:var r;return _8(!0),e=[{icon:eo["icon:new_run"],text:j("main_menu.normal"),help:(eE()?j("main_menu.high_score",{score:eE()}):"")||j("main_menu.normal_help"),value:function(){tf({levelToAvoid:eO(ty).name})}},{icon:eo["icon:creative"],text:j("lab.menu_entry"),help:T()').concat(e.label,"")}).join(""),o=r.sort(function(e,r){return t*(s[_].field(e)-s[_].field(r))}).map(function(e){return""+s.map(function(_){var t,r=null!==(t=_.field(e))&&void 0!==t?t:0;return""+(_.render||function(e){return e.toString()})(r)+" | "}).join("")+"
"}).join(""),[4,_u({title:j("history.title"),className:"history",content:["\n\n".concat(e,"
\n").concat(o,"\n
\n ")]})];case 1:if(!(n=i.sent()))return[2,{v:void 0}];return n.startsWith("sort:")&&((a=parseInt(n.split(":")[1]))==_?t*=-1:(t=-1,_=a)),[2]}})},_=0,t=-1,s=[{label:j("history.columns.started"),field:function(e){return e.started},render:function(e){return new Date(e).toISOString().slice(0,10)}},{label:j("history.columns.score"),field:function(e){return e.score}}].concat(z(J.map(function(e){return{label:eo["icon:"+e.id],tooltip:e.name,field:function(_){var t;return(null===(t=_.perks)||void 0===t?void 0:t[e.id])||0},render:function(e){return e||"-"}}}))),n.label=1;case 1:return[5,(0,q.__values)(e())];case 2:if(o=n.sent(),"object"===(0,_1._)(o))return[2,o.v];return[3,1];case 3:return[2]}})})()}}),{icon:eo["icon:unlocks"],text:j("main_menu.unlocks"),help:j("main_menu.unlocks_help"),value:function(){(function(){td.apply(this,arguments)})()}}].concat(z(function(e){if(!ec("donation_reminder"))return[];var _=N();return[{text:j("main_menu.donate",{hours:_}),help:j("main_menu.donate_help",{suggestion:Math.min(20,Math.max(1,.2*_)).toFixed(0)}),icon:eo["icon:premium"],value:function(){window.open("https://paypal.me/renanlecaro","_blank")}}]}(0)),[{text:j("main_menu.settings_title"),help:j("main_menu.settings_help"),icon:eo["icon:settings"],value:function(){tl()}},{icon:eo["icon:help"],text:j("help.title"),help:j("help.help"),value:function(){return(0,W._)(function(){return(0,q.__generator)(this,function(e){switch(e.label){case 0:return[4,_u({title:j("help.title"),allowClose:!0,content:[U(j("help.content",{catchRateBest:95,catchRateGood:90,levelTimeBest:30,levelTimeGood:60,missesBest:3,missesGood:6,wallBouncedBest:3,wallBouncedGood:10})),U(j("help.upgrades"))].concat(z(ei.map(function(e){return'\n\n '.concat(e.icon,"\n
\n ").concat(e.name,"
\n ").concat(e.help(1),"\n
\n
\n \n ").concat(U(e.fullHelp),"\n")})),[""+j("help.levels")+"
"],z(ea.filter(function(e){var _;return null===(_=e.credit)||void 0===_?void 0:_.trim()}).map(function(e){return'\n\n '.concat(eo[e.name],"\n
\n
\n ").concat(e.name," \n
\n ").concat(U(e.credit||""),"\n
\n \n
")})))})];case 1:return e.sent(),[2]}})})()}}]),[4,_u({title:j("main_menu.title"),content:z(e).concat([' \n Made in France by Renan LE CARO. \n Donate\n Discord\n F-Droid\n Google Play\n itch.io \n Gitlab\n Web version\n HackerNews\n Privacy Policy\n Archives\n v.'.concat(es,"\n
")]),allowClose:!0})];case 1:return(_=t.sent())&&(_(),ty.needsRender=!0),[2]}})})).apply(this,arguments)}function tl(){return tc.apply(this,arguments)}function tc(){return(tc=(0,W._)(function(){var e,_,t,r,s,o,n,a,i;return(0,q.__generator)(this,function(l){switch(l.label){case 0:_8(!0),(_=[{disabled:ec("easy"),icon:eo["icon:starting_perks"],text:j("starting_perks.title"),help:j("starting_perks.help"),value:function(){return(0,W._)(function(){return(0,q.__generator)(this,function(e){switch(e.label){case 0:return[4,_X()];case 1:return e.sent(),[2]}})})()}}]).push({icon:eo[null===(e=F.find(function(e){return e.value===I()}))||void 0===e?void 0:e.levelName],text:j("settings.language"),help:j("settings.language_help"),value:function(){return(0,W._)(function(){var e,_;return(0,q.__generator)(this,function(t){switch(t.label){case 0:return[4,_u({title:j("settings.language"),content:[j("settings.language_help")].concat(z(F.map(function(e){return x(w({},e),{icon:eo[e.levelName]})}))),allowClose:!0})];case 1:if(!(_=(e=t.sent())&&e!==I()))return[3,3];return[4,tb(ty)];case 2:_=t.sent(),t.label=3;case 3:return _&&(C("lang",e),window.location.reload()),[2]}})})()}}),t=!0,r=!1,s=void 0;try{for(o=function(){var e=a.value;el[e]&&_.push({icon:ec(e)?eo["icon:checkmark_checked"]:eo["icon:checkmark_unchecked"],text:el[e].name,help:el[e].help,value:function(){eu(e),_9(ty),tu(),tl()}})},n=Object.keys(el)[Symbol.iterator]();!(t=(a=n.next()).done);t=!0)o()}catch(e){r=!0,s=e}finally{try{t||null==n.return||n.return()}finally{if(r)throw s}}return _.push({icon:eo["icon:download"],text:j("settings.download_save_file"),help:j("settings.download_save_file_help"),value:function(){return(0,W._)(function(){var e,_;return(0,q.__generator)(this,function(t){return e=_K(),(_=document.createElement("a")).setAttribute("href","data:application/json;base64,"+btoa(JSON.stringify({fileType:"B71-save-file",appVersion:es,signedPayload:e,key:$("Security by obscurity, but really the game is oss so eh"+e)}))),_.setAttribute("download","b71-save-"+new Date().toISOString().slice(0,19).replace(/[^0-9]+/gi,"-")+".b71"),document.body.appendChild(_),_.click(),setTimeout(function(){return document.body.removeChild(_)},1e3),[2]})})()}}),_.push({icon:eo["icon:upload"],text:j("settings.load_save_file"),help:j("settings.load_save_file_help"),value:function(){return(0,W._)(function(){var e,_;return(0,q.__generator)(this,function(t){if(!document.getElementById("save_file_picker")){var r;(_=document.createElement("input")).setAttribute("type","file"),_.setAttribute("id","save_file_picker"),_.setAttribute("accept",".b71,.json"),_.style.position="absolute",_.style.left="-1000px",_.addEventListener("change",(r=(0,W._)(function(e){var t,r,s,o,n,a,i,l,c;return(0,q.__generator)(this,function(e){switch(e.label){case 0:if(e.trys.push([0,4,,6]),!(r=_&&(null===(t=_.files)||void 0===t?void 0:t.item(0))))return[3,3];return[4,new Promise(function(e,_){var t=new FileReader;t.onload=function(){var _;e((null===(_=t.result)||void 0===_?void 0:_.toString())||"")},t.onerror=function(){_(t.error)},t.readAsText(r)})];case 1:if(o=(s=JSON.parse(e.sent())).fileType,n=s.appVersion,a=s.signedPayload,i=s.key,"B71-save-file"!==o)throw Error("Not a B71 save file");if(n>es)throw Error("Please update your app first, this file is for version "+n+" or newer.");if(i!==$("Security by obscurity, but really the game is oss so eh"+a))throw Error("Key does not match content.");for(var u in l=JSON.parse(a),localStorage.clear(),l)localStorage.setItem(u,l[u]);return[4,_u({title:j("settings.save_file_loaded"),content:[j("settings.save_file_loaded_help"),{text:j("settings.save_file_loaded_ok")}]})];case 2:e.sent(),window.location.reload(),e.label=3;case 3:return[3,6];case 4:return c=e.sent(),[4,_u({title:j("settings.save_file_error"),content:[c.message,{text:j("settings.save_file_loaded_ok")}]})];case 5:return e.sent(),[3,6];case 6:return _.value="",[2]}})}),function(e){return r.apply(this,arguments)})),document.body.appendChild(_)}return null===(e=document.getElementById("save_file_picker"))||void 0===e||e.click(),[2]})})()}}),_.push({icon:eo["icon:coins"],text:j("settings.max_coins",{max:H()}),help:j("settings.max_coins_help"),value:function(){return(0,W._)(function(){return(0,q.__generator)(this,function(e){switch(e.label){case 0:return C("max_coins",(L("max_coins",1)+1)%6),[4,tl()];case 1:return e.sent(),[2]}})})()}}),_.push({icon:eo["icon:particles"],text:j("settings.max_particles",{max:A()}),help:j("settings.max_particles_help"),value:function(){return(0,W._)(function(){return(0,q.__generator)(this,function(e){switch(e.label){case 0:return C("max_particles",(L("max_particles",1)+1)%6),[4,tl()];case 1:return e.sent(),[2]}})})()}}),_.push({icon:eo["icon:reset"],text:j("settings.reset"),help:j("settings.reset_help"),value:function(){return(0,W._)(function(){return(0,q.__generator)(this,function(e){switch(e.label){case 0:return[4,_u({title:j("settings.reset"),content:[j("settings.reset_instruction"),{text:j("settings.reset_confirm"),value:!0},{text:j("settings.reset_cancel"),value:!1}],allowClose:!0})];case 1:return e.sent()&&(localStorage.clear(),window.location.reload()),[2]}})})()}}),[4,_u({title:j("main_menu.settings_title"),content:[j("main_menu.settings_help")].concat(z(_)),allowClose:!0,className:"settings"})];case 1:return(i=l.sent())&&(i(),ty.needsRender=!0),[2]}})})).apply(this,arguments)}function tu(){return tp.apply(this,arguments)}function tp(){return(tp=(0,W._)(function(){var e;return(0,q.__generator)(this,function(_){switch(_.label){case 0:if(_.trys.push([0,10,,11]),!(document.fullscreenEnabled||document.webkitFullscreenEnabled))return[2,!1];if(!(null!==document.fullscreenElement&&!ec("fullscreen")))return[3,5];if(!document.exitFullscreen)return[3,2];return[4,document.exitFullscreen()];case 1:case 3:case 6:case 8:return _.sent(),[2,!0];case 2:if(!document.webkitCancelFullScreen)return[3,4];return[4,document.webkitCancelFullScreen()];case 4:return[3,9];case 5:if(!(ec("fullscreen")&&!document.fullscreenElement))return[3,9];if(!(e=document.documentElement).requestFullscreen)return[3,7];return[4,e.requestFullscreen()];case 7:if(!e.webkitRequestFullscreen)return[3,9];return[4,e.webkitRequestFullscreen()];case 9:return[3,11];case 10:return console.warn(_.sent()),[3,11];case 11:return[2,!1]}})})).apply(this,arguments)}function td(){return(td=(0,W._)(function(){var e,_,t,r,s,o;return(0,q.__generator)(this,function(n){switch(n.label){case 0:return e=T(),_=ec("mobile-mode")?"help":"tooltip",t=ei.sort(function(e,_){return e.threshold-_.threshold}).map(function(t){var r=t.name,s=t.id,o=t.threshold,n=t.icon,a=t.help;return k({text:r,disabled:e'):"";return k({text:e.name+o,disabled:!!s,value:{level:e.name},icon:eo[e.name]},_,(null==s?void 0:s.text)||eW(e))}),[4,_u({title:j("unlocks.title_upgrades",{unlocked:t.filter(function(e){return!e.disabled}).length,out_of:t.length}),content:["".concat(j("unlocks.intro",{ts:e}),"\n ").concat(t.find(function(e){return e.disabled})?j("unlocks.greyed_out_help"):"","
")].concat(z(t),[j("unlocks.level",{unlocked:s.filter(function(e){return!e.disabled}).length,out_of:s.length})],z(s)),allowClose:!0,className:ec("mobile-mode")?"":"actionsAsGrid"})];case 1:if(!(o=n.sent()))return[3,3];return[4,tb(ty)];case 2:n.sent()&&tf(w({},o)),n.label=3;case 3:return[2]}})})).apply(this,arguments)}function tb(e){return tg.apply(this,arguments)}function tg(){return(tg=(0,W._)(function(e){return(0,q.__generator)(this,function(_){return!e.currentLevel||_n?[2,!0]:(_8(!0),[2,_u({title:j("confirmRestart.title"),content:[j("confirmRestart.text"),{value:!0,text:j("confirmRestart.yes")},{value:!1,text:j("confirmRestart.no")}]})])})})).apply(this,arguments)}var tm={ArrowLeft:0,ArrowRight:0,Shift:0};function th(e,_){tm[e]=_,ty.keyboardPuckSpeed=(tm.ArrowRight-tm.ArrowLeft)*(1+2*tm.Shift)*ty.gameZoneWidth/50}document.addEventListener("keydown",(t=(0,W._)(function(e){return(0,q.__generator)(this,function(_){return"f"!==e.key.toLowerCase()||e.ctrlKey||e.metaKey?e.key in tm&&th(e.key,1):(eu("fullscreen"),tu())," "!==e.key||_n||(ty.running?_8(!0):_6(),e.preventDefault()),[2]})}),function(e){return t.apply(this,arguments)}));var tv=new Date;document.addEventListener("keyup",(r=(0,W._)(function(e){var _,t,r,s,o;return(0,q.__generator)(this,function(n){switch(n.label){case 0:if(o=document.querySelector("button:focus"),!(e.key in tm))return[3,1];return th(e.key,0),[3,10];case 1:if("ArrowDown"!==e.key||(null==o?void 0:null===(_=o.nextElementSibling)||void 0===_?void 0:_.tagName)!=="BUTTON")return[3,2];return null==o||null===(t=o.nextElementSibling)||void 0===t||t.focus(),[3,10];case 2:if("ArrowUp"!==e.key||(null==o?void 0:null===(r=o.previousElementSibling)||void 0===r?void 0:r.tagName)!=="BUTTON")return[3,3];return null==o||null===(s=o.previousElementSibling)||void 0===s||s.focus(),[3,10];case 3:if(!("Escape"===e.key&&_a))return[3,4];return _a(),[3,10];case 4:if(!("Escape"===e.key&&ty.running))return[3,5];return _8(!0),[3,10];case 5:if(!("m"===e.key.toLowerCase()&&!_n))return[3,6];return ta().then(),[3,10];case 6:if(!("s"===e.key.toLowerCase()&&!_n))return[3,7];return _2(ty).then(),[3,10];case 7:if(!("r"===e.key.toLowerCase()&&!_n&&tv1&&void 0!==arguments[1]?arguments[1]:1;e.runStatistics.max_combo=Math.max(e.runStatistics.max_combo,e.combo),e.lastCombo=e.combo,e.perks.addiction&&e.lastBrickBroken&&e.lastBrickBrokene.lastTickDown+1e3&&e.perks.hot_start&&(e.lastTickDown=e.levelTime,_S(e,e.perks.hot_start,e.puckPosition,e.gameZoneHeight-2*e.puckHeight)),t<=e.perks.skip_last&&!e.autoCleanUses&&(e.bricks.forEach(function(_,t){_&&_M(e,t,e.balls[0],!0)}),e.autoCleanUses++);var r=_I(e.respawns);if(!e.running||t||r?e.winAt=0:e.winAt||(e.winAt=e.levelTime+5e3),e.running&&e.winAt&&e.levelTime>e.winAt||e.levelTime&&!t&&!_I(e.coins))e.currentLevel+1l&&i<16*l*e.perks.ball_attracts_coins){var c=1-.02*(.5+e.perks.ball_attracts_coins);t.vx*=c,t.vy*=c,t.vy*=c;var u=(a.x-t.x)/i*50*e.perks.ball_attracts_coins,p=(a.y-t.y)/i*50*e.perks.ball_attracts_coins;t.vx+=u,t.vy+=p,!ec("basic")&&Math.random()*e.perks.ball_attracts_coins*_>.9&&_A(e,t.x+5*u,t.y+5*p,2*u,2*p,_C(),!0,e.coinSize/2,100)}}}e.perks.bricks_attract_coins&&_Z(e,t,e.perks.bricks_attract_coins*_,2,!1);var d=1-(.03*e.perks.viscosity+.002)*_/(1+e.perks.etherealcoins);e.perks.etherealcoins||(t.vy*=d,t.vx*=d),t.vx>7*e.baseSpeed&&(t.vx=7*e.baseSpeed),t.vx<-7*e.baseSpeed&&(t.vx=-7*e.baseSpeed),t.vy>7*e.baseSpeed&&(t.vy=7*e.baseSpeed),t.vy<-7*e.baseSpeed&&(t.vy=-7*e.baseSpeed),t.a+=t.sa;var b=e.perks.helium>0&&2*Math.abs(t.x-e.puckPosition)>e.puckWidth+t.size,g=_*t.weight*.8*(b?-e.perks.helium:1);e.perks.etherealcoins&&(e.perks.helium?g*=.2/e.perks.etherealcoins:g*=0),t.vy+=g,e.perks.helium&&!ec("basic")&&Math.random()<.1*_&&_A(e,t.x,t.y,0,10*g,e.perks.metamorphosis||ec("colorful_coins")?t.color:"#ffd300",!0,5,250);var m=(Math.abs(t.vx)+Math.abs(t.vy))*10,h=_H(e,t,t.size/2,_);t.y>e.gameZoneHeight-s-e.puckHeight&&t.yt&&_.threshold<=r&&(_P(e,"colorChange",0,1),_v(eo["icon:"+_.id]+""+j("gameOver.unlocked_perk")+""))})}}(e,t.points),e.score>e.highScore&&!e.creative&&(e.highScore=e.score,localStorage.setItem("breakout-3-hs-short",e.score.toString())),ec("basic")||_A(e,t.previousX,t.previousY,(e.canvasWidth-t.x)/100,-t.y/100,e.perks.metamorphosis||ec("colorful_coins")?t.color:"#ffd300",!0,e.coinSize/2,100+50*Math.random()),_P(e,"coinCatch",t.x,1),e.runStatistics.score+=t.points,e.perks.asceticism&&_S(e,3*e.perks.asceticism*t.points,t.x,t.y),_D(e.coins,r)):t.y>e.canvasHeight+10*s&&(e.levelLostCoins+=t.points,_D(e.coins,r),e.perks.compound_interest&&_w(e,t.x,e.gameZoneHeight-20),e.combo<30*e.perks.fountain_toss&&Math.random()<1/e.combo*e.perks.fountain_toss&&_x(e,1,t.x,e.gameZoneHeight-20));var v=function(e,_){var t,r,s=_.size/2,o=_.x,n=_.y,a=_.previousX,i=_.previousY,l=tr(a,n,s),c=tr(o,i,s),u=void 0===l&&void 0===c&&tr(o,n,s)||void 0;if(e.perks.ghost_coins)void 0!==(null!==(t=null!=l?l:c)&&void 0!==t?t:u)&&(_.vy*=1-.2/e.perks.ghost_coins,_.vx*=1-.2/e.perks.ghost_coins);else{if(void 0!==l||void 0!==u){_.y=_.previousY,_.vy*=-1;var p=e.bricks[t_(o-s,n+s)],d=e.bricks[t_(o+s,n+s)];p&&!d&&(_.vx+=1,_.sa-=1),!p&&d&&(_.vx-=1,_.sa+=1)}(void 0!==c||void 0!==u)&&(_.x=_.previousX,_.vx*=-1)}return null!==(r=null!=l?l:c)&&void 0!==r?r:u}(e,t);if(e.perks.metamorphosis&&void 0!==v&&e.bricks[v]&&t.color!==e.bricks[v]&&"black"!==e.bricks[v]&&t.metamorphosisPoints&&(e.bricks[v]=t.color,t.metamorphosisPoints--,_P(e,"colorChange",t.x,.3),e.perks.hypnosis)){var y=eq(e,t.x,t.y);y&&(t.x=y.x,t.y=y.y,t.vx=(Math.random()-.5)*e.baseSpeed,t.vy=(Math.random()-.5)*e.baseSpeed,t.metamorphosisPoints=e.perks.metamorphosis)}if(!e.perks.ghost_coins&&void 0!==v||h){var f=1-.2/(1+e.perks.etherealcoins);t.vx*=f,t.vy*=f,1>Math.abs(t.vy)&&(t.vy=0),t.sa*=.9,m>20&&!t.collidedLastFrame&&_P(e,"coinBounce",t.x,.2),t.collidedLastFrame=!0}else t.collidedLastFrame=!1}),e.balls.forEach(function(t){return function(e,_,t){_.previousVX=_.vx,_.previousVY=_.vy;var r,s=1+e.perks.telekinesis+e.perks.ball_repulse_ball+e.perks.puck_repulse_ball+e.perks.ball_attract_ball;eC(e,_)>0&&(s+=3,_.vx+=(e.puckPosition-_.x)/1e3*t*e.perks.telekinesis*eC(e,_)),eT(e,_)>0&&(s+=3,_.vx+=(e.puckPosition-_.x)/1e3*t*e.perks.yoyo*eT(e,_)),_.hitSinceBounce<3*e.perks.bricks_attract_ball&&_Z(e,_,e.perks.bricks_attract_ball*t*.2,2+e.perks.bricks_attract_ball,Math.random()<.5*t),_.vx*_.vx+_.vy*_.vy0?1:-1)*.02/s);var o=!0,n=!1,a=void 0;if(e.perks.ball_repulse_ball)try{for(var i,l=e.balls[Symbol.iterator]();!(o=(i=l.next()).done);o=!0){var c=i.value;c.x>=_.x||_T(e,_,c,e.perks.ball_repulse_ball,!0)}}catch(e){n=!0,a=e}finally{try{o||null==l.return||l.return()}finally{if(n)throw a}}var u=!0,p=!1,d=void 0;if(e.perks.ball_attract_ball)try{for(var b,g=e.balls[Symbol.iterator]();!(u=(b=g.next()).done);u=!0){var m=b.value;m.x>=_.x||function(e,_,t,r){var s=eA(_,t),o=3*e.gameZoneWidth/4;if(!(se.offsetX+e.gameZoneWidth/2&&_w(e,_.x,_.y),e.perks.top_is_lava&&h>=2&&_w(e,_.x,_.y+3*e.ballSize),e.perks.trampoline&&_S(e,e.perks.trampoline,_.x,_.y+e.ballSize),_P(e,"wallBeep",_.x,1),e.levelWallBounces++,e.runStatistics.wall_bounces++);var v=e.gameZoneHeight-e.puckHeight-e.ballSize/2,y=Math.abs(_.x-e.puckPosition)v&&_.vy>0&&(y||e.balls.length<2&&e.perks.extra_life&&_.y>v+e.puckHeight/2)){if(y){var f=Math.sqrt(_.vx*_.vx+_.vy*_.vy),W=Math.atan2(-e.puckWidth/2,(_.x-e.puckPosition)*(e.perks.concave_puck?-1/(1+e.perks.concave_puck):1));_.vx=f*Math.cos(W),_.vy=f*Math.sin(W),_P(e,"wallBeep",_.x,1)}else _.vy*=-1,function(e,_,t,r){if(e.perks.extra_life-=1,e.perks.extra_life<0?e.perks.extra_life=0:e.perks.sacrifice&&(e.combo*=e.perks.sacrifice,e.bricks.forEach(function(t,r){return t&&_M(e,r,_,!0)})),_P(e,"lifeLost",_.x,1),!ec("basic"))for(var s=0;s<10;s++)_A(e,t,r,Math.random()*e.baseSpeed*3,3*e.baseSpeed,"#FF0000",!1,e.coinSize/2,150)}(e,_,_.x,_.y);if(e.perks.streak_shots&&_w(e,_.x,_.y),e.perks.trampoline&&_x(e,e.perks.trampoline,_.x,_.y),e.perks.nbricks&&_.hitSinceBouncee.gameZoneHeight+e.ballSize/2&&(_.destroyed=!0,e.runStatistics.balls_lost++,e.balls.find(function(e){return!e.destroyed})||_b(j("gameOver.lost.title"),j("gameOver.lost.summary",{score:e.score})));var w=e.ballSize/2,x=_.x,S=_.y,z=_.previousX,q=_.previousY,M=tr(z,S,w),G=tr(x,q,w),P=void 0===M&&void 0===G&&tr(x,S,w)||void 0,R=null!==(r=null!=M?M:G)&&void 0!==r?r:P;if(void 0!==R){var O=e.bricks[R];_.hitSinceBounce++,e.perks.nbricks&&(_.hitSinceBounce>e.perks.nbricks?_w(e,_.x,_.y):_x(e,e.perks.nbricks,_.x,_.y));var B=!1,L=1+(e.perks.pierce_color&&(void 0===M||e.bricks[M]===e.ballsColor)&&(void 0===G||e.bricks[G]===e.ballsColor)&&(void 0===P||e.bricks[P]===e.ballsColor)?e.perks.pierce_color:0);e.brickHP[R]-=L;var C=Math.min(_.piercePoints,Math.max(1,e.brickHP[R]+1));e.brickHP[R]-=C,_.piercePoints-=C,e.brickHP[R]<0&&(e.brickHP[R]=0,B=!0),void 0===M&&void 0===P||B||(_.y=_.previousY,_.vy*=-1),void 0===G&&void 0===P||B||(_.x=_.previousX,_.vx*=-1),e.brickHP[R]?(_P(e,"wallBeep",x,1),function(e,_,t,r){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:8,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:150;_E(e.lights,function(n){n.time=e.levelTime,n.x=_,n.y=t,n.color=r,n.size=s,n.duration=o})}(e,ex(e,R),eS(e,R),"#FFFFFF",e.brickWidth+2,50*e.brickHP[R])):(_.brokenSinceBounce++,_M(e,R,_,!1),_.sapperUses0&&!_.hitSinceBounce,F=e.combo-1;if(A||F&&Math.random()>.1/(1+F)||H&&Math.random()>.1/(1+H)||F&&Math.random()>.1/(1+F)){var E=H&&(Math.random()>.5?"#ffb92a":"#FF0000")||A&&"#FF0000"||e.ballsColor;_A(e,_.x,_.y,e.perks.pierce_color||T?-_.vx+(Math.random()-.5)*e.baseSpeed/3:(Math.random()-.5)*e.baseSpeed,e.perks.pierce_color||T?-_.vy+(Math.random()-.5)*e.baseSpeed/3:(Math.random()-.5)*e.baseSpeed,E,!0,e.coinSize/2,100)}}}(e,t,_)}),e.perks.shocks&&e.balls.forEach(function(_,t){return e.balls.forEach(function(r,s){if(t.5&&_A(e,e.offsetXRoundedDown+Math.random()*e.gameZoneWidthRoundedUp,Math.random()*e.gameZoneHeight,8*o,0,_C(),!0,e.coinSize/2,150);_V(e.particles,function(t,r){t.x+=t.vx*_,t.y+=t.vy*_,!t.ethereal&&(t.vy+=.5*_,tt(t_(t.x,t.y))&&_D(e.particles,r))})}if(e.combo>_k(e)&&!ec("basic")&&(e.combo-_k(e))*Math.random()>5){if(e.perks.top_is_lava&&_A(e,e.offsetXRoundedDown+Math.random()*e.gameZoneWidthRoundedUp,0,(Math.random()-.5)*10,5,"#FF0000",!0,e.coinSize/2,100*(Math.random()+1)),e.perks.left_is_lava&&_A(e,e.offsetXRoundedDown,Math.random()*e.gameZoneHeight,5,(Math.random()-.5)*10,"#FF0000",!0,e.coinSize/2,100*(Math.random()+1)),e.perks.right_is_lava&&_A(e,e.offsetXRoundedDown+e.gameZoneWidthRoundedUp,Math.random()*e.gameZoneHeight,-5,(Math.random()-.5)*10,"#FF0000",!0,e.coinSize/2,100*(Math.random()+1)),e.perks.compound_interest){var a=e.puckPosition,i=0;do a=e.offsetXRoundedDown+e.gameZoneWidthRoundedUp*Math.random(),i++;while(Math.abs(a-e.puckPosition)_.time)_B(e,_.index,_.color),_D(e.respawns,t);else{var r=_.index,s=_.color,o=Math.random()>.5,n=Math.random()>.5?1:-1,a=Math.random()>.5?1:-1;_A(e,ex(e,r)+n*e.brickWidth/2,eS(e,r)+a*e.brickWidth/2,o?0:-n*e.baseSpeed,o?-a*e.baseSpeed:0,s,!0,e.coinSize/2,250)}}),_V(e.particles,function(_,t){e.levelTime>_.time+_.duration&&_D(e.particles,t)}),_V(e.texts,function(_,t){e.levelTime>_.time+_.duration&&_D(e.texts,t)}),_V(e.lights,function(_,t){e.levelTime>_.time+_.duration&&_D(e.lights,t)})}(ty,r)),(ty.running||ty.needsRender)&&(ty.needsRender=!1,function(e){var _=eO(e),t=e.combo>_k(e),r=eN.width,s=eN.height;if(r&&s){e.currentLevel||e.levelTime?e9.innerText=j("play.current_lvl",{level:e.currentLevel+1,max:eG(e)}):e9.innerText=j("play.menu_label");var o=e.levelSpawnedCoins?(e.levelSpawnedCoins-e.levelLostCoins)/e.levelSpawnedCoins:1;if(e8.innerHTML=(ec("show_fps")?' \n Math.abs(to-60)&&"good"||"bad",'">\n ').concat(to," FPS\n / \n \n "):"")+(ec("show_stats")?' \n .9&&"good"||"",'" data-tooltip="').concat(j("play.stats.coins_catch_rate"),'">\n ').concat(Math.floor(100*o),'%\n / \n \n ').concat(Math.ceil(e.levelTime/1e3),'s \n / \n \n ').concat(e.levelWallBounces,' B \n / \n \n ').concat(e.levelMisses," M\n / \n "):"")+'$').concat(e.score,""),e8.className=e.lastScoreIncrease>e.levelTime-500?"active":"",!ec("basic")&&_.svg&&"#000000"===_.color){eK.globalCompositeOperation="source-over",eK.globalAlpha=.99,eK.fillStyle=_.color,eK.fillRect(0,0,r/16,s/16);var n=ec("extra_bright")?3:1;if(eK.globalCompositeOperation="lighten",eK.globalAlpha=.1+5/(_I(e.coins)+10),_V(e.coins,function(_){e5(eK,_r(e,_),2*e.coinSize*n/16,_.x/16,_.y/16)}),e.balls.forEach(function(_){eK.globalAlpha=.3*(1-ej(_,e)),e5(eK,e.ballsColor,2*e.ballSize*n/16,_.x/16,_.y/16)}),eK.globalAlpha=.05,e.bricks.forEach(function(_,t){if(_){var r=ex(e,t),s=eS(e,t);e5(eK,"black"==_?"#666666":_,Math.min(200,1.5*e.brickWidth*n)/16,r/16,s/16)}}),eK.globalCompositeOperation="screen",_V(e.particles,function(_){var t=_.x,r=_.y,s=_.time,o=_.color,a=_.size,i=_.duration;eK.globalAlpha=.1*Math.min(1,2-(e.levelTime-s)/i*2),e5(eK,o,3*a*n/16,t/16,r/16)}),eU.globalAlpha=1,eU.globalCompositeOperation="source-over",eU.imageSmoothingEnabled=!0,eU.imageSmoothingQuality="high",eU.drawImage(eQ,0,0,r,s),eU.imageSmoothingEnabled=!1,eU.globalAlpha=1,eU.globalCompositeOperation="multiply",_.svg&&eY.width&&eY.complete){if(eJ.title!==_.name){eJ.title=_.name,eJ.width=e.canvasWidth,eJ.height=e.canvasHeight;var a=eJ.getContext("2d");if(a.globalCompositeOperation="source-over",a.fillStyle=_.color||"#000",a.fillRect(0,0,e.canvasWidth,e.canvasHeight),e.perks.clairvoyant>=3)for(var i=document.body.innerHTML.replace(/\s+/gi,""),l=Math.ceil(e.canvasWidth/15),c=Math.ceil(e.canvasHeight/20),u=Math.ceil(Math.random()*(i.length-l*c)),p=0;p_k(ty),_=e&&ty.perks.picky_eater&&eB(ty),t=e&&eF(ty),r=eL(ty),s=ty.perks.clairvoyant,o=_t(ty);_||t||-1!==r||ty.perks.zen||(o=0);var n=s&&ty.brickHP.reduce(function(e,_){return e+_},0),a=ty.gameZoneWidth+"_"+ty.bricks.join("_")+eX.complete+"_"+r+"_"+_+"_"+t+"_"+ty.ballsColor+"_"+ty.perks.pierce_color+"_"+n+"_"+o;if(a!==e1){e1=a,e0.width=ty.gameZoneWidth,e0.height=ty.gameZoneWidth+1;var i=e0.getContext("2d");i.clearRect(0,0,ty.gameZoneWidth,ty.gameZoneWidth),i.resetTransform(),i.translate(-ty.offsetX,0),ty.bricks.forEach(function(n,a){var l=ex(ty,a),c=eS(ty,a);if(n){var u=r===Math.floor(a/ty.level.size),p=ty.ballsColor!==n&&"black"!==n&&_||e&&ty.perks.zen&&"black"===n||u||t;i.globalCompositeOperation="source-over",e6(ty,i,n,l,c,p?o:-1,s>=2),ty.brickHP[a]>1&&s&&(i.globalCompositeOperation="source-over",e7(i,ty.brickHP[a].toString(),s>=2?n:ty.level.color,ty.puckHeight,l,c)),"black"===n&&(i.globalCompositeOperation="source-over",function(e,_,t,r,s){var o="svg"+_+"_"+t+"_"+_.complete;if(!e2[o]){var n=document.createElement("canvas");n.width=t,n.height=t;var a=n.getContext("2d"),i=t/Math.max(_.width,_.height),l=_.width*i,c=_.height*i;a.drawImage(_,(t-l)/2,(t-c)/2,l,c),e2[o]=n}e.drawImage(e2[o],Math.round(r-t/2),Math.round(s-t/2))}(i,eX,ty.brickWidth,l,c))}})}eU.drawImage(e0,ty.offsetX,0)}(),eU.globalCompositeOperation="screen",_V(e.lights,function(_){var t=_.x,r=_.y,s=_.time,o=_.color,n=(_.size,_.duration);eU.globalAlpha=.5*Math.min(1,2-(e.levelTime-s)/n*2),e6(e,eU,o,t,r,-1,e.perks.clairvoyant>=2)}),eU.globalCompositeOperation="screen",_V(e.texts,function(_){var t=_.x,r=_.y,s=_.time,o=_.color,n=_.size,a=_.duration,i=e.levelTime-s;eU.globalAlpha=Math.max(0,Math.min(1,2-i/a*2)),eU.globalCompositeOperation="source-over",e7(eU,_.text,o,n,t,r-i/10)}),_V(e.particles,function(_){var t=_.x,r=_.y,s=_.time,o=_.color,n=_.size,a=_.duration;eU.globalAlpha=Math.max(0,Math.min(1,2-(e.levelTime-s)/a*2)),eU.globalCompositeOperation="screen",e4(eU,o,n,t,r)}),e.perks.extra_life){eU.globalAlpha=1,eU.globalCompositeOperation="source-over",eU.fillStyle=e.puckColor;for(var h=0;h4&&void 0!==arguments[4]?arguments[4]:0,o=arguments.length>5?arguments[5]:void 0,n=arguments.length>6?arguments[6]:void 0,a="puck"+_+"_"+t+"_"+r+"_"+o+"_"+n;if(!e2[a]){var i=document.createElement("canvas");i.width=t,i.height=2*r;var l=i.getContext("2d");l.fillStyle=_,l.beginPath(),l.moveTo(0,2*r),o?(l.lineTo(0,.75*r),l.bezierCurveTo(t/2,r*(2+o)/3,t/2,r*(2+o)/3,t,.75*r)):(l.lineTo(0,1.25*r),l.bezierCurveTo(0,.75*r,t,.75*r,t,1.25*r)),l.lineTo(t,2*r),l.fill(),-1!==n&&(l.strokeStyle="#FF0000",l.lineWidth=4,l.setLineDash(__),l.lineDashOffset=n,l.stroke()),e2[a]=i}e.drawImage(e2[a],Math.round(ty.puckPosition-t/2),ty.gameZoneHeight-2*r+s)}(eU,e.puckColor,e.puckWidth,e.puckHeight,0,e.perks.concave_puck,e.perks.streak_shots&&t?_t(e):-1),e.combo>1){eU.globalCompositeOperation="source-over";var v="x "+e.combo,y=v.length*e.puckHeight/1.8,f=y+2*e.coinSize,W=e.puckPosition-f/2;fe.puckWidth?e.combo.toString():v,"#000",y>e.puckWidth?12:20,e.puckPosition,e.gameZoneHeight-e.puckHeight/2,!1)}eU.globalCompositeOperation="source-over",eU.globalAlpha=1;var k=t&&(e.perks.left_is_lava||e.perks.trampoline),w=t&&(e.perks.right_is_lava||e.perks.trampoline),x=t&&(e.perks.top_is_lava||e.perks.trampoline);e.offsetXRoundedDown?(e$(eU,e,k&&"#FF0000"||"#FFFFFF",e.offsetXRoundedDown-1,0,e.offsetXRoundedDown-1,s,1),e$(eU,e,w&&"#FF0000"||"#FFFFFF",r-e.offsetXRoundedDown+1,0,r-e.offsetXRoundedDown+1,s,1)):(e$(eU,e,k&&"#FF0000"||"",0,0,0,s,1),e$(eU,e,w&&"#FF0000"||"",r-1,0,r-1,s,1)),x&&e$(eU,e,"#FF0000",e.offsetXRoundedDown,1,r-e.offsetXRoundedDown,1,1),eU.globalAlpha=1,e$(eU,e,t&&e.perks.compound_interest&&"#FF0000"||ec("mobile-mode")&&"#FFFFFF"||"",e.offsetXRoundedDown,e.gameZoneHeight,r-e.offsetXRoundedDown,e.gameZoneHeight,1),!ec("basic")&&ec("contrast")&&_.svg&&"#000000"===_.color&&(eU.imageSmoothingEnabled=!0,eK.fillStyle="#FFFFFF",eK.globalAlpha=.25,eK.globalCompositeOperation="screen",eK.fillRect(0,0,eQ.width,eQ.height),eU.globalAlpha=1,eU.globalCompositeOperation="overlay",eU.drawImage(eQ,0,0,r,s),eU.imageSmoothingEnabled=!1),eU.globalCompositeOperation="source-over",eU.globalAlpha=1,ec("mobile-mode")&&!e.running&&e7(eU,j("play.mobile_press_to_play"),e.puckColor,e.puckHeight,e.canvasWidth/2,e.gameZoneHeight+(e.canvasHeight-e.gameZoneHeight)/2),g&&eU.resetTransform()}}(ty)),ty.running&&function(e){if(ec("record")){var _;l&&(_=e,p&&(p.drawImage(eN,_.offsetXRoundedDown,0,_.gameZoneWidthRoundedUp,_.gameZoneHeight,0,0,u.width,u.height),p.fillStyle="#FFFFFF",p.textBaseline="top",p.font="12px monospace",p.textAlign="right",p.fillText(_.score.toString(),u.width-12,12),p.textAlign="left",p.fillText("Level "+(_.currentLevel+1)+"/"+eG(_),12,12)),(null==c?void 0:c.requestFrame)?null==c||c.requestFrame():(null==l?void 0:l.requestFrame)&&l.requestFrame())}}(ty),ec("sound")&&function(e){if(!(ep>Date.now()-60))for(var _ in ep=Date.now(),e.aboutToPlaySound){var t,r=e.aboutToPlaySound[_];r.vol&&(ed[_](Math.min(2,r.vol),(t=e,Math.max(0,Math.min(1,(r.x-t.offsetXRoundedDown)/t.gameZoneWidthRoundedUp))),e.combo),r.vol=0)}}(ty),requestAnimationFrame(e),ts++}(),function(){var e=document.getElementById("tooltip");if(ec("mobile-mode")){e.style.display="none";return}function _(_){e.style.transform="translate(".concat(_.clientX,"px,").concat(_.clientY,"px) translate(").concat(_.clientX>window.innerWidth/2?"-100%":"0",",").concat(_.clientY>2*window.innerHeight/3?"-100%":"20px",")")}function t(){e.style.display="none",r=null}var r=null;document.body.addEventListener("mouseenter",function(s){for(var o,n=s.target;n&&!n.hasAttribute("data-tooltip");)n=n.parentElement;(null==n?void 0:null===(o=n.getAttribute("data-tooltip"))||void 0===o?void 0:o.trim())?(e.innerHTML=(r=n).getAttribute("data-tooltip")||"",e.style.display="",_(s)):t()},!0),setInterval(function(){r&&!document.body.contains(r)&&t()},200),document.body.addEventListener("mousemove",function(t){e.style.display||_(t)},!0),document.body.addEventListener("mouseleave",function(e){t()},!0)}(),null===(g=document.getElementById("menu"))||void 0===g||g.setAttribute("data-tooltip",j("play.menu_tooltip"))}();