\n ').concat(en[r.l.name],"\n
\n ").concat(n,"\n ").concat(null===(_=r.reason)||void 0===_?void 0:_.text,"\n
\n
\n \n ")}var _6=new Set(C("breakout_71_unlocked_levels",[]));function _7(){return _8.apply(this,arguments)}function _8(){return(_8=(0,k._)(function(){var e;return(0,M.__generator)(this,function(_){switch(_.label){case 0:return[4,tp()];case 1:if(_.sent()||tf.running)return[2];return tf.running=!0,tf.ballStickToPuck=!1,!function(e){if(eu("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,k._)(function(){var e,_,r,s;return(0,M.__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=V("settings.record_download",{size:(_.size/1e6).toFixed(2)}),e.appendChild(s),[2]}})})}}(tf),null===(e=eb())||void 0===e||e.resume(),eu("record")&&(null==i?void 0:i.state)==="paused"&&i.resume(),[2]}})})).apply(this,arguments)}function _9(e){if(tf.running&&!tf.pauseTimeout){var _=function(){tf.running=!1,setTimeout(function(){var e;tf.running||null===(e=eb())||void 0===e||e.suspend()},1e3),_o(),tf.pauseTimeout=null,e9.className="",tf.needsRender=!0};e?(tf.pauseUsesDuringRun++,tf.pauseTimeout=setTimeout(_,Math.min(50*Math.max(0,tf.pauseUsesDuringRun-5),500))):_(),document.exitPointerLock&&document.exitPointerLock()}}var te=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,eU.width=n,eU.height=a,eQ.width=n,eQ.height=a,eK.width=n/16,eK.height=a/16,e.gameZoneHeight=eu("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=V("level_up.plus_one_upgrade_and_reroll")):_>.9&&(t++,s=V("level_up.plus_one_upgrade")),e.levelMisses<3?(t++,e.rerolls++,n=V("level_up.plus_one_upgrade_and_reroll")):e.levelMisses<6&&(t++,n=V("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=eG(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(_){_O(e,_.id)}),!(a=p.map(function(_){return{text:_.name+(e.perks[_.id]?V("level_up.upgrade_perk_to_level",{level:e.perks[_.id]+1}):""),icon:en["icon:"+_.id],value:_.id,help:_.help(e.perks[_.id]+1)}})).length))return[3,3];return e.rerolls&&a.push({text:V("level_up.reroll",{count:e.rerolls}),help:V("level_up.reroll_help"),value:"reroll",icon:en["icon:reroll"]}),i=r&&s&&n&&o&&V("level_up.compliment_perfect")||(r||s||n||o)&&V("level_up.compliment_good")||V("level_up.compliment_advice"),[4,_p(x(w({},{title:V("level_up.pick_upgrade_title")+(t?" ("+(t+1)+")":""),content:["".concat(V("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(V("level_up.after_buttons",{level:e.currentLevel+1,max:eO(e)}),"
\n ").concat(eR(e,e.currentLevel+1),"
\n")].concat(z(a),[eP(e),_5(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 tt(e,_){return eM(tf,Math.floor(_/tf.brickWidth),Math.floor((e-tf.offsetX)/tf.brickWidth))}function tr(e){if(tf.bricks[e])return e}function ts(e,_,t){var r,s,o;return null!==(o=null!==(s=null!==(r=tr(tt(e-t,_-t)))&&void 0!==r?r:tr(tt(e+t,_-t)))&&void 0!==s?s:tr(tt(e+t,_+t)))&&void 0!==o?o:tr(tt(e-t,_+t))}window.addEventListener("resize",function(){return te(tf)}),window.addEventListener("fullscreenchange",function(){return te(tf)}),setInterval(function(){var e=window.innerWidth,_=window.innerHeight;(e!==tf.canvasWidth||_!==tf.canvasHeight)&&te(tf)},1e3),eU.addEventListener("mouseup",function(e){0===e.button&&(tf.running?_9(!0):(_7(),eu("pointerLock")&&eU.requestPointerLock&&eU.requestPointerLock().then()))}),eU.addEventListener("mousemove",function(e){document.pointerLockElement===eU?_f(tf,tf.puckPosition+e.movementX):_f(tf,e.x)}),eU.addEventListener("touchstart",function(e){var _;e.preventDefault(),(null===(_=e.touches)||void 0===_?void 0:_.length)&&(_f(tf,e.touches[0].pageX),_W(tf),_7())}),eU.addEventListener("touchend",function(e){e.preventDefault(),_9(!0)}),eU.addEventListener("touchcancel",function(e){e.preventDefault(),_9(!0)}),eU.addEventListener("touchmove",function(e){var _;(null===(_=e.touches)||void 0===_?void 0:_.length)&&_f(tf,e.touches[0].pageX)});var to=0,tn=60;setInterval(function(){tn=to,to=0},1e3),setInterval(function(){tf.creative||(d||(d=ei.map(function(e,_){return w({name:e.name,li:_,l:e},eI(_))})),d.forEach(function(e){var _=e.name,t=e.minScore,r=e.forbidden,s=e.required;e.l,!(_6.has(_)||tf.score"+V("unlocks.just_unlocked")+""),_P(tf,"colorChange",0,1)))}))},500),window.addEventListener("visibilitychange",function(){document.hidden&&_9(!0)}),e9.addEventListener("click",function(e){e.preventDefault(),_a||_4(tf)}),document.addEventListener("visibilitychange",function(){document.hidden&&_9(!0)}),document.getElementById("menu").addEventListener("click",function(e){e.preventDefault(),_a||ti()});var ta=(g=Math).max.apply(g,z(el.map(function(e){return e.threshold})));function ti(){return tl.apply(this,arguments)}function tl(){return(tl=(0,k._)(function(){var e,_;return(0,M.__generator)(this,function(t){switch(t.label){case 0:var r;return _9(!0),e=[{icon:en["icon:new_run"],text:V("main_menu.normal"),help:(eD()?V("main_menu.high_score",{score:eD()}):"")||V("main_menu.normal_help"),value:function(){tk({levelToAvoid:eB(tf).name})}},{icon:en["icon:creative"],text:V("lab.menu_entry"),help:H()').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,_p({title:V("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:V("history.columns.started"),field:function(e){return e.started},render:function(e){return new Date(e).toISOString().slice(0,10)}},{label:V("history.columns.score"),field:function(e){return e.score}}].concat(z(Q.map(function(e){return{label:en["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,M.__values)(e())];case 2:if(o=n.sent(),"object"===(0,_2._)(o))return[2,o.v];return[3,1];case 3:return[2]}})})()}}),{icon:en["icon:unlocks"],text:V("main_menu.unlocks"),help:V("main_menu.unlocks_help"),value:function(){(function(){tg.apply(this,arguments)})()}}].concat(z(function(e){if(!eu("donation_reminder"))return[];var _=U();return[{text:V("main_menu.donate",{hours:_}),help:V("main_menu.donate_help",{suggestion:Math.min(20,Math.max(1,.2*_)).toFixed(0)}),icon:en["icon:premium"],value:function(){window.open("https://paypal.me/renanlecaro","_blank")}}]}(0)),[{text:V("main_menu.settings_title"),help:V("main_menu.settings_help"),icon:en["icon:settings"],value:function(){tc()}},{icon:en["icon:help"],text:V("help.title"),help:V("help.help"),value:function(){return(0,k._)(function(){return(0,M.__generator)(this,function(e){switch(e.label){case 0:return[4,_p({title:V("help.title"),allowClose:!0,content:[X(V("help.content",{catchRateBest:95,catchRateGood:90,levelTimeBest:30,levelTimeGood:60,missesBest:3,missesGood:6,wallBouncedBest:3,wallBouncedGood:10})),X(V("help.upgrades"))].concat(z(el.map(function(e){return'\n\n '.concat(e.icon,"\n
\n ").concat(e.name,"
\n ").concat(e.help(1),"\n
\n
\n \n ").concat(X(e.fullHelp),"\n")})),[""+V("help.levels")+"
"],z(ei.filter(function(e){var _;return null===(_=e.credit)||void 0===_?void 0:_.trim()}).map(function(e){return'\n\n '.concat(en[e.name],"\n
\n
\n ").concat(e.name," \n
\n ").concat(X(e.credit||""),"\n
\n \n
")})))})];case 1:return e.sent(),[2]}})})()}}]),[4,_p({title:V("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(eo,"\n
")]),allowClose:!0})];case 1:return(_=t.sent())&&(_(),tf.needsRender=!0),[2]}})})).apply(this,arguments)}function tc(){return tu.apply(this,arguments)}function tu(){return(tu=(0,k._)(function(){var e,_,t,r,s,o,n,a,i;return(0,M.__generator)(this,function(l){switch(l.label){case 0:_9(!0),(_=[{disabled:eu("easy"),icon:en["icon:starting_perks"],text:V("starting_perks.title"),help:V("starting_perks.help"),value:function(){return(0,k._)(function(){return(0,M.__generator)(this,function(e){switch(e.label){case 0:return[4,_Y()];case 1:return e.sent(),[2]}})})()}}]).push({icon:en[null===(e=E.find(function(e){return e.value===j()}))||void 0===e?void 0:e.levelName],text:V("settings.language"),help:V("settings.language_help"),value:function(){return(0,k._)(function(){var e,_;return(0,M.__generator)(this,function(t){switch(t.label){case 0:return[4,_p({title:V("settings.language"),content:[V("settings.language_help")].concat(z(E.map(function(e){return x(w({},e),{icon:en[e.levelName]})}))),allowClose:!0})];case 1:if(!(_=(e=t.sent())&&e!==j()))return[3,3];return[4,tb(tf)];case 2:_=t.sent(),t.label=3;case 3:return _&&(T("lang",e),window.location.reload()),[2]}})})()}}),t=!0,r=!1,s=void 0;try{for(o=function(){var e=a.value;ec[e]&&_.push({icon:eu(e)?en["icon:checkmark_checked"]:en["icon:checkmark_unchecked"],text:ec[e].name,help:ec[e].help,value:function(){ep(e),te(tf),tp(),tc()}})},n=Object.keys(ec)[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:en["icon:download"],text:V("settings.download_save_file"),help:V("settings.download_save_file_help"),value:function(){return(0,k._)(function(){var e,_;return(0,M.__generator)(this,function(t){return e=_$(),(_=document.createElement("a")).setAttribute("href","data:application/json;base64,"+btoa(JSON.stringify({fileType:"B71-save-file",appVersion:eo,signedPayload:e,key:ee("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:en["icon:upload"],text:V("settings.load_save_file"),help:V("settings.load_save_file_help"),value:function(){return(0,k._)(function(){var e,_;return(0,M.__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,k._)(function(e){var t,r,s,o,n,a,i,l,c;return(0,M.__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>eo)throw Error("Please update your app first, this file is for version "+n+" or newer.");if(i!==ee("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,_p({title:V("settings.save_file_loaded"),content:[V("settings.save_file_loaded_help"),{text:V("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,_p({title:V("settings.save_file_error"),content:[c.message,{text:V("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:en["icon:coins"],text:V("settings.max_coins",{max:A()}),help:V("settings.max_coins_help"),value:function(){return(0,k._)(function(){return(0,M.__generator)(this,function(e){switch(e.label){case 0:return T("max_coins",(C("max_coins",1)+1)%6),[4,tc()];case 1:return e.sent(),[2]}})})()}}),_.push({icon:en["icon:particles"],text:V("settings.max_particles",{max:F()}),help:V("settings.max_particles_help"),value:function(){return(0,k._)(function(){return(0,M.__generator)(this,function(e){switch(e.label){case 0:return T("max_particles",(C("max_particles",1)+1)%6),[4,tc()];case 1:return e.sent(),[2]}})})()}}),_.push({icon:en["icon:reset"],text:V("settings.reset"),help:V("settings.reset_help"),value:function(){return(0,k._)(function(){return(0,M.__generator)(this,function(e){switch(e.label){case 0:return[4,_p({title:V("settings.reset"),content:[V("settings.reset_instruction"),{text:V("settings.reset_confirm"),value:!0},{text:V("settings.reset_cancel"),value:!1}],allowClose:!0})];case 1:return e.sent()&&(localStorage.clear(),window.location.reload()),[2]}})})()}}),[4,_p({title:V("main_menu.settings_title"),content:[V("main_menu.settings_help")].concat(z(_)),allowClose:!0,className:"settings"})];case 1:return(i=l.sent())&&(i(),tf.needsRender=!0),[2]}})})).apply(this,arguments)}function tp(){return td.apply(this,arguments)}function td(){return(td=(0,k._)(function(){var e;return(0,M.__generator)(this,function(_){switch(_.label){case 0:if(_.trys.push([0,10,,11]),!(document.fullscreenEnabled||document.webkitFullscreenEnabled))return[2,!1];if(!(null!==document.fullscreenElement&&!eu("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(!(eu("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 tg(){return(tg=(0,k._)(function(){var e,_,t,r,s,o;return(0,M.__generator)(this,function(n){switch(n.label){case 0:return e=H(),_=eu("mobile-mode")?"help":"tooltip",t=el.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 W({text:r,disabled:e'):"";return W({text:e.name+o,disabled:!!s,value:{level:e.name},icon:en[e.name]},_,(null==s?void 0:s.text)||eW(e))}),[4,_p({title:V("unlocks.title_upgrades",{unlocked:t.filter(function(e){return!e.disabled}).length,out_of:t.length}),content:["".concat(V("unlocks.intro",{ts:e}),"\n ").concat(t.find(function(e){return e.disabled})?V("unlocks.greyed_out_help"):"","
")].concat(z(t),[V("unlocks.level",{unlocked:s.filter(function(e){return!e.disabled}).length,out_of:s.length})],z(s)),allowClose:!0,className:eu("mobile-mode")?"":"actionsAsGrid"})];case 1:if(!(o=n.sent()))return[3,3];return[4,tb(tf)];case 2:n.sent()&&tk(w({},o)),n.label=3;case 3:return[2]}})})).apply(this,arguments)}function tb(e){return tm.apply(this,arguments)}function tm(){return(tm=(0,k._)(function(e){return(0,M.__generator)(this,function(_){return!e.currentLevel||_a?[2,!0]:(_9(!0),[2,_p({title:V("confirmRestart.title"),content:[V("confirmRestart.text"),{value:!0,text:V("confirmRestart.yes")},{value:!1,text:V("confirmRestart.no")}]})])})})).apply(this,arguments)}var th={ArrowLeft:0,ArrowRight:0,Shift:0};function tv(e,_){th[e]=_,tf.keyboardPuckSpeed=(th.ArrowRight-th.ArrowLeft)*(1+2*th.Shift)*tf.gameZoneWidth/50}document.addEventListener("keydown",(t=(0,k._)(function(e){return(0,M.__generator)(this,function(_){return"f"!==e.key.toLowerCase()||e.ctrlKey||e.metaKey?e.key in th&&tv(e.key,1):(ep("fullscreen"),tp())," "!==e.key||_a||(tf.running?_9(!0):_7(),e.preventDefault()),[2]})}),function(e){return t.apply(this,arguments)}));var ty=new Date;document.addEventListener("keyup",(r=(0,k._)(function(e){var _,t,r,s,o;return(0,M.__generator)(this,function(n){switch(n.label){case 0:if(o=document.querySelector("button:focus"),!(e.key in th))return[3,1];return tv(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&&_i))return[3,4];return _i(),[3,10];case 4:if(!("Escape"===e.key&&tf.running))return[3,5];return _9(!0),[3,10];case 5:if(!("m"===e.key.toLowerCase()&&!_a))return[3,6];return ti().then(),[3,10];case 6:if(!("s"===e.key.toLowerCase()&&!_a))return[3,7];return _4(tf).then(),[3,10];case 7:if(!("r"===e.key.toLowerCase()&&!_a&&ty1&&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,_z(e,e.perks.hot_start,e.puckPosition,e.gameZoneHeight-2*e.puckHeight)),t<=e.perks.skip_last&&!e.autoCleanUses&&(e.bricks.forEach(function(_,t){_&&_G(e,t,e.balls[0],!0)}),e.autoCleanUses++);var r=_j(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&&!_j(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,!eu("basic")&&Math.random()*e.perks.ball_attracts_coins*_>.9&&_F(e,t.x+5*u,t.y+5*p,2*u,2*p,_T(),!0,e.coinSize/2,100)}}}e.perks.bricks_attract_coins&&_N(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 g=e.perks.helium>0&&2*Math.abs(t.x-e.puckPosition)>e.puckWidth+t.size,b=_*t.weight*.8*(g?-e.perks.helium:1);e.perks.etherealcoins&&(e.perks.helium?b*=.2/e.perks.etherealcoins:b*=0),t.vy+=b,e.perks.helium&&!eu("basic")&&Math.random()<.1*_&&_F(e,t.x,t.y,0,10*b,e.perks.metamorphosis||eu("colorful_coins")?t.color:"#ffd300",!0,5,250);var m=(Math.abs(t.vx)+Math.abs(t.vy))*10,h=_A(e,t,t.size/2,_);t.y>e.gameZoneHeight-s-e.puckHeight&&t.yt&&_.threshold<=r&&(_P(e,"colorChange",0,1),_y(en["icon:"+_.id]+""+V("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())),eu("basic")||_F(e,t.previousX,t.previousY,(e.canvasWidth-t.x)/100,-t.y/100,e.perks.metamorphosis||eu("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&&_z(e,3*e.perks.asceticism*t.points,t.x,t.y),_I(e.coins,r)):t.y>e.canvasHeight+10*s&&(e.levelLostCoins+=t.points,_I(e.coins,r),e.perks.compound_interest&&_x(e,t.x,e.gameZoneHeight-20),e.combo<30*e.perks.fountain_toss&&Math.random()<1/e.combo*e.perks.fountain_toss&&_S(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=ts(a,n,s),c=ts(o,i,s),u=void 0===l&&void 0===c&&ts(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[tt(o-s,n+s)],d=e.bricks[tt(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;eT(e,_)>0&&(s+=3,_.vx+=(e.puckPosition-_.x)/1e3*t*e.perks.telekinesis*eT(e,_)),eH(e,_)>0&&(s+=3,_.vx+=(e.puckPosition-_.x)/1e3*t*e.perks.yoyo*eH(e,_)),_.hitSinceBounce<3*e.perks.bricks_attract_ball&&_N(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||_H(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 g,b=e.balls[Symbol.iterator]();!(u=(g=b.next()).done);u=!0){var m=g.value;m.x>=_.x||function(e,_,t,r){var s=eF(_,t),o=3*e.gameZoneWidth/4;if(!(se.offsetX+e.gameZoneWidth/2&&_x(e,_.x,_.y),e.perks.top_is_lava&&h>=2&&_x(e,_.x,_.y+3*e.ballSize),e.perks.trampoline&&_z(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),k=Math.atan2(-e.puckWidth/2,(_.x-e.puckPosition)*(e.perks.concave_puck?-1/(1+e.perks.concave_puck):1));_.vx=f*Math.cos(k),_.vy=f*Math.sin(k),_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&&_G(e,r,_,!0)})),_P(e,"lifeLost",_.x,1),!eu("basic"))for(var s=0;s<10;s++)_F(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&&_x(e,_.x,_.y),e.perks.trampoline&&_S(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(V("gameOver.lost.title"),V("gameOver.lost.summary",{score:e.score})));var w=e.ballSize/2,x=_.x,S=_.y,z=_.previousX,M=_.previousY,q=ts(z,S,w),G=ts(x,M,w),O=void 0===q&&void 0===G&&ts(x,S,w)||void 0,P=null!==(r=null!=q?q:G)&&void 0!==r?r:O;if(void 0!==P){var R=e.bricks[P];_.hitSinceBounce++,e.perks.nbricks&&(_.hitSinceBounce>e.perks.nbricks?_x(e,_.x,_.y):_S(e,e.perks.nbricks,_.x,_.y));var B=!1,L=1+(e.perks.pierce_color&&(void 0===q||e.bricks[q]===e.ballsColor)&&(void 0===G||e.bricks[G]===e.ballsColor)&&(void 0===O||e.bricks[O]===e.ballsColor)?e.perks.pierce_color:0);e.brickHP[P]-=L;var C=Math.min(_.piercePoints,Math.max(1,e.brickHP[P]+1));e.brickHP[P]-=C,_.piercePoints-=C,e.brickHP[P]<0&&(e.brickHP[P]=0,B=!0),void 0===q&&void 0===O||B||(_.y=_.previousY,_.vy*=-1),void 0===G&&void 0===O||B||(_.x=_.previousX,_.vx*=-1),e.brickHP[P]?(_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;_D(e.lights,function(n){n.time=e.levelTime,n.x=_,n.y=t,n.color=r,n.size=s,n.duration=o})}(e,eS(e,P),ez(e,P),"#FFFFFF",e.brickWidth+2,50*e.brickHP[P])):(_.brokenSinceBounce++,_G(e,P,_,!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;_F(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&&_F(e,e.offsetXRoundedDown+Math.random()*e.gameZoneWidthRoundedUp,Math.random()*e.gameZoneHeight,8*o,0,_T(),!0,e.coinSize/2,150);_Z(e.particles,function(t,r){t.x+=t.vx*_,t.y+=t.vy*_,!t.ethereal&&(t.vy+=.5*_,tr(tt(t.x,t.y))&&_I(e.particles,r))})}if(e.combo>_w(e)&&!eu("basic")&&(e.combo-_w(e))*Math.random()>5){if(e.perks.top_is_lava&&_F(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&&_F(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&&_F(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)_L(e,_.index,_.color),_I(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;_F(e,eS(e,r)+n*e.brickWidth/2,ez(e,r)+a*e.brickWidth/2,o?0:-n*e.baseSpeed,o?-a*e.baseSpeed:0,s,!0,e.coinSize/2,250)}}),_Z(e.particles,function(_,t){e.levelTime>_.time+_.duration&&_I(e.particles,t)}),_Z(e.texts,function(_,t){e.levelTime>_.time+_.duration&&_I(e.texts,t)}),_Z(e.lights,function(_,t){e.levelTime>_.time+_.duration&&_I(e.lights,t)})}(tf,r)),(tf.running||tf.needsRender)&&(tf.needsRender=!1,function(e){var _=eB(e),t=e.combo>_w(e),r=eU.width,s=eU.height;if(r&&s){e.currentLevel||e.levelTime?_e.innerText=V("play.current_lvl",{level:e.currentLevel+1,max:eO(e)}):_e.innerText=V("play.menu_label");var o=e.levelSpawnedCoins?(e.levelSpawnedCoins-e.levelLostCoins)/e.levelSpawnedCoins:1;if(e9.innerHTML=(eu("show_fps")?' \n Math.abs(tn-60)&&"good"||"bad",'">\n ').concat(tn," FPS\n / \n \n "):"")+(eu("show_stats")?' \n .9&&"good"||"",'" data-tooltip="').concat(V("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,""),e9.className=e.lastScoreIncrease>e.levelTime-500?"active":"",!eu("basic")&&_.svg&&"#000000"===_.color){e$.globalCompositeOperation="source-over",e$.globalAlpha=.99,e$.fillStyle=_.color,e$.fillRect(0,0,r/16,s/16);var n=eu("extra_bright")?3:1;if(e$.globalCompositeOperation="lighten",e$.globalAlpha=.1+5/(_j(e.coins)+10),_Z(e.coins,function(_){e6(e$,_s(e,_),2*e.coinSize*n/16,_.x/16,_.y/16)}),e.balls.forEach(function(_){e$.globalAlpha=.3*(1-eV(_,e)),e6(e$,e.ballsColor,2*e.ballSize*n/16,_.x/16,_.y/16)}),e$.globalAlpha=.05,e.bricks.forEach(function(_,t){if(_){var r=eS(e,t),s=ez(e,t);e6(e$,"black"==_?"#666666":_,Math.min(200,1.5*e.brickWidth*n)/16,r/16,s/16)}}),e$.globalCompositeOperation="screen",_Z(e.particles,function(_){var t=_.x,r=_.y,s=_.time,o=_.color,a=_.size,i=_.duration;e$.globalAlpha=.1*Math.min(1,2-(e.levelTime-s)/i*2),e6(e$,o,3*a*n/16,t/16,r/16)}),eX.globalAlpha=1,eX.globalCompositeOperation="source-over",eX.imageSmoothingEnabled=!0,eX.imageSmoothingQuality="high",eX.drawImage(eK,0,0,r,s),eX.imageSmoothingEnabled=!1,eX.globalAlpha=1,eX.globalCompositeOperation="multiply",_.svg&&eJ.width&&eJ.complete){if(eQ.title!==_.name){eQ.title=_.name,eQ.width=e.canvasWidth,eQ.height=e.canvasHeight;var a=eQ.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_w(tf),_=e&&tf.perks.picky_eater&&eL(tf),t=e&&eE(tf),r=eC(tf),s=tf.perks.clairvoyant,o=_r(tf);_||t||-1!==r||tf.perks.zen||(o=0);var n=s&&tf.brickHP.reduce(function(e,_){return e+_},0),a=tf.gameZoneWidth+"_"+tf.bricks.join("_")+eY.complete+"_"+r+"_"+_+"_"+t+"_"+tf.ballsColor+"_"+tf.perks.pierce_color+"_"+n+"_"+o;if(a!==e2){e2=a,e1.width=tf.gameZoneWidth,e1.height=tf.gameZoneWidth+1;var i=e1.getContext("2d");i.clearRect(0,0,tf.gameZoneWidth,tf.gameZoneWidth),i.resetTransform(),i.translate(-tf.offsetX,0),tf.bricks.forEach(function(n,a){var l=eS(tf,a),c=ez(tf,a);if(n){var u=r===Math.floor(a/tf.level.size),p=tf.ballsColor!==n&&"black"!==n&&_||e&&tf.perks.zen&&"black"===n||u||t;i.globalCompositeOperation="source-over",e7(tf,i,n,l,c,p?o:-1,s>=2),tf.brickHP[a]>1&&s&&(i.globalCompositeOperation="source-over",e8(i,tf.brickHP[a].toString(),s>=2?n:tf.level.color,tf.puckHeight,l,c)),"black"===n&&(i.globalCompositeOperation="source-over",function(e,_,t,r,s){var o="svg"+_+"_"+t+"_"+_.complete;if(!e4[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),e4[o]=n}e.drawImage(e4[o],Math.round(r-t/2),Math.round(s-t/2))}(i,eY,tf.brickWidth,l,c))}})}eX.drawImage(e1,tf.offsetX,0)}(),eX.globalCompositeOperation="screen",_Z(e.lights,function(_){var t=_.x,r=_.y,s=_.time,o=_.color,n=(_.size,_.duration);eX.globalAlpha=.5*Math.min(1,2-(e.levelTime-s)/n*2),e7(e,eX,o,t,r,-1,e.perks.clairvoyant>=2)}),eX.globalCompositeOperation="screen",_Z(e.texts,function(_){var t=_.x,r=_.y,s=_.time,o=_.color,n=_.size,a=_.duration,i=e.levelTime-s;eX.globalAlpha=Math.max(0,Math.min(1,2-i/a*2)),eX.globalCompositeOperation="source-over",e8(eX,_.text,o,n,t,r-i/10)}),_Z(e.particles,function(_){var t=_.x,r=_.y,s=_.time,o=_.color,n=_.size,a=_.duration;eX.globalAlpha=Math.max(0,Math.min(1,2-(e.levelTime-s)/a*2)),eX.globalCompositeOperation="screen",e3(eX,o,n,t,r)}),e.perks.extra_life){eX.globalAlpha=1,eX.globalCompositeOperation="source-over",eX.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(!e4[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(_t),l.lineDashOffset=n,l.stroke()),e4[a]=i}e.drawImage(e4[a],Math.round(tf.puckPosition-t/2),tf.gameZoneHeight-2*r+s)}(eX,e.puckColor,e.puckWidth,e.puckHeight,0,e.perks.concave_puck,e.perks.streak_shots&&t?_r(e):-1),e.combo>1){eX.globalCompositeOperation="source-over";var v="x "+e.combo,y=v.length*e.puckHeight/1.8,f=y+2*e.coinSize,k=e.puckPosition-f/2;fe.puckWidth?e.combo.toString():v,"#000",y>e.puckWidth?12:20,e.puckPosition,e.gameZoneHeight-e.puckHeight/2,!1)}eX.globalCompositeOperation="source-over",eX.globalAlpha=1;var W=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?(e0(eX,e,W&&"#FF0000"||"#FFFFFF",e.offsetXRoundedDown-1,0,e.offsetXRoundedDown-1,s,1),e0(eX,e,w&&"#FF0000"||"#FFFFFF",r-e.offsetXRoundedDown+1,0,r-e.offsetXRoundedDown+1,s,1)):(e0(eX,e,W&&"#FF0000"||"",0,0,0,s,1),e0(eX,e,w&&"#FF0000"||"",r-1,0,r-1,s,1)),x&&e0(eX,e,"#FF0000",e.offsetXRoundedDown,1,r-e.offsetXRoundedDown,1,1),eX.globalAlpha=1,e0(eX,e,t&&e.perks.compound_interest&&"#FF0000"||eu("mobile-mode")&&"#FFFFFF"||"",e.offsetXRoundedDown,e.gameZoneHeight,r-e.offsetXRoundedDown,e.gameZoneHeight,1),!eu("basic")&&eu("contrast")&&_.svg&&"#000000"===_.color&&(eX.imageSmoothingEnabled=!0,e$.fillStyle="#FFFFFF",e$.globalAlpha=.25,e$.globalCompositeOperation="screen",e$.fillRect(0,0,eK.width,eK.height),eX.globalAlpha=1,eX.globalCompositeOperation="overlay",eX.drawImage(eK,0,0,r,s),eX.imageSmoothingEnabled=!1),eX.globalCompositeOperation="source-over",eX.globalAlpha=1,eu("mobile-mode")&&!e.running&&e8(eX,V("play.mobile_press_to_play"),e.puckColor,e.puckHeight,e.canvasWidth/2,e.gameZoneHeight+(e.canvasHeight-e.gameZoneHeight)/2),b&&eX.resetTransform()}}(tf)),tf.running&&function(e){if(eu("record")){var _;l&&(_=e,p&&(p.drawImage(eU,_.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)+"/"+eO(_),12,12)),(null==c?void 0:c.requestFrame)?null==c||c.requestFrame():(null==l?void 0:l.requestFrame)&&l.requestFrame())}}(tf),eu("sound")&&function(e){if(!(ed>Date.now()-60))for(var _ in ed=Date.now(),e.aboutToPlaySound){var t,r=e.aboutToPlaySound[_];r.vol&&(eg[_](Math.min(2,r.vol),(t=e,Math.max(0,Math.min(1,(r.x-t.offsetXRoundedDown)/t.gameZoneWidthRoundedUp))),e.combo),r.vol=0)}}(tf),requestAnimationFrame(e),to++}(),function(){var e=document.getElementById("tooltip");if(eu("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===(b=document.getElementById("menu"))||void 0===b||b.setAttribute("data-tooltip",V("play.menu_tooltip"))}();