5&&void 0!==arguments[5]?arguments[5]:150,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:e.coinSize;if(!N("basic")){e.flashes.length>e.MAX_PARTICLES&&(_=1);for(var l=0;l<_;l++)e.flashes.push({type:"particle",time:e.levelTime,size:n,x:t+(Math.random()-.5)*e.brickWidth/2,y:r+(Math.random()-.5)*e.brickWidth/2,vx:(Math.random()-.5)*30,vy:(Math.random()-.5)*30,color:a,duration:s,ethereal:!1})}}function eZ(e,_,t,r){var a,s=e.bricks[_];if(s){if("black"===s){delete e.bricks[_];var n=es(e,_),l=en(e,_);U.explode(t.x);for(var o=_%e.gridSize,i=Math.floor(_/e.gridSize),u=1+e.perks.bigger_explosions,c=-u;c<=u;c++)for(var p=-u;p<=u;p++){var d=el(e,i+p,o+c);if(e.bricks[d]&&-1!==d){if("black"!==e.bricks[d]&&e.perks.sturdy_bricks>5*Math.random())continue;eZ(e,d,t,!0)}}e.coins.forEach(function(_){var t=_.x-n,r=_.y-l,a=Math.max(e.brickWidth,Math.abs(t)+Math.abs(r));_.vx+=t/a*10*u/_.weight,_.vy+=r/a*10*u/_.weight}),e.lastExplosion=Date.now(),e.flashes.push({type:"ball",duration:150,time:e.levelTime,size:2*e.brickWidth,color:"white",x:n,y:l}),eV(e,7*(1+e.perks.bigger_explosions),n,l,"white",150,e.coinSize),t.hitSinceBounce++,e.runStatistics.bricks_broken++}else if(s){t.hitSinceBounce++;var m=es(e,_),h=en(e,_);e.bricks[_]="";var g=e.combo;e.perks.sturdy_bricks&&(g+=Math.ceil((10+e.perks.sturdy_bricks)/10*g)),e.levelSpawnedCoins+=g,e.runStatistics.coins_spawned+=g,e.runStatistics.bricks_broken++;for(var b=e.MAX_COINS*(N("basic")?.5:1),v=Math.max(1,Math.ceil(g/(e.coins.length>e.MAX_COINS?1:Math.floor(b-e.coins.length)/3)));g>0;){var f=Math.min(v,g);(f<0||isNaN(f))&&console.error({points:f}),g-=f;var y=m+(Math.random()-.5)*(e.brickWidth-e.coinSize),k=h+(Math.random()-.5)*(e.brickWidth-e.coinSize);e.coins.push({points:f,size:e.coinSize,color:e.perks.metamorphosis?s:"gold",x:y,y:k,previousX:y,previousY:k,vx:t.previousVX*(.5+Math.random()),vy:t.previousVY*(.5+Math.random()),sx:0,sy:0,a:Math.random()*Math.PI*2,sa:Math.random()-.5,weight:.8+.2*Math.random()})}e.combo+=Math.max(0,e.perks.streak_shots+e.perks.compound_interest+e.perks.left_is_lava+e.perks.right_is_lava+e.perks.top_is_lava+e.perks.picky_eater),r||((e.perks.picky_eater||e.perks.pierce_color)&&s!==e.ballsColor&&s?(e.perks.picky_eater&&eD(e,t.x,t.y),U.colorChange(t.x,.8),e.lastExplosion=e.levelTime,e.ballsColor=s,N("basic")||e.balls.forEach(function(_){eV(e,7,_.previousX,_.previousY,s,150,15)})):U.comboIncreaseMaybe(e.combo,t.x,1)),e.flashes.push({type:"ball",duration:40,time:e.levelTime,size:e.brickWidth,color:s,x:m,y:h}),eV(e,5+Math.min(e.combo,30),m,h,s,150,e.coinSize/2)}e.bricks[_]||"black"===s||null===(a=t.hitItem)||void 0===a||a.push({index:_,color:s})}}function eI(e,_){e.lastOffered[_]=Math.round(Date.now()/1e3)}function eX(e,_){eq(),eJ(!1),_>0&&function(e){e$.apply(this,arguments)}(e),e.currentLevel=_,e.levelTime=0,e.levelWallBounces=0,e.autoCleanUses=0,e.lastTickDown=e.levelTime,e.levelStartScore=e.score,e.levelSpawnedCoins=0,e.levelMisses=0,e.runStatistics.levelsPlayed++,eD(e,void 0,void 0),eA(e);var t=ec(e);t.size!==e.gridSize&&(e.gridSize=t.size,eK()),e.coins=[],e.bricks=f(t.bricks),e.flashes=[],ev.src="data:image/svg+xml;UTF8,"+t.svg}function eF(){return"hsl(".concat(2*Math.round(_r.levelTime/4)%360,",100%,70%)")}function eN(e,_,t,r,a){var s=ed(_,t),n=e.gameZoneWidth/2;if(!(s>n)){var l=(_.x-t.x)/s,o=(_.y-t.y)/s,i=-r*(n-s)/(1.2*n)/3*Math.min(500,e.levelTime)/500;a&&void 0!==t.vx&&void 0!==t.vy&&(t.vx+=l*i,t.vy+=o*i),_.vx-=l*i,_.vy-=o*i,e.flashes.push({type:"particle",duration:100,time:e.levelTime,size:e.coinSize/2,color:eF(),ethereal:!0,x:_.x,y:_.y,vx:-(10*l)+_.vx+(Math.random()-.5)*2,vy:-(10*o)+_.vy+(Math.random()-.5)*2}),a&&void 0!==t.vx&&void 0!==t.vy&&e.flashes.push({type:"particle",duration:100,time:e.levelTime,size:e.coinSize/2,color:eF(),ethereal:!0,x:t.x,y:t.y,vx:10*l+t.vx+(Math.random()-.5)*2,vy:10*o+t.vy+(Math.random()-.5)*2})}}function eU(e){var _=q(),t=(null==e?void 0:e.level)?I.filter(function(_){return _.name===(null==e?void 0:e.level)}):[],r=I.filter(function(e){return _>=e.threshold}).filter(function(_){return _.name!==(null==e?void 0:e.level)}).filter(function(_){return _.name!==(null==e?void 0:e.levelToAvoid)}).sort(function(){return Math.random()-.5}),a=t.concat(r.slice(0,10).sort(function(e,_){return e.sortKey-_.sortKey})),s=k({},ea(X),(null==e?void 0:e.perks)||{}),n={runLevels:a,currentLevel:0,perks:s,puckWidth:200,baseSpeed:12,combo:1,gridSize:12,running:!1,puckPosition:400,pauseTimeout:null,canvasWidth:0,canvasHeight:0,offsetX:0,offsetXRoundedDown:0,gameZoneWidth:0,gameZoneWidthRoundedUp:0,gameZoneHeight:0,brickWidth:0,score:0,lastScoreIncrease:-1e3,lastExplosion:-1e3,highScore:parseFloat(localStorage.getItem("breakout-3-hs")||"0"),balls:[],ballsColor:"white",bricks:[],flashes:[],coins:[],levelStartScore:0,levelMisses:0,levelSpawnedCoins:0,lastPlayedCoinGrab:0,MAX_COINS:400,MAX_PARTICLES:600,puckColor:"#FFF",ballSize:20,coinSize:14,puckHeight:20,totalScoreAtRunStart:_,isCreativeModeRun:er(s)>1,pauseUsesDuringRun:0,keyboardPuckSpeed:0,lastTick:performance.now(),lastTickDown:0,runStatistics:{started:Date.now(),levelsPlayed:0,runTime:0,coins_spawned:0,score:0,bricks_broken:0,misses:0,balls_lost:0,puck_bounces:0,wall_bounces:0,upgrades_picked:1,max_combo:1,max_level:0},lastOffered:{},levelTime:0,levelWallBounces:0,needsRender:!0,autoCleanUses:0};if(eA(n),!er(n.perks)){var l=eo(n).filter(function(e){return e.giftable}),o=N("easy")&&"slow_down"||l[Math.floor(Math.random()*l.length)].id;s[o]=1,eI(n,o)}var i=!0,u=!1,c=void 0;try{for(var p,d=X[Symbol.iterator]();!(i=(p=d.next()).done);i=!0){var m=p.value;n.perks[m.id]&&eI(n,m.id)}}catch(e){u=!0,c=e}finally{try{i||null==d.return||d.return()}finally{if(u)throw c}}return n}function eY(){var e;_r.running||(_r.running=!0,function(e){if(N("record")&&!s){if(!o){i=(o=document.createElement("canvas")).getContext("2d",{antialias:!1,alpha:!1}),l=(n=o.captureStream(0)).getVideoTracks()[0];var _=(Y(),r);_&&n.addTrack(_.stream.getAudioTracks()[0])}o.width=e.gameZoneWidthRoundedUp,o.height=e.gameZoneHeight;var t=[],a=new MediaRecorder(n,{videoBitsPerSecond:35e5});s=a,a.start(),s.pause(),a.ondataavailable=function(e){t.push(e.data)},a.onstop=g(function(){var e,_,r,a;return y(this,function(s){switch(s.label){case 0:if((_=new Blob(t,{type:"video/webm"})).size<2e5)return[2];s.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 s.sent(),[3,1];case 3:return(r=document.createElement("video")).autoplay=!0,r.controls=!1,r.disablePictureInPicture=!0,r.disableRemotePlayback=!0,r.width=o.width,r.height=o.height,r.loop=!0,r.muted=!0,r.playsInline=!0,r.src=URL.createObjectURL(_),(a=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"),a.target="_blank",a.href=r.src,a.textContent=O("main_menu.record_download",{size:(_.size/1e6).toFixed(2)}),e.appendChild(r),e.appendChild(a),[2]}})})}}(_r),null===(e=Y())||void 0===e||e.resume(),N("record")&&(null==s?void 0:s.state)==="paused"&&s.resume(),document.body.className=_r.running?" running ":" paused ")}function eJ(e){_r.running&&!_r.pauseTimeout&&(_r.pauseTimeout=setTimeout(function(){_r.running=!1,setTimeout(function(){var e;_r.running||null===(e=Y())||void 0===e||e.suspend()},1e3),eG(),_r.pauseTimeout=null,document.body.className=_r.running?" running ":" paused ",eR.className="",_r.needsRender=!0},Math.min(50*Math.max(0,_r.pauseUsesDuringRun-5),500)),e&&_r.pauseUsesDuringRun++,document.exitPointerLock&&document.exitPointerLock())}eb.src="data:image/svg+xml;base64,"+btoa('');var eK=function(){var e,_=eh.getBoundingClientRect(),t=_.width,r=_.height;_r.canvasWidth=t,_r.canvasHeight=r,eh.width=t,eh.height=r,eg.fillStyle=(null===(e=ec(_r))||void 0===e?void 0:e.color)||"black",eg.globalAlpha=1,eg.fillRect(0,0,t,r),ef.width=t,ef.height=r,_r.gameZoneHeight=N("mobile-mode")?80*r/100:r;var a=Math.round(Math.min(_r.canvasWidth,.73*_r.gameZoneHeight));_r.brickWidth=2*Math.floor(a/_r.gridSize/2),_r.gameZoneWidth=_r.brickWidth*_r.gridSize,_r.offsetX=Math.floor((_r.canvasWidth-_r.gameZoneWidth)/2),_r.offsetXRoundedDown=_r.offsetX,_r.offsetX<_r.ballSize&&(_r.offsetXRoundedDown=0),_r.gameZoneWidthRoundedUp=t-2*_r.offsetXRoundedDown,ef.title="resized",eP(_r,_r.puckPosition),_r.coins=[],_r.flashes=[],eJ(!0),eE(_r),document.documentElement.style.setProperty("--vh","".concat(.01*window.innerHeight,"px"))};function e$(){return(e$=g(function(e){var _,t,r,a,s,n,l,o,i,u,c;return y(this,function(p){switch(p.label){case 0:_=(e.score-e.levelStartScore)/(e.levelSpawnedCoins||1),t=1,r=3,a="",s="",n="",l="",0==e.levelWallBounces?(t++,r++,n=O("level_up.plus_one_upgrade")):e.levelWallBounces<5&&(r++,n=O("level_up.plus_one_choice")),e.levelTime<3e4?(t++,r++,a=O("level_up.plus_one_upgrade")):e.levelTime<6e4&&(r++,a=O("level_up.plus_one_choice")),1===_?(t++,r++,s=O("level_up.plus_one_upgrade")):_>.9&&(r++,s=O("level_up.plus_one_choice")),0===e.levelMisses?(t++,r++,l=O("level_up.plus_one_upgrade")):e.levelMisses<=3&&(r++,l=O("level_up.plus_one_choice")),p.label=1;case 1:var d,m;if(!t--||(d=r+e.perks.one_more_choice-e.perks.instant_upgrade,(m=eo(e).map(function(_){return W(k({},_),{score:Math.random()+(e.lastOffered[_.id]||0)})}).sort(function(e,_){return e.score-_.score}).filter(function(_){return e.perks[_.id]<_.max}).slice(0,d).sort(function(e,_){return e.id>_.id?1:-1})).forEach(function(_){eI(e,_.id)}),!(o=m.map(function(_){return{text:_.name+(e.perks[_.id]?O("level_up.upgrade_perk_to_level",{level:e.perks[_.id]+1}):""),icon:Z["icon:"+_.id],value:_.id,help:_.help(e.perks[_.id]+1)}})).length))return[3,3];return i="\n ".concat(O("level_up.after_buttons",{level:e.currentLevel+1,max:ei(e)}),"
\n ").concat(eu(e),'
\n \n \n '),u=a&&s&&l&&n&&O("level_up.compliment_perfect")||(a||s||l||n)&&O("level_up.compliment_good")||O("level_up.compliment_advice"),[4,eO({title:O("level_up.pick_upgrade_title")+(t?" ("+(t+1)+")":""),actions:o,text:"".concat(O("level_up.before_buttons",{score:e.score-e.levelStartScore,catchGain:s,levelSpawnedCoins:e.levelSpawnedCoins,time:Math.round(e.levelTime/1e3),timeGain:a,levelMisses:e.levelMisses,missesGain:l,levelWallBounces:e.levelWallBounces,wallHitsGain:n,compliment:u}),"\n
"),allowClose:!1,textAfterButtons:i})];case 2:return c=p.sent(),e.perks[c]++,"instant_upgrade"===c&&(t+=2),e.runStatistics.upgrades_picked++,[3,1];case 3:return eD(e,void 0,void 0),eA(e),[2]}})})).apply(this,arguments)}function eQ(e,_){return el(_r,Math.floor(_/_r.brickWidth),Math.floor((e-_r.offsetX)/_r.brickWidth))}function e0(e){if(_r.bricks[e])return e}function e1(e,_,t){var r,a,s;return null!==(s=null!==(a=null!==(r=e0(eQ(e-t,_-t)))&&void 0!==r?r:e0(eQ(e+t,_-t)))&&void 0!==a?a:e0(eQ(e+t,_+t)))&&void 0!==s?s:e0(eQ(e-t,_+t))}function e2(e,_,t){if(!e.destroyed){e.previousX=e.x,e.previousY=e.y,e.x+=e.vx*t,e.y+=e.vy*t,e.sx||(e.sx=0),e.sy||(e.sy=0),e.sx+=e.previousX-e.x,e.sy+=e.previousY-e.y,e.sx*=.9,e.sy*=.9,_r.perks.wind&&(e.vx+=(_r.puckPosition-(_r.offsetX+_r.gameZoneWidth/2))/_r.gameZoneWidth*_r.perks.wind*.5);var r=0,a=0;return e.x<_r.offsetXRoundedDown+_&&(e.x=_r.offsetXRoundedDown+_+(_r.offsetXRoundedDown+_-e.x),e.vx*=-1,a=1),e.y<_&&(e.y=_+(_-e.y),e.vy*=-1,r=1),e.x>_r.canvasWidth-_r.offsetXRoundedDown-_&&(e.x=_r.canvasWidth-_r.offsetXRoundedDown-_-(e.x-(_r.canvasWidth-_r.offsetXRoundedDown-_)),e.vx*=-1,a=1),a+2*r}}function e4(){return e5.apply(this,arguments)}function e5(){return(e5=g(function(){var e;return y(this,function(_){switch(_.label){case 0:return eJ(!0),[4,eO({title:O("score_panel.title",{score:_r.score,level:_r.currentLevel+1,max:ei(_r)}),text:"\n ".concat(_r.isCreativeModeRun?"${t('score_panel.test_run}
":"","\n ").concat(O("score_panel.upgrades_picked"),"
\n ").concat(eu(_r),"
\n "),allowClose:!0,actions:[{text:O("score_panel.resume"),help:O("score_panel.resume_help"),value:function(){}},{text:O("score_panel.restart"),help:O("score_panel.restart_help"),value:function(){_a({levelToAvoid:ec(_r).name})}}]})];case 1:return(e=_.sent())&&e(),[2]}})})).apply(this,arguments)}function e3(){return e6.apply(this,arguments)}function e6(){return(e6=g(function(){var e,_,t,r,a,s,n,l,o,i;return y(this,function(u){switch(u.label){case 0:eJ(!0),_=[{text:O("main_menu.resume"),help:O("main_menu.resume_help"),value:function(){}},{text:O("main_menu.unlocks"),help:O("main_menu.unlocks_help"),value:function(){(function(){e7.apply(this,arguments)})()}}],t=!0,r=!1,a=void 0;try{for(s=function(){var e=l.value;F[e]&&_.push({disabled:F[e].disabled(),icon:N(e)?Z["icon:checkmark_checked"]:Z["icon:checkmark_unchecked"],text:F[e].name,help:F[e].help,value:function(){G("breakout-settings-enable-"+e,!N(e)),"mobile-mode"===e&&eK(),e3()}})},n=Object.keys(F)[Symbol.iterator]();!(t=(l=n.next()).done);t=!0)s()}catch(e){r=!0,a=e}finally{try{t||null==n.return||n.return()}finally{if(r)throw a}}return o=(e=Math).max.apply(e,f(X.map(function(e){return e.threshold}))),(document.fullscreenEnabled||document.webkitFullscreenEnabled)&&(null!==document.fullscreenElement?_.push({text:O("main_menu.fullscreen_exit"),help:O("main_menu.fullscreen_exit_help"),icon:Z["icon:exit_fullscreen"],value:function(){_e()}}):_.push({text:O("main_menu.fullscreen"),help:O("main_menu.fullscreen_help"),icon:Z["icon:fullscreen"],value:function(){_e()}})),_.push({text:O("sandbox.title"),help:q()=a?n:O("unlocks.unlocks_at",{threshold:a}),disabled:e=_.threshold;return{text:_.name,help:t?O("unlocks.level_description",{size:_.size,bricks:_.bricks.filter(function(e){return e}).length}):O("unlocks.unlocks_at",{threshold:_.threshold}),disabled:!t,value:{level:_.name},icon:Z[_.name]}})))).filter(function(e){return!e.disabled}).length/_.length*100),[4,eO({title:O("unlocks.title",{percentUnlock:t}),text:"".concat(O("unlocks.intro",{ts:e}),"\n ").concat(t<100?O("unlocks.greyed_out_help"):"","
\n "),textAfterButtons:" \nYour high score is ".concat(_r.highScore,". \nClick an item above to start a run with it.\n
"),actions:_,allowClose:!0})];case 1:if(!(r=a.sent()))return[3,3];return[4,e8()];case 2:a.sent()&&_a(r),a.label=3;case 3:return[2]}})})).apply(this,arguments)}function e8(){return e9.apply(this,arguments)}function e9(){return(e9=g(function(){return y(this,function(e){return _r.currentLevel?[2,eO({title:O("confirmRestart.title"),text:O("confirmRestart.text"),actions:[{value:!0,text:O("confirmRestart.yes")},{value:!1,text:O("confirmRestart.no")}]})]:[2,!0]})})).apply(this,arguments)}function _e(){try{if(null!==document.fullscreenElement)document.exitFullscreen?document.exitFullscreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen();else{var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.webkitRequestFullscreen&&e.webkitRequestFullscreen()}}catch(e){console.warn(e)}}window.addEventListener("resize",eK),window.addEventListener("fullscreenchange",eK),setInterval(function(){var e=eh.getBoundingClientRect(),_=e.width,t=e.height;(_!==_r.canvasWidth||t!==_r.canvasHeight)&&eK()},1e3),eh.addEventListener("mouseup",function(e){0===e.button&&(_r.running?eJ(!0):(eY(),N("pointerLock")&&eh.requestPointerLock()))}),eh.addEventListener("mousemove",function(e){document.pointerLockElement===eh?eP(_r,_r.puckPosition+e.movementX):eP(_r,e.x)}),eh.addEventListener("touchstart",function(e){var _;e.preventDefault(),(null===(_=e.touches)||void 0===_?void 0:_.length)&&(eP(_r,e.touches[0].pageX),eY())}),eh.addEventListener("touchend",function(e){e.preventDefault(),eJ(!0)}),eh.addEventListener("touchcancel",function(e){e.preventDefault(),eJ(!0)}),eh.addEventListener("touchmove",function(e){var _;(null===(_=e.touches)||void 0===_?void 0:_.length)&&eP(_r,e.touches[0].pageX)}),window.addEventListener("visibilitychange",function(){document.hidden&&eJ(!0)}),eR.addEventListener("click",function(e){e.preventDefault(),e4()}),document.addEventListener("visibilitychange",function(){document.hidden&&eJ(!0)}),null===(u=document.getElementById("menu"))||void 0===u||u.addEventListener("click",function(e){e.preventDefault(),e3()});var __={ArrowLeft:0,ArrowRight:0,Shift:0};function _t(e,_){__[e]=_,_r.keyboardPuckSpeed=(__.ArrowRight-__.ArrowLeft)*(1+2*__.Shift)*_r.gameZoneWidth/50}document.addEventListener("keydown",function(e){"f"!==e.key.toLowerCase()||e.ctrlKey||e.metaKey?e.key in __&&_t(e.key,1):_e()," "===e.key&&!eL&&(_r.running?eJ(!0):eY(),e.preventDefault())}),document.addEventListener("keyup",(_=g(function(e){var _,t,r,a,s;return y(this,function(n){switch(n.label){case 0:if(s=document.querySelector("button:focus"),!(e.key in __))return[3,1];return _t(e.key,0),[3,10];case 1:if("ArrowDown"!==e.key||(null==s?void 0:null===(_=s.nextElementSibling)||void 0===_?void 0:_.tagName)!=="BUTTON")return[3,2];return null==s||null===(t=s.nextElementSibling)||void 0===t||t.focus(),[3,10];case 2:if("ArrowUp"!==e.key||(null==s?void 0:null===(r=s.previousElementSibling)||void 0===r?void 0:r.tagName)!=="BUTTON")return[3,3];return null==s||null===(a=s.previousElementSibling)||void 0===a||a.focus(),[3,10];case 3:if(!("Escape"===e.key&&eH))return[3,4];return eH(),[3,10];case 4:if(!("Escape"===e.key&&_r.running))return[3,5];return eJ(!0),[3,10];case 5:if(!("m"===e.key.toLowerCase()&&!eL))return[3,6];return e3().then(),[3,10];case 6:if(!("s"===e.key.toLowerCase()&&!eL))return[3,7];return e4().then(),[3,10];case 7:if(!("r"===e.key.toLowerCase()&&!eL))return[3,9];return[4,e8()];case 8:return n.sent()&&_a({levelToAvoid:ec(_r).name}),[3,10];case 9:return[2];case 10:return e.preventDefault(),[2]}})}),function(e){return _.apply(this,arguments)}));var _r=eU({});function _a(e){Object.assign(_r,eU(e)),eG(),eX(_r,0)}_a({}),eK(),function e(){var _=performance.now(),t=_-_r.lastTick;_r.lastTick=_;var r=Math.min(4,t/(1e3/60));_r.keyboardPuckSpeed&&eP(_r,_r.puckPosition+_r.keyboardPuckSpeed),_r.baseSpeed=Math.max(3,_r.gameZoneWidth/12/10+_r.currentLevel/3+_r.levelTime/3e4-2*_r.perks.slow_down),_r.puckWidth=_r.gameZoneWidth/12*(3-_r.perks.smaller_puck+_r.perks.bigger_puck),_r.puckPosition<_r.offsetXRoundedDown+_r.puckWidth/2&&(_r.puckPosition=_r.offsetXRoundedDown+_r.puckWidth/2),_r.puckPosition>_r.offsetXRoundedDown+_r.gameZoneWidthRoundedUp-_r.puckWidth/2&&(_r.puckPosition=_r.offsetXRoundedDown+_r.gameZoneWidthRoundedUp-_r.puckWidth/2),_r.running||_r.levelTime||eE(_r),_r.running&&(_r.levelTime+=t,_r.runStatistics.runTime+=t,function(e){var _,t,r,a,s,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;e.runStatistics.max_combo=Math.max(e.runStatistics.max_combo,e.combo),e.coins=e.coins.filter(function(e){return!e.destroyed}),e.balls=e.balls.filter(function(e){return!e.destroyed});var l=e.bricks.filter(function(e){return e&&"black"!==e}).length;if(e.levelTime>e.lastTickDown+1e3&&e.perks.hot_start&&(e.lastTickDown=e.levelTime,_=e.perks.hot_start,t=e.puckPosition,r=e.gameZoneHeight-2*e.puckHeight,a=e.combo,e.combo=Math.max(ej(e),e.combo-_),(s=Math.max(0,a-e.combo))&&(U.comboDecrease(),void 0!==t&&void 0!==r&&e.flashes.push({type:"text",text:"-"+s,time:e.levelTime,color:"red",x:t,y:r,duration:300,size:e.puckHeight}))),l<=e.perks.skip_last&&!e.autoCleanUses&&(e.bricks.forEach(function(_,t){_&&eZ(e,t,e.balls[0],!0)}),e.autoCleanUses++),l||e.coins.length){if(e.running||e.levelTime){var o=!1,i=Math.round(e.coinSize/2);if(e.coins.forEach(function(_){if(!_.destroyed){if(e.perks.coin_magnet){var t,r=n*(e.puckPosition-_.x)/(100+Math.pow(_.y-e.gameZoneHeight,2)+Math.pow(_.x-e.puckPosition,2))*e.perks.coin_magnet*100;_.vx+=r,_.sa-=r/10}var a=1-(.03*e.perks.viscosity+.005)*n;_.vy*=a,_.vx*=a,_.vx>7*e.baseSpeed&&(_.vx=7*e.baseSpeed),_.vx<-7*e.baseSpeed&&(_.vx=-7*e.baseSpeed),_.vy>7*e.baseSpeed&&(_.vy=7*e.baseSpeed),_.vy<-7*e.baseSpeed&&(_.vy=-7*e.baseSpeed),_.a+=_.sa,_.vy+=n*_.weight*.8;var s=Math.abs(_.sx)+Math.abs(_.sx),l=e2(_,_.size/2,n);_.y>e.gameZoneHeight-i-e.puckHeight&&_.ye.highScore&&!e.isCreativeModeRun&&(e.highScore=e.score,localStorage.setItem("breakout-3-hs",e.score.toString())),N("basic")||e.flashes.push({type:"particle",duration:100+50*Math.random(),time:e.levelTime,size:e.coinSize/2,color:_.color,x:_.previousX,y:_.previousY,vx:(e.canvasWidth-_.x)/100,vy:-_.y/100,ethereal:!0}),Date.now()-e.lastPlayedCoinGrab>16&&(e.lastPlayedCoinGrab=Date.now(),U.coinCatch(_.x)),e.runStatistics.score+=_.points):_.y>e.canvasHeight+i&&(_.destroyed=!0,e.perks.compound_interest&&eD(e,_.x,_.y));var u=function(e){var _,t=e.size/2,r=e.x,a=e.y,s=e.previousX,n=e.previousY,l=e1(s,a,t),o=e1(r,n,t),i=void 0===l&&void 0===o&&e1(r,a,t)||void 0;if(void 0!==l||void 0!==i){e.y=e.previousY,e.vy*=-1;var u=_r.bricks[eQ(r-t,a+t)],c=_r.bricks[eQ(r+t,a+t)];u&&!c&&(e.vx+=1,e.sa-=1),!u&&c&&(e.vx-=1,e.sa+=1)}return(void 0!==o||void 0!==i)&&(e.x=e.previousX,e.vx*=-1),null!==(_=null!=l?l:o)&&void 0!==_?_:i}(_);e.perks.metamorphosis&&void 0!==u&&e.bricks[u]&&_.color!==e.bricks[u]&&"black"!==e.bricks[u]&&!_.coloredABrick&&(e.bricks[u]=_.color,_.coloredABrick=!0,U.colorChange(_.x,.3)),(void 0!==u||l)&&(_.vx*=.8,_.vy*=.8,_.sa*=.9,s>20&&!o&&(o=!0,U.coinBounce(_.x,.2)),3>Math.abs(_.vy)&&(_.vy=0))}}),e.balls.forEach(function(_){return function(e,_,t){_.previousVX=_.vx,_.previousVY=_.vy;var r,a,s,n,l=1+e.perks.telekinesis+e.perks.ball_repulse_ball+e.perks.puck_repulse_ball+e.perks.ball_attract_ball;ep(e,_)&&(l+=3,_.vx+=(e.puckPosition-_.x)/1e3*t*e.perks.telekinesis),_.vx*_.vx+_.vy*_.vy0?1:-1)*.02/l);var o=!0,i=!1,u=void 0;if(e.perks.ball_repulse_ball)try{for(var c,p,d,m=e.balls[Symbol.iterator]();!(o=(d=m.next()).done);o=!0){var h=d.value;h.x>=_.x||eN(e,_,h,e.perks.ball_repulse_ball,!0)}}catch(e){i=!0,u=e}finally{try{o||null==m.return||m.return()}finally{if(i)throw u}}var g=!0,b=!1,v=void 0;if(e.perks.ball_attract_ball)try{for(var f,y=e.balls[Symbol.iterator]();!(g=(f=y.next()).done);g=!0){var k=f.value;k.x>=_.x||function(e,_,t,r){var a=ed(_,t),s=.5*e.gameZoneWidth;if(!(a1&&!N("basic"))for(var W=0;W<(null===(p=_.hitItem)||void 0===p?void 0:p.length)-1&&W.5,M=Math.random()>.5?1:-1,R=Math.random()>.5?1:-1;e.flashes.push({type:"particle",duration:250,ethereal:!0,time:e.levelTime,size:e.coinSize/2,color:S,x:es(e,x)+M*e.brickWidth/2,y:en(e,x)+R*e.brickWidth/2,vx:z?0:-M*e.baseSpeed,vy:z?-R*e.baseSpeed:0})}}var B=e2(_,e.ballSize/2,t);B&&(e.perks.left_is_lava&&B%2&&_.xe.offsetX+e.gameZoneWidth/2&&eD(e,_.x,_.y),e.perks.top_is_lava&&B>=2&&eD(e,_.x,_.y+e.ballSize),U.wallBeep(_.x),e.levelWallBounces++,e.runStatistics.wall_bounces++);var G=e.gameZoneHeight-e.puckHeight-e.ballSize/2,q=Math.abs(_.x-e.puckPosition)G&&_.vy>0&&(q||e.perks.extra_life&&_.y>G+e.puckHeight/2)){if(q){var L=Math.sqrt(_.vx*_.vx+_.vy*_.vy),H=Math.atan2(-e.puckWidth/2,(_.x-e.puckPosition)*(e.perks.concave_puck?-.5:1));_.vx=L*Math.cos(H),_.vy=L*Math.sin(H),U.wallBeep(_.x)}else if(_.vy*=-1,e.perks.extra_life=Math.max(0,e.perks.extra_life-1),U.lifeLost(_.x),!N("basic"))for(var C=0;C<10;C++)e.flashes.push({type:"particle",ethereal:!1,color:"red",destroyed:!1,duration:150,size:e.coinSize/2,time:e.levelTime,x:_.x,y:_.y,vx:Math.random()*e.baseSpeed*3,vy:3*e.baseSpeed});e.perks.streak_shots&&eD(e,_.x,_.y),e.perks.respawn&&_.hitItem.slice(0,-1).slice(0,e.perks.respawn).forEach(function(_){var t=_.index,r=_.color;e.bricks[t]||"black"===r||(e.bricks[t]=r)}),_.hitItem=[],_.hitSinceBounce||(e.runStatistics.misses++,e.levelMisses++,eD(e,_.x,_.y),e.flashes.push({type:"text",text:O("play.missed_ball"),duration:500,time:e.levelTime,size:1.5*e.puckHeight,color:"red",x:e.puckPosition,y:e.gameZoneHeight-2*e.puckHeight})),e.runStatistics.puck_bounces++,_.hitSinceBounce=0,_.sapperUses=0,_.piercedSinceBounce=0}_.y>e.gameZoneHeight+e.ballSize/2&&e.running&&(_.destroyed=!0,e.runStatistics.balls_lost++,e.balls.find(function(e){return!e.destroyed})||eC(O("gameOver.lost.title"),O("gameOver.lost.summary",{score:e.score})));var P=e.ballSize/2,T=_.x,A=_.y,E=_.previousX,j=_.previousY,D=e1(E,A,P),V=e1(T,j,P),Z=void 0===D&&void 0===V&&e1(T,A,P)||void 0,I=null!==(n=null!=D?D:V)&&void 0!==n?n:Z,X=I&&"black"!==e.bricks[I]&&e.perks.sturdy_bricks&&e.perks.sturdy_bricks>5*Math.random(),F=!1;if(X||void 0===I||((r=D,a=V,s=Z,_r.perks.pierce_color&&(void 0===r||_r.bricks[r]===_r.ballsColor)&&(void 0===a||_r.bricks[a]===_r.ballsColor)&&(void 0===s||_r.bricks[s]===_r.ballsColor))?F=!0:_.piercedSinceBounce<3*e.perks.pierce&&(F=!0,_.piercedSinceBounce++)),void 0===D&&void 0===Z||F||(_.y=_.previousY,_.vy*=-1),void 0===V&&void 0===Z||F||(_.x=_.previousX,_.vx*=-1),X){U.wallBeep(T);return}if(void 0!==I){var Y=e.bricks[I];eZ(e,I,_,!1),_.sapperUses1&&(e.flashes.push({type:"particle",duration:100*_.sparks,time:e.levelTime,size:e.coinSize/2,color:e.ballsColor,x:_.x,y:_.y,vx:(Math.random()-.5)*e.baseSpeed,vy:(Math.random()-.5)*e.baseSpeed,ethereal:!1}),_.sparks=0))}(e,_,n)}),e.perks.wind)for(var u=(e.puckPosition-(e.offsetX+e.gameZoneWidth/2))/e.gameZoneWidth*2*e.perks.wind,c=0;c.5&&e.flashes.push({type:"particle",duration:150,ethereal:!0,time:e.levelTime,size:e.coinSize/2,color:eF(),x:e.offsetXRoundedDown+Math.random()*e.gameZoneWidthRoundedUp,y:Math.random()*e.gameZoneHeight,vx:8*u,vy:0});e.flashes.forEach(function(e){"particle"===e.type&&(e.x+=e.vx*n,e.y+=e.vy*n,!e.ethereal&&(e.vy+=.5,e0(eQ(e.x,e.y))&&(e.destroyed=!0)))})}}else e.currentLevel+1ej(e)){var p=!N("basic")&&(e.combo-ej(e))*Math.random()>5&&e.running&&{type:"particle",duration:100*(Math.random()+1),time:e.levelTime,size:e.coinSize/2,color:"red",ethereal:!0};if(e.perks.top_is_lava&&p&&e.flashes.push(W(k({},p),{x:e.offsetXRoundedDown+Math.random()*e.gameZoneWidthRoundedUp,y:0,vx:(Math.random()-.5)*10,vy:5})),e.perks.left_is_lava&&p&&e.flashes.push(W(k({},p),{x:e.offsetXRoundedDown,y:Math.random()*e.gameZoneHeight,vx:5,vy:(Math.random()-.5)*10})),e.perks.right_is_lava&&p&&e.flashes.push(W(k({},p),{x:e.offsetXRoundedDown+e.gameZoneWidthRoundedUp,y:Math.random()*e.gameZoneHeight,vx:-5,vy:(Math.random()-.5)*10})),e.perks.compound_interest){var d=e.puckPosition,m=0;do d=e.offsetXRoundedDown+e.gameZoneWidthRoundedUp*Math.random(),m++;while(Math.abs(d-e.puckPosition)e.levelTime-500?"active":"",N("basic")||_.color||!_.svg)eg.globalAlpha=1,eg.globalCompositeOperation="source-over",eg.fillStyle=_.color||"#000",eg.fillRect(0,0,t,r),e.flashes.forEach(function(_){var t=_.x,r=_.y,a=_.time,s=_.color,n=_.size,l=_.type,o=_.duration;eg.globalAlpha=Math.min(1,2-(e.levelTime-a)/o*2),"particle"===l&&ex(eg,s,n,t,r)});else if(eg.globalCompositeOperation="source-over",eg.globalAlpha=1,eg.fillStyle="#000",eg.fillRect(0,0,t,r),eg.globalCompositeOperation="screen",eg.globalAlpha=.6,e.coins.forEach(function(_){_.destroyed||ez(eg,_.color,2*e.coinSize,_.x,_.y)}),e.balls.forEach(function(_){ez(eg,e.ballsColor,2*e.ballSize,_.x,_.y)}),eg.globalAlpha=.5,e.bricks.forEach(function(_,t){if(_){var r=es(e,t),a=en(e,t);ez(eg,"black"==_?"#666":_,e.brickWidth,r,a)}}),eg.globalAlpha=1,e.flashes.forEach(function(_){var t=_.x,r=_.y,a=_.time,s=_.color,n=_.size,l=_.type,o=_.duration;eg.globalAlpha=Math.min(1,2-(e.levelTime-a)/o*2),"ball"===l&&ez(eg,s,n,t,r),"particle"===l&&ez(eg,s,3*n,t,r)}),eg.globalAlpha=.2,eg.globalCompositeOperation="multiply",eg.fillStyle="black",eg.fillRect(0,0,t,r),eg.globalAlpha=.8,eg.globalCompositeOperation="multiply",_.svg&&ev.width&&ev.complete){if(ef.title!==_.name){ef.title=_.name,ef.width=e.canvasWidth,ef.height=e.canvasHeight;var a=ef.getContext("2d");a.fillStyle=_.color||"#000",a.fillRect(0,0,e.canvasWidth,e.canvasHeight);var s=eg.createPattern(ev,"repeat");s&&(a.fillStyle=s,a.fillRect(0,0,t,r))}eg.drawImage(ef,0,0)}else eg.fillStyle="#000",eg.fillRect(0,0,t,r);eg.globalAlpha=1,eg.globalCompositeOperation="source-over";var n=Date.now()-e.lastExplosion+5,l=n<200&&!N("basic");if(l){var o=(e.perks.bigger_explosions+1)*50/n;eg.translate(Math.sin(Date.now())*o,Math.sin(Date.now()+36)*o)}if(e.perks.bigger_explosions&&!N("basic")&&(l?eh.style.filter="brightness("+(1+100/(1+n))+")":eh.style.filter=""),eg.globalAlpha=1,e.coins.forEach(function(e){e.destroyed||(eg.globalCompositeOperation="gold"===e.color||_.color?"source-over":"screen",eS(eg,e.color,e.size,e.x,e.y,_.color||"black",e.a))}),N("basic")||(eg.globalCompositeOperation="source-over",eg.globalAlpha=Math.min(.8,e.coins.length/20),e.balls.forEach(function(t){ex(eg,_.color||"#000",6*e.ballSize,t.x,t.y)})),eg.globalCompositeOperation="source-over",function(){eg.globalAlpha=1;var e=_r.combo>ej(_r)&&_r.perks.picky_eater&&!N("basic"),_=_r.gameZoneWidth+"_"+_r.bricks.join("_")+eb.complete+"_"+e+"_"+_r.ballsColor+"_"+_r.perks.pierce_color;if(_!==ek){ek=_,ey.width=_r.gameZoneWidth,ey.height=_r.gameZoneWidth+1;var t=ey.getContext("2d");t.clearRect(0,0,_r.gameZoneWidth,_r.gameZoneWidth),t.resetTransform(),t.translate(-_r.offsetX,0),_r.bricks.forEach(function(_,r){var a=es(_r,r),s=en(_r,r);if(_){var n=_r.ballsColor!==_&&"black"!==_&&e&&"red"||_;(function(e,_,t,r,a){var s=Math.ceil(r-_r.brickWidth/2),n=Math.ceil(a-_r.brickWidth/2),l=Math.ceil(r+_r.brickWidth/2)-1,o=Math.ceil(a+_r.brickWidth/2)-1,i=l-s,u=o-n,c="brick"+_+"_"+t+"_"+i+"_"+u;if(!eW[c]){var p,d,m,h,g,b,v=document.createElement("canvas");v.width=i,v.height=u;var f=v.getContext("2d");f.fillStyle=_,f.strokeStyle=t,f.lineJoin="round",f.lineWidth=2,p=f,d=1,m=1,h=i-2,g=u-2,b=2,p.beginPath(),p.moveTo(3,1),p.lineTo(d+h-b,m),p.quadraticCurveTo(d+h,m,d+h,m+b),p.lineTo(d+h,m+g-b),p.quadraticCurveTo(d+h,m+g,d+h-b,m+g),p.lineTo(d+b,m+g),p.quadraticCurveTo(d,m+g,d,m+g-b),p.lineTo(d,m+b),p.quadraticCurveTo(d,m,d+b,m),p.closePath(),f.fill(),f.stroke(),eW[c]=v}e.drawImage(eW[c],s,n,i,u)})(t,_,n,a,s),"black"===_&&(t.globalCompositeOperation="source-over",function(e,_,t,r,a){var s="svg"+_+"_"+t+"_"+_.complete;if(!eW[s]){var n=document.createElement("canvas");n.width=t,n.height=t;var l=n.getContext("2d"),o=t/Math.max(_.width,_.height),i=_.width*o,u=_.height*o;l.drawImage(_,(t-i)/2,(t-u)/2,i,u),eW[s]=n}e.drawImage(eW[s],Math.round(r-t/2),Math.round(a-t/2))}(t,eb,_r.brickWidth,a,s))}})}eg.drawImage(ey,_r.offsetX,0)}(),eg.globalCompositeOperation="screen",e.flashes=e.flashes.filter(function(_){return e.levelTime-_.time<_.duration&&!_.destroyed}),e.flashes.forEach(function(_){var t=_.x,r=_.y,a=_.time,s=_.color,n=_.size,l=_.type,o=_.duration,i=e.levelTime-a;eg.globalAlpha=Math.max(0,Math.min(1,2-i/o*2)),"text"===l?(eg.globalCompositeOperation="source-over",eM(eg,_.text,s,n,t,r-i/10)):"particle"===l&&(eg.globalCompositeOperation="screen",ex(eg,s,n,t,r),ez(eg,s,n,t,r))}),e.perks.extra_life){eg.globalAlpha=1,eg.globalCompositeOperation="source-over",eg.fillStyle=e.puckColor;for(var i=0;iej(e)&&ew(eg,"red",e.puckWidth,e.puckHeight,-2,!!e.perks.concave_puck),ew(eg,e.puckColor,e.puckWidth,e.puckHeight,0,!!e.perks.concave_puck),e.combo>1){eg.globalCompositeOperation="source-over";var u="x "+e.combo,c=u.length*e.puckHeight/1.8+2*e.coinSize,p=e.puckPosition-c/2;cej(e);eg.globalCompositeOperation="source-over",e.offsetXRoundedDown?(eg.fillStyle=d&&e.perks.left_is_lava?"red":e.puckColor,eg.fillRect(e.offsetX-1,0,1,r),eg.fillStyle=d&&e.perks.right_is_lava?"red":e.puckColor,eg.fillRect(t-e.offsetX+1,0,1,r)):(eg.fillStyle="red",d&&e.perks.left_is_lava&&eg.fillRect(0,0,1,r),d&&e.perks.right_is_lava&&eg.fillRect(t-1,0,1,r)),e.perks.top_is_lava&&e.combo>ej(e)&&(eg.fillStyle="red",eg.fillRect(e.offsetXRoundedDown,0,e.gameZoneWidthRoundedUp,1));var m=e.perks.compound_interest&&e.combo>ej(e);eg.fillStyle=m?"red":e.puckColor,N("mobile-mode")?(eg.fillRect(e.offsetXRoundedDown,e.gameZoneHeight,e.gameZoneWidthRoundedUp,1),e.running||eM(eg,O("play.mobile_press_to_play"),e.puckColor,e.puckHeight,e.canvasWidth/2,e.gameZoneHeight+(e.canvasHeight-e.gameZoneHeight)/2)):m&&eg.fillRect(e.offsetXRoundedDown,e.gameZoneHeight-1,e.gameZoneWidthRoundedUp,1),l&&eg.resetTransform()}}(_r)),_r.running&&function(e){if(N("record")){var _;n&&(_=e,i&&(i.drawImage(eh,_.offsetXRoundedDown,0,_.gameZoneWidthRoundedUp,_.gameZoneHeight,0,0,o.width,o.height),i.fillStyle="#FFF",i.textBaseline="top",i.font="12px monospace",i.textAlign="right",i.fillText(_.score.toString(),o.width-12,12),i.textAlign="left",i.fillText("Level "+(_.currentLevel+1)+"/"+ei(_),12,12)),(null==l?void 0:l.requestFrame)?null==l||l.requestFrame():(null==n?void 0:n.requestFrame)&&n.requestFrame())}}(_r),requestAnimationFrame(e)}(),window.stressTest=function(){return _a({level:"Shark",perks:{sapper:2,pierce:10,multiball:3}})}}();